react-install-command
Version:
A React component for rendering a 'npm install package-name' command block. Supports multiple package managers and themes. Drop it into your MDX code, a ShadCN UI component, a Tailwind codebase, use built-in styles or go unstyled. You choose.
3 lines • 177 kB
JavaScript
"use client";
"use strict";var Gt=Object.create;var _=Object.defineProperty;var Vt=Object.getOwnPropertyDescriptor;var _t=Object.getOwnPropertyNames;var Wt=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var Qt=(t,e)=>{for(var o in e)_(t,o,{get:e[o],enumerable:!0})},rt=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of _t(e))!Ht.call(t,n)&&n!==o&&_(t,n,{get:()=>e[n],enumerable:!(i=Vt(e,n))||i.enumerable});return t};var Ut=(t,e,o)=>(o=t!=null?Gt(Wt(t)):{},rt(e||!t||!t.__esModule?_(o,"default",{value:t,enumerable:!0}):o,t)),qt=t=>rt(_({},"__esModule",{value:!0}),t);var Xe={};Qt(Xe,{InstallCommand:()=>Ot,cn:()=>k,defaultManagers:()=>ot});module.exports=qt(Xe);var C=require("react"),bt=Object.freeze({left:0,top:0,width:16,height:16}),Q=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),Z=Object.freeze({...bt,...Q}),J=Object.freeze({...Z,body:"",hidden:!1});function zt(t,e){let o={};!t.hFlip!=!e.hFlip&&(o.hFlip=!0),!t.vFlip!=!e.vFlip&&(o.vFlip=!0);let i=((t.rotate||0)+(e.rotate||0))%4;return i&&(o.rotate=i),o}function st(t,e){let o=zt(t,e);for(let i in J)i in Q?i in t&&!(i in o)&&(o[i]=Q[i]):i in e?o[i]=e[i]:i in t&&(o[i]=t[i]);return o}function Jt(t,e){let o=t.icons,i=t.aliases||Object.create(null),n=Object.create(null);function r(s){if(o[s])return n[s]=[];if(!(s in n)){n[s]=null;let c=i[s]&&i[s].parent,a=c&&r(c);a&&(n[s]=[c].concat(a))}return n[s]}return Object.keys(o).concat(Object.keys(i)).forEach(r),n}function Xt(t,e,o){let i=t.icons,n=t.aliases||Object.create(null),r={};function s(c){r=st(i[c]||n[c],r)}return s(e),o.forEach(s),st(t,r)}function yt(t,e){let o=[];if(typeof t!="object"||typeof t.icons!="object")return o;t.not_found instanceof Array&&t.not_found.forEach(n=>{e(n,null),o.push(n)});let i=Jt(t);for(let n in i){let r=i[n];r&&(e(n,Xt(t,n,r)),o.push(n))}return o}var Yt={provider:"",aliases:{},not_found:{},...bt};function q(t,e){for(let o in e)if(o in t&&typeof t[o]!=typeof e[o])return!1;return!0}function xt(t){if(typeof t!="object"||t===null)return null;let e=t;if(typeof e.prefix!="string"||!t.icons||typeof t.icons!="object"||!q(t,Yt))return null;let o=e.icons;for(let n in o){let r=o[n];if(!n||typeof r.body!="string"||!q(r,J))return null}let i=e.aliases||Object.create(null);for(let n in i){let r=i[n],s=r.parent;if(!n||typeof s!="string"||!o[s]&&!i[s]||!q(r,J))return null}return e}var vt=/^[a-z0-9]+(-[a-z0-9]+)*$/,U=(t,e,o,i="")=>{let n=t.split(":");if(t.slice(0,1)==="@"){if(n.length<2||n.length>3)return null;i=n.shift().slice(1)}if(n.length>3||!n.length)return null;if(n.length>1){let c=n.pop(),a=n.pop(),l={provider:n.length>0?n[0]:i,prefix:a,name:c};return e&&!W(l)?null:l}let r=n[0],s=r.split("-");if(s.length>1){let c={provider:i,prefix:s.shift(),name:s.join("-")};return e&&!W(c)?null:c}if(o&&i===""){let c={provider:i,prefix:"",name:r};return e&&!W(c,o)?null:c}return null},W=(t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1,ct=Object.create(null);function Kt(t,e){return{provider:t,prefix:e,icons:Object.create(null),missing:new Set}}function L(t,e){let o=ct[t]||(ct[t]=Object.create(null));return o[e]||(o[e]=Kt(t,e))}function It(t,e){return xt(e)?yt(e,(o,i)=>{i?t.icons[o]=i:t.missing.add(o)}):[]}function Zt(t,e,o){try{if(typeof o.body=="string")return t.icons[e]={...o},!0}catch{}return!1}var V=!1;function St(t){return typeof t=="boolean"&&(V=t),V}function at(t){let e=typeof t=="string"?U(t,!0,V):t;if(e){let o=L(e.provider,e.prefix),i=e.name;return o.icons[i]||(o.missing.has(i)?null:void 0)}}function te(t,e){let o=U(t,!0,V);if(!o)return!1;let i=L(o.provider,o.prefix);return e?Zt(i,o.name,e):(i.missing.add(o.name),!0)}function ee(t,e){if(typeof t!="object")return!1;if(typeof e!="string"&&(e=t.provider||""),V&&!e&&!t.prefix){let n=!1;return xt(t)&&(t.prefix="",yt(t,(r,s)=>{te(r,s)&&(n=!0)})),n}let o=t.prefix;if(!W({provider:e,prefix:o,name:"a"}))return!1;let i=L(e,o);return!!It(i,t)}var Pt=Object.freeze({width:null,height:null}),kt=Object.freeze({...Pt,...Q}),ne=/(-?[0-9.]*[0-9]+[0-9.]*)/g,oe=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function lt(t,e,o){if(e===1)return t;if(o=o||100,typeof t=="number")return Math.ceil(t*e*o)/o;if(typeof t!="string")return t;let i=t.split(ne);if(i===null||!i.length)return t;let n=[],r=i.shift(),s=oe.test(r);for(;;){if(s){let c=parseFloat(r);isNaN(c)?n.push(r):n.push(Math.ceil(c*e*o)/o)}else n.push(r);if(r=i.shift(),r===void 0)return n.join("");s=!s}}function ie(t,e="defs"){let o="",i=t.indexOf("<"+e);for(;i>=0;){let n=t.indexOf(">",i),r=t.indexOf("</"+e);if(n===-1||r===-1)break;let s=t.indexOf(">",r);if(s===-1)break;o+=t.slice(n+1,r).trim(),t=t.slice(0,i).trim()+t.slice(s+1)}return{defs:o,content:t}}function re(t,e){return t?"<defs>"+t+"</defs>"+e:e}function se(t,e,o){let i=ie(t);return re(i.defs,e+i.content+o)}var ce=t=>t==="unset"||t==="undefined"||t==="none";function ae(t,e){let o={...Z,...t},i={...kt,...e},n={left:o.left,top:o.top,width:o.width,height:o.height},r=o.body;[o,i].forEach(I=>{let p=[],d=I.hFlip,j=I.vFlip,v=I.rotate;d?j?v+=2:(p.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),p.push("scale(-1 1)"),n.top=n.left=0):j&&(p.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),p.push("scale(1 -1)"),n.top=n.left=0);let S;switch(v<0&&(v-=Math.floor(v/4)*4),v=v%4,v){case 1:S=n.height/2+n.top,p.unshift("rotate(90 "+S.toString()+" "+S.toString()+")");break;case 2:p.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:S=n.width/2+n.left,p.unshift("rotate(-90 "+S.toString()+" "+S.toString()+")");break}v%2===1&&(n.left!==n.top&&(S=n.left,n.left=n.top,n.top=S),n.width!==n.height&&(S=n.width,n.width=n.height,n.height=S)),p.length&&(r=se(r,'<g transform="'+p.join(" ")+'">',"</g>"))});let s=i.width,c=i.height,a=n.width,l=n.height,f,g;s===null?(g=c===null?"1em":c==="auto"?l:c,f=lt(g,a/l)):(f=s==="auto"?a:s,g=c===null?lt(f,l/a):c==="auto"?l:c);let u={},m=(I,p)=>{ce(p)||(u[I]=p.toString())};m("width",f),m("height",g);let y=[n.left,n.top,a,l];return u.viewBox=y.join(" "),{attributes:u,viewBox:y,body:r}}var le=/\sid="(\S+)"/g,fe="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),ue=0;function de(t,e=fe){let o=[],i;for(;i=le.exec(t);)o.push(i[1]);if(!o.length)return t;let n="suffix"+(Math.random()*16777216|Date.now()).toString(16);return o.forEach(r=>{let s=typeof e=="function"?e(r):e+(ue++).toString(),c=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+c+')([")]|\\.[a-z])',"g"),"$1"+s+n+"$3")}),t=t.replace(new RegExp(n,"g"),""),t}var X=Object.create(null);function pe(t,e){X[t]=e}function Y(t){return X[t]||X[""]}function tt(t){let e;if(typeof t.resources=="string")e=[t.resources];else if(e=t.resources,!(e instanceof Array)||!e.length)return null;return{resources:e,path:t.path||"/",maxURL:t.maxURL||500,rotate:t.rotate||750,timeout:t.timeout||5e3,random:t.random===!0,index:t.index||0,dataAfterTimeout:t.dataAfterTimeout!==!1}}var et=Object.create(null),D=["https://api.simplesvg.com","https://api.unisvg.com"],H=[];for(;D.length>0;)D.length===1||Math.random()>.5?H.push(D.shift()):H.push(D.pop());et[""]=tt({resources:["https://api.iconify.design"].concat(H)});function ge(t,e){let o=tt(e);return o===null?!1:(et[t]=o,!0)}function nt(t){return et[t]}var he=()=>{let t;try{if(t=fetch,typeof t=="function")return t}catch{}},ft=he();function me(t,e){let o=nt(t);if(!o)return 0;let i;if(!o.maxURL)i=0;else{let n=0;o.resources.forEach(s=>{n=Math.max(n,s.length)});let r=e+".json?icons=";i=o.maxURL-n-o.path.length-r.length}return i}function be(t){return t===404}var ye=(t,e,o)=>{let i=[],n=me(t,e),r="icons",s={type:r,provider:t,prefix:e,icons:[]},c=0;return o.forEach((a,l)=>{c+=a.length+1,c>=n&&l>0&&(i.push(s),s={type:r,provider:t,prefix:e,icons:[]},c=a.length),s.icons.push(a)}),i.push(s),i};function xe(t){if(typeof t=="string"){let e=nt(t);if(e)return e.path}return"/"}var ve=(t,e,o)=>{if(!ft){o("abort",424);return}let i=xe(e.provider);switch(e.type){case"icons":{let r=e.prefix,c=e.icons.join(","),a=new URLSearchParams({icons:c});i+=r+".json?"+a.toString();break}case"custom":{let r=e.uri;i+=r.slice(0,1)==="/"?r.slice(1):r;break}default:o("abort",400);return}let n=503;ft(t+i).then(r=>{let s=r.status;if(s!==200){setTimeout(()=>{o(be(s)?"abort":"next",s)});return}return n=501,r.json()}).then(r=>{if(typeof r!="object"||r===null){setTimeout(()=>{r===404?o("abort",r):o("next",n)});return}setTimeout(()=>{o("success",r)})}).catch(()=>{o("next",n)})},Ie={prepare:ye,send:ve};function Se(t){let e={loaded:[],missing:[],pending:[]},o=Object.create(null);t.sort((n,r)=>n.provider!==r.provider?n.provider.localeCompare(r.provider):n.prefix!==r.prefix?n.prefix.localeCompare(r.prefix):n.name.localeCompare(r.name));let i={provider:"",prefix:"",name:""};return t.forEach(n=>{if(i.name===n.name&&i.prefix===n.prefix&&i.provider===n.provider)return;i=n;let r=n.provider,s=n.prefix,c=n.name,a=o[r]||(o[r]=Object.create(null)),l=a[s]||(a[s]=L(r,s)),f;c in l.icons?f=e.loaded:s===""||l.missing.has(c)?f=e.missing:f=e.pending;let g={provider:r,prefix:s,name:c};f.push(g)}),e}function wt(t,e){t.forEach(o=>{let i=o.loaderCallbacks;i&&(o.loaderCallbacks=i.filter(n=>n.id!==e))})}function Pe(t){t.pendingCallbacksFlag||(t.pendingCallbacksFlag=!0,setTimeout(()=>{t.pendingCallbacksFlag=!1;let e=t.loaderCallbacks?t.loaderCallbacks.slice(0):[];if(!e.length)return;let o=!1,i=t.provider,n=t.prefix;e.forEach(r=>{let s=r.icons,c=s.pending.length;s.pending=s.pending.filter(a=>{if(a.prefix!==n)return!0;let l=a.name;if(t.icons[l])s.loaded.push({provider:i,prefix:n,name:l});else if(t.missing.has(l))s.missing.push({provider:i,prefix:n,name:l});else return o=!0,!0;return!1}),s.pending.length!==c&&(o||wt([t],r.id),r.callback(s.loaded.slice(0),s.missing.slice(0),s.pending.slice(0),r.abort))})}))}var ke=0;function we(t,e,o){let i=ke++,n=wt.bind(null,o,i);if(!e.pending.length)return n;let r={id:i,icons:e,callback:t,abort:n};return o.forEach(s=>{(s.loaderCallbacks||(s.loaderCallbacks=[])).push(r)}),n}function Te(t,e=!0,o=!1){let i=[];return t.forEach(n=>{let r=typeof n=="string"?U(n,e,o):n;r&&i.push(r)}),i}var Ce={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function je(t,e,o,i){let n=t.resources.length,r=t.random?Math.floor(Math.random()*n):t.index,s;if(t.random){let h=t.resources.slice(0);for(s=[];h.length>1;){let T=Math.floor(Math.random()*h.length);s.push(h[T]),h=h.slice(0,T).concat(h.slice(T+1))}s=s.concat(h)}else s=t.resources.slice(r).concat(t.resources.slice(0,r));let c=Date.now(),a="pending",l=0,f,g=null,u=[],m=[];typeof i=="function"&&m.push(i);function y(){g&&(clearTimeout(g),g=null)}function I(){a==="pending"&&(a="aborted"),y(),u.forEach(h=>{h.status==="pending"&&(h.status="aborted")}),u=[]}function p(h,T){T&&(m=[]),typeof h=="function"&&m.push(h)}function d(){return{startTime:c,payload:e,status:a,queriesSent:l,queriesPending:u.length,subscribe:p,abort:I}}function j(){a="failed",m.forEach(h=>{h(void 0,f)})}function v(){u.forEach(h=>{h.status==="pending"&&(h.status="aborted")}),u=[]}function S(h,T,N){let R=T!=="success";switch(u=u.filter(E=>E!==h),a){case"pending":break;case"failed":if(R||!t.dataAfterTimeout)return;break;default:return}if(T==="abort"){f=N,j();return}if(R){f=N,u.length||(s.length?M():j());return}if(y(),v(),!t.random){let E=t.resources.indexOf(h.resource);E!==-1&&E!==t.index&&(t.index=E)}a="completed",m.forEach(E=>{E(N)})}function M(){if(a!=="pending")return;y();let h=s.shift();if(h===void 0){if(u.length){g=setTimeout(()=>{y(),a==="pending"&&(v(),j())},t.timeout);return}j();return}let T={status:"pending",resource:h,callback:(N,R)=>{S(T,N,R)}};u.push(T),l++,g=setTimeout(M,t.rotate),o(h,e,T.callback)}return setTimeout(M),d}function Tt(t){let e={...Ce,...t},o=[];function i(){o=o.filter(c=>c().status==="pending")}function n(c,a,l){let f=je(e,c,a,(g,u)=>{i(),l&&l(g,u)});return o.push(f),f}function r(c){return o.find(a=>c(a))||null}return{query:n,find:r,setIndex:c=>{e.index=c},getIndex:()=>e.index,cleanup:i}}function ut(){}var z=Object.create(null);function Ee(t){if(!z[t]){let e=nt(t);if(!e)return;let o=Tt(e),i={config:e,redundancy:o};z[t]=i}return z[t]}function $e(t,e,o){let i,n;if(typeof t=="string"){let r=Y(t);if(!r)return o(void 0,424),ut;n=r.send;let s=Ee(t);s&&(i=s.redundancy)}else{let r=tt(t);if(r){i=Tt(r);let s=t.resources?t.resources[0]:"",c=Y(s);c&&(n=c.send)}}return!i||!n?(o(void 0,424),ut):i.query(e,n,o)().abort}function dt(){}function Oe(t){t.iconsLoaderFlag||(t.iconsLoaderFlag=!0,setTimeout(()=>{t.iconsLoaderFlag=!1,Pe(t)}))}function Me(t){let e=[],o=[];return t.forEach(i=>{(i.match(vt)?e:o).push(i)}),{valid:e,invalid:o}}function B(t,e,o){function i(){let n=t.pendingIcons;e.forEach(r=>{n&&n.delete(r),t.icons[r]||t.missing.add(r)})}if(o&&typeof o=="object")try{if(!It(t,o).length){i();return}}catch(n){console.error(n)}i(),Oe(t)}function pt(t,e){t instanceof Promise?t.then(o=>{e(o)}).catch(()=>{e(null)}):e(t)}function Ne(t,e){t.iconsToLoad?t.iconsToLoad=t.iconsToLoad.concat(e).sort():t.iconsToLoad=e,t.iconsQueueFlag||(t.iconsQueueFlag=!0,setTimeout(()=>{t.iconsQueueFlag=!1;let{provider:o,prefix:i}=t,n=t.iconsToLoad;if(delete t.iconsToLoad,!n||!n.length)return;let r=t.loadIcon;if(t.loadIcons&&(n.length>1||!r)){pt(t.loadIcons(n,i,o),f=>{B(t,n,f)});return}if(r){n.forEach(f=>{let g=r(f,i,o);pt(g,u=>{let m=u?{prefix:i,icons:{[f]:u}}:null;B(t,[f],m)})});return}let{valid:s,invalid:c}=Me(n);if(c.length&&B(t,c,null),!s.length)return;let a=i.match(vt)?Y(o):null;if(!a){B(t,s,null);return}a.prepare(o,i,s).forEach(f=>{$e(o,f,g=>{B(t,f.icons,g)})})}))}var Re=(t,e)=>{let o=Te(t,!0,St()),i=Se(o);if(!i.pending.length){let a=!0;return e&&setTimeout(()=>{a&&e(i.loaded,i.missing,i.pending,dt)}),()=>{a=!1}}let n=Object.create(null),r=[],s,c;return i.pending.forEach(a=>{let{provider:l,prefix:f}=a;if(f===c&&l===s)return;s=l,c=f,r.push(L(l,f));let g=n[l]||(n[l]=Object.create(null));g[f]||(g[f]=[])}),i.pending.forEach(a=>{let{provider:l,prefix:f,name:g}=a,u=L(l,f),m=u.pendingIcons||(u.pendingIcons=new Set);m.has(g)||(m.add(g),n[l][f].push(g))}),r.forEach(a=>{let l=n[a.provider][a.prefix];l.length&&Ne(a,l)}),e?we(e,i,r):dt};function Le(t,e){let o={...t};for(let i in e){let n=e[i],r=typeof n;i in Pt?(n===null||n&&(r==="string"||r==="number"))&&(o[i]=n):r===typeof o[i]&&(o[i]=i==="rotate"?n%4:n)}return o}var Ae=/[\s,]+/;function Fe(t,e){e.split(Ae).forEach(o=>{switch(o.trim()){case"horizontal":t.hFlip=!0;break;case"vertical":t.vFlip=!0;break}})}function De(t,e=0){let o=t.replace(/^-?[0-9.]*/,"");function i(n){for(;n<0;)n+=4;return n%4}if(o===""){let n=parseInt(t);return isNaN(n)?0:i(n)}else if(o!==t){let n=0;switch(o){case"%":n=25;break;case"deg":n=90}if(n){let r=parseFloat(t.slice(0,t.length-o.length));return isNaN(r)?0:(r=r/n,r%1===0?i(r):0)}}return e}function Be(t,e){let o=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let i in e)o+=" "+i+'="'+e[i]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+o+">"+t+"</svg>"}function Ge(t){return t.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/\s+/g," ")}function Ve(t){return"data:image/svg+xml,"+Ge(t)}function _e(t){return'url("'+Ve(t)+'")'}var G;function We(){try{G=window.trustedTypes.createPolicy("iconify",{createHTML:t=>t})}catch{G=null}}function He(t){return G===void 0&&We(),G?G.createHTML(t):t}var Ct={...kt,inline:!1},Qe={xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink","aria-hidden":!0,role:"img"},Ue={display:"inline-block"},K={backgroundColor:"currentColor"},jt={backgroundColor:"transparent"},gt={Image:"var(--svg)",Repeat:"no-repeat",Size:"100% 100%"},ht={WebkitMask:K,mask:K,background:jt};for(let t in ht){let e=ht[t];for(let o in gt)e[t+o]=gt[o]}var qe={...Ct,inline:!0};function mt(t){return t+(t.match(/^[-0-9.]+$/)?"px":"")}var ze=(t,e,o)=>{let i=e.inline?qe:Ct,n=Le(i,e),r=e.mode||"svg",s={},c=e.style||{},a={...r==="svg"?Qe:{}};if(o){let p=U(o,!1,!0);if(p){let d=["iconify"],j=["provider","prefix"];for(let v of j)p[v]&&d.push("iconify--"+p[v]);a.className=d.join(" ")}}for(let p in e){let d=e[p];if(d!==void 0)switch(p){case"icon":case"style":case"children":case"onLoad":case"mode":case"ssr":break;case"_ref":a.ref=d;break;case"className":a[p]=(a[p]?a[p]+" ":"")+d;break;case"inline":case"hFlip":case"vFlip":n[p]=d===!0||d==="true"||d===1;break;case"flip":typeof d=="string"&&Fe(n,d);break;case"color":s.color=d;break;case"rotate":typeof d=="string"?n[p]=De(d):typeof d=="number"&&(n[p]=d);break;case"ariaHidden":case"aria-hidden":d!==!0&&d!=="true"&&delete a["aria-hidden"];break;default:i[p]===void 0&&(a[p]=d)}}let l=ae(t,n),f=l.attributes;if(n.inline&&(s.verticalAlign="-0.125em"),r==="svg"){a.style={...s,...c},Object.assign(a,f);let p=0,d=e.id;return typeof d=="string"&&(d=d.replace(/-/g,"_")),a.dangerouslySetInnerHTML={__html:He(de(l.body,d?()=>d+"ID"+p++:"iconifyReact"))},(0,C.createElement)("svg",a)}let{body:g,width:u,height:m}=t,y=r==="mask"||(r==="bg"?!1:g.indexOf("currentColor")!==-1),I=Be(g,{...f,width:u+"",height:m+""});return a.style={...s,"--svg":_e(I),width:mt(f.width),height:mt(f.height),...Ue,...y?K:jt,...c},(0,C.createElement)("span",a)};St(!0);pe("",Ie);if(typeof document<"u"&&typeof window<"u"){let t=window;if(t.IconifyPreload!==void 0){let e=t.IconifyPreload,o="Invalid IconifyPreload syntax.";typeof e=="object"&&e!==null&&(e instanceof Array?e:[e]).forEach(i=>{try{(typeof i!="object"||i===null||i instanceof Array||typeof i.icons!="object"||typeof i.prefix!="string"||!ee(i))&&console.error(o)}catch{console.error(o)}})}if(t.IconifyProviders!==void 0){let e=t.IconifyProviders;if(typeof e=="object"&&e!==null)for(let o in e){let i="IconifyProviders["+o+"] is invalid.";try{let n=e[o];if(typeof n!="object"||!n||n.resources===void 0)continue;ge(o,n)||console.error(i)}catch{console.error(i)}}}}function Et(t){let[e,o]=(0,C.useState)(!!t.ssr),[i,n]=(0,C.useState)({});function r(m){if(m){let y=t.icon;if(typeof y=="object")return{name:"",data:y};let I=at(y);if(I)return{name:y,data:I}}return{name:""}}let[s,c]=(0,C.useState)(r(!!t.ssr));function a(){let m=i.callback;m&&(m(),n({}))}function l(m){if(JSON.stringify(s)!==JSON.stringify(m))return a(),c(m),!0}function f(){var m;let y=t.icon;if(typeof y=="object"){l({name:"",data:y});return}let I=at(y);if(l({name:y,data:I}))if(I===void 0){let p=Re([y],f);n({callback:p})}else I&&((m=t.onLoad)===null||m===void 0||m.call(t,y))}(0,C.useEffect)(()=>(o(!0),a),[]),(0,C.useEffect)(()=>{e&&f()},[t.icon,e]);let{name:g,data:u}=s;return u?ze({...Z,...u},t,g):t.children?t.children:(0,C.createElement)("span",{})}var $=(0,C.forwardRef)((t,e)=>Et({...t,_ref:e})),Ze=(0,C.forwardRef)((t,e)=>Et({inline:!0,...t,_ref:e}));var A=Ut(require("react")),O=require("react"),b=require("react/jsx-runtime"),k=(...t)=>t.filter(Boolean).join(" "),$t=()=>(0,b.jsx)($,{icon:"lucide:copy",width:24,height:24,"aria-label":"Copy to clipboard"}),ot=[{id:"npm",name:"npm",icon:()=>(0,b.jsx)($,{icon:"logos:npm-icon",width:24,height:24,"aria-label":"npm package manager"}),getCommand:(t,e)=>{let{isDev:o,isPeer:i,isOptional:n,isGlobal:r,useShorthand:s,version:c,tag:a}=e,l=s?"i":"install",f=[o&&(s?"-D":"--save-dev"),i&&"--save-peer",n&&"--save-optional",r&&"-g"].filter(Boolean).join(" "),g=c?`${t}@${c}`:a?`${t}@${a}`:t;return`npm ${l}${f?` ${f}`:""} ${g}`}},{id:"yarn",name:"Yarn",icon:()=>(0,b.jsx)($,{icon:"logos:yarn",width:24,height:24,"aria-label":"Yarn package manager"}),getCommand:(t,e)=>{let{isDev:o,isPeer:i,isOptional:n,isGlobal:r,version:s,tag:c}=e,a=[r&&"global","add",o&&"--dev",i&&"--peer",n&&"--optional"].filter(Boolean).join(" "),l=s?`${t}@${s}`:c?`${t}@${c}`:t;return`yarn ${a} ${l}`}},{id:"pnpm",name:"pnpm",icon:()=>(0,b.jsx)($,{icon:"logos:pnpm",width:24,height:24,"aria-label":"pnpm package manager"}),getCommand:(t,e)=>{let{isDev:o,isPeer:i,isOptional:n,isGlobal:r,useShorthand:s,version:c,tag:a}=e,l=[r&&"-g",o&&"-D",i&&"-P",n&&"-O"].filter(Boolean).join(" "),f=c?`${t}@${c}`:a?`${t}@${a}`:t;return`pnpm add${l?` ${l}`:""} ${f}`}},{id:"bun",name:"Bun",icon:()=>(0,b.jsx)($,{icon:"logos:bun",width:24,height:24,"aria-label":"Bun package manager"}),getCommand:(t,e)=>{let{isDev:o,isPeer:i,isOptional:n,isGlobal:r,version:s,tag:c}=e,a=[r&&"-g",o&&"-d",i&&"--peer",n&&"--optional"].filter(Boolean).join(" "),l=s?`${t}@${s}`:c?`${t}@${c}`:t;return`bun add${a?` ${a}`:""} ${l}`}},{id:"deno",name:"Deno",icon:()=>(0,b.jsx)($,{icon:"logos:deno",width:24,height:24,"aria-label":"Deno package manager"}),getCommand:(t,e)=>{let{version:o,tag:i,registry:n}=e;return`deno add ${t.split(/\s+/).map(c=>c.startsWith("jsr:")||c.startsWith("npm:")?c:n?`${n}:${c}`:`npm:${c}`).map(c=>o?`${c}@${o}`:i?`${c}@${i}`:c).join(" ")}`}}],Je={root:({children:t,className:e})=>(0,b.jsx)("div",{className:k("install-block",e),children:t}),navigation:({children:t,className:e})=>(0,b.jsx)("div",{className:k("install-block-nav",e),children:t}),tab:({children:t,isSelected:e,onClick:o,className:i,slotClassNames:n})=>(0,b.jsxs)("button",{type:"button",onClick:o,"data-state":e?"active":"default",className:k("install-block-tab",i),children:[(0,b.jsx)("div",{className:"install-block-tab-content",children:A.default.Children.map(t,r=>{if(A.default.isValidElement(r)){if(r.type===$)return A.default.cloneElement(r,{className:k(r.props.className,n==null?void 0:n.tabIcon)});if(r.type==="span")return A.default.cloneElement(r,{className:k(r.props.className,n==null?void 0:n.tabText)})}return r})}),(0,b.jsx)("div",{className:k("install-block-tab-indicator",n==null?void 0:n.tabIndicator),"data-state":e?"active":"default"})]}),tabIndicator:({isSelected:t,className:e})=>(0,b.jsx)("div",{className:k("install-block-tab-indicator",e),"data-state":t?"active":"default"}),commandContainer:({children:t,className:e})=>(0,b.jsx)("div",{className:k("install-block-content",e),children:t}),commandPrefix:({className:t})=>(0,b.jsx)("span",{className:k("install-block-prefix",t),children:"$"}),commandText:({children:t,className:e,slotClassNames:o})=>{let n=String(t).split(/\s+/),r=n[0],s=n.slice(1).join(" ");return(0,b.jsxs)("code",{className:k("install-block-text",e),children:[(0,b.jsx)("span",{className:k("install-block-text-command",(o==null?void 0:o.commandTextCommand)||""),children:r}),s?` ${s}`:""]})},copyButton:({onClick:t,className:e})=>(0,b.jsx)("button",{type:"button",onClick:t,className:k("install-block-copy",e),"aria-label":"Copy command",children:$t()})},Ot=({packageName:t="",isDev:e=!1,isPeer:o=!1,isOptional:i=!1,isGlobal:n=!1,useShorthand:r=!1,version:s,tag:c,registry:a,managers:l=ot,customCommands:f,slots:g={},slotClassNames:u={},onCopy:m,onTabChange:y,theme:I="system",copyIcon:p=$t,classNameFn:d=k,commandPrefix:j="$",storageType:v="none",storageKey:S="preferred-package-manager"})=>{let M=(0,O.useCallback)(()=>{var x;if(v!=="none"){let P=(v==="local"?localStorage:sessionStorage).getItem(S);if(P&&l.some(F=>F.id===P))return P}if(f)for(let[w]of Object.entries(f)){let P=l.find(F=>F.id===w);if(P)return P.id}if(t){if(t.includes("jsr:")||a==="jsr"){let P=l.find(F=>F.id==="deno");if(P)return P.id}let w=l.find(P=>P.id==="npm");if(w)return w.id}return(x=l[0])==null?void 0:x.id},[f,t,a,l,v,S]),[h,T]=(0,O.useState)(M());(0,O.useEffect)(()=>{v!=="none"&&(v==="local"?localStorage:sessionStorage).setItem(S,h)},[h,v,S]),(0,O.useEffect)(()=>{let x=document.documentElement;I==="system"?x.removeAttribute("data-theme"):x.setAttribute("data-theme",I)},[I]),(0,O.useEffect)(()=>{T(M())},[M]);let N={...Je,...g},{root:R,navigation:E,tab:Mt,tabIndicator:Ye,commandContainer:Nt,commandPrefix:Rt,commandText:Lt,copyButton:At}=N,it=x=>{if(f!=null&&f[x])return f[x];let w=l.find(P=>P.id===x);return w!=null&&w.getCommand?w.getCommand(t,{isDev:e,isPeer:o,isOptional:i,isGlobal:n,useShorthand:r,version:s,tag:c,registry:a}):""},Ft=x=>{T(x);let w=l.find(P=>P.id===x);y&&w&&y(x,w)},Dt=()=>{let x=it(h);navigator.clipboard.writeText(x);let w=l.find(P=>P.id===h);m&&w&&m(x,w)};if(l.length===0)return null;let Bt=it(h);return(0,b.jsxs)(R,{className:d("install-block",u.root||""),children:[(0,b.jsx)(E,{className:d("install-block-nav",u.navigation||""),children:l.map(x=>(0,b.jsxs)(Mt,{isSelected:h===x.id,onClick:()=>Ft(x.id),className:d("install-block-tab",u.tab||""),slotClassNames:u,children:[x.icon(),(0,b.jsx)("span",{children:x.name})]},x.id))}),(0,b.jsxs)(Nt,{className:d("install-block-content",u.commandContainer||""),children:[(0,b.jsxs)("div",{className:k("install-block-group",u.commandGroup||""),children:[(0,b.jsx)(Rt,{className:d("install-block-prefix",u.commandPrefix||""),children:j}),(0,b.jsx)(Lt,{className:d("install-block-text",u.commandText||""),slotClassNames:u,children:Bt})]}),(0,b.jsx)(At,{className:d("install-block-copy",u.copyButton||""),onClick:Dt,children:A.default.cloneElement(p(),{className:k(p().props.className,u.copyButtonIcon||"")})})]})]})};0&&(module.exports={InstallCommand,cn,defaultManagers});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AaWNvbmlmeStyZWFjdEA1LjIuMF9yZWFjdEAxOC4zLjEvbm9kZV9tb2R1bGVzL0BpY29uaWZ5L3JlYWN0L2Rpc3QvaWNvbmlmeS5qcyIsICIuLi9zcmMvSW5zdGFsbENvbW1hbmQudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgeyBJbnN0YWxsQ29tbWFuZCB9IGZyb20gXCIuL0luc3RhbGxDb21tYW5kXCI7XG5leHBvcnQgdHlwZSB7XG5cdEluc3RhbGxDb21tYW5kUHJvcHMsXG5cdE1hbmFnZXIsXG5cdFRoZW1lLFxuXHRTbG90cyxcblx0U2xvdFByb3BzLFxuXHRUYWJTbG90UHJvcHMsXG5cdENvcHlCdXR0b25TbG90UHJvcHMsXG5cdFNsb3RDbGFzc05hbWVzLFxuXHRTdG9yYWdlVHlwZSxcbn0gZnJvbSBcIi4vSW5zdGFsbENvbW1hbmRcIjtcbmV4cG9ydCB7IGRlZmF1bHRNYW5hZ2VycywgY24gfSBmcm9tIFwiLi9JbnN0YWxsQ29tbWFuZFwiO1xuIiwgIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgZGVmYXVsdEljb25EaW1lbnNpb25zID0gT2JqZWN0LmZyZWV6ZShcbiAge1xuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiAwLFxuICAgIHdpZHRoOiAxNixcbiAgICBoZWlnaHQ6IDE2XG4gIH1cbik7XG5jb25zdCBkZWZhdWx0SWNvblRyYW5zZm9ybWF0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICByb3RhdGU6IDAsXG4gIHZGbGlwOiBmYWxzZSxcbiAgaEZsaXA6IGZhbHNlXG59KTtcbmNvbnN0IGRlZmF1bHRJY29uUHJvcHMgPSBPYmplY3QuZnJlZXplKHtcbiAgLi4uZGVmYXVsdEljb25EaW1lbnNpb25zLFxuICAuLi5kZWZhdWx0SWNvblRyYW5zZm9ybWF0aW9uc1xufSk7XG5jb25zdCBkZWZhdWx0RXh0ZW5kZWRJY29uUHJvcHMgPSBPYmplY3QuZnJlZXplKHtcbiAgLi4uZGVmYXVsdEljb25Qcm9wcyxcbiAgYm9keTogXCJcIixcbiAgaGlkZGVuOiBmYWxzZVxufSk7XG5cbmZ1bmN0aW9uIG1lcmdlSWNvblRyYW5zZm9ybWF0aW9ucyhvYmoxLCBvYmoyKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICBpZiAoIW9iajEuaEZsaXAgIT09ICFvYmoyLmhGbGlwKSB7XG4gICAgcmVzdWx0LmhGbGlwID0gdHJ1ZTtcbiAgfVxuICBpZiAoIW9iajEudkZsaXAgIT09ICFvYmoyLnZGbGlwKSB7XG4gICAgcmVzdWx0LnZGbGlwID0gdHJ1ZTtcbiAgfVxuICBjb25zdCByb3RhdGUgPSAoKG9iajEucm90YXRlIHx8IDApICsgKG9iajIucm90YXRlIHx8IDApKSAlIDQ7XG4gIGlmIChyb3RhdGUpIHtcbiAgICByZXN1bHQucm90YXRlID0gcm90YXRlO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1lcmdlSWNvbkRhdGEocGFyZW50LCBjaGlsZCkge1xuICBjb25zdCByZXN1bHQgPSBtZXJnZUljb25UcmFuc2Zvcm1hdGlvbnMocGFyZW50LCBjaGlsZCk7XG4gIGZvciAoY29uc3Qga2V5IGluIGRlZmF1bHRFeHRlbmRlZEljb25Qcm9wcykge1xuICAgIGlmIChrZXkgaW4gZGVmYXVsdEljb25UcmFuc2Zvcm1hdGlvbnMpIHtcbiAgICAgIGlmIChrZXkgaW4gcGFyZW50ICYmICEoa2V5IGluIHJlc3VsdCkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBkZWZhdWx0SWNvblRyYW5zZm9ybWF0aW9uc1trZXldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoa2V5IGluIGNoaWxkKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGNoaWxkW2tleV07XG4gICAgfSBlbHNlIGlmIChrZXkgaW4gcGFyZW50KSB7XG4gICAgICByZXN1bHRba2V5XSA9IHBhcmVudFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZXRJY29uc1RyZWUoZGF0YSwgbmFtZXMpIHtcbiAgY29uc3QgaWNvbnMgPSBkYXRhLmljb25zO1xuICBjb25zdCBhbGlhc2VzID0gZGF0YS5hbGlhc2VzIHx8IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCByZXNvbHZlZCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBmdW5jdGlvbiByZXNvbHZlKG5hbWUpIHtcbiAgICBpZiAoaWNvbnNbbmFtZV0pIHtcbiAgICAgIHJldHVybiByZXNvbHZlZFtuYW1lXSA9IFtdO1xuICAgIH1cbiAgICBpZiAoIShuYW1lIGluIHJlc29sdmVkKSkge1xuICAgICAgcmVzb2x2ZWRbbmFtZV0gPSBudWxsO1xuICAgICAgY29uc3QgcGFyZW50ID0gYWxpYXNlc1tuYW1lXSAmJiBhbGlhc2VzW25hbWVdLnBhcmVudDtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyZW50ICYmIHJlc29sdmUocGFyZW50KTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICByZXNvbHZlZFtuYW1lXSA9IFtwYXJlbnRdLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZFtuYW1lXTtcbiAgfVxuICAoT2JqZWN0LmtleXMoaWNvbnMpLmNvbmNhdChPYmplY3Qua2V5cyhhbGlhc2VzKSkpLmZvckVhY2gocmVzb2x2ZSk7XG4gIHJldHVybiByZXNvbHZlZDtcbn1cblxuZnVuY3Rpb24gaW50ZXJuYWxHZXRJY29uRGF0YShkYXRhLCBuYW1lLCB0cmVlKSB7XG4gIGNvbnN0IGljb25zID0gZGF0YS5pY29ucztcbiAgY29uc3QgYWxpYXNlcyA9IGRhdGEuYWxpYXNlcyB8fCAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgbGV0IGN1cnJlbnRQcm9wcyA9IHt9O1xuICBmdW5jdGlvbiBwYXJzZShuYW1lMikge1xuICAgIGN1cnJlbnRQcm9wcyA9IG1lcmdlSWNvbkRhdGEoXG4gICAgICBpY29uc1tuYW1lMl0gfHwgYWxpYXNlc1tuYW1lMl0sXG4gICAgICBjdXJyZW50UHJvcHNcbiAgICApO1xuICB9XG4gIHBhcnNlKG5hbWUpO1xuICB0cmVlLmZvckVhY2gocGFyc2UpO1xuICByZXR1cm4gbWVyZ2VJY29uRGF0YShkYXRhLCBjdXJyZW50UHJvcHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZUljb25TZXQoZGF0YSwgY2FsbGJhY2spIHtcbiAgY29uc3QgbmFtZXMgPSBbXTtcbiAgaWYgKHR5cGVvZiBkYXRhICE9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBkYXRhLmljb25zICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIG5hbWVzO1xuICB9XG4gIGlmIChkYXRhLm5vdF9mb3VuZCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgZGF0YS5ub3RfZm91bmQuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgY2FsbGJhY2sobmFtZSwgbnVsbCk7XG4gICAgICBuYW1lcy5wdXNoKG5hbWUpO1xuICAgIH0pO1xuICB9XG4gIGNvbnN0IHRyZWUgPSBnZXRJY29uc1RyZWUoZGF0YSk7XG4gIGZvciAoY29uc3QgbmFtZSBpbiB0cmVlKSB7XG4gICAgY29uc3QgaXRlbSA9IHRyZWVbbmFtZV07XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGNhbGxiYWNrKG5hbWUsIGludGVybmFsR2V0SWNvbkRhdGEoZGF0YSwgbmFtZSwgaXRlbSkpO1xuICAgICAgbmFtZXMucHVzaChuYW1lKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5hbWVzO1xufVxuXG5jb25zdCBvcHRpb25hbFByb3BlcnR5RGVmYXVsdHMgPSB7XG4gIHByb3ZpZGVyOiBcIlwiLFxuICBhbGlhc2VzOiB7fSxcbiAgbm90X2ZvdW5kOiB7fSxcbiAgLi4uZGVmYXVsdEljb25EaW1lbnNpb25zXG59O1xuZnVuY3Rpb24gY2hlY2tPcHRpb25hbFByb3BzKGl0ZW0sIGRlZmF1bHRzKSB7XG4gIGZvciAoY29uc3QgcHJvcCBpbiBkZWZhdWx0cykge1xuICAgIGlmIChwcm9wIGluIGl0ZW0gJiYgdHlwZW9mIGl0ZW1bcHJvcF0gIT09IHR5cGVvZiBkZWZhdWx0c1twcm9wXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHF1aWNrbHlWYWxpZGF0ZUljb25TZXQob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBvYmo7XG4gIGlmICh0eXBlb2YgZGF0YS5wcmVmaXggIT09IFwic3RyaW5nXCIgfHwgIW9iai5pY29ucyB8fCB0eXBlb2Ygb2JqLmljb25zICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFjaGVja09wdGlvbmFsUHJvcHMob2JqLCBvcHRpb25hbFByb3BlcnR5RGVmYXVsdHMpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaWNvbnMgPSBkYXRhLmljb25zO1xuICBmb3IgKGNvbnN0IG5hbWUgaW4gaWNvbnMpIHtcbiAgICBjb25zdCBpY29uID0gaWNvbnNbbmFtZV07XG4gICAgaWYgKFxuICAgICAgLy8gTmFtZSBjYW5ub3QgYmUgZW1wdHlcbiAgICAgICFuYW1lIHx8IC8vIE11c3QgaGF2ZSBib2R5XG4gICAgICB0eXBlb2YgaWNvbi5ib2R5ICE9PSBcInN0cmluZ1wiIHx8IC8vIENoZWNrIG90aGVyIHByb3BzXG4gICAgICAhY2hlY2tPcHRpb25hbFByb3BzKFxuICAgICAgICBpY29uLFxuICAgICAgICBkZWZhdWx0RXh0ZW5kZWRJY29uUHJvcHNcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICBjb25zdCBhbGlhc2VzID0gZGF0YS5hbGlhc2VzIHx8IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBmb3IgKGNvbnN0IG5hbWUgaW4gYWxpYXNlcykge1xuICAgIGNvbnN0IGljb24gPSBhbGlhc2VzW25hbWVdO1xuICAgIGNvbnN0IHBhcmVudCA9IGljb24ucGFyZW50O1xuICAgIGlmIChcbiAgICAgIC8vIE5hbWUgY2Fubm90IGJlIGVtcHR5XG4gICAgICAhbmFtZSB8fCAvLyBQYXJlbnQgbXVzdCBiZSBzZXQgYW5kIHBvaW50IHRvIGV4aXN0aW5nIGljb25cbiAgICAgIHR5cGVvZiBwYXJlbnQgIT09IFwic3RyaW5nXCIgfHwgIWljb25zW3BhcmVudF0gJiYgIWFsaWFzZXNbcGFyZW50XSB8fCAvLyBDaGVjayBvdGhlciBwcm9wc1xuICAgICAgIWNoZWNrT3B0aW9uYWxQcm9wcyhcbiAgICAgICAgaWNvbixcbiAgICAgICAgZGVmYXVsdEV4dGVuZGVkSWNvblByb3BzXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmNvbnN0IG1hdGNoSWNvbk5hbWUgPSAvXlthLXowLTldKygtW2EtejAtOV0rKSokLztcbmNvbnN0IHN0cmluZ1RvSWNvbiA9ICh2YWx1ZSwgdmFsaWRhdGUsIGFsbG93U2ltcGxlTmFtZSwgcHJvdmlkZXIgPSBcIlwiKSA9PiB7XG4gIGNvbnN0IGNvbG9uU2VwYXJhdGVkID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICBpZiAodmFsdWUuc2xpY2UoMCwgMSkgPT09IFwiQFwiKSB7XG4gICAgaWYgKGNvbG9uU2VwYXJhdGVkLmxlbmd0aCA8IDIgfHwgY29sb25TZXBhcmF0ZWQubGVuZ3RoID4gMykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHByb3ZpZGVyID0gY29sb25TZXBhcmF0ZWQuc2hpZnQoKS5zbGljZSgxKTtcbiAgfVxuICBpZiAoY29sb25TZXBhcmF0ZWQubGVuZ3RoID4gMyB8fCAhY29sb25TZXBhcmF0ZWQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGNvbG9uU2VwYXJhdGVkLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCBuYW1lMiA9IGNvbG9uU2VwYXJhdGVkLnBvcCgpO1xuICAgIGNvbnN0IHByZWZpeCA9IGNvbG9uU2VwYXJhdGVkLnBvcCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIC8vIEFsbG93IHByb3ZpZGVyIHdpdGhvdXQgJ0AnOiBcInByb3ZpZGVyOnByZWZpeDpuYW1lXCJcbiAgICAgIHByb3ZpZGVyOiBjb2xvblNlcGFyYXRlZC5sZW5ndGggPiAwID8gY29sb25TZXBhcmF0ZWRbMF0gOiBwcm92aWRlcixcbiAgICAgIHByZWZpeCxcbiAgICAgIG5hbWU6IG5hbWUyXG4gICAgfTtcbiAgICByZXR1cm4gdmFsaWRhdGUgJiYgIXZhbGlkYXRlSWNvbk5hbWUocmVzdWx0KSA/IG51bGwgOiByZXN1bHQ7XG4gIH1cbiAgY29uc3QgbmFtZSA9IGNvbG9uU2VwYXJhdGVkWzBdO1xuICBjb25zdCBkYXNoU2VwYXJhdGVkID0gbmFtZS5zcGxpdChcIi1cIik7XG4gIGlmIChkYXNoU2VwYXJhdGVkLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBwcm92aWRlcixcbiAgICAgIHByZWZpeDogZGFzaFNlcGFyYXRlZC5zaGlmdCgpLFxuICAgICAgbmFtZTogZGFzaFNlcGFyYXRlZC5qb2luKFwiLVwiKVxuICAgIH07XG4gICAgcmV0dXJuIHZhbGlkYXRlICYmICF2YWxpZGF0ZUljb25OYW1lKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0O1xuICB9XG4gIGlmIChhbGxvd1NpbXBsZU5hbWUgJiYgcHJvdmlkZXIgPT09IFwiXCIpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBwcm92aWRlcixcbiAgICAgIHByZWZpeDogXCJcIixcbiAgICAgIG5hbWVcbiAgICB9O1xuICAgIHJldHVybiB2YWxpZGF0ZSAmJiAhdmFsaWRhdGVJY29uTmFtZShyZXN1bHQsIGFsbG93U2ltcGxlTmFtZSkgPyBudWxsIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmNvbnN0IHZhbGlkYXRlSWNvbk5hbWUgPSAoaWNvbiwgYWxsb3dTaW1wbGVOYW1lKSA9PiB7XG4gIGlmICghaWNvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gISEvLyBDaGVjayBwcmVmaXg6IGNhbm5vdCBiZSBlbXB0eSwgdW5sZXNzIGFsbG93U2ltcGxlTmFtZSBpcyBlbmFibGVkXG4gIC8vIENoZWNrIG5hbWU6IGNhbm5vdCBiZSBlbXB0eVxuICAoKGFsbG93U2ltcGxlTmFtZSAmJiBpY29uLnByZWZpeCA9PT0gXCJcIiB8fCAhIWljb24ucHJlZml4KSAmJiAhIWljb24ubmFtZSk7XG59O1xuXG5jb25zdCBkYXRhU3RvcmFnZSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gbmV3U3RvcmFnZShwcm92aWRlciwgcHJlZml4KSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZXIsXG4gICAgcHJlZml4LFxuICAgIGljb25zOiAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICBtaXNzaW5nOiAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpXG4gIH07XG59XG5mdW5jdGlvbiBnZXRTdG9yYWdlKHByb3ZpZGVyLCBwcmVmaXgpIHtcbiAgY29uc3QgcHJvdmlkZXJTdG9yYWdlID0gZGF0YVN0b3JhZ2VbcHJvdmlkZXJdIHx8IChkYXRhU3RvcmFnZVtwcm92aWRlcl0gPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gIHJldHVybiBwcm92aWRlclN0b3JhZ2VbcHJlZml4XSB8fCAocHJvdmlkZXJTdG9yYWdlW3ByZWZpeF0gPSBuZXdTdG9yYWdlKHByb3ZpZGVyLCBwcmVmaXgpKTtcbn1cbmZ1bmN0aW9uIGFkZEljb25TZXQoc3RvcmFnZSwgZGF0YSkge1xuICBpZiAoIXF1aWNrbHlWYWxpZGF0ZUljb25TZXQoZGF0YSkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHBhcnNlSWNvblNldChkYXRhLCAobmFtZSwgaWNvbikgPT4ge1xuICAgIGlmIChpY29uKSB7XG4gICAgICBzdG9yYWdlLmljb25zW25hbWVdID0gaWNvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcmFnZS5taXNzaW5nLmFkZChuYW1lKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gYWRkSWNvblRvU3RvcmFnZShzdG9yYWdlLCBuYW1lLCBpY29uKSB7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiBpY29uLmJvZHkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN0b3JhZ2UuaWNvbnNbbmFtZV0gPSB7IC4uLmljb24gfTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gbGlzdEljb25zKHByb3ZpZGVyLCBwcmVmaXgpIHtcbiAgbGV0IGFsbEljb25zID0gW107XG4gIGNvbnN0IHByb3ZpZGVycyA9IHR5cGVvZiBwcm92aWRlciA9PT0gXCJzdHJpbmdcIiA/IFtwcm92aWRlcl0gOiBPYmplY3Qua2V5cyhkYXRhU3RvcmFnZSk7XG4gIHByb3ZpZGVycy5mb3JFYWNoKChwcm92aWRlcjIpID0+IHtcbiAgICBjb25zdCBwcmVmaXhlcyA9IHR5cGVvZiBwcm92aWRlcjIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHByZWZpeCA9PT0gXCJzdHJpbmdcIiA/IFtwcmVmaXhdIDogT2JqZWN0LmtleXMoZGF0YVN0b3JhZ2VbcHJvdmlkZXIyXSB8fCB7fSk7XG4gICAgcHJlZml4ZXMuZm9yRWFjaCgocHJlZml4MikgPT4ge1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2UocHJvdmlkZXIyLCBwcmVmaXgyKTtcbiAgICAgIGFsbEljb25zID0gYWxsSWNvbnMuY29uY2F0KFxuICAgICAgICBPYmplY3Qua2V5cyhzdG9yYWdlLmljb25zKS5tYXAoXG4gICAgICAgICAgKG5hbWUpID0+IChwcm92aWRlcjIgIT09IFwiXCIgPyBcIkBcIiArIHByb3ZpZGVyMiArIFwiOlwiIDogXCJcIikgKyBwcmVmaXgyICsgXCI6XCIgKyBuYW1lXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gYWxsSWNvbnM7XG59XG5cbmxldCBzaW1wbGVOYW1lcyA9IGZhbHNlO1xuZnVuY3Rpb24gYWxsb3dTaW1wbGVOYW1lcyhhbGxvdykge1xuICBpZiAodHlwZW9mIGFsbG93ID09PSBcImJvb2xlYW5cIikge1xuICAgIHNpbXBsZU5hbWVzID0gYWxsb3c7XG4gIH1cbiAgcmV0dXJuIHNpbXBsZU5hbWVzO1xufVxuZnVuY3Rpb24gZ2V0SWNvbkRhdGEobmFtZSkge1xuICBjb25zdCBpY29uID0gdHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIgPyBzdHJpbmdUb0ljb24obmFtZSwgdHJ1ZSwgc2ltcGxlTmFtZXMpIDogbmFtZTtcbiAgaWYgKGljb24pIHtcbiAgICBjb25zdCBzdG9yYWdlID0gZ2V0U3RvcmFnZShpY29uLnByb3ZpZGVyLCBpY29uLnByZWZpeCk7XG4gICAgY29uc3QgaWNvbk5hbWUgPSBpY29uLm5hbWU7XG4gICAgcmV0dXJuIHN0b3JhZ2UuaWNvbnNbaWNvbk5hbWVdIHx8IChzdG9yYWdlLm1pc3NpbmcuaGFzKGljb25OYW1lKSA/IG51bGwgOiB2b2lkIDApO1xuICB9XG59XG5mdW5jdGlvbiBhZGRJY29uKG5hbWUsIGRhdGEpIHtcbiAgY29uc3QgaWNvbiA9IHN0cmluZ1RvSWNvbihuYW1lLCB0cnVlLCBzaW1wbGVOYW1lcyk7XG4gIGlmICghaWNvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzdG9yYWdlID0gZ2V0U3RvcmFnZShpY29uLnByb3ZpZGVyLCBpY29uLnByZWZpeCk7XG4gIGlmIChkYXRhKSB7XG4gICAgcmV0dXJuIGFkZEljb25Ub1N0b3JhZ2Uoc3RvcmFnZSwgaWNvbi5uYW1lLCBkYXRhKTtcbiAgfSBlbHNlIHtcbiAgICBzdG9yYWdlLm1pc3NpbmcuYWRkKGljb24ubmFtZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbmZ1bmN0aW9uIGFkZENvbGxlY3Rpb24oZGF0YSwgcHJvdmlkZXIpIHtcbiAgaWYgKHR5cGVvZiBkYXRhICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgcHJvdmlkZXIgIT09IFwic3RyaW5nXCIpIHtcbiAgICBwcm92aWRlciA9IGRhdGEucHJvdmlkZXIgfHwgXCJcIjtcbiAgfVxuICBpZiAoc2ltcGxlTmFtZXMgJiYgIXByb3ZpZGVyICYmICFkYXRhLnByZWZpeCkge1xuICAgIGxldCBhZGRlZCA9IGZhbHNlO1xuICAgIGlmIChxdWlja2x5VmFsaWRhdGVJY29uU2V0KGRhdGEpKSB7XG4gICAgICBkYXRhLnByZWZpeCA9IFwiXCI7XG4gICAgICBwYXJzZUljb25TZXQoZGF0YSwgKG5hbWUsIGljb24pID0+IHtcbiAgICAgICAgaWYgKGFkZEljb24obmFtZSwgaWNvbikpIHtcbiAgICAgICAgICBhZGRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWRkZWQ7XG4gIH1cbiAgY29uc3QgcHJlZml4ID0gZGF0YS5wcmVmaXg7XG4gIGlmICghdmFsaWRhdGVJY29uTmFtZSh7XG4gICAgcHJvdmlkZXIsXG4gICAgcHJlZml4LFxuICAgIG5hbWU6IFwiYVwiXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHByb3ZpZGVyLCBwcmVmaXgpO1xuICByZXR1cm4gISFhZGRJY29uU2V0KHN0b3JhZ2UsIGRhdGEpO1xufVxuZnVuY3Rpb24gaWNvbkxvYWRlZChuYW1lKSB7XG4gIHJldHVybiAhIWdldEljb25EYXRhKG5hbWUpO1xufVxuZnVuY3Rpb24gZ2V0SWNvbihuYW1lKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldEljb25EYXRhKG5hbWUpO1xuICByZXR1cm4gcmVzdWx0ID8ge1xuICAgIC4uLmRlZmF1bHRJY29uUHJvcHMsXG4gICAgLi4ucmVzdWx0XG4gIH0gOiByZXN1bHQ7XG59XG5cbmNvbnN0IGRlZmF1bHRJY29uU2l6ZUN1c3RvbWlzYXRpb25zID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHdpZHRoOiBudWxsLFxuICBoZWlnaHQ6IG51bGxcbn0pO1xuY29uc3QgZGVmYXVsdEljb25DdXN0b21pc2F0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICAvLyBEaW1lbnNpb25zXG4gIC4uLmRlZmF1bHRJY29uU2l6ZUN1c3RvbWlzYXRpb25zLFxuICAvLyBUcmFuc2Zvcm1hdGlvbnNcbiAgLi4uZGVmYXVsdEljb25UcmFuc2Zvcm1hdGlvbnNcbn0pO1xuXG5jb25zdCB1bml0c1NwbGl0ID0gLygtP1swLTkuXSpbMC05XStbMC05Ll0qKS9nO1xuY29uc3QgdW5pdHNUZXN0ID0gL14tP1swLTkuXSpbMC05XStbMC05Ll0qJC9nO1xuZnVuY3Rpb24gY2FsY3VsYXRlU2l6ZShzaXplLCByYXRpbywgcHJlY2lzaW9uKSB7XG4gIGlmIChyYXRpbyA9PT0gMSkge1xuICAgIHJldHVybiBzaXplO1xuICB9XG4gIHByZWNpc2lvbiA9IHByZWNpc2lvbiB8fCAxMDA7XG4gIGlmICh0eXBlb2Ygc2l6ZSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBNYXRoLmNlaWwoc2l6ZSAqIHJhdGlvICogcHJlY2lzaW9uKSAvIHByZWNpc2lvbjtcbiAgfVxuICBpZiAodHlwZW9mIHNpemUgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuICBjb25zdCBvbGRQYXJ0cyA9IHNpemUuc3BsaXQodW5pdHNTcGxpdCk7XG4gIGlmIChvbGRQYXJ0cyA9PT0gbnVsbCB8fCAhb2xkUGFydHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cbiAgY29uc3QgbmV3UGFydHMgPSBbXTtcbiAgbGV0IGNvZGUgPSBvbGRQYXJ0cy5zaGlmdCgpO1xuICBsZXQgaXNOdW1iZXIgPSB1bml0c1Rlc3QudGVzdChjb2RlKTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoaXNOdW1iZXIpIHtcbiAgICAgIGNvbnN0IG51bSA9IHBhcnNlRmxvYXQoY29kZSk7XG4gICAgICBpZiAoaXNOYU4obnVtKSkge1xuICAgICAgICBuZXdQYXJ0cy5wdXNoKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UGFydHMucHVzaChNYXRoLmNlaWwobnVtICogcmF0aW8gKiBwcmVjaXNpb24pIC8gcHJlY2lzaW9uKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV3UGFydHMucHVzaChjb2RlKTtcbiAgICB9XG4gICAgY29kZSA9IG9sZFBhcnRzLnNoaWZ0KCk7XG4gICAgaWYgKGNvZGUgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIG5ld1BhcnRzLmpvaW4oXCJcIik7XG4gICAgfVxuICAgIGlzTnVtYmVyID0gIWlzTnVtYmVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNwbGl0U1ZHRGVmcyhjb250ZW50LCB0YWcgPSBcImRlZnNcIikge1xuICBsZXQgZGVmcyA9IFwiXCI7XG4gIGNvbnN0IGluZGV4ID0gY29udGVudC5pbmRleE9mKFwiPFwiICsgdGFnKTtcbiAgd2hpbGUgKGluZGV4ID49IDApIHtcbiAgICBjb25zdCBzdGFydCA9IGNvbnRlbnQuaW5kZXhPZihcIj5cIiwgaW5kZXgpO1xuICAgIGNvbnN0IGVuZCA9IGNvbnRlbnQuaW5kZXhPZihcIjwvXCIgKyB0YWcpO1xuICAgIGlmIChzdGFydCA9PT0gLTEgfHwgZW5kID09PSAtMSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGVuZEVuZCA9IGNvbnRlbnQuaW5kZXhPZihcIj5cIiwgZW5kKTtcbiAgICBpZiAoZW5kRW5kID09PSAtMSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZnMgKz0gY29udGVudC5zbGljZShzdGFydCArIDEsIGVuZCkudHJpbSgpO1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDAsIGluZGV4KS50cmltKCkgKyBjb250ZW50LnNsaWNlKGVuZEVuZCArIDEpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZGVmcyxcbiAgICBjb250ZW50XG4gIH07XG59XG5mdW5jdGlvbiBtZXJnZURlZnNBbmRDb250ZW50KGRlZnMsIGNvbnRlbnQpIHtcbiAgcmV0dXJuIGRlZnMgPyBcIjxkZWZzPlwiICsgZGVmcyArIFwiPC9kZWZzPlwiICsgY29udGVudCA6IGNvbnRlbnQ7XG59XG5mdW5jdGlvbiB3cmFwU1ZHQ29udGVudChib2R5LCBzdGFydCwgZW5kKSB7XG4gIGNvbnN0IHNwbGl0ID0gc3BsaXRTVkdEZWZzKGJvZHkpO1xuICByZXR1cm4gbWVyZ2VEZWZzQW5kQ29udGVudChzcGxpdC5kZWZzLCBzdGFydCArIHNwbGl0LmNvbnRlbnQgKyBlbmQpO1xufVxuXG5jb25zdCBpc1Vuc2V0S2V5d29yZCA9ICh2YWx1ZSkgPT4gdmFsdWUgPT09IFwidW5zZXRcIiB8fCB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB2YWx1ZSA9PT0gXCJub25lXCI7XG5mdW5jdGlvbiBpY29uVG9TVkcoaWNvbiwgY3VzdG9taXNhdGlvbnMpIHtcbiAgY29uc3QgZnVsbEljb24gPSB7XG4gICAgLi4uZGVmYXVsdEljb25Qcm9wcyxcbiAgICAuLi5pY29uXG4gIH07XG4gIGNvbnN0IGZ1bGxDdXN0b21pc2F0aW9ucyA9IHtcbiAgICAuLi5kZWZhdWx0SWNvbkN1c3RvbWlzYXRpb25zLFxuICAgIC4uLmN1c3RvbWlzYXRpb25zXG4gIH07XG4gIGNvbnN0IGJveCA9IHtcbiAgICBsZWZ0OiBmdWxsSWNvbi5sZWZ0LFxuICAgIHRvcDogZnVsbEljb24udG9wLFxuICAgIHdpZHRoOiBmdWxsSWNvbi53aWR0aCxcbiAgICBoZWlnaHQ6IGZ1bGxJY29uLmhlaWdodFxuICB9O1xuICBsZXQgYm9keSA9IGZ1bGxJY29uLmJvZHk7XG4gIFtmdWxsSWNvbiwgZnVsbEN1c3RvbWlzYXRpb25zXS5mb3JFYWNoKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWF0aW9ucyA9IFtdO1xuICAgIGNvbnN0IGhGbGlwID0gcHJvcHMuaEZsaXA7XG4gICAgY29uc3QgdkZsaXAgPSBwcm9wcy52RmxpcDtcbiAgICBsZXQgcm90YXRpb24gPSBwcm9wcy5yb3RhdGU7XG4gICAgaWYgKGhGbGlwKSB7XG4gICAgICBpZiAodkZsaXApIHtcbiAgICAgICAgcm90YXRpb24gKz0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybWF0aW9ucy5wdXNoKFxuICAgICAgICAgIFwidHJhbnNsYXRlKFwiICsgKGJveC53aWR0aCArIGJveC5sZWZ0KS50b1N0cmluZygpICsgXCIgXCIgKyAoMCAtIGJveC50b3ApLnRvU3RyaW5nKCkgKyBcIilcIlxuICAgICAgICApO1xuICAgICAgICB0cmFuc2Zvcm1hdGlvbnMucHVzaChcInNjYWxlKC0xIDEpXCIpO1xuICAgICAgICBib3gudG9wID0gYm94LmxlZnQgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodkZsaXApIHtcbiAgICAgIHRyYW5zZm9ybWF0aW9ucy5wdXNoKFxuICAgICAgICBcInRyYW5zbGF0ZShcIiArICgwIC0gYm94LmxlZnQpLnRvU3RyaW5nKCkgKyBcIiBcIiArIChib3guaGVpZ2h0ICsgYm94LnRvcCkudG9TdHJpbmcoKSArIFwiKVwiXG4gICAgICApO1xuICAgICAgdHJhbnNmb3JtYXRpb25zLnB1c2goXCJzY2FsZSgxIC0xKVwiKTtcbiAgICAgIGJveC50b3AgPSBib3gubGVmdCA9IDA7XG4gICAgfVxuICAgIGxldCB0ZW1wVmFsdWU7XG4gICAgaWYgKHJvdGF0aW9uIDwgMCkge1xuICAgICAgcm90YXRpb24gLT0gTWF0aC5mbG9vcihyb3RhdGlvbiAvIDQpICogNDtcbiAgICB9XG4gICAgcm90YXRpb24gPSByb3RhdGlvbiAlIDQ7XG4gICAgc3dpdGNoIChyb3RhdGlvbikge1xuICAgICAgY2FzZSAxOlxuICAgICAgICB0ZW1wVmFsdWUgPSBib3guaGVpZ2h0IC8gMiArIGJveC50b3A7XG4gICAgICAgIHRyYW5zZm9ybWF0aW9ucy51bnNoaWZ0KFxuICAgICAgICAgIFwicm90YXRlKDkwIFwiICsgdGVtcFZhbHVlLnRvU3RyaW5nKCkgKyBcIiBcIiArIHRlbXBWYWx1ZS50b1N0cmluZygpICsgXCIpXCJcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHRyYW5zZm9ybWF0aW9ucy51bnNoaWZ0KFxuICAgICAgICAgIFwicm90YXRlKDE4MCBcIiArIChib3gud2lkdGggLyAyICsgYm94LmxlZnQpLnRvU3RyaW5nKCkgKyBcIiBcIiArIChib3guaGVpZ2h0IC8gMiArIGJveC50b3ApLnRvU3RyaW5nKCkgKyBcIilcIlxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgdGVtcFZhbHVlID0gYm94LndpZHRoIC8gMiArIGJveC5sZWZ0O1xuICAgICAgICB0cmFuc2Zvcm1hdGlvbnMudW5zaGlmdChcbiAgICAgICAgICBcInJvdGF0ZSgtOTAgXCIgKyB0ZW1wVmFsdWUudG9TdHJpbmcoKSArIFwiIFwiICsgdGVtcFZhbHVlLnRvU3RyaW5nKCkgKyBcIilcIlxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHJvdGF0aW9uICUgMiA9PT0gMSkge1xuICAgICAgaWYgKGJveC5sZWZ0ICE9PSBib3gudG9wKSB7XG4gICAgICAgIHRlbXBWYWx1ZSA9IGJveC5sZWZ0O1xuICAgICAgICBib3gubGVmdCA9IGJveC50b3A7XG4gICAgICAgIGJveC50b3AgPSB0ZW1wVmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoYm94LndpZHRoICE9PSBib3guaGVpZ2h0KSB7XG4gICAgICAgIHRlbXBWYWx1ZSA9IGJveC53aWR0aDtcbiAgICAgICAgYm94LndpZHRoID0gYm94LmhlaWdodDtcbiAgICAgICAgYm94LmhlaWdodCA9IHRlbXBWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRyYW5zZm9ybWF0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGJvZHkgPSB3cmFwU1ZHQ29udGVudChcbiAgICAgICAgYm9keSxcbiAgICAgICAgJzxnIHRyYW5zZm9ybT1cIicgKyB0cmFuc2Zvcm1hdGlvbnMuam9pbihcIiBcIikgKyAnXCI+JyxcbiAgICAgICAgXCI8L2c+XCJcbiAgICAgICk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgY3VzdG9taXNhdGlvbnNXaWR0aCA9IGZ1bGxDdXN0b21pc2F0aW9ucy53aWR0aDtcbiAgY29uc3QgY3VzdG9taXNhdGlvbnNIZWlnaHQgPSBmdWxsQ3VzdG9taXNhdGlvbnMuaGVpZ2h0O1xuICBjb25zdCBib3hXaWR0aCA9IGJveC53aWR0aDtcbiAgY29uc3QgYm94SGVpZ2h0ID0gYm94LmhlaWdodDtcbiAgbGV0IHdpZHRoO1xuICBsZXQgaGVpZ2h0O1xuICBpZiAoY3VzdG9taXNhdGlvbnNXaWR0aCA9PT0gbnVsbCkge1xuICAgIGhlaWdodCA9IGN1c3RvbWlzYXRpb25zSGVpZ2h0ID09PSBudWxsID8gXCIxZW1cIiA6IGN1c3RvbWlzYXRpb25zSGVpZ2h0ID09PSBcImF1dG9cIiA/IGJveEhlaWdodCA6IGN1c3RvbWlzYXRpb25zSGVpZ2h0O1xuICAgIHdpZHRoID0gY2FsY3VsYXRlU2l6ZShoZWlnaHQsIGJveFdpZHRoIC8gYm94SGVpZ2h0KTtcbiAgfSBlbHNlIHtcbiAgICB3aWR0aCA9IGN1c3RvbWlzYXRpb25zV2lkdGggPT09IFwiYXV0b1wiID8gYm94V2lkdGggOiBjdXN0b21pc2F0aW9uc1dpZHRoO1xuICAgIGhlaWdodCA9IGN1c3RvbWlzYXRpb25zSGVpZ2h0ID09PSBudWxsID8gY2FsY3VsYXRlU2l6ZSh3aWR0aCwgYm94SGVpZ2h0IC8gYm94V2lkdGgpIDogY3VzdG9taXNhdGlvbnNIZWlnaHQgPT09IFwiYXV0b1wiID8gYm94SGVpZ2h0IDogY3VzdG9taXNhdGlvbnNIZWlnaHQ7XG4gIH1cbiAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICBjb25zdCBzZXRBdHRyID0gKHByb3AsIHZhbHVlKSA9PiB7XG4gICAgaWYgKCFpc1Vuc2V0S2V5d29yZCh2YWx1ZSkpIHtcbiAgICAgIGF0dHJpYnV0ZXNbcHJvcF0gPSB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgfTtcbiAgc2V0QXR0cihcIndpZHRoXCIsIHdpZHRoKTtcbiAgc2V0QXR0cihcImhlaWdodFwiLCBoZWlnaHQpO1xuICBjb25zdCB2aWV3Qm94ID0gW2JveC5sZWZ0LCBib3gudG9wLCBib3hXaWR0aCwgYm94SGVpZ2h0XTtcbiAgYXR0cmlidXRlcy52aWV3Qm94ID0gdmlld0JveC5qb2luKFwiIFwiKTtcbiAgcmV0dXJuIHtcbiAgICBhdHRyaWJ1dGVzLFxuICAgIHZpZXdCb3gsXG4gICAgYm9keVxuICB9O1xufVxuXG5jb25zdCByZWdleCA9IC9cXHNpZD1cIihcXFMrKVwiL2c7XG5jb25zdCByYW5kb21QcmVmaXggPSBcIkljb25pZnlJZFwiICsgRGF0ZS5ub3coKS50b1N0cmluZygxNikgKyAoTWF0aC5yYW5kb20oKSAqIDE2Nzc3MjE2IHwgMCkudG9TdHJpbmcoMTYpO1xubGV0IGNvdW50ZXIgPSAwO1xuZnVuY3Rpb24gcmVwbGFjZUlEcyhib2R5LCBwcmVmaXggPSByYW5kb21QcmVmaXgpIHtcbiAgY29uc3QgaWRzID0gW107XG4gIGxldCBtYXRjaDtcbiAgd2hpbGUgKG1hdGNoID0gcmVnZXguZXhlYyhib2R5KSkge1xuICAgIGlkcy5wdXNoKG1hdGNoWzFdKTtcbiAgfVxuICBpZiAoIWlkcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuICBjb25zdCBzdWZmaXggPSBcInN1ZmZpeFwiICsgKE1hdGgucmFuZG9tKCkgKiAxNjc3NzIxNiB8IERhdGUubm93KCkpLnRvU3RyaW5nKDE2KTtcbiAgaWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgY29uc3QgbmV3SUQgPSB0eXBlb2YgcHJlZml4ID09PSBcImZ1bmN0aW9uXCIgPyBwcmVmaXgoaWQpIDogcHJlZml4ICsgKGNvdW50ZXIrKykudG9TdHJpbmcoKTtcbiAgICBjb25zdCBlc2NhcGVkSUQgPSBpZC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIik7XG4gICAgYm9keSA9IGJvZHkucmVwbGFjZShcbiAgICAgIC8vIEFsbG93ZWQgY2hhcmFjdGVycyBiZWZvcmUgaWQ6IFsjO1wiXVxuICAgICAgLy8gQWxsb3dlZCBjaGFyYWN0ZXJzIGFmdGVyIGlkOiBbKVwiXSwgLlthLXpdXG4gICAgICBuZXcgUmVnRXhwKCcoWyM7XCJdKSgnICsgZXNjYXBlZElEICsgJykoW1wiKV18XFxcXC5bYS16XSknLCBcImdcIiksXG4gICAgICBcIiQxXCIgKyBuZXdJRCArIHN1ZmZpeCArIFwiJDNcIlxuICAgICk7XG4gIH0pO1xuICBib2R5ID0gYm9keS5yZXBsYWNlKG5ldyBSZWdFeHAoc3VmZml4LCBcImdcIiksIFwiXCIpO1xuICByZXR1cm4gYm9keTtcbn1cblxuY29uc3Qgc3RvcmFnZSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gc2V0QVBJTW9kdWxlKHByb3ZpZGVyLCBpdGVtKSB7XG4gIHN0b3JhZ2VbcHJvdmlkZXJdID0gaXRlbTtcbn1cbmZ1bmN0aW9uIGdldEFQSU1vZHVsZShwcm92aWRlcikge1xuICByZXR1cm4gc3RvcmFnZVtwcm92aWRlcl0gfHwgc3RvcmFnZVtcIlwiXTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQVBJQ29uZmlnKHNvdXJjZSkge1xuICBsZXQgcmVzb3VyY2VzO1xuICBpZiAodHlwZW9mIHNvdXJjZS5yZXNvdXJjZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXNvdXJjZXMgPSBbc291cmNlLnJlc291cmNlc107XG4gIH0gZWxzZSB7XG4gICAgcmVzb3VyY2VzID0gc291cmNlLnJlc291cmNlcztcbiAgICBpZiAoIShyZXNvdXJjZXMgaW5zdGFuY2VvZiBBcnJheSkgfHwgIXJlc291cmNlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLy8gQVBJIGhvc3RzXG4gICAgcmVzb3VyY2VzLFxuICAgIC8vIFJvb3QgcGF0aFxuICAgIHBhdGg6IHNvdXJjZS5wYXRoIHx8IFwiL1wiLFxuICAgIC8vIFVSTCBsZW5ndGggbGltaXRcbiAgICBtYXhVUkw6IHNvdXJjZS5tYXhVUkwgfHwgNTAwLFxuICAgIC8vIFRpbWVvdXQgYmVmb3JlIG5leHQgaG9zdCBpcyB1c2VkLlxuICAgIHJvdGF0ZTogc291cmNlLnJvdGF0ZSB8fCA3NTAsXG4gICAgLy8gVGltZW91dCBiZWZvcmUgZmFpbGluZyBxdWVyeS5cbiAgICB0aW1lb3V0OiBzb3VyY2UudGltZW91dCB8fCA1ZTMsXG4gICAgLy8gUmFuZG9taXNlIGRlZmF1bHQgQVBJIGVuZCBwb2ludC5cbiAgICByYW5kb206IHNvdXJjZS5yYW5kb20gPT09IHRydWUsXG4gICAgLy8gU3RhcnQgaW5kZXhcbiAgICBpbmRleDogc291cmNlLmluZGV4IHx8IDAsXG4gICAgLy8gUmVjZWl2ZSBkYXRhIGFmdGVyIHRpbWUgb3V0ICh1c2VkIGlmIHRpbWUgb3V0IGtpY2tzIGluIGZpcnN0LCB0aGVuIEFQSSBtb2R1bGUgc2VuZHMgZGF0YSBhbnl3YXkpLlxuICAgIGRhdGFBZnRlclRpbWVvdXQ6IHNvdXJjZS5kYXRhQWZ0ZXJUaW1lb3V0ICE9PSBmYWxzZVxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuY29uc3QgY29uZmlnU3RvcmFnZSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuY29uc3QgZmFsbEJhY2tBUElTb3VyY2VzID0gW1xuICBcImh0dHBzOi8vYXBpLnNpbXBsZXN2Zy5jb21cIixcbiAgXCJodHRwczovL2FwaS51bmlzdmcuY29tXCJcbl07XG5jb25zdCBmYWxsQmFja0FQSSA9IFtdO1xud2hpbGUgKGZhbGxCYWNrQVBJU291cmNlcy5sZW5ndGggPiAwKSB7XG4gIGlmIChmYWxsQmFja0FQSVNvdXJjZXMubGVuZ3RoID09PSAxKSB7XG4gICAgZmFsbEJhY2tBUEkucHVzaChmYWxsQmFja0FQSVNvdXJjZXMuc2hpZnQoKSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKE1hdGgucmFuZG9tKCkgPiAwLjUpIHtcbiAgICAgIGZhbGxCYWNrQVBJLnB1c2goZmFsbEJhY2tBUElTb3VyY2VzLnNoaWZ0KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmYWxsQmFja0FQSS5wdXNoKGZhbGxCYWNrQVBJU291cmNlcy5wb3AoKSk7XG4gICAgfVxuICB9XG59XG5jb25maWdTdG9yYWdlW1wiXCJdID0gY3JlYXRlQVBJQ29uZmlnKHtcbiAgcmVzb3VyY2VzOiBbXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnblwiXS5jb25jYXQoZmFsbEJhY2tBUEkpXG59KTtcbmZ1bmN0aW9uIGFkZEFQSVByb3ZpZGVyKHByb3ZpZGVyLCBjdXN0b21Db25maWcpIHtcbiAgY29uc3QgY29uZmlnID0gY3JlYXRlQVBJQ29uZmlnKGN1c3RvbUNvbmZpZyk7XG4gIGlmIChjb25maWcgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uZmlnU3RvcmFnZVtwcm92aWRlcl0gPSBjb25maWc7XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gZ2V0QVBJQ29uZmlnKHByb3ZpZGVyKSB7XG4gIHJldHVybiBjb25maWdTdG9yYWdl