pup-recorder 0.4.0 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ 'use strict';require('source-map-support/register.js');function v(){if(window.__pup_tick__)return;let n=Date,t=n.now(),e=0,r=0,o=[],s={},a=1,d=()=>(r+=.01,r);function m(...i){return this instanceof m?i.length?new(Function.prototype.bind.apply(n,[null,...i])):new n(t+e+d()):new n(t+e).toString()}m.prototype=n.prototype,m.now=()=>t+e+d(),m.parse=n.parse,m.UTC=n.UTC,window.Date=m,performance.now=()=>e+d(),window.requestAnimationFrame=i=>{let c=a++;return o.push({id:c,cb:i}),c},window.cancelAnimationFrame=i=>{o=o.filter(c=>c.id!==i);},window.setTimeout=(i,c)=>{let u=a++;return s[u]={type:"timeout",cb:i,delay:c||0,next:e+(c||0)},u},window.clearTimeout=i=>{typeof i=="number"&&delete s[i];},window.setInterval=(i,c)=>{let u=a++,l=Math.max(c||0,1);return s[u]={type:"interval",cb:i,delay:l,next:e+l},u},window.clearInterval=i=>{typeof i=="number"&&delete s[i];};function g(i){try{typeof i=="string"?new Function(i)():i();}catch(c){console.error("[Tick] error:",c instanceof Error&&c.stack||c);}}function p(i,c){try{i(c);}catch(u){console.error("[Tick] error:",u instanceof Error&&u.stack||u);}}let T=new WeakMap;function h(i){let c;try{c=document.getAnimations();}catch{return}for(let u of c){let l=u.playState;if(l==="idle"||l==="finished"){T.delete(u);continue}let E=typeof u.playbackRate=="number"?u.playbackRate:1;if(E===0)continue;let w=T.get(u);if(!w){let N=typeof u.currentTime=="number"?u.currentTime:0;w={startMs:i-N/E,pausedAccum:0,pausedAt:-1},T.set(u,w);}if(l==="paused"){w.pausedAt<0&&(w.pausedAt=i);continue}w.pausedAt>=0&&(w.pausedAccum+=i-w.pausedAt,w.pausedAt=-1),u.currentTime=(i-w.startMs-w.pausedAccum)*E;}}function b(i){e=i,r=0;for(let u of Object.keys(s)){let l=s[Number(u)];if(l)for(;l.next<=e;){if(g(l.cb),l.type==="timeout"){delete s[Number(u)];break}l.next+=l.delay;}}let c=o.splice(0);for(let u of c)p(u.cb,e);h(e);}window.__pup_tick__={process:b};}var $=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","transform","transformOrigin","filter","clipPath","boxShadow","opacity","mixBlendMode","mask","zIndex","position","left","top","right","bottom"];function R(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function _(n,t){let e=window.getComputedStyle(n);t.style.position="absolute",t.style.left=`${n.offsetLeft}px`,t.style.top=`${n.offsetTop}px`,t.style.width=`${n.offsetWidth}px`,t.style.height=`${n.offsetHeight}px`;for(let d of $){if(d==="position"||d==="left"||d==="top"||d==="right"||d==="bottom")continue;let m=e.getPropertyValue(R(d));m&&t.style.setProperty(R(d),m);}let r=n.getBoundingClientRect(),o=window.devicePixelRatio||1,s=Math.max(1,Math.round(r.width*o)),a=Math.max(1,Math.round(r.height*o));t.width!==s&&(t.width=s),t.height!==a&&(t.height=a);}function H(n,t){let e=document.createElement("canvas");if(e.dataset.pupVideoOverlay="1",e.style.pointerEvents="none",n.style.visibility="hidden",n.muted=true,(n.parentNode||document.body).insertBefore(e,n.nextSibling),_(n,e),t)try{e.getContext("2d").drawImage(t,0,0,e.width,e.height);}catch{}return e}function A(n,t,e,r,o){if(o==="none")return [(e-n)/2,(r-t)/2,n,t];if(o==="contain"||o==="scale-down"){let s=Math.min(e/n,r/t),a=o==="scale-down"?Math.min(1,s):s,d=a*n,m=a*t;return [(e-d)/2,(r-m)/2,d,m]}if(o==="cover"){let s=Math.max(e/n,r/t),a=s*n,d=s*t;return [(e-a)/2,(r-d)/2,a,d]}return [0,0,e,r]}var M="pup-frame://";var L="[VideoHook]";function V(n){return {length:n>0?1:0,start:()=>0,end:()=>n}}function f(n,t){n.dispatchEvent(new Event(t));}function j(n){if(n.rvfc.size===0)return;let t=[...n.rvfc.values()];n.rvfc.clear();let e=performance.now(),r={presentationTime:e,expectedDisplayTime:e,width:n.meta.frameWidth,height:n.meta.frameHeight,mediaTime:n.currentTime,presentedFrames:n.presentedFrames};for(let o of t)o(e,r);}async function W(n,t,e,r){let o=n.cache.cacheOf(e.meta.id);o.readers.set(e,r);let s=o.bitmaps.get(r);if(!s){n.cache.prefetch(e,r+1,9);let m=await n.cache.fetch(e,r);if(n.sessions.get(t)!==e)return;if(!m){!e.paused&&!e.waiting&&(e.waiting=true,f(t,"waiting"));return}s=m;}e.waiting&&(e.waiting=false,e.paused||f(t,"playing"));let a=e.cv,d=A(s.width,s.height,a.width,a.height,e.objectFit);e.ctx.clearRect(0,0,a.width,a.height),e.ctx.drawImage(s,d[0],d[1],d[2],d[3]),e.lastDrawnIdx=r,e.presentedFrames++,j(e),n.cache.prefetch(e,r+1,10),n.cache.evict(o);}function C(n,t){let e=Math.max(0,t-n.currMs)/1e3;n.currMs=t;let r=[];return document.querySelectorAll("video").forEach(o=>{let s=o,a=n.sessions.get(s);if(!a||a.dead||(_(s,a.cv),!a.meta))return;if(a.meta.frameWidth<a.meta.width&&a.cv.width>a.meta.frameWidth*1.05&&!n.attaching.has(s)){n.reattach(s,a);return}!a.paused&&!a.ended&&(a.currentTime+=e*(s.playbackRate||1),a.maxReached=Math.max(a.maxReached,a.currentTime),a.currentTime>=a.meta.duration?s.loop?a.currentTime=a.currentTime%a.meta.duration:(a.currentTime=a.meta.duration,a.paused=true,a.ended=true,f(s,"ended")):f(s,"timeupdate"));let d=Math.max(1,Math.round(a.currentTime*a.meta.fps));d!==a.lastDrawnIdx&&r.push(W(n,s,a,d));}),Promise.all(r)}var x=class{_caches=new Map;cacheOf(t){let e=this._caches.get(t);return e||(e={bitmaps:new Map,inFlight:new Map,readers:new Map},this._caches.set(t,e)),e}fetch(t,e){let r=t.meta;if(!r)return Promise.resolve(null);let o=this.cacheOf(r.id),s=o.inFlight.get(e);if(s)return s;let a=o.bitmaps.get(e);if(a)return Promise.resolve(a);let d=r.frameWidth,m=r.frameHeight,g=fetch(`${M}frame?id=${r.id}&idx=${e}`).then(p=>p.ok?p.arrayBuffer():null).then(p=>p&&p.byteLength===d*m*4?createImageBitmap(new ImageData(new Uint8ClampedArray(p),d,m)):null).then(p=>(o.inFlight.delete(e),p&&o.bitmaps.set(e,p),p)).catch(()=>(o.inFlight.delete(e),null));return o.inFlight.set(e,g),g}prefetch(t,e,r){let o=t.meta;if(!o)return;let s=Math.max(1,Math.round(o.duration*o.fps));for(let a=e;a<e+r;a++)a<1||a>s||this.fetch(t,a);}evict(t){let e=1/0;if(t.readers.forEach(o=>{o<e&&(e=o);}),!Number.isFinite(e))return;let r=e-2;t.bitmaps.forEach((o,s)=>{s<r&&(o.close(),t.bitmaps.delete(s));});}release(t,e){let r=this._caches.get(t);r&&(r.readers.delete(e),!(r.readers.size>0)&&(r.bitmaps.forEach(o=>{o.close();}),this._caches.delete(t),fetch(`${M}close?id=${t}`,{keepalive:true})));}};function O(n){let t=HTMLVideoElement.prototype,e=HTMLMediaElement.prototype,r=i=>Object.getOwnPropertyDescriptor(t,i)||Object.getOwnPropertyDescriptor(e,i),o=r("currentTime"),s=r("src"),a=r("playbackRate"),d=t.pause,m=t.requestVideoFrameCallback,g=t.cancelVideoFrameCallback,p=t.getVideoPlaybackQuality,T=t.load,h=n.sessions,b=(i,c)=>{let u=r(i)?.get;if(!u)throw new Error(`media_shim: no native getter for ${i}`);Object.defineProperty(t,i,{configurable:true,get(){let l=h.get(this);return l?c(l):u.call(this)}});};if(b("paused",i=>i.paused),b("ended",i=>i.ended),b("readyState",i=>i.readyState),b("networkState",i=>i.networkState),b("error",i=>i.error??null),b("seeking",i=>i.seeking),b("buffered",i=>V(i.meta?i.meta.duration:0)),b("seekable",i=>V(i.meta?i.meta.duration:0)),b("played",i=>V(i.maxReached)),t.play=function(){let i=h.get(this);return i?(n.resume(this,i),Promise.resolve()):n.attach(this).then(c=>{c&&n.resume(this,c);})},t.pause=function(){let i=h.get(this);if(!i){d.call(this);return}i.paused||(i.paused=true,f(this,"pause"));},o?.get&&o.set){let i=o.get,c=o.set;Object.defineProperty(t,"currentTime",{configurable:true,get(){let u=h.get(this);return u?u.currentTime:i.call(this)},set(u){let l=h.get(this);if(!l){c.call(this,u);return}let E=l.meta?l.meta.duration:u;l.currentTime=Math.max(0,Math.min(u,E)),l.maxReached=Math.max(l.maxReached,l.currentTime),l.currentTime<E&&(l.ended=false),l.seeking=true,f(this,"seeking"),l.seeking=false,f(this,"seeked"),f(this,"timeupdate");}});}if(a?.set){let i=a.set;Object.defineProperty(t,"playbackRate",{configurable:true,get:a.get,set(c){i.call(this,c),h.has(this)&&f(this,"ratechange");}});}if(t.requestVideoFrameCallback=function(i){let c=h.get(this);if(!c)return m.call(this,i);let u=++n.rvfcSeq;return c.rvfc.set(u,i),u},t.cancelVideoFrameCallback=function(i){let c=h.get(this);if(!c){g.call(this,i);return}c.rvfc.delete(i);},t.getVideoPlaybackQuality=function(){let i=h.get(this);return i?{creationTime:performance.now(),totalVideoFrames:i.presentedFrames,droppedVideoFrames:0,corruptedVideoFrames:0}:p.call(this)},t.load=function(){if(!h.has(this))return T.call(this);n.detach(this),f(this,"emptied"),this.__pupLastSrc=void 0,n.attach(this);},s?.set){let i=s.set;Object.defineProperty(t,"src",{configurable:true,get:s.get,set(c){i.call(this,c),n.onSrcChange(this);}});}}function D(n,t){return {meta:null,cv:t,ctx:t.getContext("2d"),paused:!(n.autoplay||!n.paused),currentTime:0,ended:false,lastDrawnIdx:-1,dead:false,objectFit:window.getComputedStyle(n).objectFit||"fill",readyState:0,networkState:0,seeking:false,waiting:false,error:void 0,presentedFrames:0,maxReached:0,rvfc:new Map}}function F(n,t,e){return t.dead=true,t.error=e,t.networkState=3,console.warn(L,`${e.message} src=${n.src||n.currentSrc}`),f(n,"error"),null}async function P(n,t){let{video:e,state:r,src:o,birthMs:s,native:a}=t,d=Number.parseInt(e.dataset.pupFps||"30",10);r.networkState=2,f(e,"loadstart");let m;try{let p=a?"":`&w=${r.cv.width}&h=${r.cv.height}&fit=${encodeURIComponent(r.objectFit)}`;m=await fetch(`${M}open?src=${encodeURIComponent(o)}&fps=${d}${p}`);}catch(p){return F(e,r,{code:2,message:`open failed: ${p instanceof Error?p.message:String(p)}`})}if(n.sessions.get(e)!==r)return null;if(!m.ok)return F(e,r,{code:3,message:`open ${m.status}: ${await m.text()}`});let g=await m.json();return n.sessions.get(e)!==r?null:(r.meta=g,r.currentTime=r.paused?0:Math.max(0,(n.currMs-s)/1e3),Object.defineProperty(e,"videoWidth",{value:g.width,configurable:true}),Object.defineProperty(e,"videoHeight",{value:g.height,configurable:true}),Object.defineProperty(e,"duration",{value:g.duration,configurable:true}),r.readyState=1,f(e,"durationchange"),f(e,"loadedmetadata"),r.readyState=4,f(e,"loadeddata"),f(e,"canplay"),f(e,"canplaythrough"),r.networkState=1,f(e,"suspend"),r.paused||(f(e,"play"),f(e,"playing")),n.cache.prefetch(r,1,10),r)}var k=class{sessions=new WeakMap;attaching=new WeakMap;opening=new Set;cache=new x;rvfcSeq=0;currMs=0;_lastSnapshot=new WeakMap;install(){O(this),this.scan(document.documentElement),new MutationObserver(t=>{for(let e of t){if(e.type==="attributes"&&e.target instanceof HTMLVideoElement&&e.attributeName==="src"){this.onSrcChange(e.target);continue}e.addedNodes.forEach(r=>{r instanceof Element&&this.scan(r);}),e.removedNodes.forEach(r=>{r instanceof HTMLVideoElement&&this.detach(r);});}}).observe(document,{subtree:true,childList:true,attributes:true,attributeFilter:["src"]}),window.__pup_video__={advance:t=>C(this,t),ready:()=>this.ready()};}attach(t,e=false){let r=this.sessions.get(t);if(r)return Promise.resolve(r);let o=this.attaching.get(t);if(o)return o;let s=t.src||t.currentSrc;if(!s||/^(blob:|data:|mediastream:)/i.test(s))return Promise.resolve(null);let a=H(t,this._lastSnapshot.get(t)),d=D(t,a);this.sessions.set(t,d);let m=P(this,{video:t,state:d,src:s,birthMs:this.currMs,native:e}).finally(()=>{this.attaching.delete(t),this.opening.delete(m);});return this.attaching.set(t,m),this.opening.add(m),m}async ready(){await Promise.allSettled([...this.opening]);}resume(t,e){!e.paused&&!e.ended||(e.paused=false,e.ended=false,f(t,"play"),f(t,"playing"));}detach(t){let e=this.sessions.get(t);if(e){if(e.meta){if(e.lastDrawnIdx>=0)try{let r=new OffscreenCanvas(e.cv.width,e.cv.height),o=r.getContext("2d");if(!o)throw new Error("no 2d context");o.drawImage(e.cv,0,0),this._lastSnapshot.set(t,r);}catch{}this.cache.release(e.meta.id,e);}e.cv.remove(),this.sessions.delete(t),this.attaching.delete(t);}}onSrcChange(t){let e=t.src||t.currentSrc||"";t.__pupLastSrc!==e&&(t.__pupLastSrc=e,this.sessions.has(t)&&this.detach(t),this.attach(t));}reattach(t,e){let r=e.currentTime,o=e.paused,s=e.ended;this.detach(t),this.attach(t,true).then(a=>{a&&(a.currentTime=r,a.paused=o,a.ended=s);});}scan(t){t&&(t.tagName==="VIDEO"&&this.attach(t),t.querySelectorAll&&t.querySelectorAll("video").forEach(e=>{this.attach(e);}));}};function I(){window.__pup_video__||new k().install();}window.self!==window.top&&(v(),I());
2
+ //# sourceMappingURL=iframe_preload.cjs.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2lmcmFtZV9ob29rLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vb3ZlcmxheS50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3ZpZGVvL3R5cGVzLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vZHJpdmVyLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vZnJhbWVfY2FjaGUudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9tZWRpYV9zaGltLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vc2Vzc2lvbi50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3ZpZGVvL2hvb2sudHMiLCIuLi8uLi9zcmMvcnVudGltZS9pZnJhbWVfcHJlbG9hZC50cyJdLCJuYW1lcyI6WyJpbnN0YWxsVGlja0hvb2siLCJSRUFMX0RBVEUiLCJkYXRlT3JpZ2luIiwiY3Vyck1zIiwidGltZU9mZnNldCIsInJhZlF1ZXVlIiwidGltZXJzIiwibmV4dElkIiwidGljayIsIkZha2VEYXRlIiwiYXJncyIsImNiIiwiaWQiLCJyIiwiZGVsYXkiLCJkIiwic2FmZUludm9rZVRpbWVyIiwiZm4iLCJlIiwic2FmZUludm9rZVJhZiIsInRzIiwiYW5pbVN0YXRlIiwic3luY0FuaW1hdGlvbnMiLCJtcyIsImFuaW1zIiwiYSIsInN0YXRlIiwicmF0ZSIsInMiLCJjdDAiLCJwcm9jZXNzIiwidGltZXN0YW1wTXMiLCJ0IiwicmFmcyIsIk1JUlJPUl9QUk9QUyIsImNzc0Nhc2UiLCJjIiwic3luY092ZXJsYXkiLCJ2aWRlbyIsImN2IiwiY3MiLCJwIiwidiIsInZyIiwiZHByIiwidyIsImgiLCJzZXR1cENhbnZhcyIsInNuYXAiLCJmaXRSZWN0Iiwic3JjVyIsInNyY0giLCJkc3RXIiwiZHN0SCIsImZpdCIsInNjIiwiayIsIndzIiwiaHMiLCJzYzIiLCJ3czIiLCJoczIiLCJTQ0hFTUUiLCJUQUciLCJ0aW1lUmFuZ2VzIiwiZW5kIiwiZmlyZSIsImVsIiwidHlwZSIsImZpcmVGcmFtZUNhbGxiYWNrcyIsImNicyIsIm5vdyIsIm1ldGEiLCJwYWludCIsImhvb2siLCJpZHgiLCJibSIsImZldGNoZWQiLCJhZHZhbmNlIiwiZHQiLCJwcyIsIkZyYW1lQ2FjaGUiLCJleGlzdGluZyIsImNhY2hlZCIsImJ1ZiIsImZyb21JZHgiLCJjb3VudCIsIm1heElkeCIsImkiLCJtaW5JZHgiLCJmbG9vciIsImluc3RhbGxNZWRpYVNoaW0iLCJIVkUiLCJNRURJQSIsIm1kZXNjIiwiY3REZXNjIiwic3JjRGVzYyIsInJhdGVEZXNjIiwib3JpZ1BhdXNlIiwib3JpZ1JWRkMiLCJvcmlnQ2FuY2VsUlZGQyIsIm9yaWdRdWFsaXR5Iiwib3JpZ0xvYWQiLCJzZXNzaW9ucyIsImRlZiIsInByb3AiLCJwaWNrIiwibmF0aXZlR2V0IiwibnMiLCJjdEdldCIsImN0U2V0IiwiZHVyIiwicmF0ZVNldCIsInNyY1NldCIsIm5ld1ZpZGVvU3RhdGUiLCJmYWlsT3BlbiIsImVycm9yIiwib3BlblNlc3Npb24iLCJzcmMiLCJiaXJ0aE1zIiwibmF0aXZlIiwiZnBzIiwicmVzIiwicSIsIlZpZGVvSG9vayIsIm11dHMiLCJtIiwibiIsInBlbmRpbmciLCJzY3R4IiwicGF1c2VkIiwiZW5kZWQiLCJyb290IiwiaW5zdGFsbFZpZGVvSG9vayJdLCJtYXBwaW5ncyI6InVEQXdCTyxTQUFTQSxHQUF3QixDQUN0QyxHQUFJLE9BQU8sWUFBQSxDQUNULE9BR0YsSUFBTUMsQ0FBQUEsQ0FBWSxJQUFBLENBQ1pDLENBQUFBLENBQWFELENBQUFBLENBQVUsS0FBSSxDQUM3QkUsQ0FBQUEsQ0FBUyxFQUNUQyxDQUFBQSxDQUFhLENBQUEsQ0FDYkMsRUFBdUIsRUFBQyxDQUN0QkMsQ0FBQUEsQ0FBNEMsR0FDOUNDLENBQUFBLENBQVMsQ0FBQSxDQUNQQyxFQUFPLEtBQ1hKLENBQUFBLEVBQWMsSUFDUEEsQ0FBQUEsQ0FBQUEsQ0FHVCxTQUFTSyxDQUFBQSxDQUFBQSxHQUEyQkMsQ0FBQUEsQ0FBZ0Ms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RyxDQUFBQSxDQUFRekcsRUFBTSxLQUFBLENBQ3BCLElBQUEsQ0FBSyxPQUFPWSxDQUFLLENBQUEsQ0FDWixJQUFBLENBQUssTUFBQSxDQUFPQSxFQUFPLElBQUksQ0FBQSxDQUFFLEtBQU1zRSxDQUFBQSxFQUFPLENBQ3BDQSxJQUdMQSxDQUFBQSxDQUFHLFdBQUEsQ0FBYzVFLEVBQ2pCNEUsQ0FBQUEsQ0FBRyxNQUFBLENBQVNzQixFQUNadEIsQ0FBQUEsQ0FBRyxLQUFBLENBQVF1QixHQUNiLENBQUMsRUFDSCxDQUVRLElBQUEsQ0FBS0MsQ0FBQUEsQ0FBNEIsQ0FDbENBLENBQUFBLEdBR0RBLEVBQUssT0FBQSxHQUFZLE9BQUEsRUFDbkIsS0FBSyxNQUFBLENBQU9BLENBQXdCLEVBRWxDQSxDQUFBQSxDQUFLLGdCQUFBLEVBQ1BBLENBQUFBLENBQUssZ0JBQUEsQ0FBaUIsT0FBTyxDQUFBLENBQUUsT0FBQSxDQUFTMUYsR0FBTSxDQUM1QyxJQUFBLENBQUssT0FBT0EsQ0FBQyxFQUNmLENBQUMsQ0FBQSxFQUVMLENBQ0YsQ0FBQSxDQUVPLFNBQVMyRixHQUF5QixDQUNuQyxNQUFBLENBQU8sZUFHWCxJQUFJVCxDQUFBQSxHQUFZLE9BQUEsR0FDbEIsQ0NsS0ksTUFBQSxDQUFPLElBQUEsR0FBUyxPQUFPLEdBQUEsR0FDekI1SCxDQUFBQSxHQUNBcUksQ0FBQUEsRUFBaUIsQ0FBQSIsImZpbGUiOiJpZnJhbWVfcHJlbG9hZC5janMiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fcHVwX3RpY2tfXz86IHsgcHJvY2VzczogKG1zOiBudW1iZXIpID0+IHZvaWQgfTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgVGltZXIge1xuICB0eXBlOiBcInRpbWVvdXRcIiB8IFwiaW50ZXJ2YWxcIjtcbiAgY2I6IFRpbWVySGFuZGxlcjtcbiAgZGVsYXk6IG51bWJlcjtcbiAgbmV4dDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmFmRW50cnkge1xuICBpZDogbnVtYmVyO1xuICBjYjogRnJhbWVSZXF1ZXN0Q2FsbGJhY2s7XG59XG5cbmludGVyZmFjZSBBbmltRW50cnkge1xuICBzdGFydE1zOiBudW1iZXI7XG4gIHBhdXNlZEFjY3VtOiBudW1iZXI7XG4gIHBhdXNlZEF0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsVGlja0hvb2soKTogdm9pZCB7XG4gIGlmICh3aW5kb3cuX19wdXBfdGlja19fKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgUkVBTF9EQVRFID0gRGF0ZTtcbiAgY29uc3QgZGF0ZU9yaWdpbiA9IFJFQUxfREFURS5ub3coKTtcbiAgbGV0IGN1cnJNcyA9IDA7XG4gIGxldCB0aW1lT2Zmc2V0ID0gMDtcbiAgbGV0IHJhZlF1ZXVlOiBSYWZFbnRyeVtdID0gW107XG4gIGNvbnN0IHRpbWVyczogUmVjb3JkPG51bWJlciwgVGltZXIgfCB1bmRlZmluZWQ+ID0ge307XG4gIGxldCBuZXh0SWQgPSAxO1xuICBjb25zdCB0aWNrID0gKCkgPT4ge1xuICAgIHRpbWVPZmZzZXQgKz0gMC4wMTtcbiAgICByZXR1cm4gdGltZU9mZnNldDtcbiAgfTtcblxuICBmdW5jdGlvbiBGYWtlRGF0ZSh0aGlzOiB1bmtub3duLCAuLi5hcmdzOiB1bmtub3duW10pOiBEYXRlIHwgc3RyaW5nIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRmFrZURhdGUpKSB7XG4gICAgICByZXR1cm4gbmV3IFJFQUxfREFURShkYXRlT3JpZ2luICsgY3Vyck1zKS50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gYXJncy5sZW5ndGhcbiAgICAgID8gbmV3IChGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5hcHBseShSRUFMX0RBVEUsIFtudWxsLCAuLi5hcmdzXSkpKClcbiAgICAgIDogbmV3IFJFQUxfREFURShkYXRlT3JpZ2luICsgY3Vyck1zICsgdGljaygpKTtcbiAgfVxuICBGYWtlRGF0ZS5wcm90b3R5cGUgPSBSRUFMX0RBVEUucHJvdG90eXBlO1xuICBGYWtlRGF0ZS5ub3cgPSAoKSA9PiBkYXRlT3JpZ2luICsgY3Vyck1zICsgdGljaygpO1xuICBGYWtlRGF0ZS5wYXJzZSA9IFJFQUxfREFURS5wYXJzZTtcbiAgRmFrZURhdGUuVVRDID0gUkVBTF9EQVRFLlVUQztcbiAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgRGF0ZTogdW5rbm93biB9KS5EYXRlID0gRmFrZURhdGU7XG4gIHBlcmZvcm1hbmNlLm5vdyA9ICgpID0+IGN1cnJNcyArIHRpY2soKTtcblxuICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gKGNiKSA9PiB7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICByYWZRdWV1ZS5wdXNoKHsgaWQsIGNiIH0pO1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gKGlkKSA9PiB7XG4gICAgcmFmUXVldWUgPSByYWZRdWV1ZS5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgfTtcbiAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgc2V0VGltZW91dDogdW5rbm93biB9KS5zZXRUaW1lb3V0ID0gKGNiOiBUaW1lckhhbmRsZXIsIGRlbGF5PzogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICB0aW1lcnNbaWRdID0geyB0eXBlOiBcInRpbWVvdXRcIiwgY2IsIGRlbGF5OiBkZWxheSB8fCAwLCBuZXh0OiBjdXJyTXMgKyAoZGVsYXkgfHwgMCkgfTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIHdpbmRvdy5jbGVhclRpbWVvdXQgPSAoaWQpID0+IHtcbiAgICBpZiAodHlwZW9mIGlkID09PSBcIm51bWJlclwiKSB7XG4gICAgICBkZWxldGUgdGltZXJzW2lkXTtcbiAgICB9XG4gIH07XG4gICh3aW5kb3cgYXMgdW5rbm93biBhcyB7IHNldEludGVydmFsOiB1bmtub3duIH0pLnNldEludGVydmFsID0gKGNiOiBUaW1lckhhbmRsZXIsIGRlbGF5PzogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICBjb25zdCBkID0gTWF0aC5tYXgoZGVsYXkgfHwgMCwgMSk7XG4gICAgdGltZXJzW2lkXSA9IHsgdHlwZTogXCJpbnRlcnZhbFwiLCBjYiwgZGVsYXk6IGQsIG5leHQ6IGN1cnJNcyArIGQgfTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIHdpbmRvdy5jbGVhckludGVydmFsID0gKGlkKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgZGVsZXRlIHRpbWVyc1tpZF07XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHNhZmVJbnZva2VUaW1lcihmbjogVGltZXJIYW5kbGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2YgZm4gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgLy8gU3RyaW5nIHRpbWVyIGhhbmRsZXIgcnVucyBhcyBwYWdlIHNjcmlwdCBpbiBnbG9iYWwgc2NvcGUgKEhUTUwgc3BlYyk7IEZ1bmN0aW9uIGN0b3IgbWF0Y2hlcyB0aGF0LCBhdm9pZHMgZXZhbC5cbiAgICAgICAgbmV3IEZ1bmN0aW9uKGZuKSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW1RpY2tdIGVycm9yOlwiLCAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHx8IGUpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBzYWZlSW52b2tlUmFmKGNiOiBGcmFtZVJlcXVlc3RDYWxsYmFjaywgdHM6IG51bWJlcikge1xuICAgIHRyeSB7XG4gICAgICBjYih0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIltUaWNrXSBlcnJvcjpcIiwgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLnN0YWNrKSB8fCBlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhbmltU3RhdGUgPSBuZXcgV2Vha01hcDxBbmltYXRpb24sIEFuaW1FbnRyeT4oKTtcbiAgZnVuY3Rpb24gc3luY0FuaW1hdGlvbnMobXM6IG51bWJlcikge1xuICAgIGxldCBhbmltczogQW5pbWF0aW9uW107XG4gICAgdHJ5IHtcbiAgICAgIGFuaW1zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGEgb2YgYW5pbXMpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gYS5wbGF5U3RhdGU7XG4gICAgICBpZiAoc3RhdGUgPT09IFwiaWRsZVwiIHx8IHN0YXRlID09PSBcImZpbmlzaGVkXCIpIHtcbiAgICAgICAgYW5pbVN0YXRlLmRlbGV0ZShhKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByYXRlID0gdHlwZW9mIGEucGxheWJhY2tSYXRlID09PSBcIm51bWJlclwiID8gYS5wbGF5YmFja1JhdGUgOiAxO1xuICAgICAgaWYgKHJhdGUgPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBsZXQgcyA9IGFuaW1TdGF0ZS5nZXQoYSk7XG4gICAgICBpZiAoIXMpIHtcbiAgICAgICAgY29uc3QgY3QwID0gdHlwZW9mIGEuY3VycmVudFRpbWUgPT09IFwibnVtYmVyXCIgPyBhLmN1cnJlbnRUaW1lIDogMDtcbiAgICAgICAgcyA9IHsgc3RhcnRNczogbXMgLSBjdDAgLyByYXRlLCBwYXVzZWRBY2N1bTogMCwgcGF1c2VkQXQ6IC0xIH07XG4gICAgICAgIGFuaW1TdGF0ZS5zZXQoYSwgcyk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUgPT09IFwicGF1c2VkXCIpIHtcbiAgICAgICAgaWYgKHMucGF1c2VkQXQgPCAwKSB7XG4gICAgICAgICAgcy5wYXVzZWRBdCA9IG1zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHMucGF1c2VkQXQgPj0gMCkge1xuICAgICAgICBzLnBhdXNlZEFjY3VtICs9IG1zIC0gcy5wYXVzZWRBdDtcbiAgICAgICAgcy5wYXVzZWRBdCA9IC0xO1xuICAgICAgfVxuICAgICAgYS5jdXJyZW50VGltZSA9IChtcyAtIHMuc3RhcnRNcyAtIHMucGF1c2VkQWNjdW0pICogcmF0ZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwcm9jZXNzKHRpbWVzdGFtcE1zOiBudW1iZXIpIHtcbiAgICBjdXJyTXMgPSB0aW1lc3RhbXBNcztcbiAgICB0aW1lT2Zmc2V0ID0gMDtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRpbWVycykpIHtcbiAgICAgIGNvbnN0IHQgPSB0aW1lcnNbTnVtYmVyKGlkKV07XG4gICAgICBpZiAoIXQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB3aGlsZSAodC5uZXh0IDw9IGN1cnJNcykge1xuICAgICAgICBzYWZlSW52b2tlVGltZXIodC5jYik7XG4gICAgICAgIGlmICh0LnR5cGUgPT09IFwidGltZW91dFwiKSB7XG4gICAgICAgICAgZGVsZXRlIHRpbWVyc1tOdW1iZXIoaWQpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0Lm5leHQgKz0gdC5kZWxheTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmFmcyA9IHJhZlF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgcmFmcykge1xuICAgICAgc2FmZUludm9rZVJhZihyLmNiLCBjdXJyTXMpO1xuICAgIH1cbiAgICBzeW5jQW5pbWF0aW9ucyhjdXJyTXMpO1xuICB9XG5cbiAgd2luZG93Ll9fcHVwX3RpY2tfXyA9IHsgcHJvY2VzcyB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxudHlwZSBWZWM0ID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IE1JUlJPUl9QUk9QUyA9IFtcbiAgXCJib3JkZXJSYWRpdXNcIixcbiAgXCJib3JkZXJUb3BMZWZ0UmFkaXVzXCIsXG4gIFwiYm9yZGVyVG9wUmlnaHRSYWRpdXNcIixcbiAgXCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzXCIsXG4gIFwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNcIixcbiAgXCJ0cmFuc2Zvcm1cIixcbiAgXCJ0cmFuc2Zvcm1PcmlnaW5cIixcbiAgXCJmaWx0ZXJcIixcbiAgXCJjbGlwUGF0aFwiLFxuICBcImJveFNoYWRvd1wiLFxuICBcIm9wYWNpdHlcIixcbiAgXCJtaXhCbGVuZE1vZGVcIixcbiAgXCJtYXNrXCIsXG4gIFwiekluZGV4XCIsXG4gIFwicG9zaXRpb25cIixcbiAgXCJsZWZ0XCIsXG4gIFwidG9wXCIsXG4gIFwicmlnaHRcIixcbiAgXCJib3R0b21cIixcbl0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGNzc0Nhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvW0EtWl0vZywgKGMpID0+IGAtJHtjLnRvTG93ZXJDYXNlKCl9YCk7XG59XG5cbi8vIFRyYWNrIHRoZSBvdmVybGF5IGNhbnZhcyB0byB0aGUgdmlkZW8gZWxlbWVudCdzIGxpdmUgYm94IChwb3NpdGlvbiwgc2l6ZcOXZHByLCBtaXJyb3JlZCB2aXN1YWwgc3R5bGVzKS5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jT3ZlcmxheSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgY3Y6IEhUTUxDYW52YXNFbGVtZW50KTogdm9pZCB7XG4gIGNvbnN0IGNzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodmlkZW8pO1xuICBjdi5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgLy8gb2Zmc2V0KiBhcmUgcHJlLXRyYW5zZm9ybSBjb29yZHMgZnJvbSBvZmZzZXRQYXJlbnQncyBwYWRkaW5nIGVkZ2UgPSB0aGUgYWJzIGNvbnRhaW5pbmctYmxvY2sgb3JpZ2luOyBtYXAgZGlyZWN0LlxuICBjdi5zdHlsZS5sZWZ0ID0gYCR7dmlkZW8ub2Zmc2V0TGVmdH1weGA7XG4gIGN2LnN0eWxlLnRvcCA9IGAke3ZpZGVvLm9mZnNldFRvcH1weGA7XG4gIGN2LnN0eWxlLndpZHRoID0gYCR7dmlkZW8ub2Zmc2V0V2lkdGh9cHhgO1xuICBjdi5zdHlsZS5oZWlnaHQgPSBgJHt2aWRlby5vZmZzZXRIZWlnaHR9cHhgO1xuICBmb3IgKGNvbnN0IHAgb2YgTUlSUk9SX1BST1BTKSB7XG4gICAgaWYgKHAgPT09IFwicG9zaXRpb25cIiB8fCBwID09PSBcImxlZnRcIiB8fCBwID09PSBcInRvcFwiIHx8IHAgPT09IFwicmlnaHRcIiB8fCBwID09PSBcImJvdHRvbVwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdiA9IGNzLmdldFByb3BlcnR5VmFsdWUoY3NzQ2FzZShwKSk7XG4gICAgaWYgKHYpIHtcbiAgICAgIGN2LnN0eWxlLnNldFByb3BlcnR5KGNzc0Nhc2UocCksIHYpO1xuICAgIH1cbiAgfVxuICAvLyBCYWNraW5nIHN0b3JlIGF0IG9uLXNjcmVlbiBwaXhlbCBzaXplIChwb3N0LXRyYW5zZm9ybSkgc28gZGVjb2RlIHJlc29sdXRpb24gbWF0Y2hlcyBkaXNwbGF5ZWQgcGl4ZWxzLlxuICBjb25zdCB2ciA9IHZpZGVvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICBjb25zdCB3ID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh2ci53aWR0aCAqIGRwcikpO1xuICBjb25zdCBoID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh2ci5oZWlnaHQgKiBkcHIpKTtcbiAgaWYgKGN2LndpZHRoICE9PSB3KSB7XG4gICAgY3Yud2lkdGggPSB3O1xuICB9XG4gIGlmIChjdi5oZWlnaHQgIT09IGgpIHtcbiAgICBjdi5oZWlnaHQgPSBoO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENhbnZhcyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc25hcDogT2Zmc2NyZWVuQ2FudmFzIHwgdW5kZWZpbmVkKTogSFRNTENhbnZhc0VsZW1lbnQge1xuICBjb25zdCBjdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGN2LmRhdGFzZXRbXCJwdXBWaWRlb092ZXJsYXlcIl0gPSBcIjFcIjtcbiAgY3Yuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICB2aWRlby5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgdmlkZW8ubXV0ZWQgPSB0cnVlO1xuICBjb25zdCBwYXJlbnQgPSB2aWRlby5wYXJlbnROb2RlIHx8IGRvY3VtZW50LmJvZHk7XG4gIHBhcmVudC5pbnNlcnRCZWZvcmUoY3YsIHZpZGVvLm5leHRTaWJsaW5nKTtcbiAgc3luY092ZXJsYXkodmlkZW8sIGN2KTtcbiAgaWYgKHNuYXApIHtcbiAgICB0cnkge1xuICAgICAgY3YuZ2V0Q29udGV4dChcIjJkXCIpIS5kcmF3SW1hZ2Uoc25hcCwgMCwgMCwgY3Yud2lkdGgsIGN2LmhlaWdodCk7XG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBjdjtcbn1cblxuLy8gRHJhdyByZWN0IGZvciB0aGUgYml0bWFwIHdpdGhpbiB0aGUgY2FudmFzIHBlciBvYmplY3RGaXQuXG5leHBvcnQgZnVuY3Rpb24gZml0UmVjdChzcmNXOiBudW1iZXIsIHNyY0g6IG51bWJlciwgZHN0VzogbnVtYmVyLCBkc3RIOiBudW1iZXIsIGZpdDogc3RyaW5nKTogVmVjNCB7XG4gIGlmIChmaXQgPT09IFwibm9uZVwiKSB7XG4gICAgcmV0dXJuIFsoZHN0VyAtIHNyY1cpIC8gMiwgKGRzdEggLSBzcmNIKSAvIDIsIHNyY1csIHNyY0hdO1xuICB9XG4gIGlmIChmaXQgPT09IFwiY29udGFpblwiIHx8IGZpdCA9PT0gXCJzY2FsZS1kb3duXCIpIHtcbiAgICBjb25zdCBzYyA9IE1hdGgubWluKGRzdFcgLyBzcmNXLCBkc3RIIC8gc3JjSCk7XG4gICAgY29uc3QgayA9IGZpdCA9PT0gXCJzY2FsZS1kb3duXCIgPyBNYXRoLm1pbigxLCBzYykgOiBzYztcbiAgICBjb25zdCB3cyA9IGsgKiBzcmNXO1xuICAgIGNvbnN0IGhzID0gayAqIHNyY0g7XG4gICAgcmV0dXJuIFsoZHN0VyAtIHdzKSAvIDIsIChkc3RIIC0gaHMpIC8gMiwgd3MsIGhzXTtcbiAgfVxuICBpZiAoZml0ID09PSBcImNvdmVyXCIpIHtcbiAgICBjb25zdCBzYzIgPSBNYXRoLm1heChkc3RXIC8gc3JjVywgZHN0SCAvIHNyY0gpO1xuICAgIGNvbnN0IHdzMiA9IHNjMiAqIHNyY1c7XG4gICAgY29uc3QgaHMyID0gc2MyICogc3JjSDtcbiAgICByZXR1cm4gWyhkc3RXIC0gd3MyKSAvIDIsIChkc3RIIC0gaHMyKSAvIDIsIHdzMiwgaHMyXTtcbiAgfVxuICByZXR1cm4gWzAsIDAsIGRzdFcsIGRzdEhdO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuZXhwb3J0IGNvbnN0IFNDSEVNRSA9IFwicHVwLWZyYW1lOi8vXCI7XG5leHBvcnQgY29uc3QgQUhFQUQgPSAxMDtcbmV4cG9ydCBjb25zdCBUQUcgPSBcIltWaWRlb0hvb2tdXCI7XG5cbmV4cG9ydCBjb25zdCBNRURJQV9FUlJfTkVUV09SSyA9IDI7XG5leHBvcnQgY29uc3QgTUVESUFfRVJSX0RFQ09ERSA9IDM7XG5leHBvcnQgY29uc3QgSEFWRV9OT1RISU5HID0gMDtcbmV4cG9ydCBjb25zdCBIQVZFX01FVEFEQVRBID0gMTtcbmV4cG9ydCBjb25zdCBIQVZFX0VOT1VHSF9EQVRBID0gNDtcbmV4cG9ydCBjb25zdCBORVRXT1JLX0VNUFRZID0gMDtcbmV4cG9ydCBjb25zdCBORVRXT1JLX0lETEUgPSAxO1xuZXhwb3J0IGNvbnN0IE5FVFdPUktfTE9BRElORyA9IDI7XG5leHBvcnQgY29uc3QgTkVUV09SS19OT19TT1VSQ0UgPSAzO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvTWV0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBmcmFtZVdpZHRoOiBudW1iZXI7XG4gIGZyYW1lSGVpZ2h0OiBudW1iZXI7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGZwczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvRnJhbWVNZXRhIHtcbiAgcHJlc2VudGF0aW9uVGltZTogbnVtYmVyO1xuICBleHBlY3RlZERpc3BsYXlUaW1lOiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBtZWRpYVRpbWU6IG51bWJlcjtcbiAgcHJlc2VudGVkRnJhbWVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZyYW1lQ2IgPSAobm93OiBudW1iZXIsIG1ldGE6IFZpZGVvRnJhbWVNZXRhKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhRXJyb3JMaWtlIHtcbiAgY29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9DYWNoZSB7XG4gIGJpdG1hcHM6IE1hcDxudW1iZXIsIEltYWdlQml0bWFwPjtcbiAgaW5GbGlnaHQ6IE1hcDxudW1iZXIsIFByb21pc2U8SW1hZ2VCaXRtYXAgfCBudWxsPj47XG4gIHJlYWRlcnM6IE1hcDxWaWRlb1N0YXRlLCBudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvU3RhdGUge1xuICBtZXRhOiBWaWRlb01ldGEgfCBudWxsO1xuICBjdjogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBwYXVzZWQ6IGJvb2xlYW47XG4gIGN1cnJlbnRUaW1lOiBudW1iZXI7XG4gIGVuZGVkOiBib29sZWFuO1xuICBsYXN0RHJhd25JZHg6IG51bWJlcjtcbiAgZGVhZDogYm9vbGVhbjtcbiAgb2JqZWN0Rml0OiBzdHJpbmc7XG4gIHJlYWR5U3RhdGU6IG51bWJlcjtcbiAgbmV0d29ya1N0YXRlOiBudW1iZXI7XG4gIHNlZWtpbmc6IGJvb2xlYW47XG4gIHdhaXRpbmc6IGJvb2xlYW47XG4gIGVycm9yOiBNZWRpYUVycm9yTGlrZSB8IHVuZGVmaW5lZDtcbiAgcHJlc2VudGVkRnJhbWVzOiBudW1iZXI7XG4gIG1heFJlYWNoZWQ6IG51bWJlcjtcbiAgcnZmYzogTWFwPG51bWJlciwgRnJhbWVDYj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZVJhbmdlc0xpa2Uge1xuICBsZW5ndGg6IG51bWJlcjtcbiAgc3RhcnQoaTogbnVtYmVyKTogbnVtYmVyO1xuICBlbmQoaTogbnVtYmVyKTogbnVtYmVyO1xufVxuXG4vLyBXaG9sZSBjbGlwIGlzIGRlY29kZS1vbi1kZW1hbmQsIHNvIHRoZSBhdmFpbGFibGUgcmFuZ2UgaXMgYWx3YXlzIFswLCBlbmRdIChvbmUgVGltZVJhbmdlcyBlbnRyeSkuXG5leHBvcnQgZnVuY3Rpb24gdGltZVJhbmdlcyhlbmQ6IG51bWJlcik6IFRpbWVSYW5nZXNMaWtlIHtcbiAgcmV0dXJuIHsgbGVuZ3RoOiBlbmQgPiAwID8gMSA6IDAsIHN0YXJ0OiAoKSA9PiAwLCBlbmQ6ICgpID0+IGVuZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyZShlbDogRXZlbnRUYXJnZXQsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCh0eXBlKSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgdHlwZSB7IFZpZGVvSG9vayB9IGZyb20gXCIuL2hvb2tcIjtcbmltcG9ydCB7IGZpdFJlY3QsIHN5bmNPdmVybGF5IH0gZnJvbSBcIi4vb3ZlcmxheVwiO1xuaW1wb3J0IHsgQUhFQUQsIGZpcmUsIHR5cGUgVmlkZW9GcmFtZU1ldGEsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIGZpcmVGcmFtZUNhbGxiYWNrcyhzdGF0ZTogVmlkZW9TdGF0ZSk6IHZvaWQge1xuICBpZiAoc3RhdGUucnZmYy5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGNicyA9IFsuLi5zdGF0ZS5ydmZjLnZhbHVlcygpXTtcbiAgc3RhdGUucnZmYy5jbGVhcigpO1xuICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgY29uc3QgbWV0YTogVmlkZW9GcmFtZU1ldGEgPSB7XG4gICAgcHJlc2VudGF0aW9uVGltZTogbm93LFxuICAgIGV4cGVjdGVkRGlzcGxheVRpbWU6IG5vdyxcbiAgICB3aWR0aDogc3RhdGUubWV0YSEuZnJhbWVXaWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLm1ldGEhLmZyYW1lSGVpZ2h0LFxuICAgIG1lZGlhVGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgcHJlc2VudGVkRnJhbWVzOiBzdGF0ZS5wcmVzZW50ZWRGcmFtZXMsXG4gIH07XG4gIGZvciAoY29uc3QgY2Igb2YgY2JzKSB7XG4gICAgY2Iobm93LCBtZXRhKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwYWludChob29rOiBWaWRlb0hvb2ssIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSwgaWR4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYyA9IGhvb2suY2FjaGUuY2FjaGVPZihzdGF0ZS5tZXRhIS5pZCk7XG4gIGMucmVhZGVycy5zZXQoc3RhdGUsIGlkeCk7XG4gIGxldCBibSA9IGMuYml0bWFwcy5nZXQoaWR4KTtcbiAgaWYgKCFibSkge1xuICAgIGhvb2suY2FjaGUucHJlZmV0Y2goc3RhdGUsIGlkeCArIDEsIEFIRUFEIC0gMSk7XG4gICAgY29uc3QgZmV0Y2hlZCA9IGF3YWl0IGhvb2suY2FjaGUuZmV0Y2goc3RhdGUsIGlkeCk7XG4gICAgaWYgKGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFmZXRjaGVkKSB7XG4gICAgICBpZiAoIXN0YXRlLnBhdXNlZCAmJiAhc3RhdGUud2FpdGluZykge1xuICAgICAgICBzdGF0ZS53YWl0aW5nID0gdHJ1ZTtcbiAgICAgICAgZmlyZSh2aWRlbywgXCJ3YWl0aW5nXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBibSA9IGZldGNoZWQ7XG4gIH1cbiAgaWYgKHN0YXRlLndhaXRpbmcpIHtcbiAgICBzdGF0ZS53YWl0aW5nID0gZmFsc2U7XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQpIHtcbiAgICAgIGZpcmUodmlkZW8sIFwicGxheWluZ1wiKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgY3YgPSBzdGF0ZS5jdjtcbiAgY29uc3QgciA9IGZpdFJlY3QoYm0ud2lkdGgsIGJtLmhlaWdodCwgY3Yud2lkdGgsIGN2LmhlaWdodCwgc3RhdGUub2JqZWN0Rml0KTtcbiAgc3RhdGUuY3R4LmNsZWFyUmVjdCgwLCAwLCBjdi53aWR0aCwgY3YuaGVpZ2h0KTtcbiAgc3RhdGUuY3R4LmRyYXdJbWFnZShibSwgclswXSwgclsxXSwgclsyXSwgclszXSk7XG4gIHN0YXRlLmxhc3REcmF3bklkeCA9IGlkeDtcbiAgc3RhdGUucHJlc2VudGVkRnJhbWVzKys7XG4gIGZpcmVGcmFtZUNhbGxiYWNrcyhzdGF0ZSk7XG4gIGhvb2suY2FjaGUucHJlZmV0Y2goc3RhdGUsIGlkeCArIDEsIEFIRUFEKTtcbiAgaG9vay5jYWNoZS5ldmljdChjKTtcbn1cblxuLy8gVmlydHVhbC10aW1lIHRpY2s6IHN5bmMgb3ZlcmxheXMsIGFkdmFuY2UgZWFjaCBob29rZWQgdmlkZW8ncyBjbG9jayAobG9vcC9lbmQpLCBwYWludCB0aGUgZHVlIGZyYW1lLlxuZXhwb3J0IGZ1bmN0aW9uIGFkdmFuY2UoaG9vazogVmlkZW9Ib29rLCB0aW1lc3RhbXBNczogbnVtYmVyKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGR0ID0gTWF0aC5tYXgoMCwgdGltZXN0YW1wTXMgLSBob29rLmN1cnJNcykgLyAxMDAwO1xuICBob29rLmN1cnJNcyA9IHRpbWVzdGFtcE1zO1xuICBjb25zdCBwczogUHJvbWlzZTx1bmtub3duPltdID0gW107XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ2aWRlb1wiKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgIGNvbnN0IHZpZGVvID0gZWwgYXMgSFRNTFZpZGVvRWxlbWVudDtcbiAgICBjb25zdCBzdGF0ZSA9IGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKTtcbiAgICBpZiAoIXN0YXRlIHx8IHN0YXRlLmRlYWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3luY092ZXJsYXkodmlkZW8sIHN0YXRlLmN2KTtcbiAgICBpZiAoIXN0YXRlLm1ldGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gRWxlbWVudCBncmV3IHBhc3QgdGhlIGRlY29kZWQgKGRvd25zY2FsZWQpIHJlcyDihpIgcmUtZGVjb2RlIGF0IG5hdGl2ZSwgb25lLXNob3QgKGNvdmVycyB6b29tKS5cbiAgICBpZiAoXG4gICAgICBzdGF0ZS5tZXRhLmZyYW1lV2lkdGggPCBzdGF0ZS5tZXRhLndpZHRoICYmXG4gICAgICBzdGF0ZS5jdi53aWR0aCA+IHN0YXRlLm1ldGEuZnJhbWVXaWR0aCAqIDEuMDUgJiZcbiAgICAgICFob29rLmF0dGFjaGluZy5oYXModmlkZW8pXG4gICAgKSB7XG4gICAgICBob29rLnJlYXR0YWNoKHZpZGVvLCBzdGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghc3RhdGUucGF1c2VkICYmICFzdGF0ZS5lbmRlZCkge1xuICAgICAgc3RhdGUuY3VycmVudFRpbWUgKz0gZHQgKiAodmlkZW8ucGxheWJhY2tSYXRlIHx8IDEpO1xuICAgICAgc3RhdGUubWF4UmVhY2hlZCA9IE1hdGgubWF4KHN0YXRlLm1heFJlYWNoZWQsIHN0YXRlLmN1cnJlbnRUaW1lKTtcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50VGltZSA+PSBzdGF0ZS5tZXRhLmR1cmF0aW9uKSB7XG4gICAgICAgIGlmICh2aWRlby5sb29wKSB7XG4gICAgICAgICAgc3RhdGUuY3VycmVudFRpbWUgPSBzdGF0ZS5jdXJyZW50VGltZSAlIHN0YXRlLm1ldGEuZHVyYXRpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUuY3VycmVudFRpbWUgPSBzdGF0ZS5tZXRhLmR1cmF0aW9uO1xuICAgICAgICAgIHN0YXRlLnBhdXNlZCA9IHRydWU7XG4gICAgICAgICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgICAgICAgIGZpcmUodmlkZW8sIFwiZW5kZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpcmUodmlkZW8sIFwidGltZXVwZGF0ZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaWR4ID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZChzdGF0ZS5jdXJyZW50VGltZSAqIHN0YXRlLm1ldGEuZnBzKSk7XG4gICAgaWYgKGlkeCA9PT0gc3RhdGUubGFzdERyYXduSWR4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBzLnB1c2gocGFpbnQoaG9vaywgdmlkZW8sIHN0YXRlLCBpZHgpKTtcbiAgfSk7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcyk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgeyBTQ0hFTUUsIHR5cGUgVmlkZW9DYWNoZSwgdHlwZSBWaWRlb1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLy8gUGVyLXNlc3Npb24gYml0bWFwIGNhY2hlOiBmZXRjaGVzIFJHQkEgZnJhbWVzIGZyb20gdGhlIGZyYW1lIHByb3RvY29sLCBkZWR1cGVzIGluLWZsaWdodCwgZXZpY3RzIGJlaGluZCByZWFkZXJzLlxuZXhwb3J0IGNsYXNzIEZyYW1lQ2FjaGUge1xuICBwcml2YXRlIF9jYWNoZXMgPSBuZXcgTWFwPHN0cmluZywgVmlkZW9DYWNoZT4oKTtcblxuICBjYWNoZU9mKGlkOiBzdHJpbmcpOiBWaWRlb0NhY2hlIHtcbiAgICBsZXQgYyA9IHRoaXMuX2NhY2hlcy5nZXQoaWQpO1xuICAgIGlmICghYykge1xuICAgICAgYyA9IHsgYml0bWFwczogbmV3IE1hcCgpLCBpbkZsaWdodDogbmV3IE1hcCgpLCByZWFkZXJzOiBuZXcgTWFwKCkgfTtcbiAgICAgIHRoaXMuX2NhY2hlcy5zZXQoaWQsIGMpO1xuICAgIH1cbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIGZldGNoKHN0YXRlOiBWaWRlb1N0YXRlLCBpZHg6IG51bWJlcik6IFByb21pc2U8SW1hZ2VCaXRtYXAgfCBudWxsPiB7XG4gICAgY29uc3QgbWV0YSA9IHN0YXRlLm1ldGE7XG4gICAgaWYgKCFtZXRhKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCBjID0gdGhpcy5jYWNoZU9mKG1ldGEuaWQpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYy5pbkZsaWdodC5nZXQoaWR4KTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgY29uc3QgY2FjaGVkID0gYy5iaXRtYXBzLmdldChpZHgpO1xuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2FjaGVkKTtcbiAgICB9XG4gICAgY29uc3QgdyA9IG1ldGEuZnJhbWVXaWR0aDtcbiAgICBjb25zdCBoID0gbWV0YS5mcmFtZUhlaWdodDtcbiAgICBjb25zdCBwID0gZmV0Y2goYCR7U0NIRU1FfWZyYW1lP2lkPSR7bWV0YS5pZH0maWR4PSR7aWR4fWApXG4gICAgICAudGhlbigocikgPT4gKHIub2sgPyByLmFycmF5QnVmZmVyKCkgOiBudWxsKSlcbiAgICAgIC50aGVuKChidWYpID0+XG4gICAgICAgIGJ1ZiAmJiBidWYuYnl0ZUxlbmd0aCA9PT0gdyAqIGggKiA0ID8gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoYnVmKSwgdywgaCkpIDogbnVsbCxcbiAgICAgIClcbiAgICAgIC50aGVuKChibSkgPT4ge1xuICAgICAgICBjLmluRmxpZ2h0LmRlbGV0ZShpZHgpO1xuICAgICAgICBpZiAoYm0pIHtcbiAgICAgICAgICBjLmJpdG1hcHMuc2V0KGlkeCwgYm0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBibTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBjLmluRmxpZ2h0LmRlbGV0ZShpZHgpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIGMuaW5GbGlnaHQuc2V0KGlkeCwgcCk7XG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICBwcmVmZXRjaChzdGF0ZTogVmlkZW9TdGF0ZSwgZnJvbUlkeDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbWV0YSA9IHN0YXRlLm1ldGE7XG4gICAgaWYgKCFtZXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1heElkeCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQobWV0YS5kdXJhdGlvbiAqIG1ldGEuZnBzKSk7XG4gICAgZm9yIChsZXQgaSA9IGZyb21JZHg7IGkgPCBmcm9tSWR4ICsgY291bnQ7IGkrKykge1xuICAgICAgaWYgKGkgPCAxIHx8IGkgPiBtYXhJZHgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2b2lkIHRoaXMuZmV0Y2goc3RhdGUsIGkpO1xuICAgIH1cbiAgfVxuXG4gIGV2aWN0KGM6IFZpZGVvQ2FjaGUpOiB2b2lkIHtcbiAgICBsZXQgbWluSWR4ID0gSW5maW5pdHk7XG4gICAgYy5yZWFkZXJzLmZvckVhY2goKGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA8IG1pbklkeCkge1xuICAgICAgICBtaW5JZHggPSBpZHg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWluSWR4KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmbG9vciA9IG1pbklkeCAtIDI7XG4gICAgYy5iaXRtYXBzLmZvckVhY2goKGJtLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPCBmbG9vcikge1xuICAgICAgICBibS5jbG9zZSgpO1xuICAgICAgICBjLmJpdG1hcHMuZGVsZXRlKGlkeCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBEcm9wIGEgcmVhZGVyOyB3aGVuIHRoZSBsYXN0IGxlYXZlcywgY2xvc2UgYml0bWFwcyBhbmQgdGVsbCB0aGUgc2VydmVyIHRvIHJlbGVhc2UgdGhlIGRlY29kZSBzZXNzaW9uLlxuICByZWxlYXNlKGlkOiBzdHJpbmcsIHN0YXRlOiBWaWRlb1N0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYyA9IHRoaXMuX2NhY2hlcy5nZXQoaWQpO1xuICAgIGlmICghYykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjLnJlYWRlcnMuZGVsZXRlKHN0YXRlKTtcbiAgICBpZiAoYy5yZWFkZXJzLnNpemUgPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGMuYml0bWFwcy5mb3JFYWNoKChibSkgPT4ge1xuICAgICAgYm0uY2xvc2UoKTtcbiAgICB9KTtcbiAgICB0aGlzLl9jYWNoZXMuZGVsZXRlKGlkKTtcbiAgICBmZXRjaChgJHtTQ0hFTUV9Y2xvc2U/aWQ9JHtpZH1gLCB7IGtlZXBhbGl2ZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHR5cGUgeyBWaWRlb0hvb2sgfSBmcm9tIFwiLi9ob29rXCI7XG5pbXBvcnQgeyB0eXBlIEZyYW1lQ2IsIGZpcmUsIHRpbWVSYW5nZXMsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8vIE92ZXJyaWRlIHRoZSBIVE1MTWVkaWFFbGVtZW50IHN1cmZhY2UgZm9yIGhvb2tlZCA8dmlkZW8+OyB1bmhvb2tlZCBlbGVtZW50cyBmYWxsIHRocm91Z2ggdG8gbmF0aXZlLlxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxNZWRpYVNoaW0oaG9vazogVmlkZW9Ib29rKTogdm9pZCB7XG4gIGNvbnN0IEhWRSA9IEhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlO1xuICBjb25zdCBNRURJQSA9IEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlO1xuICBjb25zdCBtZGVzYyA9IChwOiBzdHJpbmcpID0+IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFZFLCBwKSB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1FRElBLCBwKTtcbiAgY29uc3QgY3REZXNjID0gbWRlc2MoXCJjdXJyZW50VGltZVwiKTtcbiAgY29uc3Qgc3JjRGVzYyA9IG1kZXNjKFwic3JjXCIpO1xuICBjb25zdCByYXRlRGVzYyA9IG1kZXNjKFwicGxheWJhY2tSYXRlXCIpO1xuICBjb25zdCBvcmlnUGF1c2UgPSBIVkUucGF1c2U7XG4gIGNvbnN0IG9yaWdSVkZDID0gSFZFLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2s7XG4gIGNvbnN0IG9yaWdDYW5jZWxSVkZDID0gSFZFLmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjaztcbiAgY29uc3Qgb3JpZ1F1YWxpdHkgPSBIVkUuZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHk7XG4gIGNvbnN0IG9yaWdMb2FkID0gSFZFLmxvYWQ7XG4gIGNvbnN0IHNlc3Npb25zID0gaG9vay5zZXNzaW9ucztcblxuICAvLyBTZXNzaW9uLWJhY2tlZCByZWFkLW9ubHkgcHJvcGVydHkgd2l0aCBuYXRpdmUgZmFsbGJhY2sgd2hlbiB0aGUgZWxlbWVudCBpc24ndCBob29rZWQuXG4gIGNvbnN0IGRlZiA9IChwcm9wOiBzdHJpbmcsIHBpY2s6IChzOiBWaWRlb1N0YXRlKSA9PiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgbmF0aXZlR2V0ID0gbWRlc2MocHJvcCk/LmdldDtcbiAgICBpZiAoIW5hdGl2ZUdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtZWRpYV9zaGltOiBubyBuYXRpdmUgZ2V0dGVyIGZvciAke3Byb3B9YCk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIHByb3AsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgICAgIHJldHVybiBzID8gcGljayhzKSA6IG5hdGl2ZUdldC5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcbiAgZGVmKFwicGF1c2VkXCIsIChzKSA9PiBzLnBhdXNlZCk7XG4gIGRlZihcImVuZGVkXCIsIChzKSA9PiBzLmVuZGVkKTtcbiAgZGVmKFwicmVhZHlTdGF0ZVwiLCAocykgPT4gcy5yZWFkeVN0YXRlKTtcbiAgZGVmKFwibmV0d29ya1N0YXRlXCIsIChzKSA9PiBzLm5ldHdvcmtTdGF0ZSk7XG4gIGRlZihcImVycm9yXCIsIChzKSA9PiBzLmVycm9yID8/IG51bGwpO1xuICBkZWYoXCJzZWVraW5nXCIsIChzKSA9PiBzLnNlZWtpbmcpO1xuICBkZWYoXCJidWZmZXJlZFwiLCAocykgPT4gdGltZVJhbmdlcyhzLm1ldGEgPyBzLm1ldGEuZHVyYXRpb24gOiAwKSk7XG4gIGRlZihcInNlZWthYmxlXCIsIChzKSA9PiB0aW1lUmFuZ2VzKHMubWV0YSA/IHMubWV0YS5kdXJhdGlvbiA6IDApKTtcbiAgZGVmKFwicGxheWVkXCIsIChzKSA9PiB0aW1lUmFuZ2VzKHMubWF4UmVhY2hlZCkpO1xuXG4gIEhWRS5wbGF5ID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgcmV0dXJuIGhvb2suYXR0YWNoKHRoaXMpLnRoZW4oKG5zKSA9PiB7XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgIGhvb2sucmVzdW1lKHRoaXMsIG5zKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGhvb2sucmVzdW1lKHRoaXMsIHMpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfTtcbiAgSFZFLnBhdXNlID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgb3JpZ1BhdXNlLmNhbGwodGhpcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghcy5wYXVzZWQpIHtcbiAgICAgIHMucGF1c2VkID0gdHJ1ZTtcbiAgICAgIGZpcmUodGhpcywgXCJwYXVzZVwiKTtcbiAgICB9XG4gIH07XG4gIGlmIChjdERlc2M/LmdldCAmJiBjdERlc2Muc2V0KSB7XG4gICAgY29uc3QgY3RHZXQgPSBjdERlc2MuZ2V0O1xuICAgIGNvbnN0IGN0U2V0ID0gY3REZXNjLnNldDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBcImN1cnJlbnRUaW1lXCIsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgICAgIHJldHVybiBzID8gcy5jdXJyZW50VGltZSA6IGN0R2V0LmNhbGwodGhpcyk7XG4gICAgICB9LFxuICAgICAgc2V0KHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIHQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICBjdFNldC5jYWxsKHRoaXMsIHQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkdXIgPSBzLm1ldGEgPyBzLm1ldGEuZHVyYXRpb24gOiB0O1xuICAgICAgICBzLmN1cnJlbnRUaW1lID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odCwgZHVyKSk7XG4gICAgICAgIHMubWF4UmVhY2hlZCA9IE1hdGgubWF4KHMubWF4UmVhY2hlZCwgcy5jdXJyZW50VGltZSk7XG4gICAgICAgIGlmIChzLmN1cnJlbnRUaW1lIDwgZHVyKSB7XG4gICAgICAgICAgcy5lbmRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHMuc2Vla2luZyA9IHRydWU7XG4gICAgICAgIGZpcmUodGhpcywgXCJzZWVraW5nXCIpO1xuICAgICAgICBzLnNlZWtpbmcgPSBmYWxzZTtcbiAgICAgICAgZmlyZSh0aGlzLCBcInNlZWtlZFwiKTtcbiAgICAgICAgZmlyZSh0aGlzLCBcInRpbWV1cGRhdGVcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGlmIChyYXRlRGVzYz8uc2V0KSB7XG4gICAgY29uc3QgcmF0ZVNldCA9IHJhdGVEZXNjLnNldDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBcInBsYXliYWNrUmF0ZVwiLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IHJhdGVEZXNjLmdldCxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCByOiBudW1iZXIpIHtcbiAgICAgICAgcmF0ZVNldC5jYWxsKHRoaXMsIHIpO1xuICAgICAgICBpZiAoc2Vzc2lvbnMuaGFzKHRoaXMpKSB7XG4gICAgICAgICAgZmlyZSh0aGlzLCBcInJhdGVjaGFuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgSFZFLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCwgY2IpOiBudW1iZXIge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSB7XG4gICAgICByZXR1cm4gb3JpZ1JWRkMuY2FsbCh0aGlzLCBjYik7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gKytob29rLnJ2ZmNTZXE7XG4gICAgcy5ydmZjLnNldChpZCwgY2IgYXMgRnJhbWVDYik7XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuICBIVkUuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgb3JpZ0NhbmNlbFJWRkMuY2FsbCh0aGlzLCBpZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHMucnZmYy5kZWxldGUoaWQpO1xuICB9O1xuICBIVkUuZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHkgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSB7XG4gICAgICByZXR1cm4gb3JpZ1F1YWxpdHkuY2FsbCh0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0aW9uVGltZTogcGVyZm9ybWFuY2Uubm93KCksXG4gICAgICB0b3RhbFZpZGVvRnJhbWVzOiBzLnByZXNlbnRlZEZyYW1lcyxcbiAgICAgIGRyb3BwZWRWaWRlb0ZyYW1lczogMCxcbiAgICAgIGNvcnJ1cHRlZFZpZGVvRnJhbWVzOiAwLFxuICAgIH0gYXMgVmlkZW9QbGF5YmFja1F1YWxpdHk7XG4gIH07XG4gIEhWRS5sb2FkID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAoIXNlc3Npb25zLmhhcyh0aGlzKSkge1xuICAgICAgcmV0dXJuIG9yaWdMb2FkLmNhbGwodGhpcyk7XG4gICAgfVxuICAgIGhvb2suZGV0YWNoKHRoaXMpO1xuICAgIGZpcmUodGhpcywgXCJlbXB0aWVkXCIpO1xuICAgIHRoaXMuX19wdXBMYXN0U3JjID0gdW5kZWZpbmVkO1xuICAgIGhvb2suYXR0YWNoKHRoaXMpO1xuICB9O1xuICBpZiAoc3JjRGVzYz8uc2V0KSB7XG4gICAgY29uc3Qgc3JjU2V0ID0gc3JjRGVzYy5zZXQ7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgXCJzcmNcIiwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBzcmNEZXNjLmdldCxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCB2OiBzdHJpbmcpIHtcbiAgICAgICAgc3JjU2V0LmNhbGwodGhpcywgdik7XG4gICAgICAgIGhvb2sub25TcmNDaGFuZ2UodGhpcyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgdHlwZSB7IFZpZGVvSG9vayB9IGZyb20gXCIuL2hvb2tcIjtcbmltcG9ydCB7XG4gIEFIRUFELFxuICBmaXJlLFxuICBIQVZFX0VOT1VHSF9EQVRBLFxuICBIQVZFX01FVEFEQVRBLFxuICBIQVZFX05PVEhJTkcsXG4gIE1FRElBX0VSUl9ERUNPREUsXG4gIE1FRElBX0VSUl9ORVRXT1JLLFxuICB0eXBlIE1lZGlhRXJyb3JMaWtlLFxuICBORVRXT1JLX0VNUFRZLFxuICBORVRXT1JLX0lETEUsXG4gIE5FVFdPUktfTE9BRElORyxcbiAgTkVUV09SS19OT19TT1VSQ0UsXG4gIFNDSEVNRSxcbiAgVEFHLFxuICB0eXBlIFZpZGVvTWV0YSxcbiAgdHlwZSBWaWRlb1N0YXRlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaEFyZ3Mge1xuICB2aWRlbzogSFRNTFZpZGVvRWxlbWVudDtcbiAgc3RhdGU6IFZpZGVvU3RhdGU7XG4gIHNyYzogc3RyaW5nO1xuICBiaXJ0aE1zOiBudW1iZXI7XG4gIG5hdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld1ZpZGVvU3RhdGUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGN2OiBIVE1MQ2FudmFzRWxlbWVudCk6IFZpZGVvU3RhdGUge1xuICByZXR1cm4ge1xuICAgIG1ldGE6IG51bGwsXG4gICAgY3YsXG4gICAgY3R4OiBjdi5nZXRDb250ZXh0KFwiMmRcIikhLFxuICAgIHBhdXNlZDogISh2aWRlby5hdXRvcGxheSB8fCAhdmlkZW8ucGF1c2VkKSxcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBlbmRlZDogZmFsc2UsXG4gICAgbGFzdERyYXduSWR4OiAtMSxcbiAgICBkZWFkOiBmYWxzZSxcbiAgICBvYmplY3RGaXQ6IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHZpZGVvKS5vYmplY3RGaXQgfHwgXCJmaWxsXCIsXG4gICAgcmVhZHlTdGF0ZTogSEFWRV9OT1RISU5HLFxuICAgIG5ldHdvcmtTdGF0ZTogTkVUV09SS19FTVBUWSxcbiAgICBzZWVraW5nOiBmYWxzZSxcbiAgICB3YWl0aW5nOiBmYWxzZSxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIHByZXNlbnRlZEZyYW1lczogMCxcbiAgICBtYXhSZWFjaGVkOiAwLFxuICAgIHJ2ZmM6IG5ldyBNYXAoKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmFpbE9wZW4odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlOiBWaWRlb1N0YXRlLCBlcnJvcjogTWVkaWFFcnJvckxpa2UpOiBudWxsIHtcbiAgc3RhdGUuZGVhZCA9IHRydWU7XG4gIHN0YXRlLmVycm9yID0gZXJyb3I7XG4gIHN0YXRlLm5ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTk9fU09VUkNFO1xuICBjb25zb2xlLndhcm4oVEFHLCBgJHtlcnJvci5tZXNzYWdlfSBzcmM9JHt2aWRlby5zcmMgfHwgdmlkZW8uY3VycmVudFNyY31gKTtcbiAgZmlyZSh2aWRlbywgXCJlcnJvclwiKTtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIE9wZW4gdGhlIGZyYW1lIHNlcnZlciBzZXNzaW9uLCB0aGVuIGVtaXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgbG9hZCBzZXF1ZW5jZSAocmVhZHlTdGF0ZS9uZXR3b3JrU3RhdGUgKyBldmVudHMpLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5TZXNzaW9uKGhvb2s6IFZpZGVvSG9vaywgYXJnczogQXR0YWNoQXJncyk6IFByb21pc2U8VmlkZW9TdGF0ZSB8IG51bGw+IHtcbiAgY29uc3QgeyB2aWRlbywgc3RhdGUsIHNyYywgYmlydGhNcywgbmF0aXZlIH0gPSBhcmdzO1xuICBjb25zdCBmcHMgPSBOdW1iZXIucGFyc2VJbnQodmlkZW8uZGF0YXNldFtcInB1cEZwc1wiXSB8fCBcIjMwXCIsIDEwKTtcbiAgc3RhdGUubmV0d29ya1N0YXRlID0gTkVUV09SS19MT0FESU5HO1xuICBmaXJlKHZpZGVvLCBcImxvYWRzdGFydFwiKTtcbiAgbGV0IHJlczogUmVzcG9uc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgcSA9IG5hdGl2ZSA/IFwiXCIgOiBgJnc9JHtzdGF0ZS5jdi53aWR0aH0maD0ke3N0YXRlLmN2LmhlaWdodH0mZml0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHN0YXRlLm9iamVjdEZpdCl9YDtcbiAgICByZXMgPSBhd2FpdCBmZXRjaChgJHtTQ0hFTUV9b3Blbj9zcmM9JHtlbmNvZGVVUklDb21wb25lbnQoc3JjKX0mZnBzPSR7ZnBzfSR7cX1gKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWlsT3Blbih2aWRlbywgc3RhdGUsIHtcbiAgICAgIGNvZGU6IE1FRElBX0VSUl9ORVRXT1JLLFxuICAgICAgbWVzc2FnZTogYG9wZW4gZmFpbGVkOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKX1gLFxuICAgIH0pO1xuICB9XG4gIGlmIChob29rLnNlc3Npb25zLmdldCh2aWRlbykgIT09IHN0YXRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gZmFpbE9wZW4odmlkZW8sIHN0YXRlLCB7XG4gICAgICBjb2RlOiBNRURJQV9FUlJfREVDT0RFLFxuICAgICAgbWVzc2FnZTogYG9wZW4gJHtyZXMuc3RhdHVzfTogJHthd2FpdCByZXMudGV4dCgpfWAsXG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbWV0YSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBWaWRlb01ldGE7XG4gIGlmIChob29rLnNlc3Npb25zLmdldCh2aWRlbykgIT09IHN0YXRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgc3RhdGUubWV0YSA9IG1ldGE7XG4gIHN0YXRlLmN1cnJlbnRUaW1lID0gc3RhdGUucGF1c2VkID8gMCA6IE1hdGgubWF4KDAsIChob29rLmN1cnJNcyAtIGJpcnRoTXMpIC8gMTAwMCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aWRlbywgXCJ2aWRlb1dpZHRoXCIsIHsgdmFsdWU6IG1ldGEud2lkdGgsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZpZGVvLCBcInZpZGVvSGVpZ2h0XCIsIHsgdmFsdWU6IG1ldGEuaGVpZ2h0LCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aWRlbywgXCJkdXJhdGlvblwiLCB7IHZhbHVlOiBtZXRhLmR1cmF0aW9uLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIHN0YXRlLnJlYWR5U3RhdGUgPSBIQVZFX01FVEFEQVRBO1xuICBmaXJlKHZpZGVvLCBcImR1cmF0aW9uY2hhbmdlXCIpO1xuICBmaXJlKHZpZGVvLCBcImxvYWRlZG1ldGFkYXRhXCIpO1xuICBzdGF0ZS5yZWFkeVN0YXRlID0gSEFWRV9FTk9VR0hfREFUQTtcbiAgZmlyZSh2aWRlbywgXCJsb2FkZWRkYXRhXCIpO1xuICBmaXJlKHZpZGVvLCBcImNhbnBsYXlcIik7XG4gIGZpcmUodmlkZW8sIFwiY2FucGxheXRocm91Z2hcIik7XG4gIHN0YXRlLm5ldHdvcmtTdGF0ZSA9IE5FVFdPUktfSURMRTtcbiAgZmlyZSh2aWRlbywgXCJzdXNwZW5kXCIpO1xuICBpZiAoIXN0YXRlLnBhdXNlZCkge1xuICAgIGZpcmUodmlkZW8sIFwicGxheVwiKTtcbiAgICBmaXJlKHZpZGVvLCBcInBsYXlpbmdcIik7XG4gIH1cbiAgaG9vay5jYWNoZS5wcmVmZXRjaChzdGF0ZSwgMSwgQUhFQUQpO1xuICByZXR1cm4gc3RhdGU7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgeyBhZHZhbmNlIH0gZnJvbSBcIi4vZHJpdmVyXCI7XG5pbXBvcnQgeyBGcmFtZUNhY2hlIH0gZnJvbSBcIi4vZnJhbWVfY2FjaGVcIjtcbmltcG9ydCB7IGluc3RhbGxNZWRpYVNoaW0gfSBmcm9tIFwiLi9tZWRpYV9zaGltXCI7XG5pbXBvcnQgeyBzZXR1cENhbnZhcyB9IGZyb20gXCIuL292ZXJsYXlcIjtcbmltcG9ydCB7IG5ld1ZpZGVvU3RhdGUsIG9wZW5TZXNzaW9uIH0gZnJvbSBcIi4vc2Vzc2lvblwiO1xuaW1wb3J0IHsgZmlyZSwgdHlwZSBWaWRlb1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX3B1cF92aWRlb19fPzogeyBhZHZhbmNlOiAobXM6IG51bWJlcikgPT4gUHJvbWlzZTx1bmtub3duPjsgcmVhZHk6ICgpID0+IFByb21pc2U8dm9pZD4gfTtcbiAgfVxuICBpbnRlcmZhY2UgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgX19wdXBMYXN0U3JjPzogc3RyaW5nO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWaWRlb0hvb2sge1xuICByZWFkb25seSBzZXNzaW9ucyA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIFZpZGVvU3RhdGU+KCk7XG4gIHJlYWRvbmx5IGF0dGFjaGluZyA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIFByb21pc2U8VmlkZW9TdGF0ZSB8IG51bGw+PigpO1xuICAvLyBFbnVtZXJhYmxlIG1pcnJvciBvZiBpbi1mbGlnaHQgb3BlbnMgKFdlYWtNYXAgaXNuJ3QgaXRlcmFibGUpIHNvIHJlYWR5KCkgY2FuIGF3YWl0IHRoZW0uXG4gIHJlYWRvbmx5IG9wZW5pbmcgPSBuZXcgU2V0PFByb21pc2U8dW5rbm93bj4+KCk7XG4gIHJlYWRvbmx5IGNhY2hlID0gbmV3IEZyYW1lQ2FjaGUoKTtcbiAgcnZmY1NlcSA9IDA7XG4gIGN1cnJNcyA9IDA7XG4gIHByaXZhdGUgX2xhc3RTbmFwc2hvdCA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIE9mZnNjcmVlbkNhbnZhcz4oKTtcblxuICBpbnN0YWxsKCk6IHZvaWQge1xuICAgIGluc3RhbGxNZWRpYVNoaW0odGhpcyk7XG4gICAgdGhpcy5zY2FuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dHMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbSBvZiBtdXRzKSB7XG4gICAgICAgIGlmIChtLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiICYmIG0udGFyZ2V0IGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCAmJiBtLmF0dHJpYnV0ZU5hbWUgPT09IFwic3JjXCIpIHtcbiAgICAgICAgICB0aGlzLm9uU3JjQ2hhbmdlKG0udGFyZ2V0KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBtLmFkZGVkTm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zY2FuKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG0ucmVtb3ZlZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0YWNoKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkub2JzZXJ2ZShkb2N1bWVudCwgeyBzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogW1wic3JjXCJdIH0pO1xuICAgIHdpbmRvdy5fX3B1cF92aWRlb19fID0geyBhZHZhbmNlOiAobXMpID0+IGFkdmFuY2UodGhpcywgbXMpLCByZWFkeTogKCkgPT4gdGhpcy5yZWFkeSgpIH07XG4gIH1cblxuICBhdHRhY2godmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIG5hdGl2ZSA9IGZhbHNlKTogUHJvbWlzZTxWaWRlb1N0YXRlIHwgbnVsbD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5zZXNzaW9ucy5nZXQodmlkZW8pO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShleGlzdGluZyk7XG4gICAgfVxuICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLmF0dGFjaGluZy5nZXQodmlkZW8pO1xuICAgIGlmIChwZW5kaW5nKSB7XG4gICAgICByZXR1cm4gcGVuZGluZztcbiAgICB9XG4gICAgY29uc3Qgc3JjID0gdmlkZW8uc3JjIHx8IHZpZGVvLmN1cnJlbnRTcmM7XG4gICAgaWYgKCFzcmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuICAgIGlmICgvXihibG9iOnxkYXRhOnxtZWRpYXN0cmVhbTopL2kudGVzdChzcmMpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCBjdiA9IHNldHVwQ2FudmFzKHZpZGVvLCB0aGlzLl9sYXN0U25hcHNob3QuZ2V0KHZpZGVvKSk7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXdWaWRlb1N0YXRlKHZpZGVvLCBjdik7XG4gICAgdGhpcy5zZXNzaW9ucy5zZXQodmlkZW8sIHN0YXRlKTtcbiAgICBjb25zdCBwID0gb3BlblNlc3Npb24odGhpcywgeyB2aWRlbywgc3RhdGUsIHNyYywgYmlydGhNczogdGhpcy5jdXJyTXMsIG5hdGl2ZSB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMuYXR0YWNoaW5nLmRlbGV0ZSh2aWRlbyk7XG4gICAgICB0aGlzLm9wZW5pbmcuZGVsZXRlKHApO1xuICAgIH0pO1xuICAgIHRoaXMuYXR0YWNoaW5nLnNldCh2aWRlbywgcCk7XG4gICAgdGhpcy5vcGVuaW5nLmFkZChwKTtcbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIC8vIEF3YWl0IG9ubHkgdGhlIG9wZW5zIGluIGZsaWdodCByaWdodCBub3cg4oCUIG5ldmVyIGNoYXNlIG5ld2x5LXNwYXduZWQgb25lcywgb3IgYSByZXRyeWluZyBwYWdlIGxvb3BzIGZvcmV2ZXIuXG4gIGFzeW5jIHJlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbLi4udGhpcy5vcGVuaW5nXSk7XG4gIH1cblxuICByZXN1bWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlOiBWaWRlb1N0YXRlKTogdm9pZCB7XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0YXRlLnBhdXNlZCA9IGZhbHNlO1xuICAgIHN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgZmlyZSh2aWRlbywgXCJwbGF5XCIpO1xuICAgIGZpcmUodmlkZW8sIFwicGxheWluZ1wiKTtcbiAgfVxuXG4gIGRldGFjaCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zZXNzaW9ucy5nZXQodmlkZW8pO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN0YXRlLm1ldGEpIHtcbiAgICAgIGlmIChzdGF0ZS5sYXN0RHJhd25JZHggPj0gMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNuYXAgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHN0YXRlLmN2LndpZHRoLCBzdGF0ZS5jdi5oZWlnaHQpO1xuICAgICAgICAgIGNvbnN0IHNjdHggPSBzbmFwLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICBpZiAoIXNjdHgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vIDJkIGNvbnRleHRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNjdHguZHJhd0ltYWdlKHN0YXRlLmN2LCAwLCAwKTtcbiAgICAgICAgICB0aGlzLl9sYXN0U25hcHNob3Quc2V0KHZpZGVvLCBzbmFwKTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgICAgdGhpcy5jYWNoZS5yZWxlYXNlKHN0YXRlLm1ldGEuaWQsIHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUuY3YucmVtb3ZlKCk7XG4gICAgdGhpcy5zZXNzaW9ucy5kZWxldGUodmlkZW8pO1xuICAgIHRoaXMuYXR0YWNoaW5nLmRlbGV0ZSh2aWRlbyk7XG4gIH1cblxuICBvblNyY0NoYW5nZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNyYyA9IHZpZGVvLnNyYyB8fCB2aWRlby5jdXJyZW50U3JjIHx8IFwiXCI7XG4gICAgaWYgKHZpZGVvLl9fcHVwTGFzdFNyYyA9PT0gc3JjKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZpZGVvLl9fcHVwTGFzdFNyYyA9IHNyYztcbiAgICBpZiAodGhpcy5zZXNzaW9ucy5oYXModmlkZW8pKSB7XG4gICAgICB0aGlzLmRldGFjaCh2aWRlbyk7XG4gICAgfVxuICAgIHRoaXMuYXR0YWNoKHZpZGVvKTtcbiAgfVxuXG4gIC8vIFJlLW9wZW4gYXQgbmF0aXZlIHJlc29sdXRpb24gKHRoZSBlbGVtZW50IG91dGdyZXcgdGhlIGRvd25zY2FsZWQgZGVjb2RlKSwgcHJlc2VydmluZyBwbGF5YmFjayBzdGF0ZS5cbiAgcmVhdHRhY2godmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlOiBWaWRlb1N0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgdCA9IHN0YXRlLmN1cnJlbnRUaW1lO1xuICAgIGNvbnN0IHBhdXNlZCA9IHN0YXRlLnBhdXNlZDtcbiAgICBjb25zdCBlbmRlZCA9IHN0YXRlLmVuZGVkO1xuICAgIHRoaXMuZGV0YWNoKHZpZGVvKTtcbiAgICB2b2lkIHRoaXMuYXR0YWNoKHZpZGVvLCB0cnVlKS50aGVuKChucykgPT4ge1xuICAgICAgaWYgKCFucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBucy5jdXJyZW50VGltZSA9IHQ7XG4gICAgICBucy5wYXVzZWQgPSBwYXVzZWQ7XG4gICAgICBucy5lbmRlZCA9IGVuZGVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2FuKHJvb3Q6IEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyb290LnRhZ05hbWUgPT09IFwiVklERU9cIikge1xuICAgICAgdGhpcy5hdHRhY2gocm9vdCBhcyBIVE1MVmlkZW9FbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKHJvb3QucXVlcnlTZWxlY3RvckFsbCkge1xuICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKFwidmlkZW9cIikuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICB0aGlzLmF0dGFjaCh2KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbFZpZGVvSG9vaygpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF92aWRlb19fKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIG5ldyBWaWRlb0hvb2soKS5pbnN0YWxsKCk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA1LzI2LlxuXG5pbXBvcnQgeyBpbnN0YWxsVGlja0hvb2sgfSBmcm9tIFwiLi9pZnJhbWVfaG9va1wiO1xuaW1wb3J0IHsgaW5zdGFsbFZpZGVvSG9vayB9IGZyb20gXCIuL3ZpZGVvL2hvb2tcIjtcblxuaWYgKHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wKSB7XG4gIGluc3RhbGxUaWNrSG9vaygpO1xuICBpbnN0YWxsVmlkZW9Ib29rKCk7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pup-recorder",
3
- "version": "0.4.0",
3
+ "version": "0.4.3",
4
4
  "description": "Record web pages as video",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "engines": {
27
27
  "bun": ">= 1",
28
- "node": ">= 20"
28
+ "node": ">= 22"
29
29
  },
30
30
  "engineStrict": true,
31
31
  "trustedDependencies": [
@@ -60,9 +60,10 @@
60
60
  "zod": "latest"
61
61
  },
62
62
  "devDependencies": {
63
+ "@biomejs/biome": "latest",
63
64
  "@microsoft/api-extractor": "latest",
64
65
  "@types/bun": "latest",
65
- "@types/node": "^20.0.0",
66
+ "@types/node": "^22.0.0",
66
67
  "@typescript/native-preview": "latest",
67
68
  "tsup": "latest"
68
69
  },
@@ -1,2 +0,0 @@
1
- 'use strict';require('source-map-support/register.js');var electron=require('electron');var A="audio-meta",f="audio-chunk";if(!window.__pup_audio_capturing__){window.__pup_audio_capturing__=true;let s=new WeakSet,p=new WeakSet,d=false,w=AudioContext.prototype.createMediaElementSource;AudioContext.prototype.createMediaElementSource=function(t){return p.add(t),w.call(this,t)};let _=AudioNode.prototype.connect;AudioNode.prototype.connect=function(t,a,o){let e=t.context,n=e?.__pup_captureNode__;return n&&e&&t===e.destination&&this!==n&&_.call(this,n,a,o),_.call(this,t,a,o)};let r=window.AudioContext||window.webkitAudioContext;if(r){let t=function(...o){let e=new r(...o);if(!s.has(e)){s.add(e),d||(d=true,electron.ipcRenderer.send(A,{sampleRate:e.sampleRate}));let n=e.createScriptProcessor(4096,2,2);n.onaudioprocess=l=>{let u=l.inputBuffer.getChannelData(0),C=l.inputBuffer.getChannelData(1),c=new Float32Array(u.length*2);for(let i=0;i<u.length;i++)c[i*2]=u[i],c[i*2+1]=C[i];electron.ipcRenderer.send(f,Buffer.from(c.buffer));},n.connect(e.destination),e.__pup_captureNode__=n;}return e};t.prototype=r.prototype,Object.setPrototypeOf(t,r),window.AudioContext=t,"webkitAudioContext"in window&&(window.webkitAudioContext=t);let a=HTMLMediaElement.prototype.play;HTMLMediaElement.prototype.play=function(){if(!this.__pup_captured__){this.__pup_captured__=true;let o=this;Promise.resolve().then(()=>{if(!p.has(o)){let e=new t;e.createMediaElementSource(o).connect(e.destination);}});}return a.call(this)};}}//# sourceMappingURL=audio_preload.cjs.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXJlci9hdWRpby50cyIsIi4uL3NyYy9hdWRpb19wcmVsb2FkLnRzIl0sIm5hbWVzIjpbIkFVRElPX01FVEFfQ0hBTk5FTCIsIkFVRElPX0NIVU5LX0NIQU5ORUwiLCJjYXB0dXJlZENvbnRleHRzIiwic291cmNlZEVsZW1lbnRzIiwibWV0YVNlbnQiLCJvcmlnQ3JlYXRlTUVTIiwiZWwiLCJvcmlnQ29ubmVjdCIsImRlc3QiLCJvdXRJZHgiLCJpbklkeCIsImN0eCIsImNhcHR1cmVOb2RlIiwiT3JpZ0FDIiwiUGF0Y2hlZEFDIiwiYXJncyIsImlwY1JlbmRlcmVyIiwibm9kZSIsImUiLCJMIiwiUiIsIm91dCIsIm9yaWdQbGF5Il0sIm1hcHBpbmdzIjoid0ZBS08sSUFBTUEsQ0FBQUEsQ0FBcUIsWUFBQSxDQUNyQkMsQ0FBQUEsQ0FBc0IsYUFBQSxDQ1luQyxHQUFJLENBQUMsTUFBQSxDQUFPLHdCQUF5QixDQUNuQyxNQUFBLENBQU8sdUJBQUEsQ0FBMEIsSUFBQSxDQUVqQyxJQUFNQyxDQUFBQSxDQUFtQixJQUFJLE9BQUEsQ0FDdkJDLEVBQWtCLElBQUksT0FBQSxDQUN4QkMsQ0FBQUEsQ0FBVyxLQUFBLENBRVRDLENBQUFBLENBQWdCLFlBQUEsQ0FBYSxTQUFBLENBQVUsd0JBQUEsQ0FDN0MsYUFBYSxTQUFBLENBQVUsd0JBQUEsQ0FBMkIsU0FBVUMsQ0FBQUEsQ0FBSSxDQUM5RCxPQUFBSCxDQUFBQSxDQUFnQixHQUFBLENBQUlHLENBQUUsQ0FBQSxDQUNmRCxDQUFBQSxDQUFjLElBQUEsQ0FBSyxJQUFBLENBQU1DLENBQUUsQ0FDcEMsQ0FBQSxDQUVBLElBQU1DLEVBQWMsU0FBQSxDQUFVLFNBQUEsQ0FBVSxPQUFBLENBQ3hDLFNBQUEsQ0FBVSxTQUFBLENBQVUsT0FBQSxDQUFVLFNBRTVCQyxDQUFBQSxDQUNBQyxFQUNBQyxDQUFBQSxDQUNBLENBQ0EsSUFBTUMsQ0FBQUEsQ0FBT0gsQ0FBQUEsQ0FBbUIsT0FBQSxDQUMxQkks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SUFBTUssQ0FBQUEsQ0FBTSxJQUFLRyxDQUFBQSxDQUNqQkgsRUFBSSx3QkFBQSxDQUF5QkwsQ0FBRSxDQUFBLENBQUUsT0FBQSxDQUFRSyxDQUFBQSxDQUFJLFdBQVcsRUFDMUQsQ0FDRixDQUFDLEVBQ0gsQ0FDQSxPQUFPVyxDQUFBQSxDQUFTLEtBQUssSUFBSSxDQUMzQixFQUNGLENBQ0YiLCJmaWxlIjoiYXVkaW9fcHJlbG9hZC5janMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAzLzAyLlxuXG5pbXBvcnQgeyB0eXBlIFdlYkNvbnRlbnRzIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgdHlwZSB7IEVuY29kZXJQaXBlbGluZSB9IGZyb20gXCIuLi9iYXNlL2VuY29kZXIvcGlwZWxpbmVcIjtcblxuZXhwb3J0IGNvbnN0IEFVRElPX01FVEFfQ0hBTk5FTCA9IFwiYXVkaW8tbWV0YVwiO1xuZXhwb3J0IGNvbnN0IEFVRElPX0NIVU5LX0NIQU5ORUwgPSBcImF1ZGlvLWNodW5rXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9MaXN0ZW5lck9wdGlvbnMge1xuICB3YzogV2ViQ29udGVudHM7XG4gIGVuY29kZXI6IEVuY29kZXJQaXBlbGluZTtcbiAgZ2V0VmlkZW9UaW1lTXM6ICgpID0+IG51bWJlcjtcbiAgb25FcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgQXVkaW9EaXNwb3NhbCA9ICgpID0+IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hBdWRpb0xpc3RlbmVycyh7IHdjLCBlbmNvZGVyLCBnZXRWaWRlb1RpbWVNcywgb25FcnJvciB9OiBBdWRpb0xpc3RlbmVyT3B0aW9ucyk6IEF1ZGlvRGlzcG9zYWwge1xuICBjb25zdCBvbk1ldGEgPSBhc3luYyAoX2U6IHVua25vd24sIGRhdGE6IHsgc2FtcGxlUmF0ZTogbnVtYmVyIH0pID0+IHtcbiAgICBjb25zdCBzYW1wbGVSYXRlID0gZGF0YS5zYW1wbGVSYXRlO1xuICAgIGNvbnN0IHN0YXJ0TXMgPSBnZXRWaWRlb1RpbWVNcygpO1xuICAgIGVuY29kZXIuc2V0dXBBdWRpbyhzYW1wbGVSYXRlKTtcbiAgICBjb25zdCBzaWxlbmNlU2FtcGxlcyA9IE1hdGguY2VpbCgoc3RhcnRNcyAqIHNhbXBsZVJhdGUpIC8gMTAwMCk7XG4gICAgaWYgKHNpbGVuY2VTYW1wbGVzIDw9IDApIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZW5jb2Rlci5lbmNvZGVBdWRpbyhCdWZmZXIuYWxsb2Moc2lsZW5jZVNhbXBsZXMgKiAyICogNCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25DaHVuayA9IGFzeW5jIChfZTogdW5rbm93biwgYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZW5jb2Rlci5lbmNvZGVBdWRpbyhidWZmZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgd2MuaXBjLm9uKEFVRElPX01FVEFfQ0hBTk5FTCwgb25NZXRhKTtcbiAgd2MuaXBjLm9uKEFVRElPX0NIVU5LX0NIQU5ORUwsIG9uQ2h1bmspO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgd2MuaXBjLnJlbW92ZUxpc3RlbmVyKEFVRElPX01FVEFfQ0hBTk5FTCwgb25NZXRhKTtcbiAgICB3Yy5pcGMucmVtb3ZlTGlzdGVuZXIoQVVESU9fQ0hVTktfQ0hBTk5FTCwgb25DaHVuayk7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA0LzI4LlxuXG5pbXBvcnQgeyBpcGNSZW5kZXJlciB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IHsgQVVESU9fQ0hVTktfQ0hBTk5FTCwgQVVESU9fTUVUQV9DSEFOTkVMIH0gZnJvbSBcIi4vcmVuZGVyZXIvYXVkaW9cIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX3B1cF9hdWRpb19jYXB0dXJpbmdfXz86IGJvb2xlYW47XG4gICAgd2Via2l0QXVkaW9Db250ZXh0PzogdHlwZW9mIEF1ZGlvQ29udGV4dDtcbiAgfVxuICBpbnRlcmZhY2UgQXVkaW9Db250ZXh0IHtcbiAgICBfX3B1cF9jYXB0dXJlTm9kZV9fPzogQXVkaW9Ob2RlO1xuICB9XG4gIGludGVyZmFjZSBIVE1MTWVkaWFFbGVtZW50IHtcbiAgICBfX3B1cF9jYXB0dXJlZF9fPzogYm9vbGVhbjtcbiAgfVxufVxuXG5pZiAoIXdpbmRvdy5fX3B1cF9hdWRpb19jYXB0dXJpbmdfXykge1xuICB3aW5kb3cuX19wdXBfYXVkaW9fY2FwdHVyaW5nX18gPSB0cnVlO1xuXG4gIGNvbnN0IGNhcHR1cmVkQ29udGV4dHMgPSBuZXcgV2Vha1NldDxBdWRpb0NvbnRleHQ+KCk7XG4gIGNvbnN0IHNvdXJjZWRFbGVtZW50cyA9IG5ldyBXZWFrU2V0PEhUTUxNZWRpYUVsZW1lbnQ+KCk7XG4gIGxldCBtZXRhU2VudCA9IGZhbHNlO1xuXG4gIGNvbnN0IG9yaWdDcmVhdGVNRVMgPSBBdWRpb0NvbnRleHQucHJvdG90eXBlLmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZTtcbiAgQXVkaW9Db250ZXh0LnByb3RvdHlwZS5jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICBzb3VyY2VkRWxlbWVudHMuYWRkKGVsKTtcbiAgICByZXR1cm4gb3JpZ0NyZWF0ZU1FUy5jYWxsKHRoaXMsIGVsKTtcbiAgfTtcblxuICBjb25zdCBvcmlnQ29ubmVjdCA9IEF1ZGlvTm9kZS5wcm90b3R5cGUuY29ubmVjdCBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBBdWRpb05vZGU7XG4gIEF1ZGlvTm9kZS5wcm90b3R5cGUuY29ubmVjdCA9IGZ1bmN0aW9uIChcbiAgICB0aGlzOiBBdWRpb05vZGUsXG4gICAgZGVzdDogQXVkaW9Ob2RlIHwgQXVkaW9QYXJhbSxcbiAgICBvdXRJZHg/OiBudW1iZXIsXG4gICAgaW5JZHg/OiBudW1iZXIsXG4gICkge1xuICAgIGNvbnN0IGN0eCA9IChkZXN0IGFzIEF1ZGlvTm9kZSkuY29udGV4dCBhcyBBdWRpb0NvbnRleHQgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgY2FwdHVyZU5vZGUgPSBjdHg/Ll9fcHVwX2NhcHR1cmVOb2RlX187XG4gICAgaWYgKGNhcHR1cmVOb2RlICYmIGN0eCAmJiBkZXN0ID09PSBjdHguZGVzdGluYXRpb24gJiYgdGhpcyAhPT0gY2FwdHVyZU5vZGUpIHtcbiAgICAgIG9yaWdDb25uZWN0LmNhbGwodGhpcywgY2FwdHVyZU5vZGUsIG91dElkeCwgaW5JZHgpO1xuICAgIH1cbiAgICByZXR1cm4gb3JpZ0Nvbm5lY3QuY2FsbCh0aGlzLCBkZXN0LCBvdXRJZHgsIGluSWR4KTtcbiAgfSBhcyB0eXBlb2YgQXVkaW9Ob2RlLnByb3RvdHlwZS5jb25uZWN0O1xuXG4gIGNvbnN0IE9yaWdBQyA9IHdpbmRvdy5BdWRpb0NvbnRleHQgfHwgd2luZG93LndlYmtpdEF1ZGlvQ29udGV4dDtcbiAgaWYgKE9yaWdBQykge1xuICAgIGZ1bmN0aW9uIFBhdGNoZWRBQyh0aGlzOiBBdWRpb0NvbnRleHQsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgY29uc3QgY3R4ID0gbmV3IChPcmlnQUMgYXMgeyBuZXcgKC4uLmE6IHVua25vd25bXSk6IEF1ZGlvQ29udGV4dCB9KSguLi5hcmdzKTtcbiAgICAgIGlmICghY2FwdHVyZWRDb250ZXh0cy5oYXMoY3R4KSkge1xuICAgICAgICBjYXB0dXJlZENvbnRleHRzLmFkZChjdHgpO1xuICAgICAgICBpZiAoIW1ldGFTZW50KSB7XG4gICAgICAgICAgbWV0YVNlbnQgPSB0cnVlO1xuICAgICAgICAgIGlwY1JlbmRlcmVyLnNlbmQoQVVESU9fTUVUQV9DSEFOTkVMLCB7IHNhbXBsZVJhdGU6IGN0eC5zYW1wbGVSYXRlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGUgPSBjdHguY3JlYXRlU2NyaXB0UHJvY2Vzc29yKDQwOTYsIDIsIDIpO1xuICAgICAgICBub2RlLm9uYXVkaW9wcm9jZXNzID0gKGU6IEF1ZGlvUHJvY2Vzc2luZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgTCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7XG4gICAgICAgICAgY29uc3QgUiA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMSk7XG4gICAgICAgICAgY29uc3Qgb3V0ID0gbmV3IEZsb2F0MzJBcnJheShMLmxlbmd0aCAqIDIpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3V0W2kgKiAyXSA9IExbaV0hO1xuICAgICAgICAgICAgb3V0W2kgKiAyICsgMV0gPSBSW2ldITtcbiAgICAgICAgICB9XG4gICAgICAgICAgaXBjUmVuZGVyZXIuc2VuZChBVURJT19DSFVOS19DSEFOTkVMLCBCdWZmZXIuZnJvbShvdXQuYnVmZmVyKSk7XG4gICAgICAgIH07XG4gICAgICAgIG5vZGUuY29ubmVjdChjdHguZGVzdGluYXRpb24pO1xuICAgICAgICBjdHguX19wdXBfY2FwdHVyZU5vZGVfXyA9IG5vZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3R4O1xuICAgIH1cbiAgICBQYXRjaGVkQUMucHJvdG90eXBlID0gT3JpZ0FDLnByb3RvdHlwZTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoUGF0Y2hlZEFDLCBPcmlnQUMpO1xuICAgIHdpbmRvdy5BdWRpb0NvbnRleHQgPSBQYXRjaGVkQUMgYXMgdW5rbm93biBhcyB0eXBlb2YgQXVkaW9Db250ZXh0O1xuICAgIGlmIChcIndlYmtpdEF1ZGlvQ29udGV4dFwiIGluIHdpbmRvdykge1xuICAgICAgd2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCA9IFBhdGNoZWRBQyBhcyB1bmtub3duIGFzIHR5cGVvZiBBdWRpb0NvbnRleHQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ1BsYXkgPSBIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZS5wbGF5O1xuICAgIEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXRoaXMuX19wdXBfY2FwdHVyZWRfXykge1xuICAgICAgICB0aGlzLl9fcHVwX2NhcHR1cmVkX18gPSB0cnVlO1xuICAgICAgICBjb25zdCBlbCA9IHRoaXM7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghc291cmNlZEVsZW1lbnRzLmhhcyhlbCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IG5ldyAoUGF0Y2hlZEFDIGFzIHVua25vd24gYXMgdHlwZW9mIEF1ZGlvQ29udGV4dCkoKTtcbiAgICAgICAgICAgIGN0eC5jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoZWwpLmNvbm5lY3QoY3R4LmRlc3RpbmF0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yaWdQbGF5LmNhbGwodGhpcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,4 +0,0 @@
1
- import'source-map-support/register.js';import {createRequire}from'module';import {dirname,join}from'path';import {Log}from'node-av';import {AV_LOG_ERROR,AV_LOG_WARNING}from'node-av/constants';import {spawn}from'child_process';import Oe from'tree-kill';import f from'zod';import Fe from'electron';import {platform}from'os';import {HardwareContext}from'node-av/api';import {EventEmitter}from'events';var fe=Object.create;var D=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var T=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),P=t=>{throw TypeError(t)};var Y=(t,e,r)=>e in t?D(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var Q=t=>[,,,fe(null)],X=["class","method","getter","setter","accessor","field","value","get","set"],C=t=>t!==void 0&&typeof t!="function"?P("Function expected"):t,we=(t,e,r,o,n)=>({kind:X[t],name:e,metadata:o,addInitializer:s=>r._?P("Already initialized"):n.push(C(s||null))}),M=(t,e)=>Y(e,T("metadata"),t[3]),Z=(t,e,r,o)=>{for(var n=0,s=t[e>>1],a=s&&s.length;n<a;n++)s[n].call(r);return o},E=(t,e,r,o,n,s)=>{var i,p,c,v,l=e&7,R=false,d=false,x=2,_=X[l+5],he=t[x]||(t[x]=[]),b=((n=n.prototype),be(n,r));for(var L=o.length-1;L>=0;L--)c=we(l,r,p={},t[3],he),(c.static=R,c.private=d,v=c.access={has:g=>r in g},(v.get=g=>g[r]),l>2),i=(0, o[L])(b[_],c),p._=1,C(i)&&(b[_]=i);return b&&D(n,r,b),n},ee=(t,e,r)=>Y(t,e+"",r);var je=(t,e,r)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&P("Object expected");var o,n;r&&(o=e[T("asyncDispose")]),o===void 0&&(o=e[T("dispose")],r&&(n=o)),typeof o!="function"&&P("Object not disposable"),n&&(o=function(){try{n.call(this);}catch(s){return Promise.reject(s)}}),t.push([r,o,e]);}else r&&t.push([r]);return e},Be=(t,e,r)=>{var o=typeof SuppressedError=="function"?SuppressedError:function(a,i,p,c){return c=Error(p),c.name="SuppressedError",c.error=a,c.suppressed=i,c},n=a=>e=r?new o(a,e,"An error was suppressed during disposal"):(r=true,a),s=a=>{for(;a=t.pop();)try{var i=a[1]&&a[1].call(a[2]);if(a[0])return Promise.resolve(i).then(s,p=>(n(p),s()))}catch(p){n(p);}if(r)throw e};return s()};var re=class{_written=0;_shown=false;_total;_out;_tty;_showCount;constructor(e){this._total=e.total,this._out=e.out,this._tty=!!e.out.isTTY,this._showCount=e.showCount??false;}get total(){return this._total}update(e){this._written=Math.min(this._total,Math.max(0,e)),this.render();}updatePercent(e){this.update(Math.round(e/100*this._total));}clear(){this._tty&&this._shown&&this._out.write("\r\x1B[2K");}redraw(){this.render();}log(e){this.clear(),this._out.write(e+`
2
- `),this.redraw();}finish(e){this.clear(),this._out.write(e+`
3
- `),this._shown=false;}render(){if(!this._tty||this._written===0&&!this._shown)return;let e=this._total>0?this._written/this._total:0,r=Math.round(e*40),o="#".repeat(r)+"-".repeat(40-r),n=Math.round(e*100),s=this._showCount?`${this._written}/${this._total} (${n}%)`:`${n}%`;this._out.write(`\r[${o}] ${s}`),this._shown=true;}};function Ke(t){let e=r=>(...o)=>{t.clear(),r(...o),t.redraw();};return {debug:e(console.debug),info:e(console.info),warn:e(console.warn),error:e(console.error)}}function te(t,e,r){try{return e(process.env[t])}catch{return r}}function oe(t){if(typeof t=="number")return t;let e=Number(t);if(Number.isNaN(e))throw new Error(`Value ${t} is not a valid number`);return e}function Qe(t){return typeof t=="string"?t:String(t)}var ke=createRequire(import.meta.url),A=te("PUP_LOG_LEVEL",oe,2),F=dirname(ke.resolve("pup-recorder/package.json")),ne=join(F,"dist","app.cjs"),nr=join(F,"dist","audio_preload.cjs"),sr=join(F,"dist","iframe_preload.cjs");var $="<pup@debug>",U="<pup@info>",H="<pup@warn>",W="<pup@error>",j="<pup@fatal>";function O(t,e){return function(...r){let o=r.map(n=>n instanceof Error?n.stack??String(n):n);return t.call(this,...o)}}var se,ie,ae,le,pe,k;pe=[O],le=[O],ae=[O],ie=[O],se=[O];var y=class{constructor(e=A){this._level=e;Z(k,5,this);ee(this,"_impl");this.impl=console;}_level;get level(){return this._level}set level(e){this._level=e,this.impl=this._impl??console;}get impl(){return this._impl}set impl(e){let r=e.debug??console.debug,o=e.info??console.info,n=e.warn??console.warn,s=e.error??console.error,a=this._level;this._impl={debug:a>=3?r:void 0,info:a>=2?o:void 0,warn:a>=1?n:void 0,error:a>=0?s:void 0};}debug(...e){this.impl?.debug?.($,...e);}info(...e){this.impl?.info?.(U,...e);}warn(...e){this.impl?.warn?.(H,...e);}error(...e){this.impl?.error?.(W,...e);}fatal(...e){this.impl?.error?.(j,...e),process.exit(1);}dispatch(e){let r=e.trimEnd();r.startsWith($)?this.debug(r.slice($.length+1)):r.startsWith(U)?this.info(r.slice(U.length+1)):r.startsWith(H)?this.warn(r.slice(H.length+1)):r.startsWith(W)?this.error(r.slice(W.length+1)):this.info(r);}attach(e,r){return new Promise((o,n)=>{this.debug(`${r}.attach`);let s="",a=i=>{let p=i.toString();p.startsWith(j)?s+=p.slice(j.length+1):this.dispatch(p);};e.stderr?.on("data",a),e.stdout?.on("data",a),e.on("error",i=>{s+=i.message,e.kill();}).once("close",(i,p)=>{i||p||s?(s||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${r}.close`,{code:i,signal:p,fatal:s}),n(new Error(s))):(this.debug(`${r}.close`),o());}).on("unhandledRejection",i=>{this.error(`${r}.unhandled`,i);}).on("uncaughtExceptionMonitor",i=>{this.error(`${r}.unhandled`,i);});})}};k=Q(),E(k,1,"debug",pe,y),E(k,1,"info",le,y),E(k,1,"warn",ae,y),E(k,1,"error",ie,y),E(k,1,"fatal",se,y),M(k,y);var u=new y;Log.setCallback((t,e)=>{let r=e.trimEnd();r&&(t<=AV_LOG_ERROR?u.error(r):t<=AV_LOG_WARNING&&u.warn(r));});function mr(t,e){return (...r)=>{try{let o=t(...r);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var B="--pup-priv-args";function yr(){let t=process.argv,e=t.find(o=>o.startsWith(B));if(!e)return u.debug("procargv",t),process.argv;let r=["exec",...t.slice(-1)];return e=Buffer.from(e.split("=")[1],"base64").toString(),r.push(...JSON.parse(e)),u.debug("pupargs",r),r}function ce(t,e){let r=t.split(" ").filter(i=>i.length),[o,...n]=r;if(!o)throw new Error("empty command");let s=spawn(o,n,{stdio:"inherit",...e}),a=false;return {process:s,wait:u.attach(s,o),get killed(){return a},kill(){if(a)return;a=true;let i=s.pid;i?Oe(i,"SIGKILL"):s.kill("SIGKILL");}}}var Te=1920,Ae=1080,Ie=30,Le=5,Se="out/html.mp4,out/html.webm",_r=f.object({duration:f.number().describe("Duration in seconds"),width:f.number().describe("Video width"),height:f.number().describe("Video height"),fps:f.number().describe("Frames per second"),withAudio:f.boolean().describe("Capture and encode audio"),outFile:f.string().describe("Comma-separated output paths; extension (.mp4/.webm) selects encoder"),useInnerProxy:f.boolean().describe("Use bilibili inner proxy for resource access"),deterministic:f.boolean().describe("Render by frame rather than recording"),disableGpu:f.boolean().describe("Disable GPU rendering, may reduce performance but increase stability"),disableHwCodec:f.boolean().describe("Disable hardware video encoder (NVENC/VideoToolbox), use software x265"),windowTolerant:f.boolean().describe("Fall back to dom-ready if warmup load times out")}),ue={width:Te,height:Ae,fps:Ie,duration:Le,outFile:Se,withAudio:false,useInnerProxy:false,deterministic:false,disableGpu:false,disableHwCodec:false,windowTolerant:false};var Me="[HWAccel]";async function Ne(){let t=HardwareContext.auto(),e=t!==null;return t?.dispose(),e}var de=Ne().then(t=>(u.debug(Me,"gpu:",t),t));async function ge(t){let e=["no-sandbox","disable-dev-shm-usage","disable-web-security","disable-site-isolation-trials","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","autoplay-policy=no-user-gesture-required","disable-extensions","force-device-scale-factor=1","force-color-profile=srgb","ignore-gpu-blocklist","use-gl=angle","deterministic-mode","enable-begin-frame-control","disable-new-content-rendering-timeout","run-all-compositor-stages-before-draw","disable-threaded-animation","disable-threaded-scrolling","disable-checker-imaging","disable-image-animation-resync","enable-surface-synchronization","font-render-hinting=none","disable-background-networking","js-flags=--max-old-space-size=512","renderer-process-limit=1","num-raster-threads=2","disable-background-timer-throttling","disable-renderer-backgrounding","disable-backgrounding-occluded-windows","enable-logging=stderr"];A>=3?e.push("log-level=0","v=1"):e.push("log-level=3");let r=["FontationBackend"];if(!(await de&&!t))e.push("use-angle=swiftshader","enable-unsafe-swiftshader");else {e.push("disable-gpu-sandbox","enable-unsafe-webgpu");let n=platform();n==="darwin"?e.push("use-angle=metal"):n==="win32"?e.push("use-angle=d3d11"):(e.push("use-angle=vulkan","disable-vulkan-surface"),r.push("Vulkan"));}return e.push(`enable-features=${r.join(",")}`),e}async function $e(t){return [...await ge(t),"headless=new"]}var Ue="[Electron]";async function me({args:t}){let r=(await $e(t.includes("--disable-gpu"))).map(s=>`--${s}`);r.push(`${B}=${Buffer.from(JSON.stringify(t)).toString("base64")}`);let o=[Fe,...r,ne].join(" ");u.debug(Ue,o);let n={...process.env,RUST_BACKTRACE:"full"};return ce(o,{stdio:["ignore","pipe","pipe","ipc"],env:n})}var I=class extends EventEmitter{constructor(e){super(),e.on("message",r=>{let o=r;switch(o.type){case "console":{this.emit("console",o.level,o.message);break}case "progress":{this.emit("progress",o.value);break}case "done":{this.emit("done",o.payload);break}case "error":{this.emit("error",new Error(o.error));break}}}),e.once("exit",r=>this.emit("close",r));}};var V="[pup]";async function We(t,e){u.debug(V,"runPupApp",t,e);let r=[t,"--width",`${e.width}`,"--height",`${e.height}`,"--fps",`${e.fps}`,"--duration",`${e.duration}`,"--out-file",`${e.outFile}`];return e.withAudio&&r.push("--with-audio"),e.useInnerProxy&&r.push("--use-inner-proxy"),e.deterministic&&r.push("--deterministic"),e.disableGpu&&r.push("--disable-gpu"),e.disableHwCodec&&r.push("--disable-hw-codec"),e.windowTolerant&&r.push("--window-tolerant"),me({args:r})}var w=ue;async function Qr(t,e){u.debug(V,"pup",t,e);let{signal:r}=e;r?.throwIfAborted();let o=e.outFile??w.outFile,n={width:e.width??w.width,height:e.height??w.height,fps:e.fps??w.fps,duration:e.duration??w.duration,withAudio:e.withAudio??w.withAudio,useInnerProxy:e.useInnerProxy??w.useInnerProxy,deterministic:e.deterministic??w.deterministic,disableGpu:e.disableGpu??w.disableGpu,disableHwCodec:e.disableHwCodec??w.disableHwCodec,windowTolerant:e.windowTolerant??w.windowTolerant,outFile:o},s=performance.now(),a=0,i=v=>{a=v,e.onProgress?.(v);},p=await We(t,n),c=()=>{p.process.send?.({type:"cancel",reason:String(r?.reason??"abort")}),setTimeout(()=>p.kill(),5e3);};r?.addEventListener("abort",c,{once:true});try{let v=new Promise((R,d)=>{new I(p.process).on("close",x=>{let _=JSON.stringify({source:t,progress:a,code:x,killed:p.killed});d(new Error(`crashed: ${_}`));}).on("progress",i).on("console",(x,_)=>e.onConsole?.(x,_)).on("done",R).on("error",d);});i(0);let[l]=await Promise.all([v,p.wait]);return i(100),u.debug(V,`done ${o} in ${Math.round(performance.now()-s)}ms`),{...l,options:n}}catch(v){throw p.kill(),r?.throwIfAborted(),v}finally{r?.removeEventListener("abort",c);}}export{je as a,Be as b,re as c,Ke as d,te as e,oe as f,Qe as g,A as h,F as i,ne as j,nr as k,sr as l,y as m,u as n,mr as o,B as p,yr as q,ce as r,Te as s,Ae as t,Ie as u,Le as v,Se as w,_r as x,ue as y,Qr as z};//# sourceMappingURL=chunk-GDKW7ZIE.js.map
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2NsaV91aS50cyIsIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9iYXNlL3Byb2Nlc3MudHMiLCIuLi9zcmMvcmVuZGVyZXIvc2NoZW1hLnRzIiwiLi4vc3JjL2Jhc2UvaHdhY2NlbC50cyIsIi4uL3NyYy9iYXNlL2Nocm9taXVtLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2VsZWN0cm9uLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2lwYy50cyIsIi4uL3NyYy9wdXAudHMiXSwibmFtZXMiOlsiUHJvZ3Jlc3NCYXIiLCJvcHRzIiwid3JpdHRlbiIsInBjdCIsImxpbmUiLCJyYXRpbyIsImZpbGxlZCIsImJhciIsInN1ZmZpeCIsImJhckxvZ2dlciIsIndyYXAiLCJmbiIsImFyZ3MiLCJwZW52IiwibmFtZSIsInBhcnNlciIsImRlZmF1bHRWYWx1ZSIsInBhcnNlTnVtYmVyIiwieCIsIm51bSIsInBhcnNlU3RyaW5nIiwicmVxdWlyZSIsImNyZWF0ZVJlcXVpcmUiLCJwdXBMb2dMZXZlbCIsInB1cFBrZ1Jvb3QiLCJkaXJuYW1lIiwicHVwQXBwIiwiam9pbiIsInB1cEF1ZGlvUHJlbG9hZCIsInB1cElmcmFtZVByZWxvYWQiLCJERUJVRyIsIklORk8iLCJXQVJOIiwiRVJST1IiLCJGQVRBTCIsInN0YWNrSG9vayIsInRhcmdldCIsIl9jb250ZXh0IiwibWVzc2FnZXMiLCJwcm9jZXNzZWQiLCJtc2ciLCJfZmF0YWxfZGVjIiwiX2Vycm9yX2RlYyIsIl93YXJuX2RlYyIsIl9pbmZvX2RlYyIsIl9kZWJ1Z19kZWMiLCJfaW5pdCIsIkxvZ2dlciIsIl9sZXZlbCIsIl9fcnVuSW5pdGlhbGl6ZXJzIiwiX19wdWJsaWNGaWVsZCIsInZhbHVlIiwiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIiwibHYiLCJtZXNzYWdlIiwicHJvYyIsInJlc29sdmUiLCJyZWplY3QiLCJmYXRhbCIsImRpc3BhdGNoIiwiZGF0YSIsImVyciIsImNvZGUiLCJzaWduYWwiLCJyZWFzb24iLCJfX2RlY29yYXRvclN0YXJ0IiwiX19kZWNvcmF0ZUVsZW1lbnQiLCJfX2RlY29yYXRvck1ldGFkYXRhIiwibG9nZ2VyIiwiTG9nIiwibGV2ZWwiLCJBVl9MT0dfRVJST1IiLCJBVl9MT0dfV0FSTklORyIsIm5vZXJyIiwicmV0IiwiUFVQX0FSR1NfS0VZIiwicGFyZ3MiLCJhcmd2IiwicHJpdiIsImFyZyIsImV4ZWMiLCJjbWQiLCJvcHRpb25zIiwicGFydHMiLCJzIiwiY29tbWFuZCIsInNwYXduIiwia2lsbGVkIiwicGlkIiwidHJlZUtpbGwiLCJERUZBVUxUX1dJRFRIIiwiREVGQVVMVF9IRUlHSFQiLCJERUZBVUxUX0ZQUyIsIkRFRkFVTFRfRFVSQVRJT04iLCJERUZBVUxUX09VVF9GSUxFIiwiUmVuZGVyU2NoZW1hIiwieiIsImRlZmF1bHRSZW5kZXJPcHRpb25zIiwiVEFHIiwiZGV0ZWN0R1BVRHJpdmVyIiwiaHciLCJIYXJkd2FyZUNvbnRleHQiLCJyZXN1bHQiLCJjYW5JVXNlR1BVIiwiY2hyb21pdW1PcHRpb25zIiwiZGlzYWJsZUdwdSIsImZlYXR1cmVzIiwicGxhdCIsInBsYXRmb3JtIiwiZWxlY3Ryb25PcHRzIiwicnVuRWxlY3Ryb25BcHAiLCJlbGVjdHJvbkFyZ3MiLCJhIiwiZWxlY3Ryb24iLCJlbnYiLCJJcGNSZWFkZXIiLCJFdmVudEVtaXR0ZXIiLCJjaGlsZCIsInJhdyIsImMiLCJydW5QdXBBcHAiLCJzb3VyY2UiLCJyZW5kZXIiLCJkIiwicHVwIiwib3V0RmlsZSIsInJlbmRlck9wdHMiLCJ0MCIsInByb2dyZXNzIiwidGljayIsInAiLCJoYW5kbGUiLCJvbkFib3J0IiwibCIsIm0iLCJzdW1tYXJ5IiwiZSJdLCJtYXBwaW5ncyI6IitpRUFZTyxJQUFNQSxFQUFBQSxDQUFOLEtBQWtCLENBQ2YsUUFBQSxDQUFXLEVBQ1gsTUFBQSxDQUFTLEtBQUEsQ0FDQSxNQUFBLENBQ0EsSUFBQSxDQUNBLElBQUEsQ0FDQSxVQUFBLENBRWpCLFlBQVlDLENBQUFBLENBQWtCLENBQzVCLEtBQUssTUFBQSxDQUFTQSxDQUFBQSxDQUFLLE1BQ25CLElBQUEsQ0FBSyxJQUFBLENBQU9BLENBQUFBLENBQUssR0FBQSxDQUNqQixJQUFBLENBQUssSUFBQSxDQUFPLENBQUMsQ0FBQ0EsQ0FBQUEsQ0FBSyxJQUFJLEtBQUEsQ0FDdkIsSUFBQSxDQUFLLFdBQWFBLENBQUFBLENBQUssU0FBQSxFQUFhLE1BQ3RDLENBRUEsSUFBSSxLQUFBLEVBQWdCLENBQ2xCLE9BQU8sSUFBQSxDQUFLLE1BQ2QsQ0FFQSxNQUFBLENBQU9DLENBQUFBLENBQXVCLENBQzVCLElBQUEsQ0FBSyxRQUFBLENBQVcsSUFBQSxDQUFLLEdBQUEsQ0FBSSxJQUFBLENBQUssTUFBQSxDQUFRLEtBQUssR0FBQSxDQUFJLENBQUEsQ0FBR0EsQ0FBTyxDQUFDLENBQUEsQ0FDMUQsS0FBSyxNQUFBLEdBQ1AsQ0FFQSxhQUFBLENBQWNDLENBQUFBLENBQW1CLENBQy9CLEtBQUssTUFBQSxDQUFPLElBQUEsQ0FBSyxNQUFPQSxDQUFBQSxDQUFNLEdBQUEsQ0FBTyxLQUFLLE1BQU0sQ0FBQyxFQUNuRCxDQUVBLEtBQUEsRUFBYyxDQUNSLEtBQUssSUFBQSxFQUFRLElBQUEsQ0FBSyxRQUFRLElBQUEsQ0FBSyxJQUFBLENBQUssTUFBTSxXQUFXLEVBQzNELENBRUEsTUFBQSxFQUFlLENBQ2IsSUFBQSxDQUFLLFNBQ1AsQ0FFQSxHQUFBLENBQUlDLENBQUFBLENBQW9CLENBQ3RCLElBQUEsQ0FBSyxPQUFNLENBQ1gsSUFBQSxDQUFLLElBQUEsQ0FBSyxLQUFBLENBQU1BLENBQUFBLENBQU87QUFBQSxDQUFJLENBQUEsQ0FDM0IsSUFBQSxDQUFLLE1BQUEsR0FDUCxDQUVBLE1BQUEsQ0FBT0EsQ0FBQUEsQ0FBb0IsQ0FDekIsSUFBQSxDQUFLLEtBQUEsRUFBTSxDQUNYLElBQUEsQ0FBSyxJQUFBLENBQUssTUFBTUEsQ0FBQUEsQ0FBTztBQUFBLENBQUksQ0FBQSxDQUMzQixLQUFLLE1BQUEsQ0FBUyxNQUNoQixDQUVRLE1BQUEsRUFBZSxDQUVyQixHQURJLENBQUMsSUFBQSxDQUFLLElBQUEsRUFDTixLQUFLLFFBQUEsR0FBYSxDQUFBLEVBQUssQ0FBQyxJQUFBLENBQUssTUFBQSxDQUFRLE9BQ3pDLElBQU1DLENBQUFBLENBQVEsSUFBQSxDQUFLLE1BQUEsQ0FBUyxDQUFBLENBQUksSUFBQSxDQUFLLFFBQUEsQ0FBVyxLQUFLLE1BQUEsQ0FBUyxDQUFBLENBQ3hEQyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxLQUFBLENBQU1ELENBQUFBLENBQVEsRUFBUyxDQUFBLENBQ3JDRSxDQUFBQSxDQUFNLEdBQUEsQ0FBSSxNQUFBLENBQU9ELENBQU0sQ0FBQSxDQUFJLElBQUksTUFBQSxDQUFPLEVBQUEsQ0FBWUEsQ0FBTSxDQUFBLENBQ3hESCxDQUFBQSxDQUFNLElBQUEsQ0FBSyxNQUFNRSxDQUFBQSxDQUFRLEdBQUcsQ0FBQSxDQUM1QkcsQ0FBQUEsQ0FBUyxJQUFBLENBQUssVUFBQSxDQUFhLEdBQUcsSUFBQSxDQUFLLFFBQVEsSUFBSSxJQUFBLENBQUssTUFBTSxLQUFLTCxDQUFHLENBQUEsRUFBQSxDQUFBLENBQU8sQ0FBQSxFQUFHQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQ3JGLElBQUEsQ0FBSyxLQUFLLEtBQUEsQ0FBTSxDQUFBLEdBQUEsRUFBTUksQ0FBRyxDQUFBLEVBQUEsRUFBS0MsQ0FBTSxDQUFBLENBQUUsRUFDdEMsSUFBQSxDQUFLLE1BQUEsQ0FBUyxLQUNoQixDQUNGLEVBR08sU0FBU0MsR0FBVUYsQ0FBQUEsQ0FBOEIsQ0FDdEQsSUFBTUcsQ0FBQUEsQ0FDa0NDLENBQUFBLEVBQ3RDLENBQUEsR0FBSUMsSUFBb0IsQ0FDdEJMLENBQUFBLENBQUksS0FBQSxFQUFNLENBQ1ZJLENBQUFBLENBQUcsR0FBR0MsQ0FBSSxDQUFBLENBQ1ZMLENBQUFBLENBQUksTUFBQSxHQUNOLENBQUEsQ0FDRixPQUFPLENBQ0wsS0FBQSxDQUFPRyxDQUFBQSxDQUFLLE9BQUEsQ0FBUSxLQUFLLENBQUEsQ0FDekIsSUFBQSxDQUFNQSxFQUFLLE9BQUEsQ0FBUSxJQUFJLEVBQ3ZCLElBQUEsQ0FBTUEsQ0FBQUEsQ0FBSyxRQUFRLElBQUksQ0FBQSxDQUN2QixLQUFBLENBQU9BLENBQUFBLENBQUssT0FBQSxDQUFRLEtBQUssQ0FDM0IsQ0FDRixDQ2xGTyxTQUFTRyxFQUFBQSxDQUFRQyxDQUFBQSxDQUFjQyxDQUFBQSxDQUFzQkMsRUFBaUMsQ0FDM0YsR0FBSSxDQUNGLE9BQU9ELENBQUFBLENBQU8sT0FBQSxDQUFRLElBQUlELENBQUksQ0FBQyxDQUNqQyxDQUFBLEtBQVEsQ0FDTixPQUFPRSxDQUNULENBQ0YsQ0NWTyxTQUFTQyxFQUFBQSxDQUFZQyxDQUFBQSxDQUFvQixDQUM5QyxHQUFJLE9BQU9BLENBQUFBLEVBQU0sUUFBQSxDQUNmLE9BQU9BLENBQUFBLENBRVQsSUFBTUMsRUFBTSxNQUFBLENBQU9ELENBQUMsQ0FBQSxDQUNwQixHQUFJLE1BQUEsQ0FBTyxLQUFBLENBQU1DLENBQUcsQ0FBQSxDQUNsQixNQUFNLElBQUksS0FBQSxDQUFNLENBQUEsTUFBQSxFQUFTRCxDQUFDLENBQUEsc0JBQUEsQ0FBd0IsQ0FBQSxDQUVwRCxPQUFPQyxDQUNULENBRU8sU0FBU0MsR0FBWUYsQ0FBQUEsQ0FBb0IsQ0FDOUMsT0FBSSxPQUFPQSxDQUFBQSxFQUFNLFFBQUEsQ0FBaUJBLEVBQzNCLE1BQUEsQ0FBT0EsQ0FBQyxDQUNqQixDQ1RBLElBQU1HLEVBQUFBLENBQVVDLGFBQUFBLENBQWMsTUFBQSxDQUFBLElBQUEsQ0FBWSxHQUFHLENBQUEsQ0FFaENDLEVBQWNWLEVBQUFBLENBQUssZUFBQSxDQUFpQkksRUFBQUEsQ0FBYSxDQUFDLENBQUEsQ0FFbERPLENBQUFBLENBQWFDLFFBQVFKLEVBQUFBLENBQVEsT0FBQSxDQUFRLDJCQUEyQixDQUFDLENBQUEsQ0FDakVLLEVBQUFBLENBQVNDLEtBQUtILENBQUFBLENBQVksTUFBQSxDQUFRLFNBQVMsQ0FBQSxDQUMzQ0ksRUFBQUEsQ0FBa0JELEtBQUtILENBQUFBLENBQVksTUFBQSxDQUFRLG1CQUFtQixDQUFBLENBQzlESyxFQUFBQSxDQUFtQkYsSUFBQUEsQ0FBS0gsRUFBWSxNQUFBLENBQVEsb0JBQW9CLEVDRzdFLElBQU1NLENBQUFBLENBQVEsYUFBQSxDQUNSQyxDQUFBQSxDQUFPLFlBQUEsQ0FDUEMsQ0FBQUEsQ0FBTyxZQUFBLENBQ1BDLEVBQVEsYUFBQSxDQUNSQyxDQUFBQSxDQUFRLGFBQUEsQ0FFZCxTQUFTQyxDQUFBQSxDQUFVQyxDQUFBQSxDQUFrQkMsRUFBdUMsQ0FDMUUsT0FBTyxTQUFBLEdBQTJCQyxDQUFBQSxDQUFxQixDQUNyRCxJQUFNQyxFQUFZRCxDQUFBQSxDQUFTLEdBQUEsQ0FBS0UsQ0FBQUEsRUFDdkJBLENBQUFBLFlBQWUsS0FBQSxDQUFTQSxDQUFBQSxDQUFJLE9BQVMsTUFBQSxDQUFPQSxDQUFHLEVBQUtBLENBQzVELENBQUEsQ0FDRCxPQUFPSixDQUFBQSxDQUFPLElBQUEsQ0FBSyxJQUFBLENBQU0sR0FBR0csQ0FBUyxDQUN2QyxDQUNGLENBOUJBLElBQUFFLEVBQUFBLENBQUFDLEVBQUFBLENBQUFDLEVBQUFBLENBQUFDLEVBQUFBLENBQUFDLEdBQUFDLENBQUFBLENBa0VFRCxFQUFBQSxDQUFBLENBQUNWLENBQUFBLENBQUFBLENBS0RTLEVBQUFBLENBQUEsQ0FBQ1QsR0FLRFEsRUFBQUEsQ0FBQSxDQUFDUixDQUFBQSxDQUFBQSxDQUtETyxFQUFBQSxDQUFBLENBQUNQLENBQUFBLENBQUFBLENBS0RNLEdBQUEsQ0FBQ04sQ0FBQUEsQ0FBQUEsQ0F0REksSUFBTVksQ0FBQUEsQ0FBTixLQUFtQyxDQThCeEMsWUFBb0JDLENBQUFBLENBQWlCekIsQ0FBQUEsQ0FBYSxDQUE5QixJQUFBLENBQUEsTUFBQSxDQUFBeUIsQ0FBQUEsQ0E5QmZDLENBQUFBLENBQUFILEVBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxDQUNMSSxFQUFBQSxDQUFBLElBQUEsQ0FBUSxPQUFBLENBQUEsQ0E4Qk4sSUFBQSxDQUFLLElBQUEsQ0FBTyxRQUNkLENBRm9CLE1BQUEsQ0EzQnBCLElBQUksS0FBQSxFQUFnQixDQUNsQixPQUFPLElBQUEsQ0FBSyxNQUNkLENBRUEsSUFBSSxLQUFBLENBQU1DLENBQUFBLENBQWUsQ0FDdkIsSUFBQSxDQUFLLE1BQUEsQ0FBU0EsQ0FBQUEsQ0FDZCxJQUFBLENBQUssSUFBQSxDQUFPLElBQUEsQ0FBSyxPQUFTLFFBQzVCLENBRUEsSUFBSSxJQUFBLEVBQStCLENBQ2pDLE9BQU8sS0FBSyxLQUNkLENBRUEsSUFBSSxJQUFBLENBQUtBLENBQUFBLENBQW1CLENBQzFCLElBQU1DLENBQUFBLENBQVFELENBQUFBLENBQU0sS0FBQSxFQUFTLE9BQUEsQ0FBUSxLQUFBLENBQy9CRSxDQUFBQSxDQUFPRixFQUFNLElBQUEsRUFBUSxPQUFBLENBQVEsSUFBQSxDQUM3QkcsQ0FBQUEsQ0FBT0gsQ0FBQUEsQ0FBTSxJQUFBLEVBQVEsUUFBUSxJQUFBLENBQzdCSSxDQUFBQSxDQUFRSixDQUFBQSxDQUFNLEtBQUEsRUFBUyxPQUFBLENBQVEsS0FBQSxDQUMvQkssRUFBSyxJQUFBLENBQUssTUFBQSxDQUNoQixLQUFLLEtBQUEsQ0FBUSxDQUNYLE1BQU9BLENBQUFBLEVBQU0sQ0FBQSxDQUFJSixDQUFBQSxDQUFRLE1BQUEsQ0FDekIsSUFBQSxDQUFNSSxDQUFBQSxFQUFNLEVBQUlILENBQUFBLENBQU8sTUFBQSxDQUN2QixJQUFBLENBQU1HLENBQUFBLEVBQU0sQ0FBQSxDQUFJRixDQUFBQSxDQUFPLE9BQ3ZCLEtBQUEsQ0FBT0UsQ0FBQUEsRUFBTSxDQUFBLENBQUlELENBQUFBLENBQVEsTUFDM0IsRUFDRixDQU9BLEtBQUEsQ0FBQSxHQUFTakIsQ0FBQUEsQ0FBMkIsQ0FDbEMsSUFBQSxDQUFLLElBQUEsRUFBTSxLQUFBLEdBQVFSLEVBQU8sR0FBR1EsQ0FBUSxFQUN2QyxDQUdBLElBQUEsQ0FBQSxHQUFRQSxDQUFBQSxDQUEyQixDQUNqQyxJQUFBLENBQUssSUFBQSxFQUFNLElBQUEsR0FBT1AsQ0FBQUEsQ0FBTSxHQUFHTyxDQUFRLEVBQ3JDLENBR0EsSUFBQSxDQUFBLEdBQVFBLENBQUFBLENBQTJCLENBQ2pDLElBQUEsQ0FBSyxJQUFBLEVBQU0sT0FBT04sQ0FBQUEsQ0FBTSxHQUFHTSxDQUFRLEVBQ3JDLENBR0EsU0FBU0EsQ0FBQUEsQ0FBMkIsQ0FDbEMsSUFBQSxDQUFLLElBQUEsRUFBTSxLQUFBLEdBQVFMLENBQUFBLENBQU8sR0FBR0ssQ0FBUSxFQUN2QyxDQUdBLEtBQUEsQ0FBQSxHQUFTQSxDQUFBQSxDQUEyQixDQUNsQyxLQUFLLElBQUEsRUFBTSxLQUFBLEdBQVFKLENBQUFBLENBQU8sR0FBR0ksQ0FBUSxDQUFBLENBQ3JDLFFBQVEsSUFBQSxDQUFLLENBQUMsRUFDaEIsQ0FFUSxRQUFBLENBQVNtQixDQUFBQSxDQUFpQixDQUNoQyxJQUFNakIsQ0FBQUEsQ0FBTWlCLENBQUFBLENBQVEsT0FBQSxFQUFRLENBQ3hCakIsQ0FBQUEsQ0FBSSxXQUFXVixDQUFLLENBQUEsQ0FDdEIsSUFBQSxDQUFLLEtBQUEsQ0FBTVUsQ0FBQUEsQ0FBSSxLQUFBLENBQU1WLEVBQU0sTUFBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQzdCVSxDQUFBQSxDQUFJLFVBQUEsQ0FBV1QsQ0FBSSxDQUFBLENBQzVCLElBQUEsQ0FBSyxLQUFLUyxDQUFBQSxDQUFJLEtBQUEsQ0FBTVQsRUFBSyxNQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FDM0JTLENBQUFBLENBQUksVUFBQSxDQUFXUixDQUFJLENBQUEsQ0FDNUIsSUFBQSxDQUFLLElBQUEsQ0FBS1EsQ0FBQUEsQ0FBSSxLQUFBLENBQU1SLENBQUFBLENBQUssT0FBUyxDQUFDLENBQUMsQ0FBQSxDQUMzQlEsQ0FBQUEsQ0FBSSxVQUFBLENBQVdQLENBQUssRUFDN0IsSUFBQSxDQUFLLEtBQUEsQ0FBTU8sQ0FBQUEsQ0FBSSxLQUFBLENBQU1QLENBQUFBLENBQU0sTUFBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBRXRDLElBQUEsQ0FBSyxJQUFBLENBQUtPLENBQUcsRUFFakIsQ0FFQSxNQUFBLENBQU9rQixDQUFBQSxDQUFvQjVDLENBQUFBLENBQWMsQ0FDdkMsT0FBTyxJQUFJLFFBQWMsQ0FBQzZDLENBQUFBLENBQVNDLENBQUFBLEdBQVcsQ0FDNUMsSUFBQSxDQUFLLEtBQUEsQ0FBTSxHQUFHOUMsQ0FBSSxDQUFBLE9BQUEsQ0FBUyxFQUMzQixJQUFJK0MsQ0FBQUEsQ0FBZ0IsR0FDZEMsQ0FBQUEsQ0FBWUMsQ0FBQUEsRUFBaUIsQ0FDakMsSUFBTU4sQ0FBQUEsQ0FBVU0sQ0FBQUEsQ0FBSyxVQUFTLENBQzFCTixDQUFBQSxDQUFRLFVBQUEsQ0FBV3ZCLENBQUssQ0FBQSxDQUMxQjJCLENBQUFBLEVBQVNKLEVBQVEsS0FBQSxDQUFNdkIsQ0FBQUEsQ0FBTSxNQUFBLENBQVMsQ0FBQyxDQUFBLENBRXZDLElBQUEsQ0FBSyxTQUFTdUIsQ0FBTyxFQUV6QixDQUFBLENBQ0FDLENBQUFBLENBQUssTUFBQSxFQUFRLEVBQUEsQ0FBRyxPQUFRSSxDQUFRLENBQUEsQ0FDaENKLENBQUFBLENBQUssTUFBQSxFQUFRLEVBQUEsQ0FBRyxNQUFBLENBQVFJLENBQVEsQ0FBQSxDQUNoQ0osQ0FBQUEsQ0FDRyxFQUFBLENBQUcsT0FBQSxDQUFVTSxDQUFBQSxFQUFRLENBQ3BCSCxHQUFTRyxDQUFBQSxDQUFJLE9BQUEsQ0FDYk4sQ0FBQUEsQ0FBSyxJQUFBLEdBQ1AsQ0FBQyxFQUNBLElBQUEsQ0FBSyxPQUFBLENBQVMsQ0FBQ08sQ0FBQUEsQ0FBTUMsQ0FBQUEsR0FBVyxDQUMzQkQsQ0FBQUEsRUFBUUMsQ0FBQUEsRUFBVUwsQ0FBQUEsRUFDcEJBLENBQUFBLEdBQVUsQ0FBQSxnQkFBQSxFQUFtQkgsQ0FBQUEsQ0FBSyxVQUFVLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQ3JELElBQUEsQ0FBSyxLQUFBLENBQU0sR0FBRzVDLENBQUksQ0FBQSxNQUFBLENBQUEsQ0FBVSxDQUFFLElBQUEsQ0FBQW1ELENBQUFBLENBQU0sTUFBQSxDQUFBQyxFQUFRLEtBQUEsQ0FBQUwsQ0FBTSxDQUFDLENBQUEsQ0FDbkRELENBQUFBLENBQU8sSUFBSSxNQUFNQyxDQUFLLENBQUMsQ0FBQSxHQUV2QixJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBRy9DLENBQUksQ0FBQSxNQUFBLENBQVEsQ0FBQSxDQUMxQjZDLENBQUFBLEVBQVEsRUFFWixDQUFDLENBQUEsQ0FDQSxHQUFHLG9CQUFBLENBQXVCUSxDQUFBQSxFQUFXLENBQ3BDLElBQUEsQ0FBSyxLQUFBLENBQU0sQ0FBQSxFQUFHckQsQ0FBSSxDQUFBLFVBQUEsQ0FBQSxDQUFjcUQsQ0FBTSxFQUN4QyxDQUFDLENBQUEsQ0FDQSxHQUFHLDBCQUFBLENBQTZCSCxDQUFBQSxFQUFRLENBQ3ZDLElBQUEsQ0FBSyxLQUFBLENBQU0sQ0FBQSxFQUFHbEQsQ0FBSSxDQUFBLFVBQUEsQ0FBQSxDQUFja0QsQ0FBRyxFQUNyQyxDQUFDLEVBQ0wsQ0FBQyxDQUNILENBQ0YsRUFoSE9sQixDQUFBQSxDQUFBc0IsQ0FBQUEsQ0FBQSxDQUFBLENBbUNMQyxDQUFBQSxDQUFBdkIsRUFBQSxDQUFBLENBQUEsT0FBQSxDQURBRCxFQUFBQSxDQWxDV0UsQ0FBQUEsQ0FBQUEsQ0F3Q1hzQixDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQURBRixHQXZDV0csQ0FBQUEsQ0FBQUEsQ0E2Q1hzQixDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQURBSCxFQUFBQSxDQTVDV0ksQ0FBQUEsQ0FBQUEsQ0FrRFhzQixFQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQURBSixFQUFBQSxDQWpEV0ssQ0FBQUEsQ0FBQUEsQ0F1RFhzQixDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxVQURBTCxFQUFBQSxDQXREV00sQ0FBQUEsQ0FBQUEsQ0FBTnVCLENBQUFBLENBQUF4QixDQUFBQSxDQUFNQyxDQUFBQSxDQUFBQSxDQWtIYixJQUFNd0IsRUFBUyxJQUFJeEIsRUFHbkJ5QixJQUFJLFdBQUEsQ0FBWSxDQUFDQyxFQUFPaEIsQ0FBQUEsR0FBWSxDQUNsQyxJQUFNakIsQ0FBQUEsQ0FBTWlCLENBQUFBLENBQVEsT0FBQSxHQUNmakIsQ0FBQUEsR0FDRGlDLENBQUFBLEVBQVNDLFlBQUFBLENBQWNILENBQUFBLENBQU8sS0FBQSxDQUFNL0IsQ0FBRyxFQUNsQ2lDLENBQUFBLEVBQVNFLGNBQUFBLEVBQWdCSixDQUFBQSxDQUFPLElBQUEsQ0FBSy9CLENBQUcsQ0FBQSxFQUNuRCxDQUFDLENBQUEsQ0N4Sk0sU0FBU29DLEVBQUFBLENBQ2RqRSxDQUFBQSxDQUNBSyxDQUFBQSxDQUNpRCxDQUNqRCxPQUFPLENBQUEsR0FBSUosQ0FBQUEsR0FBUyxDQUNsQixHQUFJLENBQ0YsSUFBTWlFLEVBQU1sRSxDQUFBQSxDQUFHLEdBQUdDLENBQUksQ0FBQSxDQUN0QixPQUFJaUUsQ0FBQUEsWUFBZSxRQUNWQSxDQUFBQSxDQUFJLEtBQUEsQ0FBTSxJQUFNN0QsQ0FBWSxDQUFBLENBRTlCNkQsQ0FDVCxNQUFRLENBQ04sT0FBTzdELENBQ1QsQ0FDRixDQUNGLENDWE8sSUFBTThELENBQUFBLENBQWUsa0JBRXJCLFNBQVNDLEVBQUFBLEVBQVEsQ0FDdEIsSUFBTUMsQ0FBQUEsQ0FBTyxPQUFBLENBQVEsSUFBQSxDQUNqQkMsQ0FBQUEsQ0FBT0QsQ0FBQUEsQ0FBSyxJQUFBLENBQU1FLEdBQVFBLENBQUFBLENBQUksVUFBQSxDQUFXSixDQUFZLENBQUMsQ0FBQSxDQUMxRCxHQUFJLENBQUNHLENBQUFBLENBQ0gsT0FBQVYsQ0FBQUEsQ0FBTyxLQUFBLENBQU0sVUFBQSxDQUFZUyxDQUFJLEVBQ3RCLE9BQUEsQ0FBUSxJQUFBLENBRWpCLElBQU1wRSxDQUFBQSxDQUFPLENBQUMsTUFBQSxDQUFRLEdBQUdvRSxDQUFBQSxDQUFLLEtBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUN2QyxPQUFBQyxFQUFPLE1BQUEsQ0FBTyxJQUFBLENBQUtBLEVBQUssS0FBQSxDQUFNLEdBQUcsRUFBRSxDQUFDLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRSxRQUFBLEVBQVMsQ0FDM0RyRSxFQUFLLElBQUEsQ0FBSyxHQUFHLElBQUEsQ0FBSyxLQUFBLENBQU1xRSxDQUFJLENBQUMsRUFDN0JWLENBQUFBLENBQU8sS0FBQSxDQUFNLFNBQUEsQ0FBVzNELENBQUksQ0FBQSxDQUNyQkEsQ0FDVCxDQVNPLFNBQVN1RSxFQUFBQSxDQUFLQyxDQUFBQSxDQUFhQyxDQUFBQSxDQUF1QyxDQUN2RSxJQUFNQyxFQUFRRixDQUFBQSxDQUFJLEtBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBRSxNQUFBLENBQVFHLENBQUFBLEVBQU1BLEVBQUUsTUFBTSxDQUFBLENBQzdDLENBQUNDLENBQUFBLENBQVMsR0FBRzVFLENBQUksRUFBSTBFLENBQUFBLENBQzNCLEdBQUksQ0FBQ0UsQ0FBQUEsQ0FBUyxNQUFNLElBQUksTUFBTSxlQUFlLENBQUEsQ0FDN0MsSUFBTTlCLENBQUFBLENBQU8rQixLQUFBQSxDQUFNRCxFQUFTNUUsQ0FBQUEsQ0FBTSxDQUNoQyxLQUFBLENBQU8sU0FBQSxDQUNQLEdBQUd5RSxDQUNMLENBQUMsQ0FBQSxDQUNHSyxDQUFBQSxDQUFTLEtBQUEsQ0FDYixPQUFPLENBQ0wsT0FBQSxDQUFTaEMsRUFDVCxJQUFBLENBQU1hLENBQUFBLENBQU8sTUFBQSxDQUFPYixDQUFBQSxDQUFNOEIsQ0FBTyxDQUFBLENBQ2pDLElBQUksTUFBQSxFQUFTLENBQ1gsT0FBT0UsQ0FDVCxDQUFBLENBQ0EsSUFBQSxFQUFPLENBQ0wsR0FBSUEsQ0FBQUEsQ0FBUSxPQUNaQSxDQUFBQSxDQUFTLElBQUEsQ0FDVCxJQUFNQyxFQUFNakMsQ0FBQUEsQ0FBSyxHQUFBLENBQ2JpQyxDQUFBQSxDQUFLQyxFQUFBQSxDQUFTRCxDQUFBQSxDQUFLLFNBQVMsRUFDM0JqQyxDQUFBQSxDQUFLLElBQUEsQ0FBSyxTQUFTLEVBQzFCLENBQ0YsQ0FDRixDQ2hETyxJQUFNbUMsRUFBQUEsQ0FBZ0IsS0FDaEJDLEVBQUFBLENBQWlCLElBQUEsQ0FDakJDLEVBQUFBLENBQWMsRUFBQSxDQUNkQyxFQUFBQSxDQUFtQixDQUFBLENBQ25CQyxHQUFtQiw0QkFBQSxDQUVuQkMsRUFBQUEsQ0FBZUMsQ0FBQUEsQ0FBRSxNQUFBLENBQU8sQ0FDbkMsUUFBQSxDQUFVQSxFQUFFLE1BQUEsRUFBTyxDQUFFLFFBQUEsQ0FBUyxxQkFBcUIsQ0FBQSxDQUNuRCxLQUFBLENBQU9BLEVBQUUsTUFBQSxFQUFPLENBQUUsUUFBQSxDQUFTLGFBQWEsQ0FBQSxDQUN4QyxNQUFBLENBQVFBLEVBQUUsTUFBQSxFQUFPLENBQUUsUUFBQSxDQUFTLGNBQWMsQ0FBQSxDQUMxQyxHQUFBLENBQUtBLEVBQUUsTUFBQSxFQUFPLENBQUUsUUFBQSxDQUFTLG1CQUFtQixDQUFBLENBQzVDLFNBQUEsQ0FBV0EsRUFBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsMEJBQTBCLENBQUEsQ0FDMUQsT0FBQSxDQUFTQSxFQUFFLE1BQUEsRUFBTyxDQUFFLFNBQVMsc0VBQXNFLENBQUEsQ0FDbkcsY0FBZUEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsOENBQThDLENBQUEsQ0FDbEYsY0FBZUEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsdUNBQXVDLENBQUEsQ0FDM0UsV0FBWUEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsc0VBQXNFLENBQUEsQ0FDdkcsZUFBZ0JBLENBQUFBLENBQUUsT0FBQSxFQUFRLENBQUUsUUFBQSxDQUFTLHdFQUF3RSxDQUFBLENBQzdHLGVBQWdCQSxDQUFBQSxDQUFFLE9BQUEsRUFBUSxDQUFFLFFBQUEsQ0FBUyxpREFBaUQsQ0FDeEYsQ0FBQyxDQUFBLENBc0JZQyxFQUFBQSxDQUFzQyxDQUNqRCxLQUFBLENBQU9QLEVBQUFBLENBQ1AsTUFBQSxDQUFRQyxHQUNSLEdBQUEsQ0FBS0MsRUFBQUEsQ0FDTCxRQUFBLENBQVVDLEVBQUFBLENBQ1YsT0FBQSxDQUFTQyxFQUFBQSxDQUNULFVBQVcsS0FBQSxDQUNYLGFBQUEsQ0FBZSxNQUNmLGFBQUEsQ0FBZSxLQUFBLENBQ2YsV0FBWSxLQUFBLENBQ1osY0FBQSxDQUFnQixLQUFBLENBQ2hCLGNBQUEsQ0FBZ0IsS0FDbEIsRUNuREEsSUFBTUksRUFBQUEsQ0FBTSxXQUFBLENBRVosZUFBZUMsRUFBQUEsRUFBa0IsQ0FDL0IsSUFBTUMsQ0FBQUEsQ0FBS0MsZUFBQUEsQ0FBZ0IsSUFBQSxHQUNyQkMsQ0FBQUEsQ0FBU0YsQ0FBQUEsR0FBTyxJQUFBLENBQ3RCLE9BQUFBLENBQUFBLEVBQUksT0FBQSxHQUNHRSxDQUNULENBRU8sSUFBTUMsRUFBQUEsQ0FBYUosRUFBQUEsRUFBZ0IsQ0FBRSxLQUFNRyxDQUFBQSxHQUNoRGxDLENBQUFBLENBQU8sS0FBQSxDQUFNOEIsRUFBQUEsQ0FBSyxNQUFBLENBQVFJLENBQU0sRUFDekJBLENBQUFBLENBQ1IsQ0FBQSxDQ1hELGVBQXNCRSxFQUFBQSxDQUFnQkMsQ0FBQUEsQ0FBcUIsQ0FDekQsSUFBTTNHLENBQUFBLENBQU8sQ0FFWCxZQUFBLENBQ0EsdUJBQUEsQ0FFQSxzQkFBQSxDQUNBLGdDQUNBLDJCQUFBLENBRUEsNkNBQUEsQ0FDQSxZQUFBLENBQ0EsMENBQUEsQ0FDQSxvQkFBQSxDQUVBLDZCQUFBLENBQ0EsMkJBQ0Esc0JBQUEsQ0FDQSxjQUFBLENBQ0Esb0JBQUEsQ0FDQSw0QkFBQSxDQUNBLHVDQUFBLENBQ0EsdUNBQUEsQ0FDQSw2QkFDQSw0QkFBQSxDQUNBLHlCQUFBLENBQ0EsZ0NBQUEsQ0FDQSxnQ0FBQSxDQUVBLDBCQUFBLENBRUEsK0JBQUEsQ0FDQSxvQ0FDQSwwQkFBQSxDQUNBLHNCQUFBLENBQ0EscUNBQUEsQ0FDQSxnQ0FBQSxDQUNBLHdDQUFBLENBRUEsdUJBQ0YsRUFFSXNCLENBQUFBLEVBQWUsQ0FBQSxDQUNqQnRCLENBQUFBLENBQUssSUFBQSxDQUFLLGFBQUEsQ0FBZSxLQUFLLEVBRTlCQSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxhQUFhLENBQUEsQ0FHekIsSUFBTTRHLENBQUFBLENBQVcsQ0FBQyxrQkFBa0IsQ0FBQSxDQUVwQyxHQUFJLEVBRGUsTUFBTUgsSUFBZSxDQUFDRSxDQUFBQSxDQUFBQSxDQUV2QzNHLENBQUFBLENBQUssSUFBQSxDQUFLLHVCQUFBLENBQXlCLDJCQUEyQixPQUN6RCxDQUNMQSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxxQkFBQSxDQUF1QixzQkFBc0IsQ0FBQSxDQUN2RCxJQUFNNkcsQ0FBQUEsQ0FBT0MsUUFBQUEsRUFBUyxDQUNsQkQsQ0FBQUEsR0FBUyxRQUFBLENBQ1g3RyxDQUFBQSxDQUFLLEtBQUssaUJBQWlCLENBQUEsQ0FDbEI2RyxDQUFBQSxHQUFTLE9BQUEsQ0FDbEI3RyxDQUFBQSxDQUFLLElBQUEsQ0FBSyxpQkFBaUIsQ0FBQSxFQUUzQkEsQ0FBQUEsQ0FBSyxJQUFBLENBQUssa0JBQUEsQ0FBb0Isd0JBQXdCLENBQUEsQ0FDdEQ0RyxFQUFTLElBQUEsQ0FBSyxRQUFRLENBQUEsRUFFMUIsQ0FFQSxPQUFBNUcsQ0FBQUEsQ0FBSyxLQUFLLENBQUEsZ0JBQUEsRUFBbUI0RyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLEVBQzFDNUcsQ0FDVCxDQ2pFQSxlQUFzQitHLEVBQUFBLENBQWFKLENBQUFBLENBQXFCLENBQ3RELE9BQU8sQ0FBQyxHQUFJLE1BQU1ELEVBQUFBLENBQWdCQyxDQUFVLEVBQUksY0FBYyxDQUNoRSxDQUVBLElBQU1QLEVBQUFBLENBQU0sWUFBQSxDQU1aLGVBQXNCWSxFQUFBQSxDQUFlLENBQUUsSUFBQSxDQUFBckcsQ0FBSyxDQUFBLENBQTBCLENBRXBFLElBQU1zRyxDQUFBQSxDQUFBQSxDQURPLE1BQU1GLEVBQUFBLENBQWFwRyxDQUFBQSxDQUFLLFFBQUEsQ0FBUyxlQUFlLENBQUMsQ0FBQSxFQUNwQyxHQUFBLENBQUt1RyxDQUFBQSxFQUFNLENBQUEsRUFBQSxFQUFLQSxDQUFDLENBQUEsQ0FBRSxFQUM3Q0QsQ0FBQUEsQ0FBYSxJQUFBLENBQUssQ0FBQSxFQUFHcEMsQ0FBWSxDQUFBLENBQUEsRUFBSSxNQUFBLENBQU8sS0FBSyxJQUFBLENBQUssU0FBQSxDQUFVbEUsQ0FBSSxDQUFDLENBQUEsQ0FBRSxRQUFBLENBQVMsUUFBUSxDQUFDLENBQUEsQ0FBRSxFQUMzRixJQUFNd0UsQ0FBQUEsQ0FBTSxDQUFDZ0MsRUFBQUEsQ0FBVSxHQUFHRixDQUFBQSxDQUFjeEYsRUFBTSxDQUFBLENBQUUsSUFBQSxDQUFLLEdBQUcsQ0FBQSxDQUN4RDZDLENBQUFBLENBQU8sS0FBQSxDQUFNOEIsRUFBQUEsQ0FBS2pCLENBQUcsQ0FBQSxDQUVyQixJQUFNaUMsQ0FBQUEsQ0FBeUIsQ0FBRSxHQUFHLE9BQUEsQ0FBUSxHQUFBLENBQUssY0FBQSxDQUFnQixNQUFPLENBQUEsQ0FDeEUsT0FBT2xDLEVBQUFBLENBQUtDLENBQUFBLENBQUssQ0FBRSxLQUFBLENBQU8sQ0FBQyxRQUFBLENBQVUsTUFBQSxDQUFRLE1BQUEsQ0FBUSxLQUFLLENBQUEsQ0FBRyxHQUFBLENBQUFpQyxDQUFJLENBQUMsQ0FDcEUsQ0N1RE8sSUFBTUMsQ0FBQUEsQ0FBTixjQUF3QkMsWUFBd0IsQ0FDckQsV0FBQSxDQUFZQyxFQUFxQixDQUMvQixLQUFBLEdBQ0FBLENBQUFBLENBQU0sRUFBQSxDQUFHLFVBQVlDLENBQUFBLEVBQVEsQ0FDM0IsSUFBTWpGLENBQUFBLENBQU1pRixDQUFBQSxDQUNaLE9BQVFqRixFQUFJLElBQUEsRUFDVixLQUFLLFNBQUEsQ0FBb0IsQ0FDdkIsSUFBQSxDQUFLLEtBQUssU0FBQSxDQUFXQSxDQUFBQSxDQUFJLEtBQUEsQ0FBT0EsQ0FBQUEsQ0FBSSxPQUFPLENBQUEsQ0FDM0MsS0FDRixDQUNBLEtBQUssVUFBQSxDQUFxQixDQUN4QixJQUFBLENBQUssSUFBQSxDQUFLLFdBQVlBLENBQUFBLENBQUksS0FBSyxDQUFBLENBQy9CLEtBQ0YsQ0FDQSxLQUFLLE9BQWlCLENBQ3BCLElBQUEsQ0FBSyxJQUFBLENBQUssTUFBQSxDQUFRQSxDQUFBQSxDQUFJLE9BQU8sRUFDN0IsS0FDRixDQUNBLEtBQUssT0FBQSxDQUFrQixDQUNyQixJQUFBLENBQUssS0FBSyxPQUFBLENBQVMsSUFBSSxNQUFNQSxDQUFBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQ3ZDLEtBQ0YsQ0FDRixDQUNGLENBQUMsQ0FBQSxDQUNEZ0YsRUFBTSxJQUFBLENBQUssTUFBQSxDQUFTRSxDQUFBQSxFQUFNLElBQUEsQ0FBSyxJQUFBLENBQUssT0FBQSxDQUFTQSxDQUFDLENBQUMsRUFDakQsQ0FDRixDQUFBLENDL0ZBLElBQU1yQixDQUFBQSxDQUFNLFFBVVosZUFBZXNCLEVBQUFBLENBQVVDLENBQUFBLENBQWdCQyxDQUFBQSxDQUF1QixDQUM5RHRELENBQUFBLENBQU8sTUFBTThCLENBQUFBLENBQUssV0FBQSxDQUFhdUIsQ0FBQUEsQ0FBUUMsQ0FBTSxDQUFBLENBRTdDLElBQU1qSCxFQUFpQixDQUNyQmdILENBQUFBLENBQ0EsU0FBQSxDQUNBLENBQUEsRUFBR0MsQ0FBQUEsQ0FBTyxLQUFLLEdBQ2YsVUFBQSxDQUNBLENBQUEsRUFBR0EsQ0FBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUNoQixPQUFBLENBQ0EsR0FBR0EsQ0FBQUEsQ0FBTyxHQUFHLEdBQ2IsWUFBQSxDQUNBLENBQUEsRUFBR0EsRUFBTyxRQUFRLENBQUEsQ0FBQSxDQUNsQixZQUFBLENBQ0EsQ0FBQSxFQUFHQSxDQUFBQSxDQUFPLE9BQU8sRUFDbkIsQ0FBQSxDQUNBLE9BQUlBLENBQUFBLENBQU8sU0FBQSxFQUFXakgsQ0FBQUEsQ0FBSyxJQUFBLENBQUssY0FBYyxDQUFBLENBQzFDaUgsQ0FBQUEsQ0FBTyxhQUFBLEVBQWVqSCxDQUFBQSxDQUFLLElBQUEsQ0FBSyxtQkFBbUIsRUFDbkRpSCxDQUFBQSxDQUFPLGFBQUEsRUFBZWpILENBQUFBLENBQUssSUFBQSxDQUFLLGlCQUFpQixDQUFBLENBQ2pEaUgsRUFBTyxVQUFBLEVBQVlqSCxDQUFBQSxDQUFLLElBQUEsQ0FBSyxlQUFlLENBQUEsQ0FDNUNpSCxDQUFBQSxDQUFPLGdCQUFnQmpILENBQUFBLENBQUssSUFBQSxDQUFLLG9CQUFvQixDQUFBLENBQ3JEaUgsQ0FBQUEsQ0FBTyxjQUFBLEVBQWdCakgsRUFBSyxJQUFBLENBQUssbUJBQW1CLENBQUEsQ0FFakRxRyxFQUFBQSxDQUFlLENBQUUsSUFBQSxDQUFBckcsQ0FBSyxDQUFDLENBQ2hDLENBRUEsSUFBTWtILENBQUFBLENBQUkxQixHQUVWLGVBQXNCMkIsRUFBQUEsQ0FBSUgsQ0FBQUEsQ0FBZ0J2QyxDQUFBQSxDQUFrRCxDQUMxRmQsQ0FBQUEsQ0FBTyxNQUFNOEIsQ0FBQUEsQ0FBSyxLQUFBLENBQU91QixDQUFBQSxDQUFRdkMsQ0FBTyxDQUFBLENBRXhDLEdBQU0sQ0FBRSxNQUFBLENBQUFuQixDQUFPLENBQUEsQ0FBSW1CLENBQUFBLENBQ25CbkIsQ0FBQUEsRUFBUSxjQUFBLEdBRVIsSUFBTThELENBQUFBLENBQVUzQyxDQUFBQSxDQUFRLE9BQUEsRUFBV3lDLENBQUFBLENBQUUsT0FBQSxDQUMvQkcsRUFBNEIsQ0FDaEMsS0FBQSxDQUFPNUMsQ0FBQUEsQ0FBUSxLQUFBLEVBQVN5QyxDQUFBQSxDQUFFLEtBQUEsQ0FDMUIsT0FBUXpDLENBQUFBLENBQVEsTUFBQSxFQUFVeUMsQ0FBQUEsQ0FBRSxNQUFBLENBQzVCLEdBQUEsQ0FBS3pDLENBQUFBLENBQVEsS0FBT3lDLENBQUFBLENBQUUsR0FBQSxDQUN0QixRQUFBLENBQVV6QyxDQUFBQSxDQUFRLFFBQUEsRUFBWXlDLENBQUFBLENBQUUsU0FDaEMsU0FBQSxDQUFXekMsQ0FBQUEsQ0FBUSxXQUFheUMsQ0FBQUEsQ0FBRSxTQUFBLENBQ2xDLGNBQWV6QyxDQUFBQSxDQUFRLGFBQUEsRUFBaUJ5QyxDQUFBQSxDQUFFLGFBQUEsQ0FDMUMsYUFBQSxDQUFlekMsQ0FBQUEsQ0FBUSxlQUFpQnlDLENBQUFBLENBQUUsYUFBQSxDQUMxQyxVQUFBLENBQVl6QyxDQUFBQSxDQUFRLFVBQUEsRUFBY3lDLENBQUFBLENBQUUsV0FDcEMsY0FBQSxDQUFnQnpDLENBQUFBLENBQVEsY0FBQSxFQUFrQnlDLENBQUFBLENBQUUsY0FBQSxDQUM1QyxjQUFBLENBQWdCekMsRUFBUSxjQUFBLEVBQWtCeUMsQ0FBQUEsQ0FBRSxjQUFBLENBQzVDLE9BQUEsQ0FBQUUsQ0FDRixDQUFBLENBRU1FLEVBQUssV0FBQSxDQUFZLEdBQUEsRUFBSSxDQUN2QkMsQ0FBQUEsQ0FBVyxDQUFBLENBQ1RDLENBQUFBLENBQVFDLEdBQWMsQ0FDMUJGLENBQUFBLENBQVdFLENBQUFBLENBQ1hoRCxDQUFBQSxDQUFRLFVBQUEsR0FBYWdELENBQUMsRUFDeEIsQ0FBQSxDQUVNQyxDQUFBQSxDQUFTLE1BQU1YLEVBQUFBLENBQVVDLENBQUFBLENBQVFLLENBQVUsRUFFM0NNLENBQUFBLENBQVUsSUFBTSxDQUNwQkQsQ0FBQUEsQ0FBTyxPQUFBLENBQVEsT0FBTyxDQUFFLElBQUEsQ0FBQSxRQUFBLENBQXlCLE1BQUEsQ0FBUSxNQUFBLENBQU9wRSxDQUFBQSxFQUFRLE1BQUEsRUFBVSxPQUFPLENBQUUsQ0FBQyxDQUFBLENBQzVGLFVBQUEsQ0FBVyxJQUFNb0UsQ0FBQUEsQ0FBTyxNQUFLLENBQUcsR0FBSyxFQUN2QyxDQUFBLENBQ0FwRSxDQUFBQSxFQUFRLGdCQUFBLENBQWlCLFFBQVNxRSxDQUFBQSxDQUFTLENBQUUsSUFBQSxDQUFNLElBQUssQ0FBQyxDQUFBLENBRXpELEdBQUksQ0FDRixJQUFNOUIsQ0FBQUEsQ0FBUyxJQUFJLE9BQUEsQ0FBd0IsQ0FBQzlDLEVBQVNDLENBQUFBLEdBQVcsQ0FDOUQsSUFBSTBELENBQUFBLENBQVVnQixDQUFBQSxDQUFPLE9BQU8sRUFDekIsRUFBQSxDQUFHLE9BQUEsQ0FBVXJFLENBQUFBLEVBQVMsQ0FDckIsSUFBTXpCLENBQUFBLENBQU0sS0FBSyxTQUFBLENBQVUsQ0FBRSxPQUFBb0YsQ0FBQUEsQ0FBUSxRQUFBLENBQUFPLEVBQVUsSUFBQSxDQUFBbEUsQ0FBQUEsQ0FBTSxNQUFBLENBQVFxRSxDQUFBQSxDQUFPLE1BQU8sQ0FBQyxFQUM1RTFFLENBQUFBLENBQU8sSUFBSSxLQUFBLENBQU0sQ0FBQSxTQUFBLEVBQVlwQixDQUFHLENBQUEsQ0FBRSxDQUFDLEVBQ3JDLENBQUMsQ0FBQSxDQUNBLEVBQUEsQ0FBRyxVQUFBLENBQVk0RixDQUFJLEVBQ25CLEVBQUEsQ0FBRyxTQUFBLENBQVcsQ0FBQ0ksQ0FBQUEsQ0FBR0MsQ0FBQUEsR0FBTXBELENBQUFBLENBQVEsWUFBWW1ELENBQUFBLENBQUdDLENBQUMsQ0FBQyxDQUFBLENBQ2pELEVBQUEsQ0FBRyxNQUFBLENBQVE5RSxDQUFPLENBQUEsQ0FDbEIsRUFBQSxDQUFHLE9BQUEsQ0FBU0MsQ0FBTSxFQUN2QixDQUFDLEVBQ0R3RSxDQUFBQSxDQUFLLENBQUMsQ0FBQSxDQUNOLEdBQU0sQ0FBQ00sQ0FBTyxFQUFJLE1BQU0sT0FBQSxDQUFRLElBQUksQ0FBQ2pDLENBQUFBLENBQVE2QixFQUFPLElBQUksQ0FBQyxDQUFBLENBQ3pELE9BQUFGLENBQUFBLENBQUssR0FBRyxFQUNSN0QsQ0FBQUEsQ0FBTyxLQUFBLENBQU04QixDQUFBQSxDQUFLLENBQUEsS0FBQSxFQUFRMkIsQ0FBTyxDQUFBLElBQUEsRUFBTyxLQUFLLEtBQUEsQ0FBTSxXQUFBLENBQVksR0FBQSxFQUFJLENBQUlFLENBQUUsQ0FBQyxJQUFJLENBQUEsQ0FDdkUsQ0FBRSxHQUFHUSxDQUFBQSxDQUFTLE9BQUEsQ0FBU1QsQ0FBVyxDQUMzQyxDQUFBLE1BQVNVLENBQUFBLENBQUcsQ0FDVixNQUFBTCxDQUFBQSxDQUFPLElBQUEsR0FDUHBFLENBQUFBLEVBQVEsY0FBQSxFQUFlLENBQ2pCeUUsQ0FDUixDQUFBLE9BQUUsQ0FDQXpFLEdBQVEsbUJBQUEsQ0FBb0IsT0FBQSxDQUFTcUUsQ0FBTyxFQUM5QyxDQUNGIiwiZmlsZSI6ImNodW5rLUdES1c3WklFLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBMdSBBbyAobHVhb0BiaWxpYmlsaS5jb20pIG9uIDIwMjYvMDUvMjYuXG5cbmltcG9ydCB0eXBlIHsgTG9nZ2VyTGlrZSB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuY29uc3QgQkFSX1dJRFRIID0gNDA7XG5cbmludGVyZmFjZSBCYXJPcHRpb25zIHtcbiAgdG90YWw6IG51bWJlcjtcbiAgb3V0OiBOb2RlSlMuV3JpdGVTdHJlYW07XG4gIHNob3dDb3VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzc0JhciB7XG4gIHByaXZhdGUgX3dyaXR0ZW4gPSAwO1xuICBwcml2YXRlIF9zaG93biA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b3RhbDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdXQ6IE5vZGVKUy5Xcml0ZVN0cmVhbTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHR5OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zaG93Q291bnQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Iob3B0czogQmFyT3B0aW9ucykge1xuICAgIHRoaXMuX3RvdGFsID0gb3B0cy50b3RhbDtcbiAgICB0aGlzLl9vdXQgPSBvcHRzLm91dDtcbiAgICB0aGlzLl90dHkgPSAhIW9wdHMub3V0LmlzVFRZO1xuICAgIHRoaXMuX3Nob3dDb3VudCA9IG9wdHMuc2hvd0NvdW50ID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHRvdGFsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsO1xuICB9XG5cbiAgdXBkYXRlKHdyaXR0ZW46IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3dyaXR0ZW4gPSBNYXRoLm1pbih0aGlzLl90b3RhbCwgTWF0aC5tYXgoMCwgd3JpdHRlbikpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cGRhdGVQZXJjZW50KHBjdDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGUoTWF0aC5yb3VuZCgocGN0IC8gMTAwKSAqIHRoaXMuX3RvdGFsKSk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHR5ICYmIHRoaXMuX3Nob3duKSB0aGlzLl9vdXQud3JpdGUoXCJcXHJcXHgxYlsyS1wiKTtcbiAgfVxuXG4gIHJlZHJhdygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbG9nKGxpbmU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLl9vdXQud3JpdGUobGluZSArIFwiXFxuXCIpO1xuICAgIHRoaXMucmVkcmF3KCk7XG4gIH1cblxuICBmaW5pc2gobGluZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuX291dC53cml0ZShsaW5lICsgXCJcXG5cIik7XG4gICAgdGhpcy5fc2hvd24gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHR5KSByZXR1cm47XG4gICAgaWYgKHRoaXMuX3dyaXR0ZW4gPT09IDAgJiYgIXRoaXMuX3Nob3duKSByZXR1cm47XG4gICAgY29uc3QgcmF0aW8gPSB0aGlzLl90b3RhbCA+IDAgPyB0aGlzLl93cml0dGVuIC8gdGhpcy5fdG90YWwgOiAwO1xuICAgIGNvbnN0IGZpbGxlZCA9IE1hdGgucm91bmQocmF0aW8gKiBCQVJfV0lEVEgpO1xuICAgIGNvbnN0IGJhciA9IFwiI1wiLnJlcGVhdChmaWxsZWQpICsgXCItXCIucmVwZWF0KEJBUl9XSURUSCAtIGZpbGxlZCk7XG4gICAgY29uc3QgcGN0ID0gTWF0aC5yb3VuZChyYXRpbyAqIDEwMCk7XG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5fc2hvd0NvdW50ID8gYCR7dGhpcy5fd3JpdHRlbn0vJHt0aGlzLl90b3RhbH0gKCR7cGN0fSUpYCA6IGAke3BjdH0lYDtcbiAgICB0aGlzLl9vdXQud3JpdGUoYFxcclske2Jhcn1dICR7c3VmZml4fWApO1xuICAgIHRoaXMuX3Nob3duID0gdHJ1ZTtcbiAgfVxufVxuXG4vLyBBcm91bmQgZWFjaCBjb25zb2xlLiogY2FsbCwgY2xlYXIgdGhlIGJhciBsaW5lIHRoZW4gcmVkcmF3IOKAlCBrZWVwcyBuYXRpdmUgY29uc29sZSBjb2xvcmluZyBpbnRhY3QuXG5leHBvcnQgZnVuY3Rpb24gYmFyTG9nZ2VyKGJhcjogUHJvZ3Jlc3NCYXIpOiBMb2dnZXJMaWtlIHtcbiAgY29uc3Qgd3JhcCA9XG4gICAgPFQgZXh0ZW5kcyAoLi4uYTogdW5rbm93bltdKSA9PiB2b2lkPihmbjogVCkgPT5cbiAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICBiYXIuY2xlYXIoKTtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgYmFyLnJlZHJhdygpO1xuICAgIH07XG4gIHJldHVybiB7XG4gICAgZGVidWc6IHdyYXAoY29uc29sZS5kZWJ1ZyksXG4gICAgaW5mbzogd3JhcChjb25zb2xlLmluZm8pLFxuICAgIHdhcm46IHdyYXAoY29uc29sZS53YXJuKSxcbiAgICBlcnJvcjogd3JhcChjb25zb2xlLmVycm9yKSxcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmV4cG9ydCB0eXBlIEVudlBhcnNlcjxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlOiBUKTogVDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlPzogVCk6IFQgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZXIocHJvY2Vzcy5lbnZbbmFtZV0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXIoeDogdW5rbm93bik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgeCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB4O1xuICB9XG4gIGNvbnN0IG51bSA9IE51bWJlcih4KTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSAke3h9IGlzIG5vdCBhIHZhbGlkIG51bWJlcmApO1xuICB9XG4gIHJldHVybiBudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0cmluZyh4OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSByZXR1cm4geDtcbiAgcmV0dXJuIFN0cmluZyh4KTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHBlbnYgfSBmcm9tIFwiLi9lbnZcIjtcbmltcG9ydCB7IHBhcnNlTnVtYmVyIH0gZnJvbSBcIi4vcGFyc2VyXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmV4cG9ydCBjb25zdCBwdXBMb2dMZXZlbCA9IHBlbnYoXCJQVVBfTE9HX0xFVkVMXCIsIHBhcnNlTnVtYmVyLCAyKTtcblxuZXhwb3J0IGNvbnN0IHB1cFBrZ1Jvb3QgPSBkaXJuYW1lKHJlcXVpcmUucmVzb2x2ZShcInB1cC1yZWNvcmRlci9wYWNrYWdlLmpzb25cIikpO1xuZXhwb3J0IGNvbnN0IHB1cEFwcCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwiYXBwLmNqc1wiKTtcbmV4cG9ydCBjb25zdCBwdXBBdWRpb1ByZWxvYWQgPSBqb2luKHB1cFBrZ1Jvb3QsIFwiZGlzdFwiLCBcImF1ZGlvX3ByZWxvYWQuY2pzXCIpO1xuZXhwb3J0IGNvbnN0IHB1cElmcmFtZVByZWxvYWQgPSBqb2luKHB1cFBrZ1Jvb3QsIFwiZGlzdFwiLCBcImlmcmFtZV9wcmVsb2FkLmNqc1wiKTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IExvZyB9IGZyb20gXCJub2RlLWF2XCI7XG5pbXBvcnQgeyBBVl9MT0dfRVJST1IsIEFWX0xPR19XQVJOSU5HIH0gZnJvbSBcIm5vZGUtYXYvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBwdXBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlckxpa2Uge1xuICBkZWJ1Zz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgaW5mbz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgd2Fybj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgZXJyb3I/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xufVxuXG5jb25zdCBERUJVRyA9IFwiPHB1cEBkZWJ1Zz5cIjtcbmNvbnN0IElORk8gPSBcIjxwdXBAaW5mbz5cIjtcbmNvbnN0IFdBUk4gPSBcIjxwdXBAd2Fybj5cIjtcbmNvbnN0IEVSUk9SID0gXCI8cHVwQGVycm9yPlwiO1xuY29uc3QgRkFUQUwgPSBcIjxwdXBAZmF0YWw+XCI7XG5cbmZ1bmN0aW9uIHN0YWNrSG9vayh0YXJnZXQ6IEZ1bmN0aW9uLCBfY29udGV4dDogQ2xhc3NNZXRob2REZWNvcmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogTG9nZ2VyLCAuLi5tZXNzYWdlczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkID0gbWVzc2FnZXMubWFwKChtc2cpID0+IHtcbiAgICAgIHJldHVybiBtc2cgaW5zdGFuY2VvZiBFcnJvciA/IChtc2cuc3RhY2sgPz8gU3RyaW5nKG1zZykpIDogbXNnO1xuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQuY2FsbCh0aGlzLCAuLi5wcm9jZXNzZWQpO1xuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VyTGlrZSB7XG4gIHByaXZhdGUgX2ltcGw/OiBMb2dnZXJMaWtlO1xuXG4gIGdldCBsZXZlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgfVxuXG4gIHNldCBsZXZlbCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGV2ZWwgPSB2YWx1ZTtcbiAgICB0aGlzLmltcGwgPSB0aGlzLl9pbXBsID8/IGNvbnNvbGU7XG4gIH1cblxuICBnZXQgaW1wbCgpOiBMb2dnZXJMaWtlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW1wbDtcbiAgfVxuXG4gIHNldCBpbXBsKHZhbHVlOiBMb2dnZXJMaWtlKSB7XG4gICAgY29uc3QgZGVidWcgPSB2YWx1ZS5kZWJ1ZyA/PyBjb25zb2xlLmRlYnVnO1xuICAgIGNvbnN0IGluZm8gPSB2YWx1ZS5pbmZvID8/IGNvbnNvbGUuaW5mbztcbiAgICBjb25zdCB3YXJuID0gdmFsdWUud2FybiA/PyBjb25zb2xlLndhcm47XG4gICAgY29uc3QgZXJyb3IgPSB2YWx1ZS5lcnJvciA/PyBjb25zb2xlLmVycm9yO1xuICAgIGNvbnN0IGx2ID0gdGhpcy5fbGV2ZWw7XG4gICAgdGhpcy5faW1wbCA9IHtcbiAgICAgIGRlYnVnOiBsdiA+PSAzID8gZGVidWcgOiB1bmRlZmluZWQsXG4gICAgICBpbmZvOiBsdiA+PSAyID8gaW5mbyA6IHVuZGVmaW5lZCxcbiAgICAgIHdhcm46IGx2ID49IDEgPyB3YXJuIDogdW5kZWZpbmVkLFxuICAgICAgZXJyb3I6IGx2ID49IDAgPyBlcnJvciA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbGV2ZWw6IG51bWJlciA9IHB1cExvZ0xldmVsKSB7XG4gICAgdGhpcy5pbXBsID0gY29uc29sZTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZGVidWcoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZGVidWc/LihERUJVRywgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBpbmZvKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmluZm8/LihJTkZPLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIHdhcm4oLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8ud2Fybj8uKFdBUk4sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZXJyb3IoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZXJyb3I/LihFUlJPUiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBmYXRhbCguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5lcnJvcj8uKEZBVEFMLCAuLi5tZXNzYWdlcyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaChtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlLnRyaW1FbmQoKTtcbiAgICBpZiAobXNnLnN0YXJ0c1dpdGgoREVCVUcpKSB7XG4gICAgICB0aGlzLmRlYnVnKG1zZy5zbGljZShERUJVRy5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtc2cuc3RhcnRzV2l0aChJTkZPKSkge1xuICAgICAgdGhpcy5pbmZvKG1zZy5zbGljZShJTkZPLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1zZy5zdGFydHNXaXRoKFdBUk4pKSB7XG4gICAgICB0aGlzLndhcm4obXNnLnNsaWNlKFdBUk4ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobXNnLnN0YXJ0c1dpdGgoRVJST1IpKSB7XG4gICAgICB0aGlzLmVycm9yKG1zZy5zbGljZShFUlJPUi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5mbyhtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGF0dGFjaChwcm9jOiBDaGlsZFByb2Nlc3MsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmF0dGFjaGApO1xuICAgICAgbGV0IGZhdGFsOiBzdHJpbmcgPSBcIlwiO1xuICAgICAgY29uc3QgZGlzcGF0Y2ggPSAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoRkFUQUwpKSB7XG4gICAgICAgICAgZmF0YWwgKz0gbWVzc2FnZS5zbGljZShGQVRBTC5sZW5ndGggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcHJvYy5zdGRlcnI/Lm9uKFwiZGF0YVwiLCBkaXNwYXRjaCk7XG4gICAgICBwcm9jLnN0ZG91dD8ub24oXCJkYXRhXCIsIGRpc3BhdGNoKTtcbiAgICAgIHByb2NcbiAgICAgICAgLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuICAgICAgICAgIGZhdGFsICs9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIHByb2Mua2lsbCgpO1xuICAgICAgICB9KVxuICAgICAgICAub25jZShcImNsb3NlXCIsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgICBpZiAoY29kZSB8fCBzaWduYWwgfHwgZmF0YWwpIHtcbiAgICAgICAgICAgIGZhdGFsIHx8PSBgY29tbWFuZCBmYWlsZWQ6ICR7cHJvYy5zcGF3bmFyZ3Muam9pbihcIiBcIil9YDtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uY2xvc2VgLCB7IGNvZGUsIHNpZ25hbCwgZmF0YWwgfSk7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGZhdGFsKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uY2xvc2VgKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInVuaGFuZGxlZFJlamVjdGlvblwiLCAocmVhc29uKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcihgJHtuYW1lfS51bmhhbmRsZWRgLCByZWFzb24pO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJ1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3JcIiwgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3IoYCR7bmFtZX0udW5oYW5kbGVkYCwgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4vLyBSb3V0ZSBmZm1wZWcgbmF0aXZlIGxvZ3MgdGhyb3VnaCBwdXAncyBsb2dnZXIuXG5Mb2cuc2V0Q2FsbGJhY2soKGxldmVsLCBtZXNzYWdlKSA9PiB7XG4gIGNvbnN0IG1zZyA9IG1lc3NhZ2UudHJpbUVuZCgpO1xuICBpZiAoIW1zZykgcmV0dXJuO1xuICBpZiAobGV2ZWwgPD0gQVZfTE9HX0VSUk9SKSBsb2dnZXIuZXJyb3IobXNnKTtcbiAgZWxzZSBpZiAobGV2ZWwgPD0gQVZfTE9HX1dBUk5JTkcpIGxvZ2dlci53YXJuKG1zZyk7XG59KTtcblxuZXhwb3J0IHsgbG9nZ2VyIH07XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI0LlxuXG5leHBvcnQgZnVuY3Rpb24gbm9lcnI8Rm4gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSwgRD4oXG4gIGZuOiBGbixcbiAgZGVmYXVsdFZhbHVlOiBELFxuKTogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8Rm4+KSA9PiBSZXR1cm5UeXBlPEZuPiB8IEQge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0ID0gZm4oLi4uYXJncyk7XG4gICAgICBpZiAocmV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmV0LmNhdGNoKCgpID0+IGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5pbXBvcnQgeyBzcGF3biwgdHlwZSBDaGlsZFByb2Nlc3MsIHR5cGUgU3Bhd25PcHRpb25zIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB0cmVlS2lsbCBmcm9tIFwidHJlZS1raWxsXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBQVVBfQVJHU19LRVkgPSBcIi0tcHVwLXByaXYtYXJnc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyZ3MoKSB7XG4gIGNvbnN0IGFyZ3YgPSBwcm9jZXNzLmFyZ3Y7XG4gIGxldCBwcml2ID0gYXJndi5maW5kKChhcmcpID0+IGFyZy5zdGFydHNXaXRoKFBVUF9BUkdTX0tFWSkpO1xuICBpZiAoIXByaXYpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJwcm9jYXJndlwiLCBhcmd2KTtcbiAgICByZXR1cm4gcHJvY2Vzcy5hcmd2O1xuICB9XG4gIGNvbnN0IGFyZ3MgPSBbXCJleGVjXCIsIC4uLmFyZ3Yuc2xpY2UoLTEpXTtcbiAgcHJpdiA9IEJ1ZmZlci5mcm9tKHByaXYuc3BsaXQoXCI9XCIpWzFdISwgXCJiYXNlNjRcIikudG9TdHJpbmcoKTtcbiAgYXJncy5wdXNoKC4uLkpTT04ucGFyc2UocHJpdikpO1xuICBsb2dnZXIuZGVidWcoXCJwdXBhcmdzXCIsIGFyZ3MpO1xuICByZXR1cm4gYXJncztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzSGFuZGxlIHtcbiAgcHJvY2VzczogQ2hpbGRQcm9jZXNzO1xuICB3YWl0OiBQcm9taXNlPHZvaWQ+O1xuICBnZXQga2lsbGVkKCk6IGJvb2xlYW47XG4gIGtpbGwoKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY21kOiBzdHJpbmcsIG9wdGlvbnM/OiBTcGF3bk9wdGlvbnMpOiBQcm9jZXNzSGFuZGxlIHtcbiAgY29uc3QgcGFydHMgPSBjbWQuc3BsaXQoXCIgXCIpLmZpbHRlcigocykgPT4gcy5sZW5ndGgpO1xuICBjb25zdCBbY29tbWFuZCwgLi4uYXJnc10gPSBwYXJ0cztcbiAgaWYgKCFjb21tYW5kKSB0aHJvdyBuZXcgRXJyb3IoXCJlbXB0eSBjb21tYW5kXCIpO1xuICBjb25zdCBwcm9jID0gc3Bhd24oY29tbWFuZCwgYXJncywge1xuICAgIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbiAgbGV0IGtpbGxlZCA9IGZhbHNlO1xuICByZXR1cm4ge1xuICAgIHByb2Nlc3M6IHByb2MsXG4gICAgd2FpdDogbG9nZ2VyLmF0dGFjaChwcm9jLCBjb21tYW5kKSxcbiAgICBnZXQga2lsbGVkKCkge1xuICAgICAgcmV0dXJuIGtpbGxlZDtcbiAgICB9LFxuICAgIGtpbGwoKSB7XG4gICAgICBpZiAoa2lsbGVkKSByZXR1cm47XG4gICAgICBraWxsZWQgPSB0cnVlO1xuICAgICAgY29uc3QgcGlkID0gcHJvYy5waWQ7XG4gICAgICBpZiAocGlkKSB0cmVlS2lsbChwaWQsIFwiU0lHS0lMTFwiKTtcbiAgICAgIGVsc2UgcHJvYy5raWxsKFwiU0lHS0lMTFwiKTtcbiAgICB9LFxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNi5cblxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9XSURUSCA9IDE5MjA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9IRUlHSFQgPSAxMDgwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRlBTID0gMzA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9EVVJBVElPTiA9IDU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRfRklMRSA9IFwib3V0L2h0bWwubXA0LG91dC9odG1sLndlYm1cIjtcblxuZXhwb3J0IGNvbnN0IFJlbmRlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZHVyYXRpb246IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJEdXJhdGlvbiBpbiBzZWNvbmRzXCIpLFxuICB3aWR0aDogei5udW1iZXIoKS5kZXNjcmliZShcIlZpZGVvIHdpZHRoXCIpLFxuICBoZWlnaHQ6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJWaWRlbyBoZWlnaHRcIiksXG4gIGZwczogei5udW1iZXIoKS5kZXNjcmliZShcIkZyYW1lcyBwZXIgc2Vjb25kXCIpLFxuICB3aXRoQXVkaW86IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiQ2FwdHVyZSBhbmQgZW5jb2RlIGF1ZGlvXCIpLFxuICBvdXRGaWxlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQ29tbWEtc2VwYXJhdGVkIG91dHB1dCBwYXRoczsgZXh0ZW5zaW9uICgubXA0Ly53ZWJtKSBzZWxlY3RzIGVuY29kZXJcIiksXG4gIHVzZUlubmVyUHJveHk6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiVXNlIGJpbGliaWxpIGlubmVyIHByb3h5IGZvciByZXNvdXJjZSBhY2Nlc3NcIiksXG4gIGRldGVybWluaXN0aWM6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiUmVuZGVyIGJ5IGZyYW1lIHJhdGhlciB0aGFuIHJlY29yZGluZ1wiKSxcbiAgZGlzYWJsZUdwdTogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJEaXNhYmxlIEdQVSByZW5kZXJpbmcsIG1heSByZWR1Y2UgcGVyZm9ybWFuY2UgYnV0IGluY3JlYXNlIHN0YWJpbGl0eVwiKSxcbiAgZGlzYWJsZUh3Q29kZWM6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRGlzYWJsZSBoYXJkd2FyZSB2aWRlbyBlbmNvZGVyIChOVkVOQy9WaWRlb1Rvb2xib3gpLCB1c2Ugc29mdHdhcmUgeDI2NVwiKSxcbiAgd2luZG93VG9sZXJhbnQ6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRmFsbCBiYWNrIHRvIGRvbS1yZWFkeSBpZiB3YXJtdXAgbG9hZCB0aW1lcyBvdXRcIiksXG59KTtcblxuZXhwb3J0IHR5cGUgUmVuZGVyT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFJlbmRlclNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIENvbnNvbGVDYWxsYmFjayA9IChsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzQ2FsbGJhY2sgPSAocHJvZ3Jlc3M6IG51bWJlcikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBJUENSZW5kZXJPcHRpb25zIGV4dGVuZHMgUmVuZGVyT3B0aW9ucyB7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBzaWduYWw6IEFib3J0U2lnbmFsO1xuICBvblByb2dyZXNzOiBQcm9ncmVzc0NhbGxiYWNrO1xuICBvbkNvbnNvbGU6IENvbnNvbGVDYWxsYmFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQge1xuICBvcHRpb25zOiBSZW5kZXJPcHRpb25zO1xuICB3cml0dGVuOiBudW1iZXI7XG4gIGphbms6IG51bWJlcjtcbiAgb3V0RmlsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFJlbmRlck9wdGlvbnM6IFJlbmRlck9wdGlvbnMgPSB7XG4gIHdpZHRoOiBERUZBVUxUX1dJRFRILFxuICBoZWlnaHQ6IERFRkFVTFRfSEVJR0hULFxuICBmcHM6IERFRkFVTFRfRlBTLFxuICBkdXJhdGlvbjogREVGQVVMVF9EVVJBVElPTixcbiAgb3V0RmlsZTogREVGQVVMVF9PVVRfRklMRSxcbiAgd2l0aEF1ZGlvOiBmYWxzZSxcbiAgdXNlSW5uZXJQcm94eTogZmFsc2UsXG4gIGRldGVybWluaXN0aWM6IGZhbHNlLFxuICBkaXNhYmxlR3B1OiBmYWxzZSxcbiAgZGlzYWJsZUh3Q29kZWM6IGZhbHNlLFxuICB3aW5kb3dUb2xlcmFudDogZmFsc2UsXG59O1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNy5cblxuaW1wb3J0IHsgSGFyZHdhcmVDb250ZXh0IH0gZnJvbSBcIm5vZGUtYXYvYXBpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmNvbnN0IFRBRyA9IFwiW0hXQWNjZWxdXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdEdQVURyaXZlcigpIHtcbiAgY29uc3QgaHcgPSBIYXJkd2FyZUNvbnRleHQuYXV0bygpO1xuICBjb25zdCByZXN1bHQgPSBodyAhPT0gbnVsbDtcbiAgaHc/LmRpc3Bvc2UoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGNvbnN0IGNhbklVc2VHUFUgPSBkZXRlY3RHUFVEcml2ZXIoKS50aGVuKChyZXN1bHQpID0+IHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgXCJncHU6XCIsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDQvMDMuXG5cbmltcG9ydCB7IHBsYXRmb3JtIH0gZnJvbSBcIm9zXCI7XG5pbXBvcnQgeyBwdXBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FuSVVzZUdQVSB9IGZyb20gXCIuL2h3YWNjZWxcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNocm9taXVtT3B0aW9ucyhkaXNhYmxlR3B1OiBib29sZWFuKSB7XG4gIGNvbnN0IG9wdHMgPSBbXG4gICAgLy8g5a655Zmo5rKZ566xXG4gICAgXCJuby1zYW5kYm94XCIsXG4gICAgXCJkaXNhYmxlLWRldi1zaG0tdXNhZ2VcIixcbiAgICAvLyDot6jln58v5a6J5YWoXG4gICAgXCJkaXNhYmxlLXdlYi1zZWN1cml0eVwiLFxuICAgIFwiZGlzYWJsZS1zaXRlLWlzb2xhdGlvbi10cmlhbHNcIixcbiAgICBcImlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnNcIixcbiAgICAvLyDlvZXliLbooYzkuLpcbiAgICBcImRpc2FibGUtYmxpbmstZmVhdHVyZXM9QXV0b21hdGlvbkNvbnRyb2xsZWRcIixcbiAgICBcIm11dGUtYXVkaW9cIixcbiAgICBcImF1dG9wbGF5LXBvbGljeT1uby11c2VyLWdlc3R1cmUtcmVxdWlyZWRcIixcbiAgICBcImRpc2FibGUtZXh0ZW5zaW9uc1wiLFxuICAgIC8vIOa4suafk1xuICAgIFwiZm9yY2UtZGV2aWNlLXNjYWxlLWZhY3Rvcj0xXCIsXG4gICAgXCJmb3JjZS1jb2xvci1wcm9maWxlPXNyZ2JcIixcbiAgICBcImlnbm9yZS1ncHUtYmxvY2tsaXN0XCIsXG4gICAgXCJ1c2UtZ2w9YW5nbGVcIixcbiAgICBcImRldGVybWluaXN0aWMtbW9kZVwiLFxuICAgIFwiZW5hYmxlLWJlZ2luLWZyYW1lLWNvbnRyb2xcIixcbiAgICBcImRpc2FibGUtbmV3LWNvbnRlbnQtcmVuZGVyaW5nLXRpbWVvdXRcIixcbiAgICBcInJ1bi1hbGwtY29tcG9zaXRvci1zdGFnZXMtYmVmb3JlLWRyYXdcIixcbiAgICBcImRpc2FibGUtdGhyZWFkZWQtYW5pbWF0aW9uXCIsXG4gICAgXCJkaXNhYmxlLXRocmVhZGVkLXNjcm9sbGluZ1wiLFxuICAgIFwiZGlzYWJsZS1jaGVja2VyLWltYWdpbmdcIixcbiAgICBcImRpc2FibGUtaW1hZ2UtYW5pbWF0aW9uLXJlc3luY1wiLFxuICAgIFwiZW5hYmxlLXN1cmZhY2Utc3luY2hyb25pemF0aW9uXCIsXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3B1cHBldGVlci9wdXBwZXRlZXIvaXNzdWVzLzI0MTBcbiAgICBcImZvbnQtcmVuZGVyLWhpbnRpbmc9bm9uZVwiLFxuICAgIC8vIOi1hOa6kOaOp+WItlxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLW5ldHdvcmtpbmdcIixcbiAgICBcImpzLWZsYWdzPS0tbWF4LW9sZC1zcGFjZS1zaXplPTUxMlwiLFxuICAgIFwicmVuZGVyZXItcHJvY2Vzcy1saW1pdD0xXCIsXG4gICAgXCJudW0tcmFzdGVyLXRocmVhZHM9MlwiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLXRpbWVyLXRocm90dGxpbmdcIixcbiAgICBcImRpc2FibGUtcmVuZGVyZXItYmFja2dyb3VuZGluZ1wiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kaW5nLW9jY2x1ZGVkLXdpbmRvd3NcIixcbiAgICAvLyDml6Xlv5fov73ouKpcbiAgICBcImVuYWJsZS1sb2dnaW5nPXN0ZGVyclwiLFxuICBdO1xuXG4gIGlmIChwdXBMb2dMZXZlbCA+PSAzKSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTBcIiwgXCJ2PTFcIik7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTNcIik7XG4gIH1cblxuICBjb25zdCBmZWF0dXJlcyA9IFtcIkZvbnRhdGlvbkJhY2tlbmRcIl07XG4gIGNvbnN0IGVuYWJsZUdwdSA9IChhd2FpdCBjYW5JVXNlR1BVKSAmJiAhZGlzYWJsZUdwdTtcbiAgaWYgKCFlbmFibGVHcHUpIHtcbiAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9c3dpZnRzaGFkZXJcIiwgXCJlbmFibGUtdW5zYWZlLXN3aWZ0c2hhZGVyXCIpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMucHVzaChcImRpc2FibGUtZ3B1LXNhbmRib3hcIiwgXCJlbmFibGUtdW5zYWZlLXdlYmdwdVwiKTtcbiAgICBjb25zdCBwbGF0ID0gcGxhdGZvcm0oKTtcbiAgICBpZiAocGxhdCA9PT0gXCJkYXJ3aW5cIikge1xuICAgICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPW1ldGFsXCIpO1xuICAgIH0gZWxzZSBpZiAocGxhdCA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9ZDNkMTFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT12dWxrYW5cIiwgXCJkaXNhYmxlLXZ1bGthbi1zdXJmYWNlXCIpO1xuICAgICAgZmVhdHVyZXMucHVzaChcIlZ1bGthblwiKTtcbiAgICB9XG4gIH1cblxuICBvcHRzLnB1c2goYGVuYWJsZS1mZWF0dXJlcz0ke2ZlYXR1cmVzLmpvaW4oXCIsXCIpfWApO1xuICByZXR1cm4gb3B0cztcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmltcG9ydCBlbGVjdHJvbiBmcm9tIFwiZWxlY3Ryb25cIjtcbmltcG9ydCB7IGNocm9taXVtT3B0aW9ucyB9IGZyb20gXCIuLi9iYXNlL2Nocm9taXVtXCI7XG5pbXBvcnQgeyBwdXBBcHAgfSBmcm9tIFwiLi4vYmFzZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IGV4ZWMsIFBVUF9BUkdTX0tFWSB9IGZyb20gXCIuLi9iYXNlL3Byb2Nlc3NcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVsZWN0cm9uT3B0cyhkaXNhYmxlR3B1OiBib29sZWFuKSB7XG4gIHJldHVybiBbLi4uKGF3YWl0IGNocm9taXVtT3B0aW9ucyhkaXNhYmxlR3B1KSksIFwiaGVhZGxlc3M9bmV3XCJdO1xufVxuXG5jb25zdCBUQUcgPSBcIltFbGVjdHJvbl1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBSdW5FbGVjdHJvbkFwcE9wdGlvbnMge1xuICBhcmdzOiB1bmtub3duW107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5FbGVjdHJvbkFwcCh7IGFyZ3MgfTogUnVuRWxlY3Ryb25BcHBPcHRpb25zKSB7XG4gIGNvbnN0IG9wdHMgPSBhd2FpdCBlbGVjdHJvbk9wdHMoYXJncy5pbmNsdWRlcyhcIi0tZGlzYWJsZS1ncHVcIikpO1xuICBjb25zdCBlbGVjdHJvbkFyZ3MgPSBvcHRzLm1hcCgoYSkgPT4gYC0tJHthfWApO1xuICBlbGVjdHJvbkFyZ3MucHVzaChgJHtQVVBfQVJHU19LRVl9PSR7QnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoYXJncykpLnRvU3RyaW5nKFwiYmFzZTY0XCIpfWApO1xuICBjb25zdCBjbWQgPSBbZWxlY3Ryb24sIC4uLmVsZWN0cm9uQXJncywgcHVwQXBwXS5qb2luKFwiIFwiKTtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgY21kKTtcblxuICBjb25zdCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0geyAuLi5wcm9jZXNzLmVudiwgUlVTVF9CQUNLVFJBQ0U6IFwiZnVsbFwiIH07XG4gIHJldHVybiBleGVjKGNtZCwgeyBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIiwgXCJpcGNcIl0sIGVudiB9KTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDQvMDEuXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudHNcIjtcblxuZXhwb3J0IGNvbnN0IGVudW0gSXBjTXNnVHlwZSB7XG4gIC8vIGNoaWxkIOKGkiBwYXJlbnRcbiAgQ09OU09MRSA9IFwiY29uc29sZVwiLFxuICBQUk9HUkVTUyA9IFwicHJvZ3Jlc3NcIixcbiAgRE9ORSA9IFwiZG9uZVwiLFxuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLy8gcGFyZW50IOKGkiBjaGlsZFxuICBDQU5DRUwgPSBcImNhbmNlbFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnNvbGVNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkNPTlNPTEU7XG4gIGxldmVsOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkNBTkNFTDtcbiAgcmVhc29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElwY0RvbmVQYXlsb2FkIHtcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBqYW5rOiBudW1iZXI7XG4gIG91dEZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc01zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuUFJPR1JFU1M7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9uZU1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuRE9ORTtcbiAgcGF5bG9hZDogSXBjRG9uZVBheWxvYWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkVSUk9SO1xuICBlcnJvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBJcGNNc2cgPSBDb25zb2xlTXNnIHwgUHJvZ3Jlc3NNc2cgfCBEb25lTXNnIHwgRXJyb3JNc2cgfCBDYW5jZWxNc2c7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXBjRXZlbnRzIHtcbiAgcHJvZ3Jlc3M6IFt2YWx1ZTogbnVtYmVyXTtcbiAgY29uc29sZTogW2xldmVsOiBzdHJpbmcsIG1zZzogc3RyaW5nXTtcbiAgZG9uZTogW3BheWxvYWQ6IElwY0RvbmVQYXlsb2FkXTtcbiAgZXJyb3I6IFtlcnJvcjogRXJyb3JdO1xuICBjbG9zZTogW2NvZGU6IG51bWJlciB8IG51bGxdO1xufVxuXG5leHBvcnQgY2xhc3MgSXBjV3JpdGVyIHtcbiAgd3JpdGVDb25zb2xlKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuc2VuZCh7IHR5cGU6IElwY01zZ1R5cGUuQ09OU09MRSwgbGV2ZWwsIG1lc3NhZ2UgfSk7XG4gIH1cblxuICB3cml0ZVByb2dyZXNzKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLlBST0dSRVNTLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHdyaXRlRXJyb3IoZXJyb3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkVSUk9SLCBlcnJvciB9KTtcbiAgfVxuXG4gIHdyaXRlRG9uZShwYXlsb2FkOiBJcGNEb25lUGF5bG9hZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkRPTkUsIHBheWxvYWQgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlbmQobXNnOiBJcGNNc2cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGlmICghcHJvY2Vzcy5zZW5kKSByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgcHJvY2Vzcy5zZW5kKG1zZywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSXBjUmVhZGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyPElwY0V2ZW50cz4ge1xuICBjb25zdHJ1Y3RvcihjaGlsZDogQ2hpbGRQcm9jZXNzKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjaGlsZC5vbihcIm1lc3NhZ2VcIiwgKHJhdykgPT4ge1xuICAgICAgY29uc3QgbXNnID0gcmF3IGFzIElwY01zZztcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkNPTlNPTEU6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJjb25zb2xlXCIsIG1zZy5sZXZlbCwgbXNnLm1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5QUk9HUkVTUzoge1xuICAgICAgICAgIHRoaXMuZW1pdChcInByb2dyZXNzXCIsIG1zZy52YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkRPTkU6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJkb25lXCIsIG1zZy5wYXlsb2FkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIElwY01zZ1R5cGUuRVJST1I6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBuZXcgRXJyb3IobXNnLmVycm9yKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjaGlsZC5vbmNlKFwiZXhpdFwiLCAoYykgPT4gdGhpcy5lbWl0KFwiY2xvc2VcIiwgYykpO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IHJ1bkVsZWN0cm9uQXBwIH0gZnJvbSBcIi4vcmVuZGVyZXIvZWxlY3Ryb25cIjtcbmltcG9ydCB7IElwY01zZ1R5cGUsIElwY1JlYWRlciwgdHlwZSBJcGNEb25lUGF5bG9hZCB9IGZyb20gXCIuL3JlbmRlcmVyL2lwY1wiO1xuaW1wb3J0IHtcbiAgZGVmYXVsdFJlbmRlck9wdGlvbnMsXG4gIHR5cGUgQ29uc29sZUNhbGxiYWNrLFxuICB0eXBlIFByb2dyZXNzQ2FsbGJhY2ssXG4gIHR5cGUgUmVuZGVyT3B0aW9ucyxcbiAgdHlwZSBSZW5kZXJSZXN1bHQsXG59IGZyb20gXCIuL3JlbmRlcmVyL3NjaGVtYVwiO1xuXG5jb25zdCBUQUcgPSBcIltwdXBdXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVwT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8UmVuZGVyT3B0aW9ucz4ge1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgb25Qcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2s7XG4gIG9uQ29uc29sZT86IENvbnNvbGVDYWxsYmFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXBSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHQge31cblxuYXN5bmMgZnVuY3Rpb24gcnVuUHVwQXBwKHNvdXJjZTogc3RyaW5nLCByZW5kZXI6IFJlbmRlck9wdGlvbnMpIHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHJ1blB1cEFwcGAsIHNvdXJjZSwgcmVuZGVyKTtcblxuICBjb25zdCBhcmdzOiBzdHJpbmdbXSA9IFtcbiAgICBzb3VyY2UsXG4gICAgYC0td2lkdGhgLFxuICAgIGAke3JlbmRlci53aWR0aH1gLFxuICAgIGAtLWhlaWdodGAsXG4gICAgYCR7cmVuZGVyLmhlaWdodH1gLFxuICAgIGAtLWZwc2AsXG4gICAgYCR7cmVuZGVyLmZwc31gLFxuICAgIGAtLWR1cmF0aW9uYCxcbiAgICBgJHtyZW5kZXIuZHVyYXRpb259YCxcbiAgICBgLS1vdXQtZmlsZWAsXG4gICAgYCR7cmVuZGVyLm91dEZpbGV9YCxcbiAgXTtcbiAgaWYgKHJlbmRlci53aXRoQXVkaW8pIGFyZ3MucHVzaChgLS13aXRoLWF1ZGlvYCk7XG4gIGlmIChyZW5kZXIudXNlSW5uZXJQcm94eSkgYXJncy5wdXNoKGAtLXVzZS1pbm5lci1wcm94eWApO1xuICBpZiAocmVuZGVyLmRldGVybWluaXN0aWMpIGFyZ3MucHVzaChgLS1kZXRlcm1pbmlzdGljYCk7XG4gIGlmIChyZW5kZXIuZGlzYWJsZUdwdSkgYXJncy5wdXNoKGAtLWRpc2FibGUtZ3B1YCk7XG4gIGlmIChyZW5kZXIuZGlzYWJsZUh3Q29kZWMpIGFyZ3MucHVzaChgLS1kaXNhYmxlLWh3LWNvZGVjYCk7XG4gIGlmIChyZW5kZXIud2luZG93VG9sZXJhbnQpIGFyZ3MucHVzaChgLS13aW5kb3ctdG9sZXJhbnRgKTtcblxuICByZXR1cm4gcnVuRWxlY3Ryb25BcHAoeyBhcmdzIH0pO1xufVxuXG5jb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdXAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFBhcnRpYWw8UHVwT3B0aW9ucz4pOiBQcm9taXNlPFB1cFJlc3VsdD4ge1xuICBsb2dnZXIuZGVidWcoVEFHLCBgcHVwYCwgc291cmNlLCBvcHRpb25zKTtcblxuICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0aW9ucztcbiAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGNvbnN0IG91dEZpbGUgPSBvcHRpb25zLm91dEZpbGUgPz8gZC5vdXRGaWxlO1xuICBjb25zdCByZW5kZXJPcHRzOiBSZW5kZXJPcHRpb25zID0ge1xuICAgIHdpZHRoOiBvcHRpb25zLndpZHRoID8/IGQud2lkdGgsXG4gICAgaGVpZ2h0OiBvcHRpb25zLmhlaWdodCA/PyBkLmhlaWdodCxcbiAgICBmcHM6IG9wdGlvbnMuZnBzID8/IGQuZnBzLFxuICAgIGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uID8/IGQuZHVyYXRpb24sXG4gICAgd2l0aEF1ZGlvOiBvcHRpb25zLndpdGhBdWRpbyA/PyBkLndpdGhBdWRpbyxcbiAgICB1c2VJbm5lclByb3h5OiBvcHRpb25zLnVzZUlubmVyUHJveHkgPz8gZC51c2VJbm5lclByb3h5LFxuICAgIGRldGVybWluaXN0aWM6IG9wdGlvbnMuZGV0ZXJtaW5pc3RpYyA/PyBkLmRldGVybWluaXN0aWMsXG4gICAgZGlzYWJsZUdwdTogb3B0aW9ucy5kaXNhYmxlR3B1ID8/IGQuZGlzYWJsZUdwdSxcbiAgICBkaXNhYmxlSHdDb2RlYzogb3B0aW9ucy5kaXNhYmxlSHdDb2RlYyA/PyBkLmRpc2FibGVId0NvZGVjLFxuICAgIHdpbmRvd1RvbGVyYW50OiBvcHRpb25zLndpbmRvd1RvbGVyYW50ID8/IGQud2luZG93VG9sZXJhbnQsXG4gICAgb3V0RmlsZSxcbiAgfTtcblxuICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBsZXQgcHJvZ3Jlc3MgPSAwO1xuICBjb25zdCB0aWNrID0gKHA6IG51bWJlcikgPT4ge1xuICAgIHByb2dyZXNzID0gcDtcbiAgICBvcHRpb25zLm9uUHJvZ3Jlc3M/LihwKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGUgPSBhd2FpdCBydW5QdXBBcHAoc291cmNlLCByZW5kZXJPcHRzKTtcblxuICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgIGhhbmRsZS5wcm9jZXNzLnNlbmQ/Lih7IHR5cGU6IElwY01zZ1R5cGUuQ0FOQ0VMLCByZWFzb246IFN0cmluZyhzaWduYWw/LnJlYXNvbiA/PyBcImFib3J0XCIpIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gaGFuZGxlLmtpbGwoKSwgNV8wMDApO1xuICB9O1xuICBzaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgUHJvbWlzZTxJcGNEb25lUGF5bG9hZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbmV3IElwY1JlYWRlcihoYW5kbGUucHJvY2VzcylcbiAgICAgICAgLm9uKFwiY2xvc2VcIiwgKGNvZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPSBKU09OLnN0cmluZ2lmeSh7IHNvdXJjZSwgcHJvZ3Jlc3MsIGNvZGUsIGtpbGxlZDogaGFuZGxlLmtpbGxlZCB9KTtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBjcmFzaGVkOiAke21zZ31gKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInByb2dyZXNzXCIsIHRpY2spXG4gICAgICAgIC5vbihcImNvbnNvbGVcIiwgKGwsIG0pID0+IG9wdGlvbnMub25Db25zb2xlPy4obCwgbSkpXG4gICAgICAgIC5vbihcImRvbmVcIiwgcmVzb2x2ZSlcbiAgICAgICAgLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICB9KTtcbiAgICB0aWNrKDApO1xuICAgIGNvbnN0IFtzdW1tYXJ5XSA9IGF3YWl0IFByb21pc2UuYWxsKFtyZXN1bHQsIGhhbmRsZS53YWl0XSk7XG4gICAgdGljaygxMDApO1xuICAgIGxvZ2dlci5kZWJ1ZyhUQUcsIGBkb25lICR7b3V0RmlsZX0gaW4gJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpIC0gdDApfW1zYCk7XG4gICAgcmV0dXJuIHsgLi4uc3VtbWFyeSwgb3B0aW9uczogcmVuZGVyT3B0cyB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlLmtpbGwoKTtcbiAgICBzaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG4gICAgdGhyb3cgZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBzaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0KTtcbiAgfVxufVxuIl19
@@ -1,3 +0,0 @@
1
- 'use strict';require('source-map-support/register.js');function I(){if(window.__pup_tick__)return;let RealDate=Date,dateOrigin=RealDate.now(),currMs=0,timeOffset=0,rafQueue=[],timers={},nextId=1;function FakeDate(...a){return this instanceof FakeDate?a.length?new(Function.prototype.bind.apply(RealDate,[null,...a])):new RealDate(dateOrigin+currMs+(timeOffset+=.01)):new RealDate(dateOrigin+currMs).toString()}FakeDate.prototype=RealDate.prototype,FakeDate.now=()=>dateOrigin+currMs+(timeOffset+=.01),FakeDate.parse=RealDate.parse,FakeDate.UTC=RealDate.UTC,window.Date=FakeDate,performance.now=()=>currMs+(timeOffset+=.01),window.requestAnimationFrame=a=>{let u=nextId++;return rafQueue.push({id:u,cb:a}),u},window.cancelAnimationFrame=a=>{rafQueue=rafQueue.filter(u=>u.id!==a);},window.setTimeout=(a,u)=>{let s=nextId++;return timers[s]={type:"timeout",cb:a,delay:u||0,next:currMs+(u||0)},s},window.clearTimeout=a=>{typeof a=="number"&&delete timers[a];},window.setInterval=(a,u)=>{let s=nextId++,l=Math.max(u||0,1);return timers[s]={type:"interval",cb:a,delay:l,next:currMs+l},s},window.clearInterval=a=>{typeof a=="number"&&delete timers[a];};function safeInvokeTimer(fn){try{typeof fn=="string"?eval(fn):fn();}catch(a){console.error("[Tick] error:",a instanceof Error&&a.stack||a);}}function safeInvokeRaf(a,u){try{a(u);}catch(s){console.error("[Tick] error:",s instanceof Error&&s.stack||s);}}let animState=new WeakMap;function syncAnimations(a){let u;try{u=document.getAnimations();}catch{return}for(let s of u){let l=s.playState;if(l==="idle"||l==="finished"){animState.delete(s);continue}let g=typeof s.playbackRate=="number"?s.playbackRate:1;if(g===0)continue;let f=animState.get(s);if(!f){let h=typeof s.currentTime=="number"?s.currentTime:0;f={startMs:a-h/g,pausedAccum:0,pausedAt:-1},animState.set(s,f);}if(l==="paused"){f.pausedAt<0&&(f.pausedAt=a);continue}f.pausedAt>=0&&(f.pausedAccum+=a-f.pausedAt,f.pausedAt=-1),s.currentTime=(a-f.startMs-f.pausedAccum)*g;}}function process(a){currMs=a,timeOffset=0;for(let s of Object.keys(timers)){let l=timers[Number(s)];if(l)for(;l.next<=currMs;){if(safeInvokeTimer(l.cb),l.type==="timeout"){delete timers[Number(s)];break}l.next+=l.delay;}}let u=rafQueue.splice(0);for(let s of u)safeInvokeRaf(s.cb,currMs);syncAnimations(currMs);}window.__pup_tick__={process};}var k="pup-frame://";var U=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","transform","transformOrigin","filter","clipPath","boxShadow","opacity","mixBlendMode","mask","zIndex","position","left","top","right","bottom"];function C(){if(window.__pup_video__)return;let a=HTMLVideoElement.prototype,u=HTMLMediaElement.prototype,s=a.pause,l=Object.getOwnPropertyDescriptor(a,"currentTime")||Object.getOwnPropertyDescriptor(u,"currentTime"),g=Object.getOwnPropertyDescriptor(a,"paused")||Object.getOwnPropertyDescriptor(u,"paused"),f=Object.getOwnPropertyDescriptor(a,"ended")||Object.getOwnPropertyDescriptor(u,"ended"),h=Object.getOwnPropertyDescriptor(a,"src")||Object.getOwnPropertyDescriptor(u,"src"),m=new WeakMap,y=new WeakMap,O=new WeakMap,M=new Map,b=0,T=0;function D(t){let e=M.get(t);return e||(e={bitmaps:new Map,inFlight:new Map,readers:new Map},M.set(t,e)),e}function L(t,e){let r=D(t.meta.id),i=r.inFlight.get(e);if(i)return i;let n=r.bitmaps.get(e);if(n)return Promise.resolve(n);let c=fetch(k+"frame?id="+t.meta.id+"&idx="+e).then(o=>o.ok?o.blob():null).then(o=>o?createImageBitmap(o):null).then(o=>(r.inFlight.delete(e),o&&r.bitmaps.set(e,o),o)).catch(()=>(r.inFlight.delete(e),null));return r.inFlight.set(e,c),c}function V(t,e,r){let i=Math.max(1,Math.round(t.meta.duration*t.meta.fps));for(let n=e;n<e+r;n++)n<1||n>i||L(t,n);}function F(t){let e=1/0;if(t.readers.forEach(i=>{i<e&&(e=i);}),!isFinite(e))return;let r=e-2;t.bitmaps.forEach((i,n)=>{n<r&&(i.close(),t.bitmaps.delete(n));});}function P(t){return t.replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}function H(t,e){let r=window.getComputedStyle(t),i=t.offsetParent||document.body,n=t.getBoundingClientRect(),c=i.getBoundingClientRect();e.style.position="absolute",e.style.left=n.left-c.left+"px",e.style.top=n.top-c.top+"px",e.style.width=n.width+"px",e.style.height=n.height+"px";for(let p of U){if(p==="position"||p==="left"||p==="top"||p==="right"||p==="bottom")continue;let S=r.getPropertyValue(P(p));S&&e.style.setProperty(P(p),S);}let o=window.devicePixelRatio||1,d=Math.max(1,Math.round(n.width*o)),w=Math.max(1,Math.round(n.height*o));e.width!==d&&(e.width=d),e.height!==w&&(e.height=w);}function j(t){let e=document.createElement("canvas");e.dataset.pupVideoOverlay="1",e.style.pointerEvents="none",t.style.visibility="hidden",t.muted=true,(t.parentNode||document.body).insertBefore(e,t.nextSibling),H(t,e);let i=O.get(t);if(i)try{e.getContext("2d").drawImage(i,0,0,e.width,e.height);}catch{}return e}function B(t,e,r,i,n){if(n==="none")return [(r-t)/2,(i-e)/2,t,e];if(n==="contain"||n==="scale-down"){let c=Math.min(r/t,i/e),o=n==="scale-down"?Math.min(1,c):c,d=o*t,w=o*e;return [(r-d)/2,(i-w)/2,d,w]}if(n==="cover"){let c=Math.max(r/t,i/e),o=c*t,d=c*e;return [(r-o)/2,(i-d)/2,o,d]}return [0,0,r,i]}async function N(t,e,r,i){let n=Number.parseInt(t.dataset.pupFps||"30",10),c=await fetch(k+"open?src="+encodeURIComponent(r)+"&fps="+n);if(m.get(t)!==e)return null;if(!c.ok)return e.dead=true,null;let o=await c.json();return m.get(t)!==e?null:(e.meta=o,e.currentTime=e.paused?0:Math.max(0,(b-i)/1e3),Object.defineProperty(t,"videoWidth",{value:o.width,configurable:true}),Object.defineProperty(t,"videoHeight",{value:o.height,configurable:true}),Object.defineProperty(t,"duration",{value:o.duration,configurable:true}),Object.defineProperty(t,"readyState",{value:4,configurable:true}),["loadstart","durationchange","loadedmetadata","loadeddata","canplay","canplaythrough"].forEach(d=>{t.dispatchEvent(new Event(d));}),e.paused||(t.dispatchEvent(new Event("play")),t.dispatchEvent(new Event("playing"))),V(e,1,10),e)}function E(t){let e=m.get(t);if(e)return Promise.resolve(e);let r=y.get(t);if(r)return r;let i=t.src||t.currentSrc;if(!i||/^(blob:|data:|mediastream:)/i.test(i))return Promise.resolve(null);let n=j(t),c=b,o={meta:null,cv:n,ctx:n.getContext("2d"),paused:!(t.autoplay||!t.paused),currentTime:0,ended:false,lastDrawnIdx:-1,dead:false,objectFit:window.getComputedStyle(t).objectFit||"fill"};m.set(t,o);let d=N(t,o,i,c).finally(()=>{y.delete(t);});return y.set(t,d),d}function _(t){let e=m.get(t);if(e){if(e.meta){if(e.lastDrawnIdx>=0)try{let i=new OffscreenCanvas(e.cv.width,e.cv.height);i.getContext("2d").drawImage(e.cv,0,0),O.set(t,i);}catch{}let r=M.get(e.meta.id);r&&(r.readers.delete(e),r.readers.size===0&&(r.bitmaps.forEach(i=>i.close()),M.delete(e.meta.id),fetch(k+"close?id="+e.meta.id,{keepalive:true})));}e.cv.remove(),m.delete(t),y.delete(t);}}function R(t,e){!e.paused&&!e.ended||(e.paused=false,e.ended=false,t.dispatchEvent(new Event("play")),t.dispatchEvent(new Event("playing")));}a.play=function(){let t=this,e=m.get(t);return e?(R(t,e),Promise.resolve()):E(t).then(r=>{r&&R(t,r);})},a.pause=function(){let t=m.get(this);if(!t){s.call(this);return}t.paused||(t.paused=true,this.dispatchEvent(new Event("pause")));},Object.defineProperty(a,"paused",{configurable:true,get(){let t=m.get(this);return t?t.paused:g.get.call(this)}}),Object.defineProperty(a,"ended",{configurable:true,get(){let t=m.get(this);return t?t.ended:f.get.call(this)}}),l&&Object.defineProperty(a,"currentTime",{configurable:true,get(){let t=m.get(this);return t?t.currentTime:l.get.call(this)},set(t){let e=m.get(this);if(!e){l.set.call(this,t);return}e.currentTime=Math.max(0,Math.min(t,e.meta.duration)),e.currentTime<e.meta.duration&&(e.ended=false),this.dispatchEvent(new Event("seeking")),this.dispatchEvent(new Event("seeked")),this.dispatchEvent(new Event("timeupdate"));}});function v(t){let e=t.src||t.currentSrc||"";t.__pupLastSrc!==e&&(t.__pupLastSrc=e,m.has(t)&&_(t),E(t));}function x(t){t&&(t.tagName==="VIDEO"&&E(t),t.querySelectorAll&&t.querySelectorAll("video").forEach(e=>E(e)));}x(document.documentElement),new MutationObserver(t=>{for(let e of t){if(e.type==="attributes"&&e.target instanceof HTMLVideoElement&&e.attributeName==="src"){v(e.target);continue}e.addedNodes.forEach(r=>{r instanceof Element&&x(r);}),e.removedNodes.forEach(r=>{r instanceof HTMLVideoElement&&_(r);});}}).observe(document,{subtree:true,childList:true,attributes:true,attributeFilter:["src"]}),h&&h.set&&Object.defineProperty(a,"src",{configurable:true,get:h.get,set(t){h.set.call(this,t),v(this);}});async function q(t,e,r){let i=D(e.meta.id);i.readers.set(e,r);let n=i.bitmaps.get(r);if(!n){V(e,r+1,9);let d=await L(e,r);if(m.get(t)!==e||!d)return;n=d;}let c=e.cv,o=B(n.width,n.height,c.width,c.height,e.objectFit);e.ctx.clearRect(0,0,c.width,c.height),e.ctx.drawImage(n,o[0],o[1],o[2],o[3]),e.lastDrawnIdx=r,V(e,r+1,10),F(i);}function Q(t){T=b,b=t;let e=Math.max(0,b-T)/1e3,r=[];return document.querySelectorAll("video").forEach(i=>{let n=m.get(i);if(!n||n.dead||(H(i,n.cv),!n.meta))return;!n.paused&&!n.ended&&(n.currentTime+=e*(i.playbackRate||1),n.currentTime>=n.meta.duration?i.loop?n.currentTime=n.currentTime%n.meta.duration:(n.currentTime=n.meta.duration,n.paused=true,n.ended=true,i.dispatchEvent(new Event("ended"))):i.dispatchEvent(new Event("timeupdate")));let c=Math.max(1,Math.round(n.currentTime*n.meta.fps));c!==n.lastDrawnIdx&&r.push(q(i,n,c));}),Promise.all(r)}window.__pup_video__={advance:Q};}window.self!==window.top&&(I(),C());
2
- //# sourceMappingURL=iframe_preload.cjs.map
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2lmcmFtZV9ob29rLnRzIiwiLi4vc3JjL3J1bnRpbWUvaWZyYW1lX3ZpZGVvX2hvb2sudHMiLCIuLi9zcmMvaWZyYW1lX3ByZWxvYWQudHMiXSwibmFtZXMiOlsiaW5zdGFsbFRpY2tIb29rIiwiYXJncyIsImNiIiwiaWQiLCJyIiwiZGVsYXkiLCJkIiwiZSIsInRzIiwibXMiLCJhbmltcyIsImEiLCJzdGF0ZSIsInJhdGUiLCJzIiwiY3QwIiwidGltZXN0YW1wTXMiLCJ0IiwicmFmcyIsIlNDSEVNRSIsIk1JUlJPUl9QUk9QUyIsImluc3RhbGxWaWRlb0hvb2siLCJIVkUiLCJNRURJQSIsIm9yaWdQYXVzZSIsImN0RGVzYyIsInBhdXNlZERlc2MiLCJlbmRlZERlc2MiLCJzcmNEZXNjIiwic2Vzc2lvbnMiLCJhdHRhY2hpbmciLCJsYXN0U25hcHNob3QiLCJjYWNoZXMiLCJjdXJyTXMiLCJsYXN0TXMiLCJnZXRDYWNoZSIsImMiLCJmZXRjaEJpdG1hcCIsImlkeCIsImV4aXN0aW5nIiwiY2FjaGVkIiwicCIsImIiLCJibSIsImVuc3VyZVByZWZldGNoZWQiLCJmcm9tSWR4IiwiY291bnQiLCJtYXhJZHgiLCJpIiwiZXZpY3RPbGQiLCJtaW5JZHgiLCJmbG9vciIsImNzc0Nhc2UiLCJzeW5jT3ZlcmxheSIsInZpZGVvIiwiY3YiLCJjcyIsIm9mZnNldFBhcmVudCIsInZyIiwicHIiLCJ2IiwiZHByIiwidyIsImgiLCJzZXR1cENhbnZhcyIsInNuYXAiLCJmaXRSZWN0Iiwic3JjVyIsInNyY0giLCJkc3RXIiwiZHN0SCIsImZpdCIsInNjIiwiayIsIndzIiwiaHMiLCJzYzIiLCJ3czIiLCJoczIiLCJkb0F0dGFjaCIsInNyYyIsImJpcnRoTXMiLCJmcHMiLCJyZXMiLCJtZXRhIiwiYXR0YWNoIiwicGVuZGluZyIsImRldGFjaCIsInJlc3VtZSIsIm9uU3JjQ2hhbmdlIiwic2NhbiIsInJvb3QiLCJtdXRzIiwibSIsIm4iLCJwYWlu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YUFBQSxDQUFnQixDQUFFLE9BQUEsQ0FBQUYsQ0FBUSxFQUNuQyxDQzVhSSxNQUFBLENBQU8sSUFBQSxHQUFTLE1BQUEsQ0FBTyxHQUFBLEdBQ3pCakcsQ0FBQUEsR0FDQXFCLENBQUFBLEVBQWlCLENBQUEiLCJmaWxlIjoiaWZyYW1lX3ByZWxvYWQuY2pzIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX3B1cF90aWNrX18/OiB7IHByb2Nlc3M6IChtczogbnVtYmVyKSA9PiB2b2lkIH07XG4gIH1cbn1cblxuaW50ZXJmYWNlIFRpbWVyIHtcbiAgdHlwZTogXCJ0aW1lb3V0XCIgfCBcImludGVydmFsXCI7XG4gIGNiOiBUaW1lckhhbmRsZXI7XG4gIGRlbGF5OiBudW1iZXI7XG4gIG5leHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJhZkVudHJ5IHtcbiAgaWQ6IG51bWJlcjtcbiAgY2I6IEZyYW1lUmVxdWVzdENhbGxiYWNrO1xufVxuXG5pbnRlcmZhY2UgQW5pbUVudHJ5IHtcbiAgc3RhcnRNczogbnVtYmVyO1xuICBwYXVzZWRBY2N1bTogbnVtYmVyO1xuICBwYXVzZWRBdDogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbFRpY2tIb29rKCk6IHZvaWQge1xuICBpZiAod2luZG93Ll9fcHVwX3RpY2tfXykgcmV0dXJuO1xuXG4gIGNvbnN0IFJlYWxEYXRlID0gRGF0ZTtcbiAgY29uc3QgZGF0ZU9yaWdpbiA9IFJlYWxEYXRlLm5vdygpO1xuICBsZXQgY3Vyck1zID0gMDtcbiAgbGV0IHRpbWVPZmZzZXQgPSAwO1xuICBsZXQgcmFmUXVldWU6IFJhZkVudHJ5W10gPSBbXTtcbiAgY29uc3QgdGltZXJzOiBSZWNvcmQ8bnVtYmVyLCBUaW1lciB8IHVuZGVmaW5lZD4gPSB7fTtcbiAgbGV0IG5leHRJZCA9IDE7XG5cbiAgZnVuY3Rpb24gRmFrZURhdGUodGhpczogdW5rbm93biwgLi4uYXJnczogdW5rbm93bltdKTogRGF0ZSB8IHN0cmluZyB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEZha2VEYXRlKSkge1xuICAgICAgcmV0dXJuIG5ldyBSZWFsRGF0ZShkYXRlT3JpZ2luICsgY3Vyck1zKS50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gYXJncy5sZW5ndGhcbiAgICAgID8gbmV3IChGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5hcHBseShSZWFsRGF0ZSwgW251bGwsIC4uLmFyZ3NdKSkoKVxuICAgICAgOiBuZXcgUmVhbERhdGUoZGF0ZU9yaWdpbiArIGN1cnJNcyArICh0aW1lT2Zmc2V0ICs9IDAuMDEpKTtcbiAgfVxuICBGYWtlRGF0ZS5wcm90b3R5cGUgPSBSZWFsRGF0ZS5wcm90b3R5cGU7XG4gIEZha2VEYXRlLm5vdyA9ICgpID0+IGRhdGVPcmlnaW4gKyBjdXJyTXMgKyAodGltZU9mZnNldCArPSAwLjAxKTtcbiAgRmFrZURhdGUucGFyc2UgPSBSZWFsRGF0ZS5wYXJzZTtcbiAgRmFrZURhdGUuVVRDID0gUmVhbERhdGUuVVRDO1xuICAod2luZG93IGFzIHVua25vd24gYXMgeyBEYXRlOiB1bmtub3duIH0pLkRhdGUgPSBGYWtlRGF0ZTtcbiAgcGVyZm9ybWFuY2Uubm93ID0gKCkgPT4gY3Vyck1zICsgKHRpbWVPZmZzZXQgKz0gMC4wMSk7XG5cbiAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IChjYikgPT4ge1xuICAgIGNvbnN0IGlkID0gbmV4dElkKys7XG4gICAgcmFmUXVldWUucHVzaCh7IGlkLCBjYiB9KTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSA9IChpZCkgPT4ge1xuICAgIHJhZlF1ZXVlID0gcmFmUXVldWUuZmlsdGVyKChyKSA9PiByLmlkICE9PSBpZCk7XG4gIH07XG4gICh3aW5kb3cgYXMgdW5rbm93biBhcyB7IHNldFRpbWVvdXQ6IHVua25vd24gfSkuc2V0VGltZW91dCA9IChjYjogVGltZXJIYW5kbGVyLCBkZWxheT86IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGlkID0gbmV4dElkKys7XG4gICAgdGltZXJzW2lkXSA9IHsgdHlwZTogXCJ0aW1lb3V0XCIsIGNiLCBkZWxheTogZGVsYXkgfHwgMCwgbmV4dDogY3Vyck1zICsgKGRlbGF5IHx8IDApIH07XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuICB3aW5kb3cuY2xlYXJUaW1lb3V0ID0gKGlkKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIikgZGVsZXRlIHRpbWVyc1tpZF07XG4gIH07XG4gICh3aW5kb3cgYXMgdW5rbm93biBhcyB7IHNldEludGVydmFsOiB1bmtub3duIH0pLnNldEludGVydmFsID0gKGNiOiBUaW1lckhhbmRsZXIsIGRlbGF5PzogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICBjb25zdCBkID0gTWF0aC5tYXgoZGVsYXkgfHwgMCwgMSk7XG4gICAgdGltZXJzW2lkXSA9IHsgdHlwZTogXCJpbnRlcnZhbFwiLCBjYiwgZGVsYXk6IGQsIG5leHQ6IGN1cnJNcyArIGQgfTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIHdpbmRvdy5jbGVhckludGVydmFsID0gKGlkKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIikgZGVsZXRlIHRpbWVyc1tpZF07XG4gIH07XG5cbiAgZnVuY3Rpb24gc2FmZUludm9rZVRpbWVyKGZuOiBUaW1lckhhbmRsZXIpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gXCJzdHJpbmdcIikgZXZhbChmbik7XG4gICAgICBlbHNlIGZuKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIltUaWNrXSBlcnJvcjpcIiwgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLnN0YWNrKSB8fCBlKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gc2FmZUludm9rZVJhZihjYjogRnJhbWVSZXF1ZXN0Q2FsbGJhY2ssIHRzOiBudW1iZXIpIHtcbiAgICB0cnkge1xuICAgICAgY2IodHMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbVGlja10gZXJyb3I6XCIsIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykgfHwgZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW5pbVN0YXRlID0gbmV3IFdlYWtNYXA8QW5pbWF0aW9uLCBBbmltRW50cnk+KCk7XG4gIGZ1bmN0aW9uIHN5bmNBbmltYXRpb25zKG1zOiBudW1iZXIpIHtcbiAgICBsZXQgYW5pbXM6IEFuaW1hdGlvbltdO1xuICAgIHRyeSB7XG4gICAgICBhbmltcyA9IGRvY3VtZW50LmdldEFuaW1hdGlvbnMoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBhIG9mIGFuaW1zKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGEucGxheVN0YXRlO1xuICAgICAgaWYgKHN0YXRlID09PSBcImlkbGVcIiB8fCBzdGF0ZSA9PT0gXCJmaW5pc2hlZFwiKSB7XG4gICAgICAgIGFuaW1TdGF0ZS5kZWxldGUoYSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmF0ZSA9IHR5cGVvZiBhLnBsYXliYWNrUmF0ZSA9PT0gXCJudW1iZXJcIiA/IGEucGxheWJhY2tSYXRlIDogMTtcbiAgICAgIGlmIChyYXRlID09PSAwKSBjb250aW51ZTtcbiAgICAgIGxldCBzID0gYW5pbVN0YXRlLmdldChhKTtcbiAgICAgIGlmICghcykge1xuICAgICAgICBjb25zdCBjdDAgPSB0eXBlb2YgYS5jdXJyZW50VGltZSA9PT0gXCJudW1iZXJcIiA/IGEuY3VycmVudFRpbWUgOiAwO1xuICAgICAgICBzID0geyBzdGFydE1zOiBtcyAtIGN0MCAvIHJhdGUsIHBhdXNlZEFjY3VtOiAwLCBwYXVzZWRBdDogLTEgfTtcbiAgICAgICAgYW5pbVN0YXRlLnNldChhLCBzKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJwYXVzZWRcIikge1xuICAgICAgICBpZiAocy5wYXVzZWRBdCA8IDApIHMucGF1c2VkQXQgPSBtcztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocy5wYXVzZWRBdCA+PSAwKSB7XG4gICAgICAgIHMucGF1c2VkQWNjdW0gKz0gbXMgLSBzLnBhdXNlZEF0O1xuICAgICAgICBzLnBhdXNlZEF0ID0gLTE7XG4gICAgICB9XG4gICAgICBhLmN1cnJlbnRUaW1lID0gKG1zIC0gcy5zdGFydE1zIC0gcy5wYXVzZWRBY2N1bSkgKiByYXRlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHByb2Nlc3ModGltZXN0YW1wTXM6IG51bWJlcikge1xuICAgIGN1cnJNcyA9IHRpbWVzdGFtcE1zO1xuICAgIHRpbWVPZmZzZXQgPSAwO1xuICAgIGZvciAoY29uc3QgaWQgb2YgT2JqZWN0LmtleXModGltZXJzKSkge1xuICAgICAgY29uc3QgdCA9IHRpbWVyc1tOdW1iZXIoaWQpXTtcbiAgICAgIGlmICghdCkgY29udGludWU7XG4gICAgICB3aGlsZSAodC5uZXh0IDw9IGN1cnJNcykge1xuICAgICAgICBzYWZlSW52b2tlVGltZXIodC5jYik7XG4gICAgICAgIGlmICh0LnR5cGUgPT09IFwidGltZW91dFwiKSB7XG4gICAgICAgICAgZGVsZXRlIHRpbWVyc1tOdW1iZXIoaWQpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0Lm5leHQgKz0gdC5kZWxheTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmFmcyA9IHJhZlF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgcmFmcykgc2FmZUludm9rZVJhZihyLmNiLCBjdXJyTXMpO1xuICAgIHN5bmNBbmltYXRpb25zKGN1cnJNcyk7XG4gIH1cblxuICB3aW5kb3cuX19wdXBfdGlja19fID0geyBwcm9jZXNzIH07XG59XG4iLCJkZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fcHVwX3ZpZGVvX18/OiB7IGFkdmFuY2U6IChtczogbnVtYmVyKSA9PiBQcm9taXNlPHVua25vd24+IH07XG4gIH1cbiAgaW50ZXJmYWNlIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIF9fcHVwTGFzdFNyYz86IHN0cmluZztcbiAgfVxufVxuXG5pbnRlcmZhY2UgVmlkZW9NZXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGZwczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgVmlkZW9DYWNoZSB7XG4gIGJpdG1hcHM6IE1hcDxudW1iZXIsIEltYWdlQml0bWFwPjtcbiAgaW5GbGlnaHQ6IE1hcDxudW1iZXIsIFByb21pc2U8SW1hZ2VCaXRtYXAgfCBudWxsPj47XG4gIHJlYWRlcnM6IE1hcDxWaWRlb1N0YXRlLCBudW1iZXI+O1xufVxuXG5pbnRlcmZhY2UgVmlkZW9TdGF0ZSB7XG4gIG1ldGE6IFZpZGVvTWV0YSB8IG51bGw7XG4gIGN2OiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gIHBhdXNlZDogYm9vbGVhbjtcbiAgY3VycmVudFRpbWU6IG51bWJlcjtcbiAgZW5kZWQ6IGJvb2xlYW47XG4gIGxhc3REcmF3bklkeDogbnVtYmVyO1xuICBkZWFkOiBib29sZWFuO1xuICBvYmplY3RGaXQ6IHN0cmluZztcbn1cblxudHlwZSBWZWM0ID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IFNDSEVNRSA9IFwicHVwLWZyYW1lOi8vXCI7XG5jb25zdCBBSEVBRCA9IDEwO1xuXG5jb25zdCBNSVJST1JfUFJPUFMgPSBbXG4gIFwiYm9yZGVyUmFkaXVzXCIsXG4gIFwiYm9yZGVyVG9wTGVmdFJhZGl1c1wiLFxuICBcImJvcmRlclRvcFJpZ2h0UmFkaXVzXCIsXG4gIFwiYm9yZGVyQm90dG9tTGVmdFJhZGl1c1wiLFxuICBcImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzXCIsXG4gIFwidHJhbnNmb3JtXCIsXG4gIFwidHJhbnNmb3JtT3JpZ2luXCIsXG4gIFwiZmlsdGVyXCIsXG4gIFwiY2xpcFBhdGhcIixcbiAgXCJib3hTaGFkb3dcIixcbiAgXCJvcGFjaXR5XCIsXG4gIFwibWl4QmxlbmRNb2RlXCIsXG4gIFwibWFza1wiLFxuICBcInpJbmRleFwiLFxuICBcInBvc2l0aW9uXCIsXG4gIFwibGVmdFwiLFxuICBcInRvcFwiLFxuICBcInJpZ2h0XCIsXG4gIFwiYm90dG9tXCIsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbFZpZGVvSG9vaygpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF92aWRlb19fKSByZXR1cm47XG5cbiAgY29uc3QgSFZFID0gSFRNTFZpZGVvRWxlbWVudC5wcm90b3R5cGU7XG4gIGNvbnN0IE1FRElBID0gSFRNTE1lZGlhRWxlbWVudC5wcm90b3R5cGU7XG4gIGNvbnN0IG9yaWdQYXVzZSA9IEhWRS5wYXVzZTtcbiAgY29uc3QgY3REZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVkUsIFwiY3VycmVudFRpbWVcIikgfHwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNRURJQSwgXCJjdXJyZW50VGltZVwiKTtcbiAgY29uc3QgcGF1c2VkRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFZFLCBcInBhdXNlZFwiKSB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1FRElBLCBcInBhdXNlZFwiKTtcbiAgY29uc3QgZW5kZWREZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVkUsIFwiZW5kZWRcIikgfHwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNRURJQSwgXCJlbmRlZFwiKTtcbiAgY29uc3Qgc3JjRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFZFLCBcInNyY1wiKSB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1FRElBLCBcInNyY1wiKTtcblxuICBjb25zdCBzZXNzaW9ucyA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIFZpZGVvU3RhdGU+KCk7XG4gIGNvbnN0IGF0dGFjaGluZyA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIFByb21pc2U8VmlkZW9TdGF0ZSB8IG51bGw+PigpO1xuICBjb25zdCBsYXN0U25hcHNob3QgPSBuZXcgV2Vha01hcDxIVE1MVmlkZW9FbGVtZW50LCBPZmZzY3JlZW5DYW52YXM+KCk7XG4gIGNvbnN0IGNhY2hlcyA9IG5ldyBNYXA8c3RyaW5nLCBWaWRlb0NhY2hlPigpO1xuICBsZXQgY3Vyck1zID0gMDtcbiAgbGV0IGxhc3RNcyA9IDA7XG5cbiAgZnVuY3Rpb24gZ2V0Q2FjaGUoaWQ6IHN0cmluZyk6IFZpZGVvQ2FjaGUge1xuICAgIGxldCBjID0gY2FjaGVzLmdldChpZCk7XG4gICAgaWYgKCFjKSB7XG4gICAgICBjID0geyBiaXRtYXBzOiBuZXcgTWFwKCksIGluRmxpZ2h0OiBuZXcgTWFwKCksIHJlYWRlcnM6IG5ldyBNYXAoKSB9O1xuICAgICAgY2FjaGVzLnNldChpZCwgYyk7XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9XG5cbiAgZnVuY3Rpb24gZmV0Y2hCaXRtYXAoc3RhdGU6IFZpZGVvU3RhdGUsIGlkeDogbnVtYmVyKTogUHJvbWlzZTxJbWFnZUJpdG1hcCB8IG51bGw+IHtcbiAgICBjb25zdCBjID0gZ2V0Q2FjaGUoc3RhdGUubWV0YSEuaWQpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYy5pbkZsaWdodC5nZXQoaWR4KTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgICBjb25zdCBjYWNoZWQgPSBjLmJpdG1hcHMuZ2V0KGlkeCk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWNoZWQpO1xuICAgIGNvbnN0IHAgPSBmZXRjaChTQ0hFTUUgKyBcImZyYW1lP2lkPVwiICsgc3RhdGUubWV0YSEuaWQgKyBcIiZpZHg9XCIgKyBpZHgpXG4gICAgICAudGhlbigocikgPT4gKHIub2sgPyByLmJsb2IoKSA6IG51bGwpKVxuICAgICAgLnRoZW4oKGIpID0+IChiID8gY3JlYXRlSW1hZ2VCaXRtYXAoYikgOiBudWxsKSlcbiAgICAgIC50aGVuKChibSkgPT4ge1xuICAgICAgICBjLmluRmxpZ2h0LmRlbGV0ZShpZHgpO1xuICAgICAgICBpZiAoYm0pIGMuYml0bWFwcy5zZXQoaWR4LCBibSk7XG4gICAgICAgIHJldHVybiBibTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBjLmluRmxpZ2h0LmRlbGV0ZShpZHgpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIGMuaW5GbGlnaHQuc2V0KGlkeCwgcCk7XG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICBmdW5jdGlvbiBlbnN1cmVQcmVmZXRjaGVkKHN0YXRlOiBWaWRlb1N0YXRlLCBmcm9tSWR4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpIHtcbiAgICBjb25zdCBtYXhJZHggPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHN0YXRlLm1ldGEhLmR1cmF0aW9uICogc3RhdGUubWV0YSEuZnBzKSk7XG4gICAgZm9yIChsZXQgaSA9IGZyb21JZHg7IGkgPCBmcm9tSWR4ICsgY291bnQ7IGkrKykge1xuICAgICAgaWYgKGkgPCAxIHx8IGkgPiBtYXhJZHgpIGNvbnRpbnVlO1xuICAgICAgZmV0Y2hCaXRtYXAoc3RhdGUsIGkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGV2aWN0T2xkKGM6IFZpZGVvQ2FjaGUpIHtcbiAgICBsZXQgbWluSWR4ID0gSW5maW5pdHk7XG4gICAgYy5yZWFkZXJzLmZvckVhY2goKGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA8IG1pbklkeCkgbWluSWR4ID0gaWR4O1xuICAgIH0pO1xuICAgIGlmICghaXNGaW5pdGUobWluSWR4KSkgcmV0dXJuO1xuICAgIGNvbnN0IGZsb29yID0gbWluSWR4IC0gMjtcbiAgICBjLmJpdG1hcHMuZm9yRWFjaCgoYm0sIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA8IGZsb29yKSB7XG4gICAgICAgIGJtLmNsb3NlKCk7XG4gICAgICAgIGMuYml0bWFwcy5kZWxldGUoaWR4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc0Nhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcy5yZXBsYWNlKC9bQS1aXS9nLCAoYykgPT4gXCItXCIgKyBjLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gc3luY092ZXJsYXkodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGN2OiBIVE1MQ2FudmFzRWxlbWVudCkge1xuICAgIGNvbnN0IGNzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodmlkZW8pO1xuICAgIGNvbnN0IG9mZnNldFBhcmVudCA9ICh2aWRlby5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsKSB8fCBkb2N1bWVudC5ib2R5O1xuICAgIGNvbnN0IHZyID0gdmlkZW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcHIgPSBvZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY3Yuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgY3Yuc3R5bGUubGVmdCA9IHZyLmxlZnQgLSBwci5sZWZ0ICsgXCJweFwiO1xuICAgIGN2LnN0eWxlLnRvcCA9IHZyLnRvcCAtIHByLnRvcCArIFwicHhcIjtcbiAgICBjdi5zdHlsZS53aWR0aCA9IHZyLndpZHRoICsgXCJweFwiO1xuICAgIGN2LnN0eWxlLmhlaWdodCA9IHZyLmhlaWdodCArIFwicHhcIjtcbiAgICBmb3IgKGNvbnN0IHAgb2YgTUlSUk9SX1BST1BTKSB7XG4gICAgICBpZiAocCA9PT0gXCJwb3NpdGlvblwiIHx8IHAgPT09IFwibGVmdFwiIHx8IHAgPT09IFwidG9wXCIgfHwgcCA9PT0gXCJyaWdodFwiIHx8IHAgPT09IFwiYm90dG9tXCIpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgdiA9IGNzLmdldFByb3BlcnR5VmFsdWUoY3NzQ2FzZShwKSk7XG4gICAgICBpZiAodikgY3Yuc3R5bGUuc2V0UHJvcGVydHkoY3NzQ2FzZShwKSwgdik7XG4gICAgfVxuICAgIGNvbnN0IGRwciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gICAgY29uc3QgdyA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQodnIud2lkdGggKiBkcHIpKTtcbiAgICBjb25zdCBoID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh2ci5oZWlnaHQgKiBkcHIpKTtcbiAgICBpZiAoY3Yud2lkdGggIT09IHcpIGN2LndpZHRoID0gdztcbiAgICBpZiAoY3YuaGVpZ2h0ICE9PSBoKSBjdi5oZWlnaHQgPSBoO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0dXBDYW52YXModmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiBIVE1MQ2FudmFzRWxlbWVudCB7XG4gICAgY29uc3QgY3YgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGN2LmRhdGFzZXRbXCJwdXBWaWRlb092ZXJsYXlcIl0gPSBcIjFcIjtcbiAgICBjdi5zdHlsZS5wb2ludGVyRXZlbnRzID0gXCJub25lXCI7XG4gICAgdmlkZW8uc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgdmlkZW8ubXV0ZWQgPSB0cnVlO1xuICAgIGNvbnN0IHBhcmVudCA9IHZpZGVvLnBhcmVudE5vZGUgfHwgZG9jdW1lbnQuYm9keTtcbiAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGN2LCB2aWRlby5uZXh0U2libGluZyk7XG4gICAgc3luY092ZXJsYXkodmlkZW8sIGN2KTtcbiAgICBjb25zdCBzbmFwID0gbGFzdFNuYXBzaG90LmdldCh2aWRlbyk7XG4gICAgaWYgKHNuYXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGN2LmdldENvbnRleHQoXCIyZFwiKSEuZHJhd0ltYWdlKHNuYXAsIDAsIDAsIGN2LndpZHRoLCBjdi5oZWlnaHQpO1xuICAgICAgfSBjYXRjaCB7fVxuICAgIH1cbiAgICByZXR1cm4gY3Y7XG4gIH1cblxuICBmdW5jdGlvbiBmaXRSZWN0KHNyY1c6IG51bWJlciwgc3JjSDogbnVtYmVyLCBkc3RXOiBudW1iZXIsIGRzdEg6IG51bWJlciwgZml0OiBzdHJpbmcpOiBWZWM0IHtcbiAgICBpZiAoZml0ID09PSBcIm5vbmVcIikgcmV0dXJuIFsoZHN0VyAtIHNyY1cpIC8gMiwgKGRzdEggLSBzcmNIKSAvIDIsIHNyY1csIHNyY0hdO1xuICAgIGlmIChmaXQgPT09IFwiY29udGFpblwiIHx8IGZpdCA9PT0gXCJzY2FsZS1kb3duXCIpIHtcbiAgICAgIGNvbnN0IHNjID0gTWF0aC5taW4oZHN0VyAvIHNyY1csIGRzdEggLyBzcmNIKTtcbiAgICAgIGNvbnN0IGsgPSBmaXQgPT09IFwic2NhbGUtZG93blwiID8gTWF0aC5taW4oMSwgc2MpIDogc2M7XG4gICAgICBjb25zdCB3cyA9IGsgKiBzcmNXO1xuICAgICAgY29uc3QgaHMgPSBrICogc3JjSDtcbiAgICAgIHJldHVybiBbKGRzdFcgLSB3cykgLyAyLCAoZHN0SCAtIGhzKSAvIDIsIHdzLCBoc107XG4gICAgfVxuICAgIGlmIChmaXQgPT09IFwiY292ZXJcIikge1xuICAgICAgY29uc3Qgc2MyID0gTWF0aC5tYXgoZHN0VyAvIHNyY1csIGRzdEggLyBzcmNIKTtcbiAgICAgIGNvbnN0IHdzMiA9IHNjMiAqIHNyY1c7XG4gICAgICBjb25zdCBoczIgPSBzYzIgKiBzcmNIO1xuICAgICAgcmV0dXJuIFsoZHN0VyAtIHdzMikgLyAyLCAoZHN0SCAtIGhzMikgLyAyLCB3czIsIGhzMl07XG4gICAgfVxuICAgIHJldHVybiBbMCwgMCwgZHN0VywgZHN0SF07XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkb0F0dGFjaCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUsIHNyYzogc3RyaW5nLCBiaXJ0aE1zOiBudW1iZXIpOiBQcm9taXNlPFZpZGVvU3RhdGUgfCBudWxsPiB7XG4gICAgY29uc3QgZnBzID0gTnVtYmVyLnBhcnNlSW50KHZpZGVvLmRhdGFzZXRbXCJwdXBGcHNcIl0gfHwgXCIzMFwiLCAxMCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goU0NIRU1FICsgXCJvcGVuP3NyYz1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzcmMpICsgXCImZnBzPVwiICsgZnBzKTtcbiAgICBpZiAoc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHJldHVybiBudWxsO1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICBzdGF0ZS5kZWFkID0gdHJ1ZTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBtZXRhID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFZpZGVvTWV0YTtcbiAgICBpZiAoc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHJldHVybiBudWxsO1xuICAgIHN0YXRlLm1ldGEgPSBtZXRhO1xuICAgIHN0YXRlLmN1cnJlbnRUaW1lID0gc3RhdGUucGF1c2VkID8gMCA6IE1hdGgubWF4KDAsIChjdXJyTXMgLSBiaXJ0aE1zKSAvIDEwMDApO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aWRlbywgXCJ2aWRlb1dpZHRoXCIsIHsgdmFsdWU6IG1ldGEud2lkdGgsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlkZW8sIFwidmlkZW9IZWlnaHRcIiwgeyB2YWx1ZTogbWV0YS5oZWlnaHQsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlkZW8sIFwiZHVyYXRpb25cIiwgeyB2YWx1ZTogbWV0YS5kdXJhdGlvbiwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aWRlbywgXCJyZWFkeVN0YXRlXCIsIHsgdmFsdWU6IDQsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBbXCJsb2Fkc3RhcnRcIiwgXCJkdXJhdGlvbmNoYW5nZVwiLCBcImxvYWRlZG1ldGFkYXRhXCIsIFwibG9hZGVkZGF0YVwiLCBcImNhbnBsYXlcIiwgXCJjYW5wbGF5dGhyb3VnaFwiXS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICB2aWRlby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChlKSk7XG4gICAgfSk7XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQpIHtcbiAgICAgIHZpZGVvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwicGxheVwiKSk7XG4gICAgICB2aWRlby5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcInBsYXlpbmdcIikpO1xuICAgIH1cbiAgICBlbnN1cmVQcmVmZXRjaGVkKHN0YXRlLCAxLCBBSEVBRCk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgZnVuY3Rpb24gYXR0YWNoKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogUHJvbWlzZTxWaWRlb1N0YXRlIHwgbnVsbD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gc2Vzc2lvbnMuZ2V0KHZpZGVvKTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBQcm9taXNlLnJlc29sdmUoZXhpc3RpbmcpO1xuICAgIGNvbnN0IHBlbmRpbmcgPSBhdHRhY2hpbmcuZ2V0KHZpZGVvKTtcbiAgICBpZiAocGVuZGluZykgcmV0dXJuIHBlbmRpbmc7XG4gICAgY29uc3Qgc3JjID0gdmlkZW8uc3JjIHx8IHZpZGVvLmN1cnJlbnRTcmM7XG4gICAgaWYgKCFzcmMpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgaWYgKC9eKGJsb2I6fGRhdGE6fG1lZGlhc3RyZWFtOikvaS50ZXN0KHNyYykpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgY29uc3QgY3YgPSBzZXR1cENhbnZhcyh2aWRlbyk7XG4gICAgY29uc3QgYmlydGhNcyA9IGN1cnJNcztcbiAgICBjb25zdCBzdGF0ZTogVmlkZW9TdGF0ZSA9IHtcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgICBjdixcbiAgICAgIGN0eDogY3YuZ2V0Q29udGV4dChcIjJkXCIpISxcbiAgICAgIHBhdXNlZDogISh2aWRlby5hdXRvcGxheSB8fCAhdmlkZW8ucGF1c2VkKSxcbiAgICAgIGN1cnJlbnRUaW1lOiAwLFxuICAgICAgZW5kZWQ6IGZhbHNlLFxuICAgICAgbGFzdERyYXduSWR4OiAtMSxcbiAgICAgIGRlYWQ6IGZhbHNlLFxuICAgICAgb2JqZWN0Rml0OiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh2aWRlbykub2JqZWN0Rml0IHx8IFwiZmlsbFwiLFxuICAgIH07XG4gICAgc2Vzc2lvbnMuc2V0KHZpZGVvLCBzdGF0ZSk7XG4gICAgY29uc3QgcCA9IGRvQXR0YWNoKHZpZGVvLCBzdGF0ZSwgc3JjLCBiaXJ0aE1zKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGF0dGFjaGluZy5kZWxldGUodmlkZW8pO1xuICAgIH0pO1xuICAgIGF0dGFjaGluZy5zZXQodmlkZW8sIHApO1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgZnVuY3Rpb24gZGV0YWNoKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgY29uc3Qgc3RhdGUgPSBzZXNzaW9ucy5nZXQodmlkZW8pO1xuICAgIGlmICghc3RhdGUpIHJldHVybjtcbiAgICBpZiAoc3RhdGUubWV0YSkge1xuICAgICAgaWYgKHN0YXRlLmxhc3REcmF3bklkeCA+PSAwKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgc25hcCA9IG5ldyBPZmZzY3JlZW5DYW52YXMoc3RhdGUuY3Yud2lkdGgsIHN0YXRlLmN2LmhlaWdodCk7XG4gICAgICAgICAgc25hcC5nZXRDb250ZXh0KFwiMmRcIikhLmRyYXdJbWFnZShzdGF0ZS5jdiwgMCwgMCk7XG4gICAgICAgICAgbGFzdFNuYXBzaG90LnNldCh2aWRlbywgc25hcCk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICAgIGNvbnN0IGMgPSBjYWNoZXMuZ2V0KHN0YXRlLm1ldGEuaWQpO1xuICAgICAgaWYgKGMpIHtcbiAgICAgICAgYy5yZWFkZXJzLmRlbGV0ZShzdGF0ZSk7XG4gICAgICAgIGlmIChjLnJlYWRlcnMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgIGMuYml0bWFwcy5mb3JFYWNoKChibSkgPT4gYm0uY2xvc2UoKSk7XG4gICAgICAgICAgY2FjaGVzLmRlbGV0ZShzdGF0ZS5tZXRhLmlkKTtcbiAgICAgICAgICBmZXRjaChTQ0hFTUUgKyBcImNsb3NlP2lkPVwiICsgc3RhdGUubWV0YS5pZCwgeyBrZWVwYWxpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgc3RhdGUuY3YucmVtb3ZlKCk7XG4gICAgc2Vzc2lvbnMuZGVsZXRlKHZpZGVvKTtcbiAgICBhdHRhY2hpbmcuZGVsZXRlKHZpZGVvKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3VtZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUpIHtcbiAgICBpZiAoIXN0YXRlLnBhdXNlZCAmJiAhc3RhdGUuZW5kZWQpIHJldHVybjtcbiAgICBzdGF0ZS5wYXVzZWQgPSBmYWxzZTtcbiAgICBzdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHZpZGVvLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwicGxheVwiKSk7XG4gICAgdmlkZW8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJwbGF5aW5nXCIpKTtcbiAgfVxuXG4gIEhWRS5wbGF5ID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCB2aWRlbyA9IHRoaXM7XG4gICAgY29uc3Qgc3RhdGUgPSBzZXNzaW9ucy5nZXQodmlkZW8pO1xuICAgIGlmICghc3RhdGUpIHJldHVybiBhdHRhY2godmlkZW8pLnRoZW4oKHMpID0+IHsgaWYgKHMpIHJlc3VtZSh2aWRlbywgcyk7IH0pO1xuICAgIHJlc3VtZSh2aWRlbywgc3RhdGUpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfTtcbiAgSFZFLnBhdXNlID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICBvcmlnUGF1c2UuY2FsbCh0aGlzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQpIHtcbiAgICAgIHN0YXRlLnBhdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwicGF1c2VcIikpO1xuICAgIH1cbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgXCJwYXVzZWRcIiwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICAgIHJldHVybiBzID8gcy5wYXVzZWQgOiBwYXVzZWREZXNjIS5nZXQhLmNhbGwodGhpcyk7XG4gICAgfSxcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIFwiZW5kZWRcIiwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICAgIHJldHVybiBzID8gcy5lbmRlZCA6IGVuZGVkRGVzYyEuZ2V0IS5jYWxsKHRoaXMpO1xuICAgIH0sXG4gIH0pO1xuICBpZiAoY3REZXNjKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgXCJjdXJyZW50VGltZVwiLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgICAgICByZXR1cm4gcyA/IHMuY3VycmVudFRpbWUgOiBjdERlc2MuZ2V0IS5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCB0OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgY3REZXNjLnNldCEuY2FsbCh0aGlzLCB0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcy5jdXJyZW50VGltZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKHQsIHMubWV0YSEuZHVyYXRpb24pKTtcbiAgICAgICAgaWYgKHMuY3VycmVudFRpbWUgPCBzLm1ldGEhLmR1cmF0aW9uKSBzLmVuZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJzZWVraW5nXCIpKTtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcInNlZWtlZFwiKSk7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJ0aW1ldXBkYXRlXCIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvblNyY0NoYW5nZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGNvbnN0IHNyYyA9IHZpZGVvLnNyYyB8fCB2aWRlby5jdXJyZW50U3JjIHx8IFwiXCI7XG4gICAgaWYgKHZpZGVvLl9fcHVwTGFzdFNyYyA9PT0gc3JjKSByZXR1cm47XG4gICAgdmlkZW8uX19wdXBMYXN0U3JjID0gc3JjO1xuICAgIGlmIChzZXNzaW9ucy5oYXModmlkZW8pKSBkZXRhY2godmlkZW8pO1xuICAgIGF0dGFjaCh2aWRlbyk7XG4gIH1cbiAgZnVuY3Rpb24gc2Nhbihyb290OiBFbGVtZW50IHwgbnVsbCkge1xuICAgIGlmICghcm9vdCkgcmV0dXJuO1xuICAgIGlmIChyb290LnRhZ05hbWUgPT09IFwiVklERU9cIikgYXR0YWNoKHJvb3QgYXMgSFRNTFZpZGVvRWxlbWVudCk7XG4gICAgaWYgKHJvb3QucXVlcnlTZWxlY3RvckFsbCkgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKFwidmlkZW9cIikuZm9yRWFjaCgodikgPT4gYXR0YWNoKHYpKTtcbiAgfVxuICBzY2FuKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG4gIG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRzKSA9PiB7XG4gICAgZm9yIChjb25zdCBtIG9mIG11dHMpIHtcbiAgICAgIGlmIChtLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiICYmIG0udGFyZ2V0IGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCAmJiBtLmF0dHJpYnV0ZU5hbWUgPT09IFwic3JjXCIpIHtcbiAgICAgICAgb25TcmNDaGFuZ2UobS50YXJnZXQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIG0uYWRkZWROb2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgIGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCkgc2NhbihuKTtcbiAgICAgIH0pO1xuICAgICAgbS5yZW1vdmVkTm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICBpZiAobiBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIGRldGFjaChuKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSkub2JzZXJ2ZShkb2N1bWVudCwgeyBzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogW1wic3JjXCJdIH0pO1xuXG4gIGlmIChzcmNEZXNjICYmIHNyY0Rlc2Muc2V0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgXCJzcmNcIiwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBzcmNEZXNjLmdldCxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCB2OiBzdHJpbmcpIHtcbiAgICAgICAgc3JjRGVzYy5zZXQhLmNhbGwodGhpcywgdik7XG4gICAgICAgIG9uU3JjQ2hhbmdlKHRoaXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBhaW50KHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSwgaWR4OiBudW1iZXIpIHtcbiAgICBjb25zdCBjID0gZ2V0Q2FjaGUoc3RhdGUubWV0YSEuaWQpO1xuICAgIGMucmVhZGVycy5zZXQoc3RhdGUsIGlkeCk7XG4gICAgbGV0IGJtID0gYy5iaXRtYXBzLmdldChpZHgpO1xuICAgIGlmICghYm0pIHtcbiAgICAgIGVuc3VyZVByZWZldGNoZWQoc3RhdGUsIGlkeCArIDEsIEFIRUFEIC0gMSk7XG4gICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgZmV0Y2hCaXRtYXAoc3RhdGUsIGlkeCk7XG4gICAgICBpZiAoc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHJldHVybjtcbiAgICAgIGlmICghZmV0Y2hlZCkgcmV0dXJuO1xuICAgICAgYm0gPSBmZXRjaGVkO1xuICAgIH1cbiAgICBjb25zdCBjdiA9IHN0YXRlLmN2O1xuICAgIGNvbnN0IHIgPSBmaXRSZWN0KGJtLndpZHRoLCBibS5oZWlnaHQsIGN2LndpZHRoLCBjdi5oZWlnaHQsIHN0YXRlLm9iamVjdEZpdCk7XG4gICAgc3RhdGUuY3R4LmNsZWFyUmVjdCgwLCAwLCBjdi53aWR0aCwgY3YuaGVpZ2h0KTtcbiAgICBzdGF0ZS5jdHguZHJhd0ltYWdlKGJtLCByWzBdLCByWzFdLCByWzJdLCByWzNdKTtcbiAgICBzdGF0ZS5sYXN0RHJhd25JZHggPSBpZHg7XG4gICAgZW5zdXJlUHJlZmV0Y2hlZChzdGF0ZSwgaWR4ICsgMSwgQUhFQUQpO1xuICAgIGV2aWN0T2xkKGMpO1xuICB9XG5cbiAgZnVuY3Rpb24gYWR2YW5jZSh0aW1lc3RhbXBNczogbnVtYmVyKSB7XG4gICAgbGFzdE1zID0gY3Vyck1zO1xuICAgIGN1cnJNcyA9IHRpbWVzdGFtcE1zO1xuICAgIGNvbnN0IGR0ID0gTWF0aC5tYXgoMCwgY3Vyck1zIC0gbGFzdE1zKSAvIDEwMDA7XG4gICAgdm9pZCBsYXN0TXM7XG4gICAgY29uc3QgcHM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ2aWRlb1wiKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHNlc3Npb25zLmdldCh2IGFzIEhUTUxWaWRlb0VsZW1lbnQpO1xuICAgICAgaWYgKCFzdGF0ZSB8fCBzdGF0ZS5kZWFkKSByZXR1cm47XG4gICAgICBzeW5jT3ZlcmxheSh2IGFzIEhUTUxWaWRlb0VsZW1lbnQsIHN0YXRlLmN2KTtcbiAgICAgIGlmICghc3RhdGUubWV0YSkgcmV0dXJuO1xuICAgICAgaWYgKCFzdGF0ZS5wYXVzZWQgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICAgIHN0YXRlLmN1cnJlbnRUaW1lICs9IGR0ICogKCh2IGFzIEhUTUxWaWRlb0VsZW1lbnQpLnBsYXliYWNrUmF0ZSB8fCAxKTtcbiAgICAgICAgaWYgKHN0YXRlLmN1cnJlbnRUaW1lID49IHN0YXRlLm1ldGEuZHVyYXRpb24pIHtcbiAgICAgICAgICBpZiAoKHYgYXMgSFRNTFZpZGVvRWxlbWVudCkubG9vcCkge1xuICAgICAgICAgICAgc3RhdGUuY3VycmVudFRpbWUgPSBzdGF0ZS5jdXJyZW50VGltZSAlIHN0YXRlLm1ldGEuZHVyYXRpb247XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRUaW1lID0gc3RhdGUubWV0YS5kdXJhdGlvbjtcbiAgICAgICAgICAgIHN0YXRlLnBhdXNlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgICAgICAgICB2LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwiZW5kZWRcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwidGltZXVwZGF0ZVwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGlkeCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQoc3RhdGUuY3VycmVudFRpbWUgKiBzdGF0ZS5tZXRhLmZwcykpO1xuICAgICAgaWYgKGlkeCA9PT0gc3RhdGUubGFzdERyYXduSWR4KSByZXR1cm47XG4gICAgICBwcy5wdXNoKHBhaW50KHYgYXMgSFRNTFZpZGVvRWxlbWVudCwgc3RhdGUsIGlkeCkpO1xuICAgIH0pO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChwcyk7XG4gIH1cblxuICB3aW5kb3cuX19wdXBfdmlkZW9fXyA9IHsgYWR2YW5jZSB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBMdSBBbyAobHVhb0BiaWxpYmlsaS5jb20pIG9uIDIwMjYvMDUvMjYuXG5cbmltcG9ydCB7IGluc3RhbGxUaWNrSG9vayB9IGZyb20gXCIuL3J1bnRpbWUvaWZyYW1lX2hvb2tcIjtcbmltcG9ydCB7IGluc3RhbGxWaWRlb0hvb2sgfSBmcm9tIFwiLi9ydW50aW1lL2lmcmFtZV92aWRlb19ob29rXCI7XG5cbmlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkge1xuICBpbnN0YWxsVGlja0hvb2soKTtcbiAgaW5zdGFsbFZpZGVvSG9vaygpO1xufVxuIl19