1import{aH as Ue}from"#entry";function Ge(G,K){for(var y=0;y<K.length;y++){const T=K[y];if(typeof T!="string"&&!Array.isArray(T)){for(const _ in T)if(_!=="default"&&!(_ in G)){const h=Object.getOwnPropertyDescriptor(T,_);h&&Object.defineProperty(G,_,h.get?h:{enumerable:!0,get:()=>T[_]})}}}return Object.freeze(Object.defineProperty(G,Symbol.toStringTag,{value:"Module"}))}var Q={exports:{}};/** @license 2 * eventsource.js 3 * Available under MIT License (MIT) 4 * https://github.com/Yaffle/EventSource/ 5 */var Ve=Q.exports,Ae;function $e(){return Ae||(Ae=1,(function(G,K){(function(y){var T=y.setTimeout,_=y.clearTimeout,h=y.XMLHttpRequest,ce=y.XDomainRequest,le=y.ActiveXObject,Z=y.EventSource,I=y.document,Fe=y.Promise,J=y.fetch,ve=y.Response,Y=y.TextDecoder,he=y.TextEncoder,te=y.AbortController;if(typeof window<"u"&&typeof I<"u"&&!("readyState"in I)&&I.body==null&&(I.readyState="loading",window.addEventListener("load",function(e){I.readyState="complete"},!1)),h==null&&le!=null&&(h=function(){return new le("Microsoft.XMLHTTP")}),Object.create==null&&(Object.create=function(e){function r(){}return r.prototype=e,new r}),Date.now||(Date.now=function(){return new Date().getTime()}),te==null){var Oe=J;J=function(e,r){var n=r.signal;return Oe(e,{headers:r.headers,credentials:r.credentials,cache:r.cache}).then(function(t){var o=t.body.getReader();return n._reader=o,n._aborted&&n._reader.cancel(),{status:t.status,statusText:t.statusText,headers:t.headers,body:{getReader:function(){return o}}}})},te=function(){this.signal={_reader:null,_aborted:!1},this.abort=function(){this.signal._reader!=null&&this.signal._reader.cancel(),this.signal._aborted=!0}}}function pe(){this.bitsNeeded=0,this.codePoint=0}pe.prototype.decode=function(e){function r(d,u,i){if(i===1)return d>=128>>u&&d<<u<=2047;if(i===2)return d>=2048>>u&&d<<u<=55295||d>=57344>>u&&d<<u<=65535;if(i===3)return d>=65536>>u&&d<<u<=1114111;throw new Error}function n(d,u){if(d===6)return u>>6>15?3:u>31?2:1;if(d===12)return u>15?3:2;if(d===18)return 3;throw new Error}for(var t=65533,o="",a=this.bitsNeeded,s=this.codePoint,c=0;c<e.length;c+=1){var f=e[c];a!==0&&(f<128||f>191||!r(s<<6|f&63,a-6,n(a,s)))&&(a=0,s=t,o+=String.fromCharCode(s)),a===0?(f>=0&&f<=127?(a=0,s=f):f>=192&&f<=223?(a=6,s=f&31):f>=224&&f<=239?(a=12,s=f&15):f>=240&&f<=247?(a=18,s=f&7):(a=0,s=t),a!==0&&!r(s,a,n(a,s))&&(a=0,s=t)):(a-=6,s=s<<6|f&63),a===0&&(s<=65535?o+=String.fromCharCode(s):(o+=String.fromCharCode(55296+(s-65535-1>>10)),o+=String.fromCharCode(56320+(s-65535-1&1023))))}return this.bitsNeeded=a,this.codePoint=s,o};var Ne=function(){try{return new Y().decode(new he().encode("test"),{stream:!0})==="test"}catch(e){console.debug("TextDecoder does not support streaming option. Using polyfill instead: "+e)}return!1};(Y==null||he==null||!Ne())&&(Y=pe);var R=function(){};function j(e){this.withCredentials=!1,this.readyState=0,this.status=0,this.statusText="",this.responseText="",this.onprogress=R,this.onload=R,this.onerror=R,this.onreadystatechange=R,this._contentType="",this._xhr=e,this._sendTimeout=0,this._abort=R}j.prototype.open=function(e,r){this._abort(!0);var n=this,t=this._xhr,o=1,a=0;this._abort=function(i){n._sendTimeout!==0&&(_(n._sendTimeout),n._sendTimeout=0),(o===1||o===2||o===3)&&(o=4,t.onload=R,t.onerror=R,t.onabort=R,t.onprogress=R,t.onreadystatechange=R,t.abort(),a!==0&&(_(a),a=0),i||(n.readyState=4,n.onabort(null),n.onreadystatechange())),o=0};var s=function(){if(o===1){var i=0,l="",D=void 0;if("contentType"in t)i=200,l="OK",D=t.contentType;else try{i=t.status,l=t.statusText,D=t.getResponseHeader("Content-Type")}catch{i=0,l="",D=void 0}i!==0&&(o=2,n.readyState=2,n.status=i,n.statusText=l,n._contentType=D,n.onreadystatechange())}},c=function(){if(s(),o===2||o===3){o=3;var i="";try{i=t.responseText}catch{}n.readyState=3,n.responseText=i,n.onprogress()}},f=function(i,l){if((l==null||l.preventDefault==null)&&(l={preventDefault:R}),c(),o===1||o===2||o===3){if(o=4,a!==0&&(_(a),a=0),n.readyState=4,i==="load")n.onload(l);else if(i==="error")n.onerror(l);else if(i==="abort")n.onabort(l);else throw new TypeError;n.onreadystatechange()}},d=function(i){t!=null&&(t.readyState===4?(!("onload"in t)||!("onerror"in t)||!("onabort"in t))&&f(t.responseText===""?"error":"load",i):t.readyState===3?"onprogress"in t||c():t.readyState===2&&s())},u=function(){a=T(function(){u()},500),t.readyState===3&&c()};"onload"in t&&(t.onload=function(i){f("load",i)}),"onerror"in t&&(t.onerror=function(i){f("error",i)}),"onabort"in t&&(t.onabort=function(i){f("abort",i)}),"onprogress"in t&&(t.onprogress=c),"onreadystatechange"in t&&(t.onreadystatechange=function(i){d(i)}),("contentType"in t||!("ontimeout"in h.prototype))&&(r+=(r.indexOf("?")===-1?"?":"&")+"padding=true"),t.open(e,r,!0),"readyState"in t&&(a=T(function(){u()},0))},j.prototype.abort=function(){this._abort(!1)},j.prototype.getResponseHeader=function(e){return this._contentType},j.prototype.setRequestHeader=function(e,r){var n=this._xhr;"setRequestHeader"in n&&n.setRequestHeader(e,r)},j.prototype.getAllResponseHeaders=function(){return this._xhr.getAllResponseHeaders!=null&&this._xhr.getAllResponseHeaders()||""},j.prototype.send=function(){if((!("ontimeout"in h.prototype)||!("sendAsBinary"in h.prototype)&&!("mozAnon"in h.prototype))&&I!=null&&I.readyState!=null&&I.readyState!=="complete"){var e=this;e._sendTimeout=T(function(){e._sendTimeout=0,e.send()},4);return}var r=this._xhr;"withCredentials"in r&&(r.withCredentials=this.withCredentials);try{r.send(void 0)}catch(n){throw n}};function ye(e){return e.replace(/[A-Z]/g,function(r){return String.fromCharCode(r.charCodeAt(0)+32)})}function ge(e){for(var r=Object.create(null),n=e.split(`\r 6`),t=0;t<n.length;t+=1){var o=n[t],a=o.split(": "),s=a.shift(),c=a.join(": ");r[ye(s)]=c}this._map=r}ge.prototype.get=function(e){return this._map[ye(e)]},h!=null&&h.HEADERS_RECEIVED==null&&(h.HEADERS_RECEIVED=2);function Ee(){}Ee.prototype.open=function(e,r,n,t,o,a,s){e.open("GET",o);var c=0;e.onprogress=function(){var d=e.responseText,u=d.slice(c);c+=u.length,n(u)},e.onerror=function(d){d.preventDefault(),t(new Error("NetworkError"))},e.onload=function(){t(null)},e.onabort=function(){t(null)},e.onreadystatechange=function(){if(e.readyState===h.HEADERS_RECEIVED){var d=e.status,u=e.statusText,i=e.getResponseHeader("Content-Type"),l=e.getAllResponseHeaders();r(d,u,i,new ge(l))}},e.withCredentials=a;for(var f in s)Object.prototype.hasOwnProperty.call(s,f)&&e.setRequestHeader(f,s[f]);return e.send(),e};function we(e){this._headers=e}we.prototype.get=function(e){return this._headers.get(e)};function me(){}me.prototype.open=function(e,r,n,t,o,a,s){var c=null,f=new te,d=f.signal,u=new Y;return J(o,{headers:s,credentials:a?"include":"same-origin",signal:d,cache:"no-store"}).then(function(i){return c=i.body.getReader(),r(i.status,i.statusText,i.headers.get("Content-Type"),new we(i.headers)),new Fe(function(l,D){var W=function(){c.read().then(function(C){if(C.done)l(void 0);else{var E=u.decode(C.value,{stream:!0});n(E),W()}}).catch(function(C){D(C)})};W()})}).catch(function(i){if(i.name!=="AbortError")return i}).then(function(i){t(i)}),{abort:function(){c?.cancel(),f.abort()}}};function V(){this._listeners=Object.create(null)}function Te(e){T(function(){throw e},0)}V.prototype.dispatchEvent=function(e){e.target=this;var r=this._listeners[e.type];if(r!=null)for(var n=r.length,t=0;t<n;t+=1){var o=r[t];try{typeof o.handleEvent=="function"?o.handleEvent(e):o.call(this,e)}catch(a){Te(a)}}},V.prototype.addEventListener=function(e,r){e=String(e);var n=this._listeners,t=n[e];t==null&&(t=[],n[e]=t);for(var o=!1,a=0;a<t.length;a+=1)t[a]===r&&(o=!0);o||t.push(r)},V.prototype.removeEventListener=function(e,r){e=String(e);var n=this._listeners,t=n[e];if(t!=null){for(var o=[],a=0;a<t.length;a+=1)t[a]!==r&&o.push(t[a]);o.length===0?delete n[e]:n[e]=o}};function P(e){this.type=e,this.target=void 0}function Ce(e,r){P.call(this,e),this.data=r.data,this.lastEventId=r.lastEventId}Ce.prototype=Object.create(P.prototype);function re(e,r){P.call(this,e),this.status=r.status,this.statusText=r.statusText,this.headers=r.headers}re.prototype=Object.create(P.prototype);function Se(e,r){P.call(this,e),this.error=r.error}Se.prototype=Object.create(P.prototype);var ne=-1,H=0,q=1,$=2,ae=-1,L=0,oe=1,be=2,Ie=3,He=/^text\/event\-stream(;.*)?$/i,Le=1e3,je=18e6,ie=function(e,r){var n=e==null?r:parseInt(e,10);return n!==n&&(n=r),se(n)},se=function(e){return Math.min(Math.max(e,Le),je)},X=function(e,r,n){try{typeof r=="function"&&r.call(e,n)}catch(t){Te(t)}};function A(e,r){V.call(this),r=r||{},this.onopen=void 0,this.onmessage=void 0,this.onerror=void 0,this.url=void 0,this.readyState=void 0,this.withCredentials=void 0,this.headers=void 0,this._close=void 0,qe(this,e,r)}function Me(){return h!=null&&"withCredentials"in h.prototype||ce==null?new h:new ce}var Pe=J!=null&&ve!=null&&"body"in ve.prototype;function qe(e,r,n){r=String(r);var t=!!n.withCredentials,o=n.lastEventIdQueryParameterName||"lastEventId",a=se(1e3),s=ie(n.heartbeatTimeout,45e3),c="",f=a,d=!1,u=0,i=n.headers||{},l=n.Transport,D=Pe&&l==null?void 0:new j(l!=null?new l:Me()),W=l!=null&&typeof l!="string"?new l:D==null?new me:new Ee,C=void 0,E=0,x=ne,B="",k="",F="",ee="",w=L,fe=0,M=0,Xe=function(p,v,S,b){if(x===H)if(p===200&&S!=null&&He.test(S)){x=q,d=Date.now(),f=a,e.readyState=q;var m=new re("open",{status:p,statusText:v,headers:b});e.dispatchEvent(m),X(e,e.onopen,m)}else{var g="";p!==200?(v&&(v=v.replace(/\s+/g," ")),g="EventSource's response has a status "+p+" "+v+" that is not 200. Aborting the connection."):g="EventSource's response has a Content-Type specifying an unsupported type: "+(S==null?"-":S.replace(/\s+/g," "))+". Aborting the connection.",de();var m=new re("error",{status:p,statusText:v,headers:b});e.dispatchEvent(m),X(e,e.onerror,m),console.error(g)}},Be=function(p){if(x===q){for(var v=-1,S=0;S<p.length;
6S+=1){var b=p.charCodeAt(S);(b===10||b===13)&&(v=S)}var m=(v!==-1?ee:"")+p.slice(0,v+1);ee=(v===-1?ee:"")+p.slice(v+1),p!==""&&(d=Date.now(),u+=p.length);for(var g=0;g<m.length;g+=1){var b=m.charCodeAt(g);if(w===ae&&b===10)w=L;else if(w===ae&&(w=L),b===13||b===10){if(w!==L){w===oe&&(M=g+1);var O=m.slice(fe,M-1),N=m.slice(M+(M<g&&m.charCodeAt(M)===32?1:0),g);O==="data"?(B+=` 7`,B+=N):O==="id"?k=N:O==="event"?F=N:O==="retry"?(a=ie(N,a),f=a):O==="heartbeatTimeout"&&(s=ie(N,s),E!==0&&(_(E),E=T(function(){z()},s)))}if(w===L){if(B!==""){c=k,F===""&&(F="message");var U=new Ce(F,{data:B.slice(1),lastEventId:k});if(e.dispatchEvent(U),F==="open"?X(e,e.onopen,U):F==="message"?X(e,e.onmessage,U):F==="error"&&X(e,e.onerror,U),x===$)return}B="",F=""}w=b===13?ae:L}else w===L&&(fe=g,w=oe),w===oe?b===58&&(M=g+1,w=be):w===be&&(w=Ie)}}},Re=function(p){if(x===q||x===H){x=ne,E!==0&&(_(E),E=0),E=T(function(){z()},f),f=se(Math.min(a*16,f*2)),e.readyState=H;var v=new Se("error",{error:p});e.dispatchEvent(v),X(e,e.onerror,v),p!=null&&console.error(p)}},de=function(){x=$,C!=null&&(C.abort(),C=void 0),E!==0&&(_(E),E=0),e.readyState=$},z=function(){if(E=0,x!==ne){if(!d&&C!=null)Re(new Error("No activity within "+s+" milliseconds. "+(x===H?"No response received.":u+" chars received.")+" Reconnecting.")),C!=null&&(C.abort(),C=void 0);else{var p=Math.max((d||Date.now())+s-Date.now(),1);d=!1,E=T(function(){z()},p)}return}d=!1,u=0,E=T(function(){z()},s),x=H,B="",F="",k=c,ee="",fe=0,M=0,w=L;var v=r;if(r.slice(0,5)!=="data:"&&r.slice(0,5)!=="blob:"&&c!==""){var S=r.indexOf("?");v=S===-1?r:r.slice(0,S+1)+r.slice(S+1).replace(/(?:^|&)([^=&]*)(?:=[^&]*)?/g,function(N,U){return U===o?"":N}),v+=(r.indexOf("?")===-1?"?":"&")+o+"="+encodeURIComponent(c)}var b=e.withCredentials,m={};m.Accept="text/event-stream";var g=e.headers;if(g!=null)for(var O in g)Object.prototype.hasOwnProperty.call(g,O)&&(m[O]=g[O]);try{C=W.open(D,Xe,Be,Re,v,b,m)}catch(N){throw de(),N}};e.url=r,e.readyState=H,e.withCredentials=t,e.headers=i,e._close=de,z()}A.prototype=Object.create(V.prototype),A.prototype.CONNECTING=H,A.prototype.OPEN=q,A.prototype.CLOSED=$,A.prototype.close=function(){this._close()},A.CONNECTING=H,A.OPEN=q,A.CLOSED=$,A.prototype.withCredentials=void 0;var _e=Z;h!=null&&(Z==null||!("withCredentials"in Z.prototype))&&(_e=A),(function(e){{var r=e(K);r!==void 0&&(G.exports=r)}})(function(e){e.EventSourcePolyfill=A,e.NativeEventSource=Z,e.EventSource=_e})})(typeof globalThis>"u"?typeof window<"u"?window:typeof self<"u"?self:Ve:globalThis)})(Q,Q.exports)),Q.exports}var ue,xe;function We(){return xe||(xe=1,ue=$e().EventSourcePolyfill),ue}var De=We();const ze=Ue(De),Ke=Ge({__proto__:null,default:ze},[De]);export{Ke as b}; 8//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFFczlDODkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9ldmVudC1zb3VyY2UtcG9seWZpbGxAMS4wLjMxL25vZGVfbW9kdWxlcy9ldmVudC1zb3VyY2UtcG9seWZpbGwvc3JjL2V2ZW50c291cmNlLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BzYW5pdHkrZXZlbnRzb3VyY2VANS4wLjIvbm9kZV9tb2R1bGVzL0BzYW5pdHkvZXZlbnRzb3VyY2UvYnJvd3Nlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGxpY2Vuc2VcclxuICogZXZlbnRzb3VyY2UuanNcclxuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBMaWNlbnNlIChNSVQpXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ZYWZmbGUvRXZlbnRTb3VyY2UvXHJcbiAqL1xyXG5cclxuLypqc2xpbnQgaW5kZW50OiAyLCB2YXJzOiB0cnVlLCBwbHVzcGx1czogdHJ1ZSAqL1xyXG4vKmdsb2JhbCBzZXRUaW1lb3V0LCBjbGVhclRpbWVvdXQgKi9cclxuXHJcbihmdW5jdGlvbiAoZ2xvYmFsKSB7XHJcbiAgXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4gIHZhciBzZXRUaW1lb3V0ID0gZ2xvYmFsLnNldFRpbWVvdXQ7XHJcbiAgdmFyIGNsZWFyVGltZW91dCA9IGdsb2JhbC5jbGVhclRpbWVvdXQ7XHJcbiAgdmFyIFhNTEh0dHBSZXF1
8ZXN0ID0gZ2xvYmFsLlhNTEh0dHBSZXF1ZXN0O1xyXG4gIHZhciBYRG9tYWluUmVxdWVzdCA9IGdsb2JhbC5YRG9tYWluUmVxdWVzdDtcclxuICB2YXIgQWN0aXZlWE9iamVjdCA9IGdsb2JhbC5BY3RpdmVYT2JqZWN0O1xyXG4gIHZhciBOYXRpdmVFdmVudFNvdXJjZSA9IGdsb2JhbC5FdmVudFNvdXJjZTtcclxuXHJcbiAgdmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xyXG4gIHZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XHJcbiAgdmFyIGZldGNoID0gZ2xvYmFsLmZldGNoO1xyXG4gIHZhciBSZXNwb25zZSA9IGdsb2JhbC5SZXNwb25zZTtcclxuICB2YXIgVGV4dERlY29kZXIgPSBnbG9iYWwuVGV4dERlY29kZXI7XHJcbiAgdmFyIFRleHRFbmNvZGVyID0gZ2xvYmFsLlRleHRFbmNvZGVyO1xyXG4gIHZhciBBYm9ydENvbnRyb2xsZXIgPSBnbG9iYWwuQWJvcnRDb250cm9sbGVyO1xyXG5cclxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgIShcInJlYWR5U3RhdGVcIiBpbiBkb2N1bWVudCkgJiYgZG9jdW1lbnQuYm9keSA9PSBudWxsKSB7IC8vIEZpcmVmb3ggMlxyXG4gICAgZG9jdW1lbnQucmVhZHlTdGF0ZSA9IFwibG9hZGluZ1wiO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICBkb2N1bWVudC5yZWFkeVN0YXRlID0gXCJjb21wbGV0ZVwiO1xyXG4gICAgfSwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgaWYgKFhNTEh0dHBSZXF1
8ZXN0ID09IG51bGwgJiYgQWN0aXZlWE9iamVjdCAhPSBudWxsKSB7IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9Vc2luZ19YTUxIdHRwUmVxdWVzdF9pbl9JRTZcclxuICAgIFhNTEh0dHBSZXF1ZXN0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBpZiAoT2JqZWN0LmNyZWF0ZSA9PSB1bmRlZmluZWQpIHtcclxuICAgIE9iamVjdC5jcmVhdGUgPSBmdW5jdGlvbiAoQykge1xyXG4gICAgICBmdW5jdGlvbiBGKCl7fVxyXG4gICAgICBGLnByb3RvdHlwZSA9IEM7XHJcbiAgICAgIHJldHVybiBuZXcgRigpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGlmICghRGF0ZS5ub3cpIHtcclxuICAgIERhdGUubm93ID0gZnVuY3Rpb24gbm93KCkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8gc2VlICMxMTggKFByb21pc2UjZmluYWxseSB3aXRoIHBvbHlmaWxsZWQgUHJvbWlzZSlcclxuICAvLyBzZWUgIzEyMyAoZGF0YSBVUkxzIGNyYXNoIEVkZ2UpXHJcbiAgLy8gc2VlICMxMjUgKENTUCB2aW9sYXRpb25zKVxyXG4gIC8vIHNlZSBwdWxsLyMxMzhcclxuICAvLyA9PiBObyB3YXkgdG8gcG9seWZpbGwgUHJvbWlzZSNmaW5hbGx5XHJcblxyXG4gIGlmIChBYm9ydENvbnRyb2xsZXIgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICB2YXIgb3JpZ2luYWxGZXRjaDIgPSBmZXRjaDtcclxuICAgIGZldGNoID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xyXG4gICAgICB2Y
8XIgc2lnbmFsID0gb3B0aW9ucy5zaWduYWw7XHJcbiAgICAgIHJldHVybiBvcmlnaW5hbEZldGNoMih1cmwsIHtoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsIGNyZWRlbnRpYWxzOiBvcHRpb25zLmNyZWRlbnRpYWxzLCBjYWNoZTogb3B0aW9ucy5jYWNoZX0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgdmFyIHJlYWRlciA9IHJlc3BvbnNlLmJvZHkuZ2V0UmVhZGVyKCk7XHJcbiAgICAgICAgc2lnbmFsLl9yZWFkZXIgPSByZWFkZXI7XHJcbiAgICAgICAgaWYgKHNpZ25hbC5fYWJvcnRlZCkge1xyXG4gICAgICAgICAgc2lnbmFsLl9yZWFkZXIuY2FuY2VsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxyXG4gICAgICAgICAgYm9keToge1xyXG4gICAgICAgICAgICBnZXRSZWFkZXI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVhZGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgQWJvcnRDb250cm9sbGVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aGlzLnNpZ25hbCA9IHtcclxuICAgICAgICBfcmVhZGVyOiBudWxsLFxyXG4gICAgICAgIF9hYm9ydGVkOiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmFib3J0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNpZ25hbC5fcmVhZGVyICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuc2lnbmFsLl9yZWFkZXIuY2FuY2VsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2lnbmFsLl9hYm9ydGVkID0gdHJ1ZTtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBUZXh0RGVjb2RlclBvbHlmaWxsKCkge1xyXG4gICAgdGhpcy5iaXRzTmVlZGVkID0gMDtcclxuICAgIHRoaXMuY29kZVBvaW50ID0gMDtcclxuICB9XHJcblxyXG4gIFRleHREZWNvZGVyUG9seWZpbGwucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChvY3RldHMpIHtcclxuICAgIGZ1bmN0aW9uIHZhbGlkKGNvZGVQb2ludCwgc2hpZnQsIG9jdGV0c0NvdW50KSB7XHJcbiAgICAgIGlmIChvY3RldHNDb3VudCA9PT0gMSkge1xyXG4gICAgICAgIHJldHVybiBjb2RlUG9pbnQgPj0gMHgwMDgwID4+IHNoaWZ0ICYmIGNvZGVQb2ludCA8PCBzaGlmdCA8PSAweDA3RkY7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9jdGV0c0NvdW50ID09PSAyKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvZGVQb2ludCA+PSAweDA4MDAgPj4gc2hpZnQgJiYgY29kZVBvaW50IDw8IHNoaWZ0IDw9IDB4RDdGRiB8fCBjb2RlUG9pbnQgPj0gMHhFMDAwID4+IHNoaWZ0ICYmIGNvZGVQb2ludCA8PCBzaGlmdCA8PSAweEZGRkY7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9jdGV0c0NvdW50ID09PSAzKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvZGVQb2ludCA+PSAweDAxMDAwMCA+PiBzaGlmdCAmJiBjb2RlUG9pbnQgPDwgc2hpZnQgPD0gMHgxMEZGRkY7XHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBvY3RldHNDb3VudChiaXRzTmVlZGVkLCBjb2RlUG9pbnQpIHtcclxuICAgICAgaWYgKGJpdHNOZWVkZWQgPT09IDYgKiAxKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvZGVQb2ludCA+PiA2ID4gMTUgPyAzIDogY29kZVBvaW50ID4gMzEgPyAyIDogMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYml0c05lZWRlZCA9PT0gNiAqIDIpIHtcclxuICAgICAgICByZXR1cm4gY29kZVBvaW50ID4gMTUgPyAzIDogMjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYml0c05lZWRlZCA9PT0gNiAqIDMpIHtcclxuICAgICAgICByZXR1cm4gMztcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcclxuICAgIH1cclxuICAgIHZhciBSRVBMQUNFUiA9IDB4RkZGRDtcclxuICAgIHZhciBzdHJpbmcgPSBcIlwiO1xyXG4gICAgdmFyIGJpdHNOZWVkZWQgPSB0aGlzLmJpdHNOZWVkZWQ7XHJcbiAgICB2YXIgY29kZVBvaW50ID0gdGhpcy5jb2RlUG9pbnQ7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9jdGV0cy5sZW5ndGg7IGkgKz0gMSkge1xyXG4gICAgICB2Y
8XIgb2N0ZXQgPSBvY3RldHNbaV07XHJcbiAgICAgIGlmIChiaXRzTmVlZGVkICE9PSAwKSB7XHJcbiAgICAgICAgaWYgKG9jdGV0IDwgMTI4IHx8IG9jdGV0ID4gMTkxIHx8ICF2YWxpZChjb2RlUG9pbnQgPDwgNiB8IG9jdGV0ICYgNjMsIGJpdHNOZWVkZWQgLSA2LCBvY3RldHNDb3VudChiaXRzTmVlZGVkLCBjb2RlUG9pbnQpKSkge1xyXG4gICAgICAgICAgYml0c05lZWRlZCA9IDA7XHJcbiAgICAgICAgICBjb2RlUG9pbnQgPSBSRVBMQUNFUjtcclxuICAgICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChiaXRzTmVlZGVkID09PSAwKSB7XHJcbiAgICAgICAgaWYgKG9jdGV0ID49IDAgJiYgb2N0ZXQgPD0gMTI3KSB7XHJcbiAgICAgICAgICBiaXRzTmVlZGVkID0gMDtcclxuICAgICAgICAgIGNvZGVQb2ludCA9IG9jdGV0O1xyXG4gICAgICAgIH0gZWxzZSBpZiAob2N0ZXQgPj0gMTkyICYmIG9jdGV0IDw9IDIyMykge1xyXG4gICAgICAgICAgYml0c05lZWRlZCA9IDYgKiAxO1xyXG4gICAgICAgICAgY29kZVBvaW50ID0gb2N0ZXQgJiAzMTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9jdGV0ID49IDIyNCAmJiBvY3RldCA8PSAyMzkpIHtcclxuICAgICAgICAgIGJpdHNOZWVkZWQgPSA2ICogMjtcclxuICAgICAgICAgIGNvZGVQb2ludCA9IG9jdGV0ICYgMTU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvY3RldCA+PSAyNDAgJiYgb2N0ZXQgPD0gMjQ3KSB7XHJcbiAgICAgICAgICBiaXRzTmVlZGVkID0gNiAqIDM7XHJcbiAgICAgICAgICBjb2RlUG9pbnQgPSBvY3RldCAmIDc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJpdHNOZWVkZWQgPSAwO1xyXG4gICAgICAgICAgY29kZVBvaW50ID0gUkVQTEFDRVI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChiaXRzTmVlZGVkICE9PSAwICYmICF2YWxpZChjb2RlUG9pbnQsIGJpdHNOZWVkZWQsIG9jdGV0c0NvdW50KGJpdHNOZWVkZWQsIGNvZGVQb2ludCkpKSB7XHJcbiAgICAgICAgICBiaXRzTmVlZGVkID0gMDtcclxuICAgICAgICAgIGNvZGVQb2ludCA9IFJFUExBQ0VSO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBiaXRzTmVlZGVkIC09IDY7XHJcbiAgICAgICAgY29kZVBvaW50ID0gY29kZVBvaW50IDw8IDYgfCBvY3RldCAmIDYzO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChiaXRzTmVlZGVkID09PSAwKSB7XHJcbiAgICAgICAgaWYgKGNvZGVQb2ludCA8PSAweEZGRkYpIHtcclxuICAgICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgwMCArIChjb2RlUG9pbnQgLSAweEZGRkYgLSAxID4+IDEwKSk7XHJcbiAgICAgICAgICBzdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweERDMDAgKyAoY29kZVBvaW50IC0gMHhGRkZGIC0gMSAmIDB4M0ZGKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmJpdHNOZWVkZWQgPSBiaXRzTmVlZGVkO1xyXG4gICAgdGhpcy5jb2RlUG9pbnQgPSBjb2RlUG9pbnQ7XHJcbiAgICByZXR1cm4gc3RyaW5nO1xyXG4gIH07XHJcblxyXG4gIC8vIEZpcmVmb3ggPCAzOCB0aHJvd3MgYW4gZXJyb3Igd2l0aCBzdHJlYW0gb3B0aW9uXHJcbiAgdmFyIHN1cHBvcnRzU3RyZWFtT3B0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJ0ZXN0XCIpLCB7c3RyZWFtOiB0cnVlfSkgPT09IFwidGVzdFwiO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIlRleHREZWNvZGVyIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nIG9wdGlvbi4gVXNpbmcgcG9seWZpbGwgaW5zdGVhZDogXCIgKyBlcnJvcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfTtcclxuXHJcbiAgLy8gSUUsIEVkZ2VcclxuICBpZiAoVGV4dERlY29kZXIgPT0gdW5kZWZpbmVkIHx8IFRleHRFbmNvZGVyID09IHVuZGVmaW5lZCB8fCAhc3VwcG9ydHNTdHJlYW1PcHRpb24oKSkge1xyXG4gICAgVGV4dERlY29kZXIgPSBUZXh0RGVjb2RlclBvbHlmaWxsO1xyXG4gIH1cclxuXHJcbiAgdmFyIGsgPSBmdW5jdGlvbiAoKSB7XHJcbiAgfTtcclxuXHJcbiAgZnVuY3Rpb24gWEhSV3JhcHBlcih4aHIpIHtcclxuICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlYWR5U3RhdGUgPSAwO1xyXG4gICAgdGhpcy5zdGF0dXMgPSAwO1xyXG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gXCJcIjtcclxuICAgIHRoaXMucmVzcG9uc2VUZXh0ID0gXCJcIjtcclxuICAgIHRoaXMub25wcm9ncmVzcyA9IGs7XHJcbiAgICB0aGlzLm9ubG9hZCA9IGs7XHJcbiAgICB0aGlzLm9uZXJyb3IgPSBrO1xyXG4gICAgdGhpcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBrO1xyXG4gICAgdGhpcy5fY29udGVudFR5cGUgPSBcIlwiO1xyXG4gICAgdGhpcy5feGhyID0geGhyO1xyXG4gICAgdGhpcy5fc2VuZFRpbWVvdXQgPSAwO1xyXG4gICAgdGhpcy5fYWJvcnQgPSBrO1xyXG4gIH1cclxuXHJcbiAgWEhSV3JhcHBlci5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCkge1xyXG4gICAgdGhpcy5fYWJvcnQodHJ1ZSk7XHJcblxyXG4gICAgdmFyIHRoYXQgPSB0aGlzO1xyXG4gICAgdmFyIHhociA9IHRoaXMuX3hocjtcclxuICAgIHZhciBzdGF0ZSA9IDE7XHJcbiAgICB2YXIgdGltZW91dCA9IDA7XHJcblxyXG4gICAgdGhpcy5fYWJvcnQgPSBmdW5jdGlvbiAoc2lsZW50KSB7XHJcbiAgICAgIGlmICh0aGF0Ll9zZW5kVGltZW91dCAhPT0gMCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGF0Ll9zZW5kVGltZW91dCk7XHJcbiAgICAgICAgdGhhdC5fc2VuZFRpbWVvdXQgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGF0ZSA9PT0gMSB8fCBzdGF0ZSA9PT0gMiB8fCBzdGF0ZSA9PT0gMykge1xyXG4gICAgICAgI
8HN0YXRlID0gNDtcclxuICAgICAgICB4aHIub25sb2FkID0gaztcclxuICAgICAgICB4aHIub25lcnJvciA9IGs7XHJcbiAgICAgICAgeGhyLm9uYWJvcnQgPSBrO1xyXG4gICAgICAgIHhoci5vbnByb2dyZXNzID0gaztcclxuICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gaztcclxuICAgICAgICAvLyBJRSA4IC0gOTogWERvbWFpblJlcXVlc3QjYWJvcnQoKSBkb2VzIG5vdCBmaXJlIGFueSBldmVudFxyXG4gICAgICAgIC8vIE9wZXJhIDwgMTA6IFhNTEh0dHBSZXF1ZXN0I2Fib3J0KCkgZG9lcyBub3QgZmlyZSBhbnkgZXZlbnRcclxuICAgICAgICB4aHIuYWJvcnQoKTtcclxuICAgICAgICBpZiAodGltZW91dCAhPT0gMCkge1xyXG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICAgICAgdGltZW91dCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgICAgICB0aGF0LnJlYWR5U3RhdGUgPSA0O1xyXG4gICAgICAgICAgdGhhdC5vbmFib3J0KG51bGwpO1xyXG4gICAgICAgICAgdGhhdC5vbnJlYWR5c3RhdGVjaGFuZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgc3RhdGUgPSAwO1xyXG4gICAgfTtcclxuXHJcbiAgICB2YXIgb25TdGFydCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKHN0YXRlID09PSAxKSB7XHJcbiAgICAgICAgLy9zdGF0ZSA9IDI7XHJcbiAgICAgICAgdmFyIHN0YXR1cyA9IDA7XHJcbiAgICAgICAgdmFyIHN0YXR1c1RleHQgPSBcIlwiO1xyXG4gICAgICAgIHZhciBjb250ZW50VHlwZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIShcImNvbnRlbnRUeXBlXCIgaW4geGhyKSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RhdHVzID0geGhyLnN0YXR1cztcclxuICAgICAgICAgICAgc3RhdHVzVGV4dCA9IHhoci5zdGF0dXNUZXh0O1xyXG4gICAgICAgICAgICBjb250ZW50VHlwZSA9IHhoci5nZXRSZXNwb25zZUhlYWRlcihcIkNvbnRlbnQtVHlwZVwiKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIElFIDwgMTAgdGhyb3dzIGV4Y2VwdGlvbiBmb3IgYHhoci5zdGF0dXNgIHdoZW4geGhyLnJlYWR5U3RhdGUgPT09IDIgfHwgeGhyLnJlYWR5U3RhdGUgPT09IDNcclxuICAgICAgICAgICAgLy8gT3BlcmEgPCAxMSB0aHJvd3MgZXhjZXB0aW9uIGZvciBgeGhyLnN0YXR1c2Agd2hlbiB4aHIucmVhZHlTdGF0ZSA9PT0gMlxyXG4gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMjFcclxuICAgICAgICAgICAgc3RhdHVzID0gMDtcclxuICAgICAgICAgICAgc3RhdHVzVGV4dCA9IFwiXCI7XHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAvLyBGaXJlZm94IDwgMTQsIENocm9tZSA/LCBTYWZhcmkgP1xyXG4gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2NThcclxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODU0XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0YXR1cyA9IDIwMDtcclxuICAgICAgICAgIHN0YXR1c1RleHQgPSBcIk9LXCI7XHJcbiAgICAgICAgICBjb250ZW50VHlwZSA9IHhoci5jb250ZW50VHlwZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gMCkge1xyXG4gICAgICAgICAgc3RhdGUgPSAyO1xyXG4gICAgICAgICAgdGhhdC5yZWFkeVN0YXRlID0gMjtcclxuICAgICAgICAgIHRoYXQuc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgICAgICAgdGhhdC5zdGF0dXNUZXh0ID0gc3RhdHVzVGV4dDtcclxuICAgICAgICAgIHRoYXQuX2NvbnRlbnRUeXBlID0gY29udGVudFR5cGU7XHJcbiAgICAgICAgICB0aGF0Lm9ucmVhZHlzdGF0ZWNoYW5nZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHZhciBvblByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICBvblN0YXJ0KCk7XHJcbiAgICAgIGlmIChzdGF0ZSA9PT0gMiB8fCBzdGF0ZSA9PT0gMykge1xyXG4gICAgICAgIHN0YXRlID0gMztcclxuICAgICAgICB2Y
8XIgcmVzcG9uc2VUZXh0ID0gXCJcIjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgcmVzcG9uc2VUZXh0ID0geGhyLnJlc3BvbnNlVGV4dDtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgLy8gSUUgOCAtIDkgd2l0aCBYTUxIdHRwUmVxdWVzdFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0LnJlYWR5U3RhdGUgPSAzO1xyXG4gICAgICAgIHRoYXQucmVzcG9uc2VUZXh0ID0gcmVzcG9uc2VUZXh0O1xyXG4gICAgICAgIHRoYXQub25wcm9ncmVzcygpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdmFyIG9uRmluaXNoID0gZnVuY3Rpb24gKHR5cGUsIGV2ZW50KSB7XHJcbiAgICAgIGlmIChldmVudCA9PSBudWxsIHx8IGV2ZW50LnByZXZlbnREZWZhdWx0ID09IG51bGwpIHtcclxuICAgICAgICBldmVudCA9IHtcclxuICAgICAgICAgIHByZXZlbnREZWZhdWx0OiBrXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICAvLyBGaXJlZm94IDUyIGZpcmVzIFwicmVhZHlzdGF0ZWNoYW5nZVwiICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkgd2l0aG91dCBmaW5hbCBcInJlYWR5c3RhdGVjaGFuZ2VcIiAoeGhyLnJlYWR5U3RhdGUgPT09IDMpXHJcbiAgICAgIC8vIElFIDggZmlyZXMgXCJvbmxvYWRcIiB3aXRob3V0IFwib25wcm9ncmVzc1wiXHJcbiAgICAgIG9uUHJvZ3Jlc3MoKTtcclxuICAgICAgaWYgKHN0YXRlID09PSAxIHx8IHN0YXRlID09PSAyIHx8IHN0YXRlID09PSAzKSB7XHJcbiAgICAgICAgc3RhdGUgPSA0O1xyXG4gICAgICAgIGlmICh0aW1lb3V0ICE9PSAwKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgICAgICB0aW1lb3V0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5yZWFkeVN0YXRlID0gNDtcclxuICAgICAgICBpZiAodHlwZSA9PT0gXCJsb2FkXCIpIHtcclxuICAgICAgICAgIHRoYXQub25sb2FkKGV2ZW50KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZXJyb3JcIikge1xyXG4gICAgICAgICAgdGhhdC5vbmVycm9yKGV2ZW50KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYWJvcnRcIikge1xyXG4gICAgICAgICAgdGhhdC5vbmFib3J0KGV2ZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0Lm9ucmVhZHlzdGF0ZWNoYW5nZSgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdmFyIG9uUmVhZHlTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICBpZiAoeGhyICE9IHVuZGVmaW5lZCkgeyAvLyBPcGVyYSAxMlxyXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xyXG4gICAgICAgICAgaWYgKCEoXCJvbmxvYWRcIiBpbiB4aHIpIHx8ICEoXCJvbmVycm9yXCIgaW4geGhyKSB8fCAhKFwib25hYm9ydFwiIGluIHhocikpIHtcclxuICAgICAgICAgICAgb25GaW5pc2goeGhyLnJlc3BvbnNlVGV4dCA9PT0gXCJcIiA/IFwiZXJyb3JcIiA6IFwibG9hZFwiLCBldmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gMykge1xyXG4gICAgICAgICAgaWYgKCEoXCJvbnByb2dyZXNzXCIgaW4geGhyKSkgeyAvLyB0ZXN0aW5nIFhNTEh0dHBSZXF1
8ZXN0I3Jlc3BvbnNlVGV4dCB0b28gbWFueSB0aW1lcyBpcyB0b28gc2xvdyBpbiBJRSAxMVxyXG4gICAgICAgICAgICAvLyBhbmQgaW4gRmlyZWZveCAzLjZcclxuICAgICAgICAgICAgb25Qcm9ncmVzcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDIpIHtcclxuICAgICAgICAgIG9uU3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB2YXIgb25UaW1lb3V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgb25UaW1lb3V0KCk7XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gMykge1xyXG4gICAgICAgIG9uUHJvZ3Jlc3MoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBYRG9tYWluUmVxdWVzdCNhYm9ydCByZW1vdmVzIG9ucHJvZ3Jlc3MsIG9uZXJyb3IsIG9ubG9hZFxyXG4gICAgaWYgKFwib25sb2FkXCIgaW4geGhyKSB7XHJcbiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICBvbkZpbmlzaChcImxvYWRcIiwgZXZlbnQpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKFwib25lcnJvclwiIGluIHhocikge1xyXG4gICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgIG9uRmluaXNoKFwiZXJyb3JcIiwgZXZlbnQpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy8gaW1wcm9wZXIgZml4IHRvIG1hdGNoIEZpcmVmb3ggYmVoYXZpb3VyLCBidXQgaXQgaXMgYmV0dGVyIHRoYW4ganVzdCBpZ25vcmUgYWJvcnRcclxuICAgIC8vIHNlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03Njg1OTZcclxuICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96
8aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4MDIwMFxyXG4gICAgLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE1MzU3MFxyXG4gICAgLy8gSUUgOCBmaXJlcyBcIm9ubG9hZFwiIHdpdGhvdXQgXCJvbnByb2dyZXNzXHJcbiAgICBpZiAoXCJvbmFib3J0XCIgaW4geGhyKSB7XHJcbiAgICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgb25GaW5pc2goXCJhYm9ydFwiLCBldmVudCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFwib25wcm9ncmVzc1wiIGluIHhocikge1xyXG4gICAgICB4aHIub25wcm9ncmVzcyA9IG9uUHJvZ3Jlc3M7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSUUgOCAtIDkgKFhNTEhUVFBSZXF1ZXN0KVxyXG4gICAgLy8gT3BlcmEgPCAxMlxyXG4gICAgLy8gRmlyZWZveCA8IDMuNVxyXG4gICAgLy8gRmlyZWZveCAzLjUgLSAzLjYgLSA/IDwgOS4wXHJcbiAgICAvLyBvbnByb2dyZXNzIGlzIG5vdCBmaXJlZCBzb21ldGltZXMgb3IgZGVsYXllZFxyXG4gICAgLy8gc2VlIGFsc28gIzY0IChzaWduaWZpY2FudCBsYWcgaW4gSUUgMTEpXHJcbiAgICBpZiAoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIiBpbiB4aHIpIHtcclxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgIG9uUmVhZHlTdGF0ZUNoYW5nZShldmVudCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFwiY29udGVudFR5cGVcIiBpbiB4aHIgfHwgIShcIm9udGltZW91dFwiIGluIFhNTEh0dHBSZXF1
8ZXN0LnByb3RvdHlwZSkpIHtcclxuICAgICAgdXJsICs9ICh1cmwuaW5kZXhPZihcIj9cIikgPT09IC0xID8gXCI/XCIgOiBcIiZcIikgKyBcInBhZGRpbmc9dHJ1ZVwiO1xyXG4gICAgfVxyXG4gICAgeGhyLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xyXG5cclxuICAgIGlmIChcInJlYWR5U3RhdGVcIiBpbiB4aHIpIHtcclxuICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgT3BlcmEgMTIgaXNzdWUgd2l0aCBcInByb2dyZXNzXCIgZXZlbnRzXHJcbiAgICAgIC8vICM5MSAoWE1MSHR0cFJlcXVlc3Qgb25wcm9ncmVzcyBub3QgZmlyZWQgZm9yIHN0cmVhbWluZyByZXNwb25zZSBpbiBFZGdlIDE0LTE1LT8pXHJcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBvblRpbWVvdXQoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBYSFJXcmFwcGVyLnByb3RvdHlwZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuX2Fib3J0KGZhbHNlKTtcclxuICB9O1xyXG4gIFhIUldyYXBwZXIucHJvdG90eXBlLmdldFJlc3BvbnNlSGVhZGVyID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZW50VHlwZTtcclxuICB9O1xyXG4gIFhIUldyYXBwZXIucHJvdG90eXBlLnNldFJlcXVlc3RIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcclxuICAgIHZhciB4aHIgPSB0aGlzLl94aHI7XHJcbiAgICBpZiAoXCJzZXRSZXF1ZXN0SGVhZGVyXCIgaW4geGhyKSB7XHJcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKTtcclxuICAgIH1cclxuICB9O1xyXG4gIFhIUldyYXBwZXIucHJvdG90eXBlLmdldEFsbFJlc3BvbnNlSGVhZGVycyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIC8vIFhNTEh0dHBSZXF1
8ZXN0I2dldEFsbFJlc3BvbnNlSGVhZGVycyByZXR1cm5zIG51bGwgZm9yIENPUlMgcmVxdWVzdHMgaW4gRmlyZWZveCAzLjYuMjhcclxuICAgIHJldHVybiB0aGlzLl94aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzICE9IHVuZGVmaW5lZCA/IHRoaXMuX3hoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCBcIlwiIDogXCJcIjtcclxuICB9O1xyXG4gIFhIUldyYXBwZXIucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyBsb2FkaW5nIGluZGljYXRvciBpbiBTYWZhcmkgPCA/ICg2KSwgQ2hyb21lIDwgMTQsIEZpcmVmb3hcclxuICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTczNjcyM1xyXG4gICAgaWYgKCghKFwib250aW1lb3V0XCIgaW4gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlKSB8fCAoIShcInNlbmRBc0JpbmFyeVwiIGluIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSkgJiYgIShcIm1vekFub25cIiBpbiBYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpKSkgJiZcclxuICAgICAgICBkb2N1bWVudCAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICBkb2N1bWVudC5yZWFkeVN0YXRlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09IFwiY29tcGxldGVcIikge1xyXG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XHJcbiAgICAgIHRoYXQuX3NlbmRUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhhdC5fc2VuZFRpbWVvdXQgPSAwO1xyXG4gICAgICAgIHRoYXQuc2VuZCgpO1xyXG4gICAgICB9LCA0KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciB4aHIgPSB0aGlzLl94aHI7XHJcbiAgICAvLyB3aXRoQ3JlZGVudGlhbHMgc2hvdWxkIGJlIHNldCBhZnRlciBcIm9wZW5cIiBmb3IgU2FmYXJpIGFuZCBDaHJvbWUgKDwgMTkgPylcclxuICAgIGlmIChcIndpdGhDcmVkZW50aWFsc1wiIGluIHhocikge1xyXG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdGhpcy53aXRoQ3JlZGVudGlhbHM7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyB4aHIuc2VuZCgpOyB0aHJvd3MgXCJOb3QgZW5vdWdoIGFyZ3VtZW50c1wiIGluIEZpcmVmb3ggMy4wXHJcbiAgICAgIHhoci5zZW5kKHVuZGVmaW5lZCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcjEpIHtcclxuICAgICAgLy8gU2FmYXJpIDUuMS43LCBPcGVyYSAxMlxyXG4gICAgICB0aHJvdyBlcnJvcjE7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZnVuY3Rpb24gdG9Mb3dlckNhc2UobmFtZSkge1xyXG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24gKGMpIHtcclxuICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYy5jaGFyQ29kZUF0KDApICsgMHgyMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIEhlYWRlcnNQb2x5ZmlsbChhbGwpIHtcclxuICAgIC8vIEdldCBoZWFkZXJzOiBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gbW96aWxsYSdzIGV4YW1wbGUgY29kZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1
8ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycyNFeGFtcGxlXHJcbiAgICB2YXIgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHZhciBhcnJheSA9IGFsbC5zcGxpdChcIlxcclxcblwiKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpICs9IDEpIHtcclxuICAgICAgdmFyIGxpbmUgPSBhcnJheVtpXTtcclxuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdChcIjogXCIpO1xyXG4gICAgICB2YXIgbmFtZSA9IHBhcnRzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oXCI6IFwiKTtcclxuICAgICAgbWFwW3RvTG93ZXJDYXNlKG5hbWUpXSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbWFwID0gbWFwO1xyXG4gIH1cclxuICBIZWFkZXJzUG9seWZpbGwucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWFwW3RvTG93ZXJDYXNlKG5hbWUpXTtcclxuICB9O1xyXG5cclxuICBpZiAoWE1MSHR0cFJlcXVlc3QgIT0gbnVsbCAmJiBYTUxIdHRwUmVxdWVzdC5IRUFERVJTX1JFQ0VJVkVEID09IG51bGwpIHsgLy8gSUUgPCA5LCBGaXJlZm94IDMuNlxyXG4gICAgWE1MSHR0cFJlcXVlc3QuSEVBREVSU19SRUNFSVZFRCA9IDI7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBYSFJUcmFuc3BvcnQoKSB7XHJcbiAgfVxyXG5cclxuICBYSFJUcmFuc3BvcnQucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoeGhyLCBvblN0YXJ0Q2FsbGJhY2ssIG9uUHJvZ3Jlc3NDYWxsYmFjaywgb25GaW5pc2hDYWxsYmFjaywgdXJsLCB3aXRoQ3JlZGVudGlhbHMsIGhlYWRlcnMpIHtcclxuICAgIHhoci5vcGVuKFwiR0VUXCIsIHVybCk7XHJcbiAgICB2YXIgb2Zmc2V0ID0gMDtcclxuICAgIHhoci5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2Y
8XIgcmVzcG9uc2VUZXh0ID0geGhyLnJlc3BvbnNlVGV4dDtcclxuICAgICAgdmFyIGNodW5rID0gcmVzcG9uc2VUZXh0LnNsaWNlKG9mZnNldCk7XHJcbiAgICAgIG9mZnNldCArPSBjaHVuay5sZW5ndGg7XHJcbiAgICAgIG9uUHJvZ3Jlc3NDYWxsYmFjayhjaHVuayk7XHJcbiAgICB9O1xyXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgb25GaW5pc2hDYWxsYmFjayhuZXcgRXJyb3IoXCJOZXR3b3JrRXJyb3JcIikpO1xyXG4gICAgfTtcclxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIG9uRmluaXNoQ2FsbGJhY2sobnVsbCk7XHJcbiAgICB9O1xyXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIG9uRmluaXNoQ2FsbGJhY2sobnVsbCk7XHJcbiAgICB9O1xyXG4gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSBYTUxIdHRwUmVxdWVzdC5IRUFERVJTX1JFQ0VJVkVEKSB7XHJcbiAgICAgICAgdmFyIHN0YXR1cyA9IHhoci5zdGF0dXM7XHJcbiAgICAgICAgdmFyIHN0YXR1c1RleHQgPSB4aHIuc3RhdHVzVGV4dDtcclxuICAgICAgICB2YXIgY29udGVudFR5cGUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIik7XHJcbiAgICAgICAgdmFyIGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7XHJcbiAgICAgICAgb25TdGFydENhbGxiYWNrKHN0YXR1cywgc3RhdHVzVGV4dCwgY29udGVudFR5cGUsIG5ldyBIZWFkZXJzUG9seWZpbGwoaGVhZGVycykpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHdpdGhDcmVkZW50aWFscztcclxuICAgIGZvciAodmFyIG5hbWUgaW4gaGVhZGVycykge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGhlYWRlcnMsIG5hbWUpKSB7XHJcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgaGVhZGVyc1tuYW1lXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHhoci5zZW5kKCk7XHJcbiAgICByZXR1cm4geGhyO1xyXG4gIH07XHJcblxyXG4gIGZ1bmN0aW9uIEhlYWRlcnNXcmFwcGVyKGhlYWRlcnMpIHtcclxuICAgIHRoaXMuX2hlYWRlcnMgPSBoZWFkZXJzO1xyXG4gIH1cclxuICBIZWFkZXJzV3JhcHBlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLl9oZWFkZXJzLmdldChuYW1lKTtcclxuICB9O1xyXG5cclxuICBmdW5jdGlvbiBGZXRjaFRyYW5zcG9ydCgpIHtcclxuICB9XHJcblxyXG4gIEZldGNoVHJhbnNwb3J0LnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKHhociwgb25TdGFydENhbGxiYWNrLCBvblByb2dyZXNzQ2FsbGJhY2ssIG9uRmluaXNoQ2FsbGJhY2ssIHVybCwgd2l0aENyZWRlbnRpYWxzLCBoZWFkZXJzKSB7XHJcbiAgICB2YXIgcmVhZGVyID0gbnVsbDtcclxuICAgIHZhciBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xyXG4gICAgdmFyIHNpZ25hbCA9IGNvbnRyb2xsZXIuc2lnbmFsO1xyXG4gICAgdmFyIHRleHREZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XHJcbiAgICBmZXRjaCh1cmwsIHtcclxuICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgY3JlZGVudGlhbHM6IHdpdGhDcmVkZW50aWFscyA/IFwiaW5jbHVkZVwiIDogXCJzYW1lLW9yaWdpblwiLFxyXG4gICAgICBzaWduYWw6IHNpZ25hbCxcclxuICAgICAgY2FjaGU6IFwibm8tc3RvcmVcIlxyXG4gICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgcmVhZGVyID0gcmVzcG9uc2UuYm9keS5nZXRSZWFkZXIoKTtcclxuICAgICAgb25TdGFydENhbGxiYWNrKHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgcmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIiksIG5ldyBIZWFkZXJzV3JhcHBlcihyZXNwb25zZS5oZWFkZXJzKSk7XHJcbiAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlzZXMtc3BlYy9pc3N1ZXMvMTc5XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZS
8hmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgdmFyIHJlYWROZXh0Q2h1bmsgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpIHtcclxuICAgICAgICAgICAgICAvL05vdGU6IGJ5dGVzIGluIHRleHREZWNvZGVyIGFyZSBpZ25vcmVkXHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHZhciBjaHVuayA9IHRleHREZWNvZGVyLmRlY29kZShyZXN1bHQudmFsdWUsIHtzdHJlYW06IHRydWV9KTtcclxuICAgICAgICAgICAgICBvblByb2dyZXNzQ2FsbGJhY2soY2h1bmspO1xyXG4gICAgICAgICAgICAgIHJlYWROZXh0Q2h1bmsoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVhZE5leHRDaHVuaygpO1xyXG4gICAgICB9KTtcclxuICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgIGlmIChlcnJvci5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICBvbkZpbmlzaENhbGxiYWNrKGVycm9yKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWJvcnQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAocmVhZGVyICE9IG51bGwpIHtcclxuICAgICAgICAgIHJlYWRlci5jYW5jZWwoKTsgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzgxNVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250cm9sbGVyLmFib3J0KCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgZnVuY3Rpb24gRXZlbnRUYXJnZXQoKSB7XHJcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gdGhyb3dFcnJvcihlKSB7XHJcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgdGhyb3cgZTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgRXZlbnRUYXJnZXQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgIGV2ZW50LnRhcmdldCA9IHRoaXM7XHJcbiAgICB2YXIgdHlwZUxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVyc1tldmVudC50eXBlXTtcclxuICAgIGlmICh0eXBlTGlzdGVuZXJzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB2Y
8XIgbGVuZ3RoID0gdHlwZUxpc3RlbmVycy5sZW5ndGg7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcclxuICAgICAgICB2YXIgbGlzdGVuZXIgPSB0eXBlTGlzdGVuZXJzW2ldO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyLmhhbmRsZUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgbGlzdGVuZXIuaGFuZGxlRXZlbnQoZXZlbnQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBldmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgdGhyb3dFcnJvcihlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIEV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24gKHR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgICB0eXBlID0gU3RyaW5nKHR5cGUpO1xyXG4gICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVycztcclxuICAgIHZhciB0eXBlTGlzdGVuZXJzID0gbGlzdGVuZXJzW3R5cGVdO1xyXG4gICAgaWYgKHR5cGVMaXN0ZW5lcnMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHR5cGVMaXN0ZW5lcnMgPSBbXTtcclxuICAgICAgbGlzdGVuZXJzW3R5cGVdID0gdHlwZUxpc3RlbmVycztcclxuICAgIH1cclxuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlTGlzdGVuZXJzLmxlbmd0aDsgaSArPSAxKSB7XHJcbiAgICAgIGlmICh0eXBlTGlzdGVuZXJzW2ldID09PSBsaXN0ZW5lcikge1xyXG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFmb3VuZCkge1xyXG4gICAgICB0eXBlTGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAodHlwZSwgbGlzdGVuZXIpIHtcclxuICAgIHR5cGUgPSBTdHJpbmcodHlwZSk7XHJcbiAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzO1xyXG4gICAgdmFyIHR5cGVMaXN0ZW5lcnMgPSBsaXN0ZW5lcnNbdHlwZV07XHJcbiAgICBpZiAodHlwZUxpc3RlbmVycyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdmFyIGZpbHRlcmVkID0gW107XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZUxpc3RlbmVycy5sZW5ndGg7IGkgKz0gMSkge1xyXG4gICAgICAgIGlmICh0eXBlTGlzdGVuZXJzW2ldICE9PSBsaXN0ZW5lcikge1xyXG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh0eXBlTGlzdGVuZXJzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpbHRlcmVkLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGRlbGV0ZSBsaXN0ZW5lcnNbdHlwZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGlzdGVuZXJzW3R5cGVdID0gZmlsdGVyZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmdW5jdGlvbiBFdmVudCh0eXBlKSB7XHJcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy50YXJnZXQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBNZXNzYWdlRXZlbnQodHlwZSwgb3B0aW9ucykge1xyXG4gICAgRXZlbnQuY2FsbCh0aGlzLCB0eXBlKTtcclxuICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcclxuICAgIHRoaXMubGFzdEV2ZW50SWQgPSBvcHRpb25zLmxhc3RFdmVudElkO1xyXG4gIH1cclxuXHJcbiAgTWVzc2FnZUV2ZW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXZlbnQucHJvdG90eXBlKTtcclxuXHJcbiAgZnVuY3Rpb24gQ29ubmVjdGlvbkV2ZW50KHR5cGUsIG9wdGlvbnMpIHtcclxuICAgIEV2ZW50LmNhbGwodGhpcywgdHlwZSk7XHJcbiAgICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzO1xyXG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0O1xyXG4gICAgdGhpcy5oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzO1xyXG4gIH1cclxuXHJcbiAgQ29ubmVjdGlvbkV2ZW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXZlbnQucHJvdG90eXBlKTtcclxuXHJcbiAgZnVuY3Rpb24gRXJyb3JFdmVudCh0eXBlLCBvcHRpb25zKSB7XHJcbiAgICBFdmVudC5jYWxsKHRoaXMsIHR5cGUpO1xyXG4gICAgdGhpcy5lcnJvciA9IG9wdGlvbnMuZXJyb3I7XHJcbiAgfVxyXG5cclxuICBFcnJvckV2ZW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXZlbnQucHJvdG90eXBlKTtcclxuXHJcbiAgdmFyIFdBSVRJTkcgPSAtMTtcclxuICB2YXIgQ09OTkVDVElORyA9IDA7XHJcbiAgdmFyIE9QRU4gPSAxO1xyXG4gIHZhciBDTE9TRUQgPSAyO1xyXG5cclxuICB2YXIgQUZURVJfQ1IgPSAtMTtcclxuICB2YXIgRklFTERfU1RBUlQgPSAwO1xyXG4gIHZhciBGSUVMRCA9IDE7XHJcbiAgdmFyIFZBTFVFX1NUQVJUID0gMjtcclxuICB2YXIgVkFMVUUgPSAzO1xyXG5cclxuICB2YXIgY29udGVudFR5cGVSZWdFeHAgPSAvXnRleHRcXC9ldmVudFxcLXN0cmVhbSg7LiopPyQvaTtcclxuXHJcbiAgdmFyIE1JTklNVU1fRFVSQVRJT04gPSAxMDAwO1xyXG4gIHZhciBNQVhJTVVNX0RVUkFUSU9OID0gMTgwMDAwMDA7XHJcblxyXG4gIHZhciBwYXJzZUR1cmF0aW9uID0gZnVuY3Rpb24gKHZhbHVlLCBkZWYpIHtcclxuICAgIHZhciBuID0gdmFsdWUgPT0gbnVsbCA/IGRlZiA6IHBhcnNlSW50KHZhbHVlLCAxMCk7XHJcbiAgICBpZiAobiAhPT0gbikge1xyXG4gICAgICBuID0gZGVmO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsYW1wRHVyYXRpb24obik7XHJcbiAgfTtcclxuICB2YXIgY2xhbXBEdXJhdGlvbiA9IGZ1bmN0aW9uIChuKSB7XHJcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobiwgTUlOSU1VTV9EVVJBVElPTiksIE1BWElNVU1fRFVSQVRJT04pO1xyXG4gIH07XHJcblxyXG4gIHZhciBmaXJlID0gZnVuY3Rpb24gKHRoYXQsIGYsIGV2ZW50KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodHlwZW9mIGYgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGYuY2FsbCh0aGF0LCBldmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgdGhyb3dFcnJvcihlKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmdW5jdGlvbiBFdmVudFNvdXJjZVBvbHlmaWxsK
8HVybCwgb3B0aW9ucykge1xyXG4gICAgRXZlbnRUYXJnZXQuY2FsbCh0aGlzKTtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG5cclxuICAgIHRoaXMub25vcGVuID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5vbm1lc3NhZ2UgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLm9uZXJyb3IgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy51cmwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnJlYWR5U3RhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuaGVhZGVycyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLl9jbG9zZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBzdGFydCh0aGlzLCB1cmwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gZ2V0QmVzdFhIUlRyYW5zcG9ydCgpIHtcclxuICAgIHJldHVybiAoWE1MSHR0cFJlcXVlc3QgIT0gdW5kZWZpbmVkICYmIChcIndpdGhDcmVkZW50aWFsc1wiIGluIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSkpIHx8IFhEb21haW5SZXF1ZXN0ID09IHVuZGVmaW5lZFxyXG4gICAgICAgID8gbmV3IFhNTEh0dHBSZXF1ZXN0KClcclxuICAgICAgICA6IG5ldyBYRG9tYWluUmVxdWVzdCgpO1xyXG4gIH1cclxuXHJcbiAgdmFyIGlzRmV0Y2hTdXBwb3J0ZWQgPSBmZXRjaCAhPSB1bmRlZmluZWQgJiYgUmVzcG9uc2UgIT0gdW5kZWZpbmVkICYmIFwiYm9keVwiIGluIFJlc3BvbnNlLnByb3RvdHlwZTtcclxuXHJcbiAgZnVuY3Rpb24gc3RhcnQoZXMsIHVybCwgb3B0aW9ucykge1xyXG4gICAgdXJsID0gU3RyaW5nKHVybCk7XHJcbiAgICB2YXIgd2l0aENyZWRlbnRpYWxzID0gQm9vbGVhbihvcHRpb25zLndpdGhDcmVkZW50aWFscyk7XHJcbiAgICB2YXIgbGFzdEV2ZW50SWRRdWVyeVBhcmFtZXRlck5hbWUgPSBvcHRpb25zLmxhc3RFdmVudElkUXVlcnlQYXJhbWV0ZXJOYW1lIHx8IFwibGFzdEV2ZW50SWRcIjtcclxuXHJcbiAgICB2YXIgaW5pdGlhbFJldHJ5ID0gY2xhbXBEdXJhdGlvbigxMDAwKTtcclxuICAgIHZhciBoZWFydGJlYXRUaW1lb3V0ID0gcGFyc2VEdXJhdGlvbihvcHRpb25zLmhlYXJ0YmVhdFRpbWVvdXQsIDQ1MDAwKTtcclxuXHJcbiAgICB2YXIgbGFzdEV2ZW50SWQgPSBcIlwiO1xyXG4gICAgdmFyIHJldHJ5ID0gaW5pdGlhbFJldHJ5O1xyXG4gICAgdmFyIHdhc0FjdGl2aXR5ID0gZmFsc2U7XHJcbiAgICB2YXIgdGV4dExlbmd0aCA9IDA7XHJcbiAgICB2YXIgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyB8fCB7fTtcclxuICAgIHZhciBUcmFuc3BvcnRPcHRpb24gPSBvcHRpb25zLlRyYW5zcG9ydDtcclxuICAgIHZhciB4aHIgPSBpc0ZldGNoU3VwcG9ydGVkICYmIFRyYW5zcG9ydE9wdGlvbiA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBuZXcgWEhSV3JhcHBlcihUcmFuc3BvcnRPcHRpb24gIT0gdW5kZWZpbmVkID8gbmV3IFRyYW5zcG9ydE9wdGlvbigpIDogZ2V0QmVzdFhIUlRyYW5zcG9ydCgpKTtcclxuICAgIHZhciB0cmFuc3BvcnQgPSBUcmFuc3BvcnRPcHRpb24gIT0gbnVsbCAmJiB0eXBlb2YgVHJhbnNwb3J0T3B0aW9uICE9PSBcInN0cmluZ1wiID8gbmV3IFRyYW5zcG9ydE9wdGlvbigpIDogKHhociA9PSB1bmRlZmluZWQgPyBuZXcgRmV0Y2hUcmFuc3BvcnQoKSA6IG5ldyBYSFJUcmFuc3BvcnQoKSk7XHJcbiAgICB2YXIgYWJvcnRDb250cm9sbGVyID0gdW5kZWZpbmVkO1xyXG4gICAgdmFyIHRpbWVvdXQgPSAwO1xyXG4gICAgdmFyIGN1cnJlbnRTdGF0ZSA9IFdBSVRJTkc7XHJcbiAgICB2YXIgZGF0YUJ1ZmZlciA9IFwiXCI7XHJcbiAgICB2YXIgbGFzdEV2ZW50SWRCdWZmZXIgPSBcIlwiO1xyXG4gICAgdmFyIGV2ZW50VHlwZUJ1ZmZlciA9IFwiXCI7XHJcblxyXG4gICAgdmFyIHRleHRCdWZmZXIgPSBcIlwiO1xyXG4gICAgdmFyIHN0YXRlID0gRklFTERfU1RBUlQ7XHJcbiAgICB2YXIgZmllbGRTdGFydCA9IDA7XHJcbiAgICB2YXIgdmFsdWVTdGFydCA9IDA7XHJcblxyXG4gICAgdmFyIG9uU3RhcnQgPSBmdW5jdGlvbiAoc3RhdHVzLCBzdGF0dXNUZXh0LCBjb250ZW50VHlwZSwgaGVhZGVycykge1xyXG4gICAgICBpZiAoY3VycmVudFN0YXRlID09PSBDT05ORUNUSU5HKSB7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjAwICYmIGNvbnRlbnRUeXBlICE9IHVuZGVmaW5lZCAmJiBjb250ZW50VHlwZVJlZ0V4cC50ZXN0KGNvbnRlbnRUeXBlKSkge1xyXG4gICAgICAgICAgY3VycmVudFN0YXRlID0gT1BFTjtcclxuICAgICAgICAgIHdhc0FjdGl2aXR5ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgIHJldHJ5ID0gaW5pdGlhbFJldHJ5O1xyXG4gICAgICAgICAgZXMucmVhZHlTdGF0ZSA9IE9QRU47XHJcbiAgICAgICAgICB2Y
8XIgZXZlbnQgPSBuZXcgQ29ubmVjdGlvbkV2ZW50KFwib3BlblwiLCB7XHJcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLFxyXG4gICAgICAgICAgICBzdGF0dXNUZXh0OiBzdGF0dXNUZXh0LFxyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGVzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xyXG4gICAgICAgICAgZmlyZShlcywgZXMub25vcGVuLCBldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIGlmIChzdGF0dXMgIT09IDIwMCkge1xyXG4gICAgICAgICAgICBpZiAoc3RhdHVzVGV4dCkge1xyXG4gICAgICAgICAgICAgIHN0YXR1c1RleHQgPSBzdGF0dXNUZXh0LnJlcGxhY2UoL1xccysvZywgXCIgXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBcIkV2ZW50U291cmNlJ3MgcmVzcG9uc2UgaGFzIGEgc3RhdHVzIFwiICsgc3RhdHVzICsgXCIgXCIgKyBzdGF0dXNUZXh0ICsgXCIgdGhhdCBpcyBub3QgMjAwLiBBYm9ydGluZyB0aGUgY29ubmVjdGlvbi5cIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBcIkV2ZW50U291cmNlJ3MgcmVzcG9uc2UgaGFzIGEgQ29udGVudC1UeXBlIHNwZWNpZnlpbmcgYW4gdW5zdXBwb3J0ZWQgdHlwZTogXCIgKyAoY29udGVudFR5cGUgPT0gdW5kZWZpbmVkID8gXCItXCIgOiBjb250ZW50VHlwZS5yZXBsYWNlKC9cXHMrL2csIFwiIFwiKSkgKyBcIi4gQWJvcnRpbmcgdGhlIGNvbm5lY3Rpb24uXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjbG9zZSgpO1xyXG4gICAgICAgICAgdmFyIGV2ZW50ID0gbmV3IENvbm5lY3Rpb25FdmVudChcImVycm9yXCIsIHtcclxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXHJcbiAgICAgICAgICAgIHN0YXR1c1RleHQ6IHN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnNcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZXMuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICAgICAgICBmaXJlKGVzLCBlcy5vbmVycm9yLCBldmVudCk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB2YXIgb25Qcm9ncmVzcyA9IGZ1bmN0aW9uICh0ZXh0Q2h1bmspIHtcclxuICAgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PT0gT1BFTikge1xyXG4gICAgICAgIHZhciBuID0gLTE7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Q2h1bmsubGVuZ3RoOyBpICs9IDEpIHtcclxuICAgICAgICAgIHZhciBjID0gdGV4dENodW5rLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICBpZiAoYyA9PT0gXCJcXG5cIi5jaGFyQ29kZUF0KDApIHx8IGMgPT09IFwiXFxyXCIuY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICAgICAgICBuID0gaTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGNodW5rID0gKG4gIT09IC0xID8gdGV4dEJ1ZmZlciA6IFwiXCIpICsgdGV4dENodW5rLnNsaWNlKDAsIG4gKyAxKTtcclxuICAgICAgICB0ZXh0QnVmZmVyID0gKG4gPT09IC0xID8gdGV4dEJ1ZmZlciA6IFwiXCIpICsgdGV4dENodW5rLnNsaWNlKG4gKyAxKTtcclxuICAgICAgICBpZiAodGV4dENodW5rICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICB3YXNBY3Rpdml0eSA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICB0ZXh0TGVuZ3RoICs9IHRleHRDaHVuay5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAodmFyIHBvc2l0aW9uID0gMDsgcG9zaXRpb24gPCBjaHVuay5sZW5ndGg7IHBvc2l0aW9uICs9IDEpIHtcclxuICAgICAgICAgIHZhciBjID0gY2h1bmsuY2hhckNvZGVBdChwb3NpdGlvbik7XHJcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEFGVEVSX0NSICYmIGMgPT09IFwiXFxuXCIuY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICAgICAgICBzdGF0ZSA9IEZJRUxEX1NUQVJUO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHN0YXRlID09PSBBRlRFUl9DUikge1xyXG4gICAgICAgICAgICAgIHN0YXRlID0gRklFTERfU1RBUlQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGMgPT09IFwiXFxyXCIuY2hhckNvZGVBdCgwKSB8fCBjID09PSBcIlxcblwiLmNoYXJDb2RlQXQoMCkpIHtcclxuICAgICAgICAgICAgICBpZiAoc3RhdGUgIT09IEZJRUxEX1NUQVJUKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT09IEZJRUxEKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlU3RhcnQgPSBwb3NpdGlvbiArIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2Y
8XIgZmllbGQgPSBjaHVuay5zbGljZShmaWVsZFN0YXJ0LCB2YWx1ZVN0YXJ0IC0gMSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjaHVuay5zbGljZSh2YWx1ZVN0YXJ0ICsgKHZhbHVlU3RhcnQgPCBwb3NpdGlvbiAmJiBjaHVuay5jaGFyQ29kZUF0KHZhbHVlU3RhcnQpID09PSBcIiBcIi5jaGFyQ29kZUF0KDApID8gMSA6IDApLCBwb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQgPT09IFwiZGF0YVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFCdWZmZXIgKz0gXCJcXG5cIjtcclxuICAgICAgICAgICAgICAgICAgZGF0YUJ1ZmZlciArPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09IFwiaWRcIikge1xyXG4gICAgICAgICAgICAgICAgICBsYXN0RXZlbnRJZEJ1ZmZlciA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gXCJldmVudFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIGV2ZW50VHlwZUJ1ZmZlciA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gXCJyZXRyeVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxSZXRyeSA9IHBhcnNlRHVyYXRpb24odmFsdWUsIGluaXRpYWxSZXRyeSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHJ5ID0gaW5pdGlhbFJldHJ5O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gXCJoZWFydGJlYXRUaW1lb3V0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgaGVhcnRiZWF0VGltZW91dCA9IHBhcnNlRHVyYXRpb24odmFsdWUsIGhlYXJ0YmVhdFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGltZW91dCAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCBoZWFydGJlYXRUaW1lb3V0KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoc3RhdGUgPT09IEZJRUxEX1NUQVJUKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YUJ1ZmZlciAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICBsYXN0RXZlbnRJZCA9IGxhc3RFdmVudElkQnVmZmVyO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZXZlbnRUeXBlQnVmZmVyID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlQnVmZmVyID0gXCJtZXNzYWdlXCI7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdmFyIGV2ZW50ID0gbmV3IE1lc3NhZ2VFdmVudChldmVudFR5cGVCdWZmZXIsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhQnVmZmVyLnNsaWNlKDEpLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RFdmVudElkOiBsYXN0RXZlbnRJZEJ1ZmZlclxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgZXMuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChldmVudFR5cGVCdWZmZXIgPT09IFwib3BlblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyZShlcywgZXMub25vcGVuLCBldmVudCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlQnVmZmVyID09PSBcIm1lc3NhZ2VcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpcmUoZXMsIGVzLm9ubWVzc2FnZSwgZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZUJ1ZmZlciA9PT0gXCJlcnJvclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyZShlcywgZXMub25lcnJvciwgZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IENMT1NFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZGF0YUJ1ZmZlciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBldmVudFR5cGVCdWZmZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBzdGF0ZSA9IGMgPT09IFwiXFxyXCIuY2hhckNvZGVBdCgwKSA/IEFGVEVSX0NSIDogRklFTERfU1RBUlQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSBGSUVMRF9TVEFSVCkge1xyXG4gICAgICAgICAgICAgICAgZmllbGRTdGFydCA9IHBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgc3RhdGUgPSBGSUVMRDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSBGSUVMRCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT09IFwiOlwiLmNoYXJDb2RlQXQoMCkpIHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWVTdGFydCA9IHBvc2l0aW9uICsgMTtcclxuICAgICAgICAgICAgICAgICAgc3RhdGUgPSBWQUxVRV9TVEFSVDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBWQUxVRV9TVEFSVCkge1xyXG4gICAgICAgICAgICAgICAgc3RhdGUgPSBWQUxVRTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdmFyIG9uRmluaXNoID0gZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IE9QRU4gfHwgY3VycmVudFN0YXRlID09PSBDT05ORUNUSU5HKSB7XHJcbiAgICAgICAgY3VycmVudFN0YXRlID0gV0FJVElORztcclxuICAgICAgICBpZiAodGltZW91dCAhPT0gMCkge1xyXG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICAgICAgdGltZW91dCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgI
8HRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIG9uVGltZW91dCgpO1xyXG4gICAgICAgIH0sIHJldHJ5KTtcclxuICAgICAgICByZXRyeSA9IGNsYW1wRHVyYXRpb24oTWF0aC5taW4oaW5pdGlhbFJldHJ5ICogMTYsIHJldHJ5ICogMikpO1xyXG5cclxuICAgICAgICBlcy5yZWFkeVN0YXRlID0gQ09OTkVDVElORztcclxuICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXJyb3JFdmVudChcImVycm9yXCIsIHtlcnJvcjogZXJyb3J9KTtcclxuICAgICAgICBlcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgICAgICBmaXJlKGVzLCBlcy5vbmVycm9yLCBldmVudCk7XHJcbiAgICAgICAgaWYgKGVycm9yICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBjbG9zZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgY3VycmVudFN0YXRlID0gQ0xPU0VEO1xyXG4gICAgICBpZiAoYWJvcnRDb250cm9sbGVyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xyXG4gICAgICAgIGFib3J0Q29udHJvbGxlciA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGltZW91dCAhPT0gMCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgICB0aW1lb3V0ID0gMDtcclxuICAgICAgfVxyXG4gICAgICBlcy5yZWFkeVN0YXRlID0gQ0xPU0VEO1xyXG4gICAgfTtcclxuXHJcbiAgICB2YXIgb25UaW1lb3V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aW1lb3V0ID0gMDtcclxuXHJcbiAgICAgIGlmIChjdXJyZW50U3RhdGUgIT09IFdBSVRJTkcpIHtcclxuICAgICAgICBpZiAoIXdhc0FjdGl2aXR5ICYmIGFib3J0Q29udHJvbGxlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIG9uRmluaXNoKG5ldyBFcnJvcihcIk5vIGFjdGl2aXR5IHdpdGhpbiBcIiArIGhlYXJ0YmVhdFRpbWVvdXQgKyBcIiBtaWxsaXNlY29uZHMuXCIgKyBcIiBcIiArIChjdXJyZW50U3RhdGUgPT09IENPTk5FQ1RJTkcgPyBcIk5vIHJlc3BvbnNlIHJlY2VpdmVkLlwiIDogdGV4dExlbmd0aCArIFwiIGNoYXJzIHJlY2VpdmVkLlwiKSArIFwiIFwiICsgXCJSZWNvbm5lY3RpbmcuXCIpKTtcclxuICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xyXG4gICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciBuZXh0SGVhcnRiZWF0ID0gTWF0aC5tYXgoKHdhc0FjdGl2aXR5IHx8IERhdGUubm93KCkpICsgaGVhcnRiZWF0VGltZW91dCAtIERhdGUubm93KCksIDEpO1xyXG4gICAgICAgICAgd2FzQWN0aXZpdHkgPSBmYWxzZTtcclxuICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICB9LCBuZXh0SGVhcnRiZWF0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3YXNBY3Rpdml0eSA9IGZhbHNlO1xyXG4gICAgICB0ZXh0TGVuZ3RoID0gMDtcclxuICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIG9uVGltZW91dCgpO1xyXG4gICAgICB9LCBoZWFydGJlYXRUaW1lb3V0KTtcclxuXHJcbiAgICAgIGN1cnJlbnRTdGF0ZSA9IENPTk5FQ1RJTkc7XHJcbiAgICAgIGRhdGFCdWZmZXIgPSBcIlwiO1xyXG4gICAgICBldmVudFR5cGVCdWZmZXIgPSBcIlwiO1xyXG4gICAgICBsYXN0RXZlbnRJZEJ1ZmZlciA9IGxhc3RFdmVudElkO1xyXG4gICAgICB0ZXh0QnVmZmVyID0gXCJcIjtcclxuICAgICAgZmllbGRTdGFydCA9IDA7XHJcbiAgICAgIHZhbHVlU3RhcnQgPSAwO1xyXG4gICAgICBzdGF0ZSA9IEZJRUxEX1NUQVJUO1xyXG5cclxuICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4OTE2XHJcbiAgICAgIC8vIFJlcXVlc3QgaGVhZGVyIGZpZWxkIExhc3QtRXZlbnQtSUQgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycy5cclxuICAgICAgdmFyIHJlcXVlc3RVUkwgPSB1cmw7XHJcbiAgICAgIGlmICh1cmwuc2xpY2UoMCwgNSkgIT09IFwiZGF0YTpcIiAmJiB1cmwuc2xpY2UoMCwgNSkgIT09IFwiYmxvYjpcIikge1xyXG4gICAgICAgIGlmIChsYXN0RXZlbnRJZCAhPT0gXCJcIikge1xyXG4gICAgICAgICAgLy8gUmVtb3ZlIHRoZSBsYXN0RXZlbnRJZCBwYXJhbWV0ZXIgaWYgaXQncyBhbHJlYWR5IHBhcnQgb2YgdGhlIHJlcXVlc3QgVVJMLlxyXG4gICAgICAgICAgdmFyIGkgPSB1cmwuaW5kZXhPZihcIj9cIik7XHJcbiAgICAgICAgICByZXF1ZXN0VVJMID0gaSA9PT0gLTEgPyB1cmwgOiB1cmwuc2xpY2UoMCwgaSArIDEpICsgdXJsLnNsaWNlKGkgKyAxKS5yZXBsYWNlKC8oPzpefCYpKFtePSZdKikoPzo9W14mXSopPy9nLCBmdW5jdGlvbiAocCwgcGFyYW1OYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJhbU5hbWUgPT09IGxhc3RFdmVudElkUXVlcnlQYXJhbWV0ZXJOYW1lID8gJycgOiBwO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyBBcHBlbmQgdGhlIGN1cnJlbnQgbGFzdEV2ZW50SWQgdG8gdGhlIHJlcXVlc3QgVVJMLlxyXG4gICAgICAgICAgcmVxdWVzdFVSTCArPSAodXJsLmluZGV4T2YoXCI/XCIpID09PSAtMSA/IFwiP1wiIDogXCImXCIpICsgbGFzdEV2ZW50SWRRdWVyeVBhcmFtZXRlck5hbWUgK1wiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGxhc3RFdmVudElkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHdpdGhDcmVkZW50aWFscyA9IGVzLndpdGhDcmVkZW50aWFscztcclxuICAgICAgdmFyIHJlcXVlc3RIZWFkZXJzID0ge307XHJcbiAgICAgIHJlcXVlc3RIZWFkZXJzW1wiQWNjZXB0XCJdID0gXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiO1xyXG4gICAgICB2Y
8XIgaGVhZGVycyA9IGVzLmhlYWRlcnM7XHJcbiAgICAgIGlmIChoZWFkZXJzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gaGVhZGVycykge1xyXG4gICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoZWFkZXJzLCBuYW1lKSkge1xyXG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVyc1tuYW1lXSA9IGhlYWRlcnNbbmFtZV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYWJvcnRDb250cm9sbGVyID0gdHJhbnNwb3J0Lm9wZW4oeGhyLCBvblN0YXJ0LCBvblByb2dyZXNzLCBvbkZpbmlzaCwgcmVxdWVzdFVSTCwgd2l0aENyZWRlbnRpYWxzLCByZXF1ZXN0SGVhZGVycyk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY2xvc2UoKTtcclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBlcy51cmwgPSB1cmw7XHJcbiAgICBlcy5yZWFkeVN0YXRlID0gQ09OTkVDVElORztcclxuICAgIGVzLndpdGhDcmVkZW50aWFscyA9IHdpdGhDcmVkZW50aWFscztcclxuICAgIGVzLmhlYWRlcnMgPSBoZWFkZXJzO1xyXG4gICAgZXMuX2Nsb3NlID0gY2xvc2U7XHJcblxyXG4gICAgb25UaW1lb3V0KCk7XHJcbiAgfVxyXG5cclxuICBFdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXZlbnRUYXJnZXQucHJvdG90eXBlKTtcclxuICBFdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZS5DT05ORUNUSU5HID0gQ09OTkVDVElORztcclxuICBFdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZS5PUEVOID0gT1BFTjtcclxuICBFdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZS5DTE9TRUQgPSBDTE9TRUQ7XHJcbiAgRXZlbnRTb3VyY2VQb2x5ZmlsbC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aGlzLl9jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIEV2ZW50U291cmNlUG9seWZpbGwuQ09OTkVDVElORyA9IENPTk5FQ1RJTkc7XHJcbiAgRXZlbnRTb3VyY2VQb2x5ZmlsbC5PUEVOID0gT1BFTjtcclxuICBFdmVudFNvdXJjZVBvbHlmaWxsLkNMT1NFRCA9IENMT1NFRDtcclxuICBFdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHMgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHZhciBSID0gTmF0aXZlRXZlbnRTb3VyY2VcclxuICBpZiAoWE1MSHR0cFJlcXVlc3QgIT0gdW5kZWZpbmVkICYmIChOYXRpdmVFdmVudFNvdXJjZSA9PSB1bmRlZmluZWQgfHwgIShcIndpdGhDcmVkZW50aWFsc1wiIGluIE5hdGl2ZUV2ZW50U291cmNlLnByb3RvdHlwZSkpKSB7XHJcbiAgICAvLyBXaHkgcmVwbGFjZSBhIG5hdGl2ZSBFdmVudFNvdXJjZSA/XHJcbiAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQzMjhcclxuICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96
8aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTgzMTM5MlxyXG4gICAgLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTI2MDE0NFxyXG4gICAgLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTIyNTY1NFxyXG4gICAgLy8gLi4uXHJcbiAgICBSID0gRXZlbnRTb3VyY2VQb2x5ZmlsbDtcclxuICB9XHJcblxyXG4gIChmdW5jdGlvbiAoZmFjdG9yeSkge1xyXG4gICAgaWYgKHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgIHZhciB2ID0gZmFjdG9yeShleHBvcnRzKTtcclxuICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCkgbW9kdWxlLmV4cG9ydHMgPSB2O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcclxuICAgICAgZGVmaW5lKFtcImV4cG9ydHNcIl0sIGZhY3RvcnkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGZhY3RvcnkoZ2xvYmFsKTtcclxuICAgIH1cclxuICB9KShmdW5jdGlvbiAoZXhwb3J0cykge1xyXG4gICAgZXhwb3J0cy5FdmVudFNvdXJjZVBvbHlmaWxsID0gRXZlbnRTb3VyY2VQb2x5ZmlsbDtcclxuICAgIGV4cG9ydHMuTmF0aXZlRXZlbnRTb3VyY2UgPSBOYXRpdmVFdmVudFNvdXJjZTtcclxuICAgIGV4cG9ydHMuRXZlbnRTb3VyY2UgPSBSO1xyXG4gIH0pO1xyXG59KHR5cGVvZiBnbG9iYWxUaGlzID09PSAndW5kZWZpbmVkJyA/ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSA6IGdsb2JhbFRoaXMpKTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdldmVudC1zb3VyY2UtcG9seWZpbGwnKS5FdmVudFNvdXJjZVBvbHlmaWxsXG4iXSwibmFtZXMiOlsiZ2xvYmFsIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIlhNTEh0dHBSZXF1
8ZXN0IiwiWERvbWFpblJlcXVlc3QiLCJBY3RpdmVYT2JqZWN0IiwiTmF0aXZlRXZlbnRTb3VyY2UiLCJkb2N1bWVudCIsIlByb21pc2UiLCJmZXRjaCIsIlJlc3BvbnNlIiwiVGV4dERlY29kZXIiLCJUZXh0RW5jb2RlciIsIkFib3J0Q29udHJvbGxlciIsImV2ZW50IiwiQyIsIkYiLCJvcmlnaW5hbEZldGNoMiIsInVybCIsIm9wdGlvbnMiLCJzaWduYWwiLCJyZXNwb25zZSIsInJlYWRlciIsIlRleHREZWNvZGVyUG9seWZpbGwiLCJvY3RldHMiLCJ2YWxpZCIsImNvZGVQb2ludCIsInNoaWZ0Iiwib2N0ZXRzQ291bnQiLCJiaXRzTmVlZGVkIiwiUkVQTEFDRVIiLCJzdHJpbmciLCJpIiwib2N0ZXQiLCJzdXBwb3J0c1N0cmVhbU9wdGlvbiIsImVycm9yIiwiayIsIlhIUldyYXBwZXIiLCJ4aHIiLCJtZXRob2QiLCJ0aGF0Iiwic3RhdGUiLCJ0aW1lb3V0Iiwic2lsZW50Iiwib25TdGFydCIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJjb250ZW50VHlwZSIsIm9uUHJvZ3Jlc3MiLCJyZXNwb25zZVRleHQiLCJvbkZpbmlzaCIsInR5cGUiLCJvblJlYWR5U3RhdGVDaGFuZ2UiLCJvblRpbWVvdXQiLCJuYW1lIiwidmFsdWUiLCJlcnJvcjEiLCJ0b0xvd2VyQ2FzZSIsImMiLCJIZWFkZXJzUG9seWZpbGwiLCJhbGwiLCJtYXAiLCJhcnJheSIsImxpbmUiLCJwYXJ0cyIsIlhIUlRyYW5zcG9ydCIsIm9uU3RhcnRDYWxsYmFjayIsIm9uUHJvZ3Jlc3NDYWxsYmFjayIsIm9uRmluaXNoQ2FsbGJhY2siLCJ3aXRoQ3JlZGVudGlhbHMiLCJoZWFkZXJzIiwib2Zmc2V0IiwiY2h1bmsiLCJIZWFkZXJzV3JhcHBlciIsIkZldGNoVHJhbnNwb3J0IiwiY29udHJvbGxlciIsInRleHREZWNvZGVyIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWROZXh0Q2h1bmsiLCJyZXN1bHQiLCJFdmVudFRhcmdldCIsInRocm93RXJyb3IiLCJ0eXBlTGlzdGVuZXJzIiwibGVuZ3RoIiwibGlzdGVuZXIiLCJlIiwibGlzdGVuZXJzIiwiZm91bmQiLCJmaWx0ZXJlZCIsIkV2ZW50IiwiTWVzc2FnZUV2ZW50IiwiQ29ubmVjdGlvbkV2ZW50IiwiRXJyb3JFdmVudCIsIldBSVRJTkciLCJDT05ORUNUSU5HIiwiT1BFTiIsIkNMT1NFRCIsIkFGVEVSX0NSIiwiRklFTERfU1RBUlQiLCJGSUVMRCIsIlZBTFVFX1NUQVJUIiwiVkFMVUUiLCJjb250ZW50VHlwZVJlZ0V4cCIsIk1JTklNVU1fRFVSQVRJT04iLCJNQVhJTVVNX0RVUkFUSU9OIiwicGFyc2VEdXJhdGlvbiIsImRlZiIsImNsYW1wRHVyYXRpb24iLCJuIiwiZmlyZSIsImYiLCJFdmVudFNvdXJjZVBvbHlmaWxsIiwic3RhcnQiLCJnZXRCZXN0WEhSVHJhbnNwb3J0IiwiaXNGZXRjaFN1cHBvcnRlZCIsImVzIiwibGFzdEV2ZW50SWRRdWVyeVBhcmFtZXRlck5hbWUiLCJpbml0aWFsUmV0cnkiLCJoZWFydGJlYXRUaW1lb3V0IiwibGFzdEV2ZW50SWQiLCJyZXRyeSIsIndhc0FjdGl2aXR5IiwidGV4dExlbmd0aCIsIlRyYW5zcG9ydE9wdGlvbiIsInRyYW5zcG9ydCIsImFib3J0Q29udHJvbGxlciIsImN1cnJlbnRTdGF0ZSIsImRhdGFCdWZmZXIiLCJsYXN0RXZlbnRJZEJ1ZmZlciIsImV2ZW50VHlwZUJ1ZmZlciIsInRleHRCdWZmZXIiLCJmaWVsZFN0YXJ0IiwidmFsdWVTdGFydCIsIm1lc3NhZ2UiLCJjbG9zZSIsInRleHRDaHVuayIsInBvc2l0aW9uIiwiZmllbGQiLCJuZXh0SGVhcnRiZWF0IiwicmVxdWVzdFVSTCIsInAiLCJwYXJhbU5hbWUiLCJyZXF1ZXN0SGVhZGVycyIsIlIiLCJmYWN0b3J5IiwidiIsImV4cG9ydHMiLCJtb2R1bGUiLCJ0aGlzIiwiYnJvd3NlciIsInJlcXVpcmUkJDAiXSwibWFwcGluZ3MiOiI7Ozs7c0VBU0MsU0FBVUEsRUFBUSxDQUdqQix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
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.