"use strict";(self.webpackChunksrsrfl_react=self.webpackChunksrsrfl_react||[]).push([[291],{3584:(e,t,o)=>{o.d(t,{Z:()=>c});var n=o(1354),r=o(7078),i=o(9617),a=o(606);const s=(0,o(1588).Z)("MuiBox",["root"]),l=(0,i.Z)(),c=(0,n.Z)({themeId:a.Z,defaultTheme:l,defaultClassName:s.root,generateClassName:r.Z.generate})},3492:(e,t,o)=>{o.d(t,{Z:()=>U});var n=o(3366),r=o(7462),i=o(7294),a=o(512),s=o(7925),l=o(4780),c=o(1796),u=o(948),d=o(1657),p=o(1705),h=o(2068),m=o(9674),v=o(4537),b=o(917),f=o(5893);var g=o(1588);const x=(0,g.Z)("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),y=["center","classes","className"];let S,Z,k,C,R=e=>e;const w=(0,b.F4)(S||(S=R` 0% { transform: scale(0); opacity: 0.1; } 100% { transform: scale(1); opacity: 0.3; } `)),z=(0,b.F4)(Z||(Z=R` 0% { opacity: 1; } 100% { opacity: 0; } `)),M=(0,b.F4)(k||(k=R` 0% { transform: scale(1); } 50% { transform: scale(0.92); } 100% { transform: scale(1); } `)),$=(0,u.ZP)("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),E=(0,u.ZP)((function(e){const{className:t,classes:o,pulsate:n=!1,rippleX:r,rippleY:s,rippleSize:l,in:c,onExited:u,timeout:d}=e,[p,h]=i.useState(!1),m=(0,a.Z)(t,o.ripple,o.rippleVisible,n&&o.ripplePulsate),v={width:l,height:l,top:-l/2+s,left:-l/2+r},b=(0,a.Z)(o.child,p&&o.childLeaving,n&&o.childPulsate);return c||p||h(!0),i.useEffect((()=>{if(!c&&null!=u){const e=setTimeout(u,d);return()=>{clearTimeout(e)}}}),[u,c,d]),(0,f.jsx)("span",{className:m,style:v,children:(0,f.jsx)("span",{className:b})})}),{name:"MuiTouchRipple",slot:"Ripple"})(C||(C=R` opacity: 0; position: absolute; &.${0} { opacity: 0.3; transform: scale(1); animation-name: ${0}; animation-duration: ${0}ms; animation-timing-function: ${0}; } &.${0} { animation-duration: ${0}ms; } & .${0} { opacity: 1; display: block; width: 100%; height: 100%; border-radius: 50%; background-color: currentColor; } & .${0} { opacity: 0; animation-name: ${0}; animation-duration: ${0}ms; animation-timing-function: ${0}; } & .${0} { position: absolute; /* @noflip */ left: 0px; top: 0; animation-name: ${0}; animation-duration: 2500ms; animation-timing-function: ${0}; animation-iteration-count: infinite; animation-delay: 200ms; } `),x.rippleVisible,w,550,(({theme:e})=>e.transitions.easing.easeInOut),x.ripplePulsate,(({theme:e})=>e.transitions.duration.shorter),x.child,x.childLeaving,z,550,(({theme:e})=>e.transitions.easing.easeInOut),x.childPulsate,M,(({theme:e})=>e.transitions.easing.easeInOut)),T=i.forwardRef((function(e,t){const o=(0,d.Z)({props:e,name:"MuiTouchRipple"}),{center:s=!1,classes:l={},className:c}=o,u=(0,n.Z)(o,y),[p,h]=i.useState([]),m=i.useRef(0),b=i.useRef(null);i.useEffect((()=>{b.current&&(b.current(),b.current=null)}),[p]);const g=i.useRef(!1),S=i.useRef(0),Z=i.useRef(null),k=i.useRef(null);i.useEffect((()=>()=>{S.current&&clearTimeout(S.current)}),[]);const C=i.useCallback((e=>{const{pulsate:t,rippleX:o,rippleY:n,rippleSize:r,cb:i}=e;h((e=>[...e,(0,f.jsx)(E,{classes:{ripple:(0,a.Z)(l.ripple,x.ripple),rippleVisible:(0,a.Z)(l.rippleVisible,x.rippleVisible),ripplePulsate:(0,a.Z)(l.ripplePulsate,x.ripplePulsate),child:(0,a.Z)(l.child,x.child),childLeaving:(0,a.Z)(l.childLeaving,x.childLeaving),childPulsate:(0,a.Z)(l.childPulsate,x.childPulsate)},timeout:550,pulsate:t,rippleX:o,rippleY:n,rippleSize:r},m.current)])),m.current+=1,b.current=i}),[l]),R=i.useCallback(((e={},t={},o=(()=>{}))=>{const{pulsate:n=!1,center:r=s||t.pulsate,fakeElement:i=!1}=t;if("mousedown"===(null==e?void 0:e.type)&&g.current)return void(g.current=!1);"touchstart"===(null==e?void 0:e.type)&&(g.current=!0);const a=i?null:k.current,l=a?a.getBoundingClientRect():{width:0,height:0,left:0,top:0};let c,u,d;if(r||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)c=Math.round(l.width/2),u=Math.round(l.height/2);else{const{clientX:t,clientY:o}=e.touches&&e.touches.length>0?e.touches[0]:e;c=Math.round(t-l.left),u=Math.round(o-l.top)}if(r)d=Math.sqrt((2*l.width**2+l.height**2)/3),d%2==0&&(d+=1);else{const e=2*Math.max(Math.abs((a?a.clientWidth:0)-c),c)+2,t=2*Math.max(Math.abs((a?a.clientHeight:0)-u),u)+2;d=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===Z.current&&(Z.current=()=>{C({pulsate:n,rippleX:c,rippleY:u,rippleSize:d,cb:o})},S.current=setTimeout((()=>{Z.current&&(Z.current(),Z.current=null)}),80)):C({pulsate:n,rippleX:c,rippleY:u,rippleSize:d,cb:o})}),[s,C]),w=i.useCallback((()=>{R({},{pulsate:!0})}),[R]),z=i.useCallback(((e,t)=>{if(clearTimeout(S.current),"touchend"===(null==e?void 0:e.type)&&Z.current)return Z.current(),Z.current=null,void(S.current=setTimeout((()=>{z(e,t)})));Z.current=null,h((e=>e.length>0?e.slice(1):e)),b.current=t}),[]);return i.useImperativeHandle(t,(()=>({pulsate:w,start:R,stop:z})),[w,R,z]),(0,f.jsx)($,(0,r.Z)({className:(0,a.Z)(x.root,l.root,c),ref:k},u,{children:(0,f.jsx)(v.Z,{component:null,exit:!0,children:p})}))}));var P=o(4867);function I(e){return(0,P.Z)("MuiButtonBase",e)}const B=(0,g.Z)("MuiButtonBase",["root","disabled","focusVisible"]),N=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],F=(0,u.ZP)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${B.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),L=i.forwardRef((function(e,t){const o=(0,d.Z)({props:e,name:"MuiButtonBase"}),{action:s,centerRipple:c=!1,children:u,className:v,component:b="button",disabled:g=!1,disableRipple:x=!1,disableTouchRipple:y=!1,focusRipple:S=!1,LinkComponent:Z="a",onBlur:k,onClick:C,onContextMenu:R,onDragLeave:w,onFocus:z,onFocusVisible:M,onKeyDown:$,onKeyUp:E,onMouseDown:P,onMouseLeave:B,onMouseUp:L,onTouchEnd:V,onTouchMove:W,onTouchStart:D,tabIndex:j=0,TouchRippleProps:O,touchRippleRef:X,type:A}=o,Y=(0,n.Z)(o,N),q=i.useRef(null),K=i.useRef(null),U=(0,p.Z)(K,X),{isFocusVisibleRef:H,onFocus:G,onBlur:_,ref:J}=(0,m.Z)(),[Q,ee]=i.useState(!1);g&&Q&&ee(!1),i.useImperativeHandle(s,(()=>({focusVisible:()=>{ee(!0),q.current.focus()}})),[]);const[te,oe]=i.useState(!1);i.useEffect((()=>{oe(!0)}),[]);const ne=te&&!x&&!g;function re(e,t,o=y){return(0,h.Z)((n=>(t&&t(n),!o&&K.current&&K.current[e](n),!0)))}i.useEffect((()=>{Q&&S&&!x&&te&&K.current.pulsate()}),[x,S,Q,te]);const ie=re("start",P),ae=re("stop",R),se=re("stop",w),le=re("stop",L),ce=re("stop",(e=>{Q&&e.preventDefault(),B&&B(e)})),ue=re("start",D),de=re("stop",V),pe=re("stop",W),he=re("stop",(e=>{_(e),!1===H.current&&ee(!1),k&&k(e)}),!1),me=(0,h.Z)((e=>{q.current||(q.current=e.currentTarget),G(e),!0===H.current&&(ee(!0),M&&M(e)),z&&z(e)})),ve=()=>{const e=q.current;return b&&"button"!==b&&!("A"===e.tagName&&e.href)},be=i.useRef(!1),fe=(0,h.Z)((e=>{S&&!be.current&&Q&&K.current&&" "===e.key&&(be.current=!0,K.current.stop(e,(()=>{K.current.start(e)}))),e.target===e.currentTarget&&ve()&&" "===e.key&&e.preventDefault(),$&&$(e),e.target===e.currentTarget&&ve()&&"Enter"===e.key&&!g&&(e.preventDefault(),C&&C(e))})),ge=(0,h.Z)((e=>{S&&" "===e.key&&K.current&&Q&&!e.defaultPrevented&&(be.current=!1,K.current.stop(e,(()=>{K.current.pulsate(e)}))),E&&E(e),C&&e.target===e.currentTarget&&ve()&&" "===e.key&&!e.defaultPrevented&&C(e)}));let xe=b;"button"===xe&&(Y.href||Y.to)&&(xe=Z);const ye={};"button"===xe?(ye.type=void 0===A?"button":A,ye.disabled=g):(Y.href||Y.to||(ye.role="button"),g&&(ye["aria-disabled"]=g));const Se=(0,p.Z)(t,J,q),Ze=(0,r.Z)({},o,{centerRipple:c,component:b,disabled:g,disableRipple:x,disableTouchRipple:y,focusRipple:S,tabIndex:j,focusVisible:Q}),ke=(e=>{const{disabled:t,focusVisible:o,focusVisibleClassName:n,classes:r}=e,i={root:["root",t&&"disabled",o&&"focusVisible"]},a=(0,l.Z)(i,I,r);return o&&n&&(a.root+=` ${n}`),a})(Ze);return(0,f.jsxs)(F,(0,r.Z)({as:xe,className:(0,a.Z)(ke.root,v),ownerState:Ze,onBlur:he,onClick:C,onContextMenu:ae,onFocus:me,onKeyDown:fe,onKeyUp:ge,onMouseDown:ie,onMouseLeave:ce,onMouseUp:le,onDragLeave:se,onTouchEnd:de,onTouchMove:pe,onTouchStart:ue,ref:Se,tabIndex:g?-1:j,type:A},ye,Y,{children:[u,ne?(0,f.jsx)(T,(0,r.Z)({ref:U,center:c},O)):null]}))}));var V=o(8216);function W(e){return(0,P.Z)("MuiButton",e)}const D=(0,g.Z)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),j=i.createContext({}),O=i.createContext(void 0),X=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],A=e=>(0,r.Z)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),Y=(0,u.ZP)(L,{shouldForwardProp:e=>(0,u.FO)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,V.Z)(o.color)}`],t[`size${(0,V.Z)(o.size)}`],t[`${o.variant}Size${(0,V.Z)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,n;const i="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],a="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,r.Z)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,r.Z)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.Fq)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.Fq)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.Fq)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:a,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,r.Z)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${D.focusVisible}`]:(0,r.Z)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${D.disabled}`]:(0,r.Z)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,c.Fq)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(n=e.palette).getContrastText)?void 0:o.call(n,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:i,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${D.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${D.disabled}`]:{boxShadow:"none"}})),q=(0,u.ZP)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,V.Z)(o.size)}`]]}})((({ownerState:e})=>(0,r.Z)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},A(e)))),K=(0,u.ZP)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,V.Z)(o.size)}`]]}})((({ownerState:e})=>(0,r.Z)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},A(e)))),U=i.forwardRef((function(e,t){const o=i.useContext(j),c=i.useContext(O),u=(0,s.Z)(o,e),p=(0,d.Z)({props:u,name:"MuiButton"}),{children:h,color:m="primary",component:v="button",className:b,disabled:g=!1,disableElevation:x=!1,disableFocusRipple:y=!1,endIcon:S,focusVisibleClassName:Z,fullWidth:k=!1,size:C="medium",startIcon:R,type:w,variant:z="text"}=p,M=(0,n.Z)(p,X),$=(0,r.Z)({},p,{color:m,component:v,disabled:g,disableElevation:x,disableFocusRipple:y,fullWidth:k,size:C,type:w,variant:z}),E=(e=>{const{color:t,disableElevation:o,fullWidth:n,size:i,variant:a,classes:s}=e,c={root:["root",a,`${a}${(0,V.Z)(t)}`,`size${(0,V.Z)(i)}`,`${a}Size${(0,V.Z)(i)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,V.Z)(i)}`],endIcon:["endIcon",`iconSize${(0,V.Z)(i)}`]},u=(0,l.Z)(c,W,s);return(0,r.Z)({},s,u)})($),T=R&&(0,f.jsx)(q,{className:E.startIcon,ownerState:$,children:R}),P=S&&(0,f.jsx)(K,{className:E.endIcon,ownerState:$,children:S}),I=c||"";return(0,f.jsxs)(Y,(0,r.Z)({ownerState:$,className:(0,a.Z)(o.className,E.root,b,I),component:v,disabled:g,focusRipple:!y,focusVisibleClassName:(0,a.Z)(E.focusVisible,Z),ref:t,type:w},M,{classes:E,children:[T,h,P]}))}))},9062:(e,t,o)=>{o.d(t,{Z:()=>z});var n=o(3366),r=o(7462),i=o(7294),a=o(512),s=o(4780),l=o(917),c=o(8216),u=o(1657),d=o(948),p=o(1588),h=o(4867);function m(e){return(0,h.Z)("MuiCircularProgress",e)}(0,p.Z)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var v=o(5893);const b=["className","color","disableShrink","size","style","thickness","value","variant"];let f,g,x,y,S=e=>e;const Z=(0,l.F4)(f||(f=S` 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } `)),k=(0,l.F4)(g||(g=S` 0% { stroke-dasharray: 1px, 200px; stroke-dashoffset: 0; } 50% { stroke-dasharray: 100px, 200px; stroke-dashoffset: -15px; } 100% { stroke-dasharray: 100px, 200px; stroke-dashoffset: -125px; } `)),C=(0,d.ZP)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`color${(0,c.Z)(o.color)}`]]}})((({ownerState:e,theme:t})=>(0,r.Z)({display:"inline-block"},"determinate"===e.variant&&{transition:t.transitions.create("transform")},"inherit"!==e.color&&{color:(t.vars||t).palette[e.color].main})),(({ownerState:e})=>"indeterminate"===e.variant&&(0,l.iv)(x||(x=S` animation: ${0} 1.4s linear infinite; `),Z))),R=(0,d.ZP)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),w=(0,d.ZP)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.circle,t[`circle${(0,c.Z)(o.variant)}`],o.disableShrink&&t.circleDisableShrink]}})((({ownerState:e,theme:t})=>(0,r.Z)({stroke:"currentColor"},"determinate"===e.variant&&{transition:t.transitions.create("stroke-dashoffset")},"indeterminate"===e.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})),(({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink&&(0,l.iv)(y||(y=S` animation: ${0} 1.4s ease-in-out infinite; `),k))),z=i.forwardRef((function(e,t){const o=(0,u.Z)({props:e,name:"MuiCircularProgress"}),{className:i,color:l="primary",disableShrink:d=!1,size:p=40,style:h,thickness:f=3.6,value:g=0,variant:x="indeterminate"}=o,y=(0,n.Z)(o,b),S=(0,r.Z)({},o,{color:l,disableShrink:d,size:p,thickness:f,value:g,variant:x}),Z=(e=>{const{classes:t,variant:o,color:n,disableShrink:r}=e,i={root:["root",o,`color${(0,c.Z)(n)}`],svg:["svg"],circle:["circle",`circle${(0,c.Z)(o)}`,r&&"circleDisableShrink"]};return(0,s.Z)(i,m,t)})(S),k={},z={},M={};if("determinate"===x){const e=2*Math.PI*((44-f)/2);k.strokeDasharray=e.toFixed(3),M["aria-valuenow"]=Math.round(g),k.strokeDashoffset=`${((100-g)/100*e).toFixed(3)}px`,z.transform="rotate(-90deg)"}return(0,v.jsx)(C,(0,r.Z)({className:(0,a.Z)(Z.root,i),style:(0,r.Z)({width:p,height:p},z,h),ownerState:S,ref:t,role:"progressbar"},M,y,{children:(0,v.jsx)(R,{className:Z.svg,ownerState:S,viewBox:"22 22 44 44",children:(0,v.jsx)(w,{className:Z.circle,style:k,ownerState:S,cx:44,cy:44,r:(44-f)/2,fill:"none",strokeWidth:f})})}))}))},6574:(e,t,o)=>{o.d(t,{Z:()=>s});var n=o(6137),r=o(8216),i=o(948),a=o(1657);const s=(0,n.Z)({createStyledComponent:(0,i.ZP)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`maxWidth${(0,r.Z)(String(o.maxWidth))}`],o.fixed&&t.fixed,o.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,a.Z)({props:e,name:"MuiContainer"})})},6720:(e,t,o)=>{o.d(t,{ZP:()=>u});var n=o(7462),r=o(7294),i=o(1657),a=o(6294),s=o(5893);const l=(e,t)=>(0,n.Z)({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%"},t&&!e.vars&&{colorScheme:e.palette.mode}),c=e=>(0,n.Z)({color:(e.vars||e).palette.text.primary},e.typography.body1,{backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}}),u=function(e){const t=(0,i.Z)({props:e,name:"MuiCssBaseline"}),{children:o,enableColorScheme:u=!1}=t;return(0,s.jsxs)(r.Fragment,{children:[(0,s.jsx)(a.Z,{styles:e=>((e,t=!1)=>{var o;const r={};t&&e.colorSchemes&&Object.entries(e.colorSchemes).forEach((([t,o])=>{var n;r[e.getColorSchemeSelector(t).replace(/\s*&/,"")]={colorScheme:null==(n=o.palette)?void 0:n.mode}}));let i=(0,n.Z)({html:l(e,t),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:(0,n.Z)({margin:0},c(e),{"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}})},r);const a=null==(o=e.components)||null==(o=o.MuiCssBaseline)?void 0:o.styleOverrides;return a&&(i=[i,a]),i})(e,u)}),o]})}},6628:(e,t,o)=>{o.d(t,{Z:()=>h});var n=o(7462),r=o(3366),i=o(7294),a=o(8052),s=o(2734),l=o(577),c=o(1705),u=o(5893);const d=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],p={entering:{opacity:1},entered:{opacity:1}},h=i.forwardRef((function(e,t){const o=(0,s.Z)(),h={enter:o.transitions.duration.enteringScreen,exit:o.transitions.duration.leavingScreen},{addEndListener:m,appear:v=!0,children:b,easing:f,in:g,onEnter:x,onEntered:y,onEntering:S,onExit:Z,onExited:k,onExiting:C,style:R,timeout:w=h,TransitionComponent:z=a.ZP}=e,M=(0,r.Z)(e,d),$=i.useRef(null),E=(0,c.Z)($,b.ref,t),T=e=>t=>{if(e){const o=$.current;void 0===t?e(o):e(o,t)}},P=T(S),I=T(((e,t)=>{(0,l.n)(e);const n=(0,l.C)({style:R,timeout:w,easing:f},{mode:"enter"});e.style.webkitTransition=o.transitions.create("opacity",n),e.style.transition=o.transitions.create("opacity",n),x&&x(e,t)})),B=T(y),N=T(C),F=T((e=>{const t=(0,l.C)({style:R,timeout:w,easing:f},{mode:"exit"});e.style.webkitTransition=o.transitions.create("opacity",t),e.style.transition=o.transitions.create("opacity",t),Z&&Z(e)})),L=T(k);return(0,u.jsx)(z,(0,n.Z)({appear:v,in:g,nodeRef:$,onEnter:I,onEntered:B,onEntering:P,onExit:F,onExited:L,onExiting:N,addEndListener:e=>{m&&m($.current,e)},timeout:w},M,{children:(e,t)=>i.cloneElement(b,(0,n.Z)({style:(0,n.Z)({opacity:0,visibility:"exited"!==e||g?void 0:"hidden"},p[e],R,b.props.style),ref:E},t))}))}))}}]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNScFUsU0FBVXFVLEVBQ1ZmLFVBQVdhLEVBQ1huQixlQWhCMkJzQixJQUN2QnRCLEdBRUZBLEVBQWVRLEVBQVFuUixRQUFTaVMsRUFDbEMsRUFhQXJVLFFBQVNBLEdBQ1IrQixFQUFPLENBQ1JaLFNBQVUsQ0FBQ21ULEVBQU9DLElBQ0ksZUFBbUJwVCxHQUFVLE9BQVMsQ0FDeERELE9BQU8sT0FBUyxDQUNkdVIsUUFBUyxFQUNUK0IsV0FBc0IsV0FBVkYsR0FBdUJ4VSxPQUFvQnVELEVBQVgsVUFDM0NzQixFQUFPMlAsR0FBUXBULEVBQU9DLEVBQVM3QixNQUFNNEIsT0FDeENTLElBQUswSSxHQUNKa0ssTUFHVCxHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQm94L2JveENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQm94L0JveC5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL3RvdWNoUmlwcGxlQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL1RvdWNoUmlwcGxlLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvUmlwcGxlLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvYnV0dG9uQmFzZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uQmFzZS9CdXR0b25CYXNlLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9idXR0b25DbGFzc2VzLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9CdXR0b25Hcm91cEJ1dHRvbkNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uL0J1dHRvbi5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9DaXJjdWxhclByb2dyZXNzL2NpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NpcmN1bGFyUHJvZ3Jlc3MvQ2lyY3VsYXJQcm9ncmVzcy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Db250YWluZXIvQ29udGFpbmVyLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Nzc0Jhc2VsaW5lL0Nzc0Jhc2VsaW5lLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ZhZGUvRmFkZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBmcm9tICdAbXVpL3V0aWxzL2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMnO1xuY29uc3QgYm94Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUJveCcsIFsncm9vdCddKTtcbmV4cG9ydCBkZWZhdWx0IGJveENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBjcmVhdGVCb3ggfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJy4uL2NsYXNzTmFtZSc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi4vc3R5bGVzL2lkZW50aWZpZXInO1xuaW1wb3J0IGJveENsYXNzZXMgZnJvbSAnLi9ib3hDbGFzc2VzJztcbmNvbnN0IGRlZmF1bHRUaGVtZSA9IGNyZWF0ZVRoZW1lKCk7XG5jb25zdCBCb3ggPSBjcmVhdGVCb3goe1xuICB0aGVtZUlkOiBUSEVNRV9JRCxcbiAgZGVmYXVsdFRoZW1lLFxuICBkZWZhdWx0Q2xhc3NOYW1lOiBib3hDbGFzc2VzLnJvb3QsXG4gIGdlbmVyYXRlQ2xhc3NOYW1lOiBDbGFzc05hbWVHZW5lcmF0b3IuZ2VuZXJhdGVcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQm94OyIsImltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG91Y2hSaXBwbGVVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVRvdWNoUmlwcGxlJywgc2xvdCk7XG59XG5jb25zdCB0b3VjaFJpcHBsZUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlUb3VjaFJpcHBsZScsIFsncm9vdCcsICdyaXBwbGUnLCAncmlwcGxlVmlzaWJsZScsICdyaXBwbGVQdWxzYXRlJywgJ2NoaWxkJywgJ2NoaWxkTGVhdmluZycsICdjaGlsZFB1bHNhdGUnXSk7XG5leHBvcnQgZGVmYXVsdCB0b3VjaFJpcHBsZUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2VudGVyXCIsIFwiY2xhc3Nlc1wiLCBcImNsYXNzTmFtZVwiXTtcbmxldCBfID0gdCA9PiB0LFxuICBfdCxcbiAgX3QyLFxuICBfdDMsXG4gIF90NDtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uR3JvdXAgfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsga2V5ZnJhbWVzIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBSaXBwbGUgZnJvbSAnLi9SaXBwbGUnO1xuaW1wb3J0IHRvdWNoUmlwcGxlQ2xhc3NlcyBmcm9tICcuL3RvdWNoUmlwcGxlQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRFVSQVRJT04gPSA1NTA7XG5leHBvcnQgY29uc3QgREVMQVlfUklQUExFID0gODA7XG5jb25zdCBlbnRlcktleWZyYW1lID0ga2V5ZnJhbWVzKF90IHx8IChfdCA9IF9gXG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIG9wYWNpdHk6IDAuMTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgb3BhY2l0eTogMC4zO1xuICB9XG5gKSk7XG5jb25zdCBleGl0S2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QyIHx8IChfdDIgPSBfYFxuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbmApKTtcbmNvbnN0IHB1bHNhdGVLZXlmcmFtZSA9IGtleWZyYW1lcyhfdDMgfHwgKF90MyA9IF9gXG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTIpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuYCkpO1xuZXhwb3J0IGNvbnN0IFRvdWNoUmlwcGxlUm9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aVRvdWNoUmlwcGxlJyxcbiAgc2xvdDogJ1Jvb3QnXG59KSh7XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgekluZGV4OiAwLFxuICB0b3A6IDAsXG4gIHJpZ2h0OiAwLFxuICBib3R0b206IDAsXG4gIGxlZnQ6IDAsXG4gIGJvcmRlclJhZGl1czogJ2luaGVyaXQnXG59KTtcblxuLy8gVGhpcyBgc3R5bGVkKClgIGZ1bmN0aW9uIGludm9rZXMga2V5ZnJhbWVzLiBgc3R5bGVkLWNvbXBvbmVudHNgIG9ubHkgc3VwcG9ydHMga2V5ZnJhbWVzXG4vLyBpbiBzdHJpbmcgdGVtcGxhdGVzLiBEbyBub3QgY29udmVydCB0aGVzZSBzdHlsZXMgaW4gSlMgb2JqZWN0IGFzIGl0IHdpbGwgYnJlYWsuXG5leHBvcnQgY29uc3QgVG91Y2hSaXBwbGVSaXBwbGUgPSBzdHlsZWQoUmlwcGxlLCB7XG4gIG5hbWU6ICdNdWlUb3VjaFJpcHBsZScsXG4gIHNsb3Q6ICdSaXBwbGUnXG59KShfdDQgfHwgKF90NCA9IF9gXG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAmLiR7MH0ge1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIGFuaW1hdGlvbi1uYW1lOiAkezB9O1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJHswfW1zO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ICR7MH07XG4gIH1cblxuICAmLiR7MH0ge1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJHswfW1zO1xuICB9XG5cbiAgJiAuJHswfSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gICYgLiR7MH0ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgYW5pbWF0aW9uLW5hbWU6ICR7MH07XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkezB9bXM7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHswfTtcbiAgfVxuXG4gICYgLiR7MH0ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAvKiBAbm9mbGlwICovXG4gICAgbGVmdDogMHB4O1xuICAgIHRvcDogMDtcbiAgICBhbmltYXRpb24tbmFtZTogJHswfTtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDI1MDBtcztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkezB9O1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgIGFuaW1hdGlvbi1kZWxheTogMjAwbXM7XG4gIH1cbmApLCB0b3VjaFJpcHBsZUNsYXNzZXMucmlwcGxlVmlzaWJsZSwgZW50ZXJLZXlmcmFtZSwgRFVSQVRJT04sICh7XG4gIHRoZW1lXG59KSA9PiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZUluT3V0LCB0b3VjaFJpcHBsZUNsYXNzZXMucmlwcGxlUHVsc2F0ZSwgKHtcbiAgdGhlbWVcbn0pID0+IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5jaGlsZCwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkTGVhdmluZywgZXhpdEtleWZyYW1lLCBEVVJBVElPTiwgKHtcbiAgdGhlbWVcbn0pID0+IHRoZW1lLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlSW5PdXQsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5jaGlsZFB1bHNhdGUsIHB1bHNhdGVLZXlmcmFtZSwgKHtcbiAgdGhlbWVcbn0pID0+IHRoZW1lLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlSW5PdXQpO1xuXG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKlxuICogVE9ETyB2NTogTWFrZSBwcml2YXRlXG4gKi9cbmNvbnN0IFRvdWNoUmlwcGxlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVG91Y2hSaXBwbGUoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVRvdWNoUmlwcGxlJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2VudGVyOiBjZW50ZXJQcm9wID0gZmFsc2UsXG4gICAgICBjbGFzc2VzID0ge30sXG4gICAgICBjbGFzc05hbWVcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW3JpcHBsZXMsIHNldFJpcHBsZXNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCBuZXh0S2V5ID0gUmVhY3QudXNlUmVmKDApO1xuICBjb25zdCByaXBwbGVDYWxsYmFjayA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmlwcGxlQ2FsbGJhY2suY3VycmVudCkge1xuICAgICAgcmlwcGxlQ2FsbGJhY2suY3VycmVudCgpO1xuICAgICAgcmlwcGxlQ2FsbGJhY2suY3VycmVudCA9IG51bGw7XG4gICAgfVxuICB9LCBbcmlwcGxlc10pO1xuXG4gIC8vIFVzZWQgdG8gZmlsdGVyIG91dCBtb3VzZSBlbXVsYXRlZCBldmVudHMgb24gbW9iaWxlLlxuICBjb25zdCBpZ25vcmluZ01vdXNlRG93biA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIC8vIFdlIHVzZSBhIHRpbWVyIGluIG9yZGVyIHRvIG9ubHkgc2hvdyB0aGUgcmlwcGxlcyBmb3IgdG91Y2ggXCJjbGlja1wiIGxpa2UgZXZlbnRzLlxuICAvLyBXZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIHJpcHBsZSBmb3IgdG91Y2ggc2Nyb2xsIGV2ZW50cy5cbiAgY29uc3Qgc3RhcnRUaW1lciA9IFJlYWN0LnVzZVJlZigwKTtcblxuICAvLyBUaGlzIGlzIHRoZSBob29rIGNhbGxlZCBvbmNlIHRoZSBwcmV2aW91cyB0aW1lb3V0IGlzIHJlYWR5LlxuICBjb25zdCBzdGFydFRpbWVyQ29tbWl0ID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBjb250YWluZXIgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChzdGFydFRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHN0YXJ0VGltZXIuY3VycmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW10pO1xuICBjb25zdCBzdGFydENvbW1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKHBhcmFtcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcHVsc2F0ZSxcbiAgICAgIHJpcHBsZVgsXG4gICAgICByaXBwbGVZLFxuICAgICAgcmlwcGxlU2l6ZSxcbiAgICAgIGNiXG4gICAgfSA9IHBhcmFtcztcbiAgICBzZXRSaXBwbGVzKG9sZFJpcHBsZXMgPT4gWy4uLm9sZFJpcHBsZXMsIC8qI19fUFVSRV9fKi9fanN4KFRvdWNoUmlwcGxlUmlwcGxlLCB7XG4gICAgICBjbGFzc2VzOiB7XG4gICAgICAgIHJpcHBsZTogY2xzeChjbGFzc2VzLnJpcHBsZSwgdG91Y2hSaXBwbGVDbGFzc2VzLnJpcHBsZSksXG4gICAgICAgIHJpcHBsZVZpc2libGU6IGNsc3goY2xhc3Nlcy5yaXBwbGVWaXNpYmxlLCB0b3VjaFJpcHBsZUNsYXNzZXMucmlwcGxlVmlzaWJsZSksXG4gICAgICAgIHJpcHBsZVB1bHNhdGU6IGNsc3goY2xhc3Nlcy5yaXBwbGVQdWxzYXRlLCB0b3VjaFJpcHBsZUNsYXNzZXMucmlwcGxlUHVsc2F0ZSksXG4gICAgICAgIGNoaWxkOiBjbHN4KGNsYXNzZXMuY2hpbGQsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5jaGlsZCksXG4gICAgICAgIGNoaWxkTGVhdmluZzogY2xzeChjbGFzc2VzLmNoaWxkTGVhdmluZywgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkTGVhdmluZyksXG4gICAgICAgIGNoaWxkUHVsc2F0ZTogY2xzeChjbGFzc2VzLmNoaWxkUHVsc2F0ZSwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkUHVsc2F0ZSlcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiBEVVJBVElPTixcbiAgICAgIHB1bHNhdGU6IHB1bHNhdGUsXG4gICAgICByaXBwbGVYOiByaXBwbGVYLFxuICAgICAgcmlwcGxlWTogcmlwcGxlWSxcbiAgICAgIHJpcHBsZVNpemU6IHJpcHBsZVNpemVcbiAgICB9LCBuZXh0S2V5LmN1cnJlbnQpXSk7XG4gICAgbmV4dEtleS5jdXJyZW50ICs9IDE7XG4gICAgcmlwcGxlQ2FsbGJhY2suY3VycmVudCA9IGNiO1xuICB9LCBbY2xhc3Nlc10pO1xuICBjb25zdCBzdGFydCA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCA9IHt9LCBvcHRpb25zID0ge30sIGNiID0gKCkgPT4ge30pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBwdWxzYXRlID0gZmFsc2UsXG4gICAgICBjZW50ZXIgPSBjZW50ZXJQcm9wIHx8IG9wdGlvbnMucHVsc2F0ZSxcbiAgICAgIGZha2VFbGVtZW50ID0gZmFsc2UgLy8gRm9yIHRlc3QgcHVycG9zZXNcbiAgICB9ID0gb3B0aW9ucztcbiAgICBpZiAoKGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC50eXBlKSA9PT0gJ21vdXNlZG93bicgJiYgaWdub3JpbmdNb3VzZURvd24uY3VycmVudCkge1xuICAgICAgaWdub3JpbmdNb3VzZURvd24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC50eXBlKSA9PT0gJ3RvdWNoc3RhcnQnKSB7XG4gICAgICBpZ25vcmluZ01vdXNlRG93bi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudCA9IGZha2VFbGVtZW50ID8gbnVsbCA6IGNvbnRhaW5lci5jdXJyZW50O1xuICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50ID8gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMFxuICAgIH07XG5cbiAgICAvLyBHZXQgdGhlIHNpemUgb2YgdGhlIHJpcHBsZVxuICAgIGxldCByaXBwbGVYO1xuICAgIGxldCByaXBwbGVZO1xuICAgIGxldCByaXBwbGVTaXplO1xuICAgIGlmIChjZW50ZXIgfHwgZXZlbnQgPT09IHVuZGVmaW5lZCB8fCBldmVudC5jbGllbnRYID09PSAwICYmIGV2ZW50LmNsaWVudFkgPT09IDAgfHwgIWV2ZW50LmNsaWVudFggJiYgIWV2ZW50LnRvdWNoZXMpIHtcbiAgICAgIHJpcHBsZVggPSBNYXRoLnJvdW5kKHJlY3Qud2lkdGggLyAyKTtcbiAgICAgIHJpcHBsZVkgPSBNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0IC8gMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WVxuICAgICAgfSA9IGV2ZW50LnRvdWNoZXMgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPiAwID8gZXZlbnQudG91Y2hlc1swXSA6IGV2ZW50O1xuICAgICAgcmlwcGxlWCA9IE1hdGgucm91bmQoY2xpZW50WCAtIHJlY3QubGVmdCk7XG4gICAgICByaXBwbGVZID0gTWF0aC5yb3VuZChjbGllbnRZIC0gcmVjdC50b3ApO1xuICAgIH1cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICByaXBwbGVTaXplID0gTWF0aC5zcXJ0KCgyICogcmVjdC53aWR0aCAqKiAyICsgcmVjdC5oZWlnaHQgKiogMikgLyAzKTtcblxuICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHRoZSBhbmltYXRpb24gaXMgYnJva2VuIG9uIE1vYmlsZSBDaHJvbWUgaWYgdGhlIHNpemUgaXMgZXZlbi5cbiAgICAgIGlmIChyaXBwbGVTaXplICUgMiA9PT0gMCkge1xuICAgICAgICByaXBwbGVTaXplICs9IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNpemVYID0gTWF0aC5tYXgoTWF0aC5hYnMoKGVsZW1lbnQgPyBlbGVtZW50LmNsaWVudFdpZHRoIDogMCkgLSByaXBwbGVYKSwgcmlwcGxlWCkgKiAyICsgMjtcbiAgICAgIGNvbnN0IHNpemVZID0gTWF0aC5tYXgoTWF0aC5hYnMoKGVsZW1lbnQgPyBlbGVtZW50LmNsaWVudEhlaWdodCA6IDApIC0gcmlwcGxlWSksIHJpcHBsZVkpICogMiArIDI7XG4gICAgICByaXBwbGVTaXplID0gTWF0aC5zcXJ0KHNpemVYICoqIDIgKyBzaXplWSAqKiAyKTtcbiAgICB9XG5cbiAgICAvLyBUb3VjaGUgZGV2aWNlc1xuICAgIGlmIChldmVudCAhPSBudWxsICYmIGV2ZW50LnRvdWNoZXMpIHtcbiAgICAgIC8vIGNoZWNrIHRoYXQgdGhpcyBpc24ndCBhbm90aGVyIHRvdWNoc3RhcnQgZHVlIHRvIG11bHRpdG91Y2hcbiAgICAgIC8vIG90aGVyd2lzZSB3ZSB3aWxsIG9ubHkgY2xlYXIgYSBzaW5nbGUgdGltZXIgd2hlbiB1bm1vdW50aW5nIHdoaWxlIHR3b1xuICAgICAgLy8gYXJlIHJ1bm5pbmdcbiAgICAgIGlmIChzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgLy8gUHJlcGFyZSB0aGUgcmlwcGxlIGVmZmVjdC5cbiAgICAgICAgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50ID0gKCkgPT4ge1xuICAgICAgICAgIHN0YXJ0Q29tbWl0KHtcbiAgICAgICAgICAgIHB1bHNhdGUsXG4gICAgICAgICAgICByaXBwbGVYLFxuICAgICAgICAgICAgcmlwcGxlWSxcbiAgICAgICAgICAgIHJpcHBsZVNpemUsXG4gICAgICAgICAgICBjYlxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBEZWxheSB0aGUgZXhlY3V0aW9uIG9mIHRoZSByaXBwbGUgZWZmZWN0LlxuICAgICAgICBzdGFydFRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50KSB7XG4gICAgICAgICAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQoKTtcbiAgICAgICAgICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBERUxBWV9SSVBQTEUpOyAvLyBXZSBoYXZlIHRvIG1ha2UgYSB0cmFkZW9mZiB3aXRoIHRoaXMgdmFsdWUuXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0Q29tbWl0KHtcbiAgICAgICAgcHVsc2F0ZSxcbiAgICAgICAgcmlwcGxlWCxcbiAgICAgICAgcmlwcGxlWSxcbiAgICAgICAgcmlwcGxlU2l6ZSxcbiAgICAgICAgY2JcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NlbnRlclByb3AsIHN0YXJ0Q29tbWl0XSk7XG4gIGNvbnN0IHB1bHNhdGUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RhcnQoe30sIHtcbiAgICAgIHB1bHNhdGU6IHRydWVcbiAgICB9KTtcbiAgfSwgW3N0YXJ0XSk7XG4gIGNvbnN0IHN0b3AgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQsIGNiKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHN0YXJ0VGltZXIuY3VycmVudCk7XG5cbiAgICAvLyBUaGUgdG91Y2ggaW50ZXJhY3Rpb24gb2NjdXJzIHRvbyBxdWlja2x5LlxuICAgIC8vIFdlIHN0aWxsIHdhbnQgdG8gc2hvdyByaXBwbGUgZWZmZWN0LlxuICAgIGlmICgoZXZlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50LnR5cGUpID09PSAndG91Y2hlbmQnICYmIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCkge1xuICAgICAgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50KCk7XG4gICAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQgPSBudWxsO1xuICAgICAgc3RhcnRUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHN0b3AoZXZlbnQsIGNiKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQgPSBudWxsO1xuICAgIHNldFJpcHBsZXMob2xkUmlwcGxlcyA9PiB7XG4gICAgICBpZiAob2xkUmlwcGxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBvbGRSaXBwbGVzLnNsaWNlKDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9sZFJpcHBsZXM7XG4gICAgfSk7XG4gICAgcmlwcGxlQ2FsbGJhY2suY3VycmVudCA9IGNiO1xuICB9LCBbXSk7XG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgIHB1bHNhdGUsXG4gICAgc3RhcnQsXG4gICAgc3RvcFxuICB9KSwgW3B1bHNhdGUsIHN0YXJ0LCBzdG9wXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUb3VjaFJpcHBsZVJvb3QsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsc3godG91Y2hSaXBwbGVDbGFzc2VzLnJvb3QsIGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IGNvbnRhaW5lclxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uR3JvdXAsIHtcbiAgICAgIGNvbXBvbmVudDogbnVsbCxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjaGlsZHJlbjogcmlwcGxlc1xuICAgIH0pXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVG91Y2hSaXBwbGUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIHN0YXJ0cyBhdCB0aGUgY2VudGVyIG9mIHRoZSBjb21wb25lbnRcbiAgICogcmF0aGVyIHRoYW4gYXQgdGhlIHBvaW50IG9mIGludGVyYWN0aW9uLlxuICAgKi9cbiAgY2VudGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogU2VlIFtDU1MgQVBJXSgjY3NzKSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFRvdWNoUmlwcGxlOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuXG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBSaXBwbGUocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNsYXNzTmFtZSxcbiAgICBjbGFzc2VzLFxuICAgIHB1bHNhdGUgPSBmYWxzZSxcbiAgICByaXBwbGVYLFxuICAgIHJpcHBsZVksXG4gICAgcmlwcGxlU2l6ZSxcbiAgICBpbjogaW5Qcm9wLFxuICAgIG9uRXhpdGVkLFxuICAgIHRpbWVvdXRcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbbGVhdmluZywgc2V0TGVhdmluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHJpcHBsZUNsYXNzTmFtZSA9IGNsc3goY2xhc3NOYW1lLCBjbGFzc2VzLnJpcHBsZSwgY2xhc3Nlcy5yaXBwbGVWaXNpYmxlLCBwdWxzYXRlICYmIGNsYXNzZXMucmlwcGxlUHVsc2F0ZSk7XG4gIGNvbnN0IHJpcHBsZVN0eWxlcyA9IHtcbiAgICB3aWR0aDogcmlwcGxlU2l6ZSxcbiAgICBoZWlnaHQ6IHJpcHBsZVNpemUsXG4gICAgdG9wOiAtKHJpcHBsZVNpemUgLyAyKSArIHJpcHBsZVksXG4gICAgbGVmdDogLShyaXBwbGVTaXplIC8gMikgKyByaXBwbGVYXG4gIH07XG4gIGNvbnN0IGNoaWxkQ2xhc3NOYW1lID0gY2xzeChjbGFzc2VzLmNoaWxkLCBsZWF2aW5nICYmIGNsYXNzZXMuY2hpbGRMZWF2aW5nLCBwdWxzYXRlICYmIGNsYXNzZXMuY2hpbGRQdWxzYXRlKTtcbiAgaWYgKCFpblByb3AgJiYgIWxlYXZpbmcpIHtcbiAgICBzZXRMZWF2aW5nKHRydWUpO1xuICB9XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpblByb3AgJiYgb25FeGl0ZWQgIT0gbnVsbCkge1xuICAgICAgLy8gcmVhY3QtdHJhbnNpdGlvbi1ncm91cCNvbkV4aXRlZFxuICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dChvbkV4aXRlZCwgdGltZW91dCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFtvbkV4aXRlZCwgaW5Qcm9wLCB0aW1lb3V0XSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogcmlwcGxlQ2xhc3NOYW1lLFxuICAgIHN0eWxlOiByaXBwbGVTdHlsZXMsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFwic3BhblwiLCB7XG4gICAgICBjbGFzc05hbWU6IGNoaWxkQ2xhc3NOYW1lXG4gICAgfSlcbiAgfSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBSaXBwbGUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKiBTZWUgW0NTUyBBUEldKCNjc3MpIGJlbG93IGZvciBtb3JlIGRldGFpbHMuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEBpZ25vcmUgLSBpbmplY3RlZCBmcm9tIFRyYW5zaXRpb25Hcm91cFxuICAgKi9cbiAgaW46IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQGlnbm9yZSAtIGluamVjdGVkIGZyb20gVHJhbnNpdGlvbkdyb3VwXG4gICAqL1xuICBvbkV4aXRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGUgcHVsc2F0ZXMsIHR5cGljYWxseSBpbmRpY2F0aW5nIHRoZSBrZXlib2FyZCBmb2N1cyBzdGF0ZSBvZiBhbiBlbGVtZW50LlxuICAgKi9cbiAgcHVsc2F0ZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBEaWFtZXRlciBvZiB0aGUgcmlwcGxlLlxuICAgKi9cbiAgcmlwcGxlU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIEhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIHJpcHBsZSBjZW50ZXIuXG4gICAqL1xuICByaXBwbGVYOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVmVydGljYWwgcG9zaXRpb24gb2YgdGhlIHJpcHBsZSBjZW50ZXIuXG4gICAqL1xuICByaXBwbGVZOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogZXhpdCBkZWxheVxuICAgKi9cbiAgdGltZW91dDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgUmlwcGxlOyIsImltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQnV0dG9uQmFzZScsIHNsb3QpO1xufVxuY29uc3QgYnV0dG9uQmFzZUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlCdXR0b25CYXNlJywgWydyb290JywgJ2Rpc2FibGVkJywgJ2ZvY3VzVmlzaWJsZSddKTtcbmV4cG9ydCBkZWZhdWx0IGJ1dHRvbkJhc2VDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFjdGlvblwiLCBcImNlbnRlclJpcHBsZVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlUmlwcGxlXCIsIFwiZGlzYWJsZVRvdWNoUmlwcGxlXCIsIFwiZm9jdXNSaXBwbGVcIiwgXCJmb2N1c1Zpc2libGVDbGFzc05hbWVcIiwgXCJMaW5rQ29tcG9uZW50XCIsIFwib25CbHVyXCIsIFwib25DbGlja1wiLCBcIm9uQ29udGV4dE1lbnVcIiwgXCJvbkRyYWdMZWF2ZVwiLCBcIm9uRm9jdXNcIiwgXCJvbkZvY3VzVmlzaWJsZVwiLCBcIm9uS2V5RG93blwiLCBcIm9uS2V5VXBcIiwgXCJvbk1vdXNlRG93blwiLCBcIm9uTW91c2VMZWF2ZVwiLCBcIm9uTW91c2VVcFwiLCBcIm9uVG91Y2hFbmRcIiwgXCJvblRvdWNoTW92ZVwiLCBcIm9uVG91Y2hTdGFydFwiLCBcInRhYkluZGV4XCIsIFwiVG91Y2hSaXBwbGVQcm9wc1wiLCBcInRvdWNoUmlwcGxlUmVmXCIsIFwidHlwZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGVsZW1lbnRUeXBlQWNjZXB0aW5nUmVmLCByZWZUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZS9jb21wb3NlQ2xhc3Nlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91dGlscy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VJc0ZvY3VzVmlzaWJsZSBmcm9tICcuLi91dGlscy91c2VJc0ZvY3VzVmlzaWJsZSc7XG5pbXBvcnQgVG91Y2hSaXBwbGUgZnJvbSAnLi9Ub3VjaFJpcHBsZSc7XG5pbXBvcnQgYnV0dG9uQmFzZUNsYXNzZXMsIHsgZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uQmFzZUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBkaXNhYmxlZCxcbiAgICBmb2N1c1Zpc2libGUsXG4gICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIGZvY3VzVmlzaWJsZSAmJiAnZm9jdXNWaXNpYmxlJ11cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvbkJhc2VVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICBpZiAoZm9jdXNWaXNpYmxlICYmIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSkge1xuICAgIGNvbXBvc2VkQ2xhc3Nlcy5yb290ICs9IGAgJHtmb2N1c1Zpc2libGVDbGFzc05hbWV9YDtcbiAgfVxuICByZXR1cm4gY29tcG9zZWRDbGFzc2VzO1xufTtcbmV4cG9ydCBjb25zdCBCdXR0b25CYXNlUm9vdCA9IHN0eWxlZCgnYnV0dG9uJywge1xuICBuYW1lOiAnTXVpQnV0dG9uQmFzZScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMucm9vdFxufSkoe1xuICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gIC8vIFJlc2V0IGRlZmF1bHQgdmFsdWVcbiAgLy8gV2UgZGlzYWJsZSB0aGUgZm9jdXMgcmluZyBmb3IgbW91c2UsIHRvdWNoIGFuZCBrZXlib2FyZCB1c2Vycy5cbiAgb3V0bGluZTogMCxcbiAgYm9yZGVyOiAwLFxuICBtYXJnaW46IDAsXG4gIC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIFNhZmFyaVxuICBib3JkZXJSYWRpdXM6IDAsXG4gIHBhZGRpbmc6IDAsXG4gIC8vIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBGaXJlZm94XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICBNb3pBcHBlYXJhbmNlOiAnbm9uZScsXG4gIC8vIFJlc2V0XG4gIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgLy8gUmVzZXRcbiAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgLy8gU28gd2UgdGFrZSBwcmVjZWRlbnQgb3ZlciB0aGUgc3R5bGUgb2YgYSBuYXRpdmUgPGEgLz4gZWxlbWVudC5cbiAgY29sb3I6ICdpbmhlcml0JyxcbiAgJyY6Oi1tb3otZm9jdXMtaW5uZXInOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdub25lJyAvLyBSZW1vdmUgRmlyZWZveCBkb3R0ZWQgb3V0bGluZS5cbiAgfSxcbiAgW2AmLiR7YnV0dG9uQmFzZUNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgLy8gRGlzYWJsZSBsaW5rIGludGVyYWN0aW9uc1xuICAgIGN1cnNvcjogJ2RlZmF1bHQnXG4gIH0sXG4gICdAbWVkaWEgcHJpbnQnOiB7XG4gICAgY29sb3JBZGp1c3Q6ICdleGFjdCdcbiAgfVxufSk7XG5cbi8qKlxuICogYEJ1dHRvbkJhc2VgIGNvbnRhaW5zIGFzIGZldyBzdHlsZXMgYXMgcG9zc2libGUuXG4gKiBJdCBhaW1zIHRvIGJlIGEgc2ltcGxlIGJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIGJ1dHRvbi5cbiAqIEl0IGNvbnRhaW5zIGEgbG9hZCBvZiBzdHlsZSByZXNldCBhbmQgc29tZSBmb2N1cy9yaXBwbGUgbG9naWMuXG4gKi9cbmNvbnN0IEJ1dHRvbkJhc2UgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBCdXR0b25CYXNlKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlCdXR0b25CYXNlJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgYWN0aW9uLFxuICAgICAgY2VudGVyUmlwcGxlID0gZmFsc2UsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCA9ICdidXR0b24nLFxuICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVUb3VjaFJpcHBsZSA9IGZhbHNlLFxuICAgICAgZm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIExpbmtDb21wb25lbnQgPSAnYScsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbkNsaWNrLFxuICAgICAgb25Db250ZXh0TWVudSxcbiAgICAgIG9uRHJhZ0xlYXZlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uRm9jdXNWaXNpYmxlLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgb25LZXlVcCxcbiAgICAgIG9uTW91c2VEb3duLFxuICAgICAgb25Nb3VzZUxlYXZlLFxuICAgICAgb25Nb3VzZVVwLFxuICAgICAgb25Ub3VjaEVuZCxcbiAgICAgIG9uVG91Y2hNb3ZlLFxuICAgICAgb25Ub3VjaFN0YXJ0LFxuICAgICAgdGFiSW5kZXggPSAwLFxuICAgICAgVG91Y2hSaXBwbGVQcm9wcyxcbiAgICAgIHRvdWNoUmlwcGxlUmVmLFxuICAgICAgdHlwZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBidXR0b25SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IHJpcHBsZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlUmlwcGxlUmVmID0gdXNlRm9ya1JlZihyaXBwbGVSZWYsIHRvdWNoUmlwcGxlUmVmKTtcbiAgY29uc3Qge1xuICAgIGlzRm9jdXNWaXNpYmxlUmVmLFxuICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzVmlzaWJsZSxcbiAgICBvbkJsdXI6IGhhbmRsZUJsdXJWaXNpYmxlLFxuICAgIHJlZjogZm9jdXNWaXNpYmxlUmVmXG4gIH0gPSB1c2VJc0ZvY3VzVmlzaWJsZSgpO1xuICBjb25zdCBbZm9jdXNWaXNpYmxlLCBzZXRGb2N1c1Zpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBpZiAoZGlzYWJsZWQgJiYgZm9jdXNWaXNpYmxlKSB7XG4gICAgc2V0Rm9jdXNWaXNpYmxlKGZhbHNlKTtcbiAgfVxuICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKGFjdGlvbiwgKCkgPT4gKHtcbiAgICBmb2N1c1Zpc2libGU6ICgpID0+IHtcbiAgICAgIHNldEZvY3VzVmlzaWJsZSh0cnVlKTtcbiAgICAgIGJ1dHRvblJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9KSwgW10pO1xuICBjb25zdCBbbW91bnRlZFN0YXRlLCBzZXRNb3VudGVkU3RhdGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldE1vdW50ZWRTdGF0ZSh0cnVlKTtcbiAgfSwgW10pO1xuICBjb25zdCBlbmFibGVUb3VjaFJpcHBsZSA9IG1vdW50ZWRTdGF0ZSAmJiAhZGlzYWJsZVJpcHBsZSAmJiAhZGlzYWJsZWQ7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzVmlzaWJsZSAmJiBmb2N1c1JpcHBsZSAmJiAhZGlzYWJsZVJpcHBsZSAmJiBtb3VudGVkU3RhdGUpIHtcbiAgICAgIHJpcHBsZVJlZi5jdXJyZW50LnB1bHNhdGUoKTtcbiAgICB9XG4gIH0sIFtkaXNhYmxlUmlwcGxlLCBmb2N1c1JpcHBsZSwgZm9jdXNWaXNpYmxlLCBtb3VudGVkU3RhdGVdKTtcbiAgZnVuY3Rpb24gdXNlUmlwcGxlSGFuZGxlcihyaXBwbGVBY3Rpb24sIGV2ZW50Q2FsbGJhY2ssIHNraXBSaXBwbGVBY3Rpb24gPSBkaXNhYmxlVG91Y2hSaXBwbGUpIHtcbiAgICByZXR1cm4gdXNlRXZlbnRDYWxsYmFjayhldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnRDYWxsYmFjaykge1xuICAgICAgICBldmVudENhbGxiYWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlnbm9yZSA9IHNraXBSaXBwbGVBY3Rpb247XG4gICAgICBpZiAoIWlnbm9yZSAmJiByaXBwbGVSZWYuY3VycmVudCkge1xuICAgICAgICByaXBwbGVSZWYuY3VycmVudFtyaXBwbGVBY3Rpb25dKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0YXJ0Jywgb25Nb3VzZURvd24pO1xuICBjb25zdCBoYW5kbGVDb250ZXh0TWVudSA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBvbkNvbnRleHRNZW51KTtcbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIG9uRHJhZ0xlYXZlKTtcbiAgY29uc3QgaGFuZGxlTW91c2VVcCA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBvbk1vdXNlVXApO1xuICBjb25zdCBoYW5kbGVNb3VzZUxlYXZlID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIGV2ZW50ID0+IHtcbiAgICBpZiAoZm9jdXNWaXNpYmxlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAob25Nb3VzZUxlYXZlKSB7XG4gICAgICBvbk1vdXNlTGVhdmUoZXZlbnQpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZVRvdWNoU3RhcnQgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdGFydCcsIG9uVG91Y2hTdGFydCk7XG4gIGNvbnN0IGhhbmRsZVRvdWNoRW5kID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIG9uVG91Y2hFbmQpO1xuICBjb25zdCBoYW5kbGVUb3VjaE1vdmUgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgb25Ub3VjaE1vdmUpO1xuICBjb25zdCBoYW5kbGVCbHVyID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIGV2ZW50ID0+IHtcbiAgICBoYW5kbGVCbHVyVmlzaWJsZShldmVudCk7XG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlUmVmLmN1cnJlbnQgPT09IGZhbHNlKSB7XG4gICAgICBzZXRGb2N1c1Zpc2libGUoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAob25CbHVyKSB7XG4gICAgICBvbkJsdXIoZXZlbnQpO1xuICAgIH1cbiAgfSwgZmFsc2UpO1xuICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgIC8vIEZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83NzY5XG4gICAgaWYgKCFidXR0b25SZWYuY3VycmVudCkge1xuICAgICAgYnV0dG9uUmVmLmN1cnJlbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgIH1cbiAgICBoYW5kbGVGb2N1c1Zpc2libGUoZXZlbnQpO1xuICAgIGlmIChpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50ID09PSB0cnVlKSB7XG4gICAgICBzZXRGb2N1c1Zpc2libGUodHJ1ZSk7XG4gICAgICBpZiAob25Gb2N1c1Zpc2libGUpIHtcbiAgICAgICAgb25Gb2N1c1Zpc2libGUoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob25Gb2N1cykge1xuICAgICAgb25Gb2N1cyhldmVudCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaXNOb25OYXRpdmVCdXR0b24gPSAoKSA9PiB7XG4gICAgY29uc3QgYnV0dG9uID0gYnV0dG9uUmVmLmN1cnJlbnQ7XG4gICAgcmV0dXJuIGNvbXBvbmVudCAmJiBjb21wb25lbnQgIT09ICdidXR0b24nICYmICEoYnV0dG9uLnRhZ05hbWUgPT09ICdBJyAmJiBidXR0b24uaHJlZik7XG4gIH07XG5cbiAgLyoqXG4gICAqIElFMTEgc2hpbSBmb3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQvcmVwZWF0XG4gICAqL1xuICBjb25zdCBrZXlkb3duUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgIC8vIENoZWNrIGlmIGtleSBpcyBhbHJlYWR5IGRvd24gdG8gYXZvaWQgcmVwZWF0cyBiZWluZyBjb3VudGVkIGFzIG11bHRpcGxlIGFjdGl2YXRpb25zXG4gICAgaWYgKGZvY3VzUmlwcGxlICYmICFrZXlkb3duUmVmLmN1cnJlbnQgJiYgZm9jdXNWaXNpYmxlICYmIHJpcHBsZVJlZi5jdXJyZW50ICYmIGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBrZXlkb3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgcmlwcGxlUmVmLmN1cnJlbnQuc3RvcChldmVudCwgKCkgPT4ge1xuICAgICAgICByaXBwbGVSZWYuY3VycmVudC5zdGFydChldmVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBpc05vbk5hdGl2ZUJ1dHRvbigpICYmIGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAob25LZXlEb3duKSB7XG4gICAgICBvbktleURvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIC8vIEtleWJvYXJkIGFjY2Vzc2liaWxpdHkgZm9yIG5vbiBpbnRlcmFjdGl2ZSBlbGVtZW50c1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgaXNOb25OYXRpdmVCdXR0b24oKSAmJiBldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIWRpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgb25DbGljayhldmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlS2V5VXAgPSB1c2VFdmVudENhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAvLyBjYWxsaW5nIHByZXZlbnREZWZhdWx0IGluIGtleVVwIG9uIGEgPGJ1dHRvbj4gd2lsbCBub3QgZGlzcGF0Y2ggYSBjbGljayBldmVudCBpZiBTcGFjZSBpcyBwcmVzc2VkXG4gICAgLy8gaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9wL3NhbmRib3gvYnV0dG9uLWtleXVwLXByZXZlbnRkZWZhdWx0LWRuN2YwXG4gICAgaWYgKGZvY3VzUmlwcGxlICYmIGV2ZW50LmtleSA9PT0gJyAnICYmIHJpcHBsZVJlZi5jdXJyZW50ICYmIGZvY3VzVmlzaWJsZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAga2V5ZG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICByaXBwbGVSZWYuY3VycmVudC5zdG9wKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgIHJpcHBsZVJlZi5jdXJyZW50LnB1bHNhdGUoZXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChvbktleVVwKSB7XG4gICAgICBvbktleVVwKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvLyBLZXlib2FyZCBhY2Nlc3NpYmlsaXR5IGZvciBub24gaW50ZXJhY3RpdmUgZWxlbWVudHNcbiAgICBpZiAob25DbGljayAmJiBldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgaXNOb25OYXRpdmVCdXR0b24oKSAmJiBldmVudC5rZXkgPT09ICcgJyAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgb25DbGljayhldmVudCk7XG4gICAgfVxuICB9KTtcbiAgbGV0IENvbXBvbmVudFByb3AgPSBjb21wb25lbnQ7XG4gIGlmIChDb21wb25lbnRQcm9wID09PSAnYnV0dG9uJyAmJiAob3RoZXIuaHJlZiB8fCBvdGhlci50bykpIHtcbiAgICBDb21wb25lbnRQcm9wID0gTGlua0NvbXBvbmVudDtcbiAgfVxuICBjb25zdCBidXR0b25Qcm9wcyA9IHt9O1xuICBpZiAoQ29tcG9uZW50UHJvcCA9PT0gJ2J1dHRvbicpIHtcbiAgICBidXR0b25Qcm9wcy50eXBlID0gdHlwZSA9PT0gdW5kZWZpbmVkID8gJ2J1dHRvbicgOiB0eXBlO1xuICAgIGJ1dHRvblByb3BzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFvdGhlci5ocmVmICYmICFvdGhlci50bykge1xuICAgICAgYnV0dG9uUHJvcHMucm9sZSA9ICdidXR0b24nO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIGJ1dHRvblByb3BzWydhcmlhLWRpc2FibGVkJ10gPSBkaXNhYmxlZDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihyZWYsIGZvY3VzVmlzaWJsZVJlZiwgYnV0dG9uUmVmKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGVuYWJsZVRvdWNoUmlwcGxlICYmICFyaXBwbGVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBUaGUgYGNvbXBvbmVudGAgcHJvcCBwcm92aWRlZCB0byBCdXR0b25CYXNlIGlzIGludmFsaWQuJywgJ1BsZWFzZSBtYWtlIHN1cmUgdGhlIGNoaWxkcmVuIHByb3AgaXMgcmVuZGVyZWQgaW4gdGhpcyBjdXN0b20gY29tcG9uZW50LiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbZW5hYmxlVG91Y2hSaXBwbGVdKTtcbiAgfVxuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY2VudGVyUmlwcGxlLFxuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlUmlwcGxlLFxuICAgIGRpc2FibGVUb3VjaFJpcHBsZSxcbiAgICBmb2N1c1JpcHBsZSxcbiAgICB0YWJJbmRleCxcbiAgICBmb2N1c1Zpc2libGVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhCdXR0b25CYXNlUm9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBDb21wb25lbnRQcm9wLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgb25DbGljazogb25DbGljayxcbiAgICBvbkNvbnRleHRNZW51OiBoYW5kbGVDb250ZXh0TWVudSxcbiAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgb25LZXlVcDogaGFuZGxlS2V5VXAsXG4gICAgb25Nb3VzZURvd246IGhhbmRsZU1vdXNlRG93bixcbiAgICBvbk1vdXNlTGVhdmU6IGhhbmRsZU1vdXNlTGVhdmUsXG4gICAgb25Nb3VzZVVwOiBoYW5kbGVNb3VzZVVwLFxuICAgIG9uRHJhZ0xlYXZlOiBoYW5kbGVEcmFnTGVhdmUsXG4gICAgb25Ub3VjaEVuZDogaGFuZGxlVG91Y2hFbmQsXG4gICAgb25Ub3VjaE1vdmU6IGhhbmRsZVRvdWNoTW92ZSxcbiAgICBvblRvdWNoU3RhcnQ6IGhhbmRsZVRvdWNoU3RhcnQsXG4gICAgcmVmOiBoYW5kbGVSZWYsXG4gICAgdGFiSW5kZXg6IGRpc2FibGVkID8gLTEgOiB0YWJJbmRleCxcbiAgICB0eXBlOiB0eXBlXG4gIH0sIGJ1dHRvblByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiBbY2hpbGRyZW4sIGVuYWJsZVRvdWNoUmlwcGxlID9cbiAgICAvKiNfX1BVUkVfXyovXG4gICAgLyogVG91Y2hSaXBwbGUgaXMgb25seSBuZWVkZWQgY2xpZW50LXNpZGUsIHgyIGJvb3N0IG9uIHRoZSBzZXJ2ZXIuICovXG4gICAgX2pzeChUb3VjaFJpcHBsZSwgX2V4dGVuZHMoe1xuICAgICAgcmVmOiBoYW5kbGVSaXBwbGVSZWYsXG4gICAgICBjZW50ZXI6IGNlbnRlclJpcHBsZVxuICAgIH0sIFRvdWNoUmlwcGxlUHJvcHMpKSA6IG51bGxdXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQnV0dG9uQmFzZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBIHJlZiBmb3IgaW1wZXJhdGl2ZSBhY3Rpb25zLlxuICAgKiBJdCBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBgZm9jdXNWaXNpYmxlKClgIGFjdGlvbi5cbiAgICovXG4gIGFjdGlvbjogcmVmVHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZXMgYXJlIGNlbnRlcmVkLlxuICAgKiBUaGV5IHdvbid0IHN0YXJ0IGF0IHRoZSBjdXJzb3IgaW50ZXJhY3Rpb24gcG9zaXRpb24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjZW50ZXJSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IGVsZW1lbnRUeXBlQWNjZXB0aW5nUmVmLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRvdWNoIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlVG91Y2hSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYmFzZSBidXR0b24gd2lsbCBoYXZlIGEga2V5Ym9hcmQgZm9jdXMgcmlwcGxlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhpcyBwcm9wIGNhbiBoZWxwIGlkZW50aWZ5IHdoaWNoIGVsZW1lbnQgaGFzIGtleWJvYXJkIGZvY3VzLlxuICAgKiBUaGUgY2xhc3MgbmFtZSB3aWxsIGJlIGFwcGxpZWQgd2hlbiB0aGUgZWxlbWVudCBnYWlucyB0aGUgZm9jdXMgdGhyb3VnaCBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICogSXQncyBhIHBvbHlmaWxsIGZvciB0aGUgW0NTUyA6Zm9jdXMtdmlzaWJsZSBzZWxlY3Rvcl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3NlbGVjdG9ycy00LyN0aGUtZm9jdXMtdmlzaWJsZS1wc2V1ZG8pLlxuICAgKiBUaGUgcmF0aW9uYWxlIGZvciB1c2luZyB0aGlzIGZlYXR1cmUgW2lzIGV4cGxhaW5lZCBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vV0lDRy9mb2N1cy12aXNpYmxlL2Jsb2IvSEVBRC9leHBsYWluZXIubWQpLlxuICAgKiBBIFtwb2x5ZmlsbCBjYW4gYmUgdXNlZF0oaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZSkgdG8gYXBwbHkgYSBgZm9jdXMtdmlzaWJsZWAgY2xhc3MgdG8gb3RoZXIgY29tcG9uZW50c1xuICAgKiBpZiBuZWVkZWQuXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5hbnksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIGEgbGluayB3aGVuIHRoZSBgaHJlZmAgcHJvcCBpcyBwcm92aWRlZC5cbiAgICogQGRlZmF1bHQgJ2EnXG4gICAqL1xuICBMaW5rQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbnRleHRNZW51OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRHJhZ0xlYXZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGZvY3VzZWQgd2l0aCBhIGtleWJvYXJkLlxuICAgKiBXZSB0cmlnZ2VyIGEgYG9uRm9jdXNgIGNhbGxiYWNrIHRvby5cbiAgICovXG4gIG9uRm9jdXNWaXNpYmxlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uTW91c2VEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uTW91c2VMZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbk1vdXNlVXA6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub3VjaEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoTW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBgVG91Y2hSaXBwbGVgIGVsZW1lbnQuXG4gICAqL1xuICBUb3VjaFJpcHBsZVByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQSByZWYgdGhhdCBwb2ludHMgdG8gdGhlIGBUb3VjaFJpcHBsZWAgZWxlbWVudC5cbiAgICovXG4gIHRvdWNoUmlwcGxlUmVmOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW50OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgcHVsc2F0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHN0YXJ0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgc3RvcDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH0pXG4gIH0pXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAncmVzZXQnLCAnc3VibWl0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCdXR0b25CYXNlOyIsImltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGZyb20gJ0BtdWkvdXRpbHMvZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlCdXR0b24nLCBzbG90KTtcbn1cbmNvbnN0IGJ1dHRvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlCdXR0b24nLCBbJ3Jvb3QnLCAndGV4dCcsICd0ZXh0SW5oZXJpdCcsICd0ZXh0UHJpbWFyeScsICd0ZXh0U2Vjb25kYXJ5JywgJ3RleHRTdWNjZXNzJywgJ3RleHRFcnJvcicsICd0ZXh0SW5mbycsICd0ZXh0V2FybmluZycsICdvdXRsaW5lZCcsICdvdXRsaW5lZEluaGVyaXQnLCAnb3V0bGluZWRQcmltYXJ5JywgJ291dGxpbmVkU2Vjb25kYXJ5JywgJ291dGxpbmVkU3VjY2VzcycsICdvdXRsaW5lZEVycm9yJywgJ291dGxpbmVkSW5mbycsICdvdXRsaW5lZFdhcm5pbmcnLCAnY29udGFpbmVkJywgJ2NvbnRhaW5lZEluaGVyaXQnLCAnY29udGFpbmVkUHJpbWFyeScsICdjb250YWluZWRTZWNvbmRhcnknLCAnY29udGFpbmVkU3VjY2VzcycsICdjb250YWluZWRFcnJvcicsICdjb250YWluZWRJbmZvJywgJ2NvbnRhaW5lZFdhcm5pbmcnLCAnZGlzYWJsZUVsZXZhdGlvbicsICdmb2N1c1Zpc2libGUnLCAnZGlzYWJsZWQnLCAnY29sb3JJbmhlcml0JywgJ3RleHRTaXplU21hbGwnLCAndGV4dFNpemVNZWRpdW0nLCAndGV4dFNpemVMYXJnZScsICdvdXRsaW5lZFNpemVTbWFsbCcsICdvdXRsaW5lZFNpemVNZWRpdW0nLCAnb3V0bGluZWRTaXplTGFyZ2UnLCAnY29udGFpbmVkU2l6ZVNtYWxsJywgJ2NvbnRhaW5lZFNpemVNZWRpdW0nLCAnY29udGFpbmVkU2l6ZUxhcmdlJywgJ3NpemVNZWRpdW0nLCAnc2l6ZVNtYWxsJywgJ3NpemVMYXJnZScsICdmdWxsV2lkdGgnLCAnc3RhcnRJY29uJywgJ2VuZEljb24nLCAnaWNvblNpemVTbWFsbCcsICdpY29uU2l6ZU1lZGl1bScsICdpY29uU2l6ZUxhcmdlJ10pO1xuZXhwb3J0IGRlZmF1bHQgYnV0dG9uQ2xhc3NlczsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IEJ1dHRvbkdyb3VwQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEJ1dHRvbkdyb3VwQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdCdXR0b25Hcm91cENvbnRleHQnO1xufVxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uR3JvdXBDb250ZXh0OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuY29uc3QgQnV0dG9uR3JvdXBCdXR0b25Db250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEJ1dHRvbkdyb3VwQnV0dG9uQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdCdXR0b25Hcm91cEJ1dHRvbkNvbnRleHQnO1xufVxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uR3JvdXBCdXR0b25Db250ZXh0OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJjbGFzc05hbWVcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVFbGV2YXRpb25cIiwgXCJkaXNhYmxlRm9jdXNSaXBwbGVcIiwgXCJlbmRJY29uXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwiZnVsbFdpZHRoXCIsIFwic2l6ZVwiLCBcInN0YXJ0SWNvblwiLCBcInR5cGVcIiwgXCJ2YXJpYW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaW50ZXJuYWxfcmVzb2x2ZVByb3BzIGFzIHJlc29sdmVQcm9wcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UvY29tcG9zZUNsYXNzZXMnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkLCB7IHJvb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBidXR0b25DbGFzc2VzLCB7IGdldEJ1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uQ2xhc3Nlcyc7XG5pbXBvcnQgQnV0dG9uR3JvdXBDb250ZXh0IGZyb20gJy4uL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dCc7XG5pbXBvcnQgQnV0dG9uR3JvdXBCdXR0b25Db250ZXh0IGZyb20gJy4uL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQnV0dG9uQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZnVsbFdpZHRoLFxuICAgIHNpemUsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgJHt2YXJpYW50fSR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYHNpemUke2NhcGl0YWxpemUoc2l6ZSl9YCwgYCR7dmFyaWFudH1TaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGNvbG9yID09PSAnaW5oZXJpdCcgJiYgJ2NvbG9ySW5oZXJpdCcsIGRpc2FibGVFbGV2YXRpb24gJiYgJ2Rpc2FibGVFbGV2YXRpb24nLCBmdWxsV2lkdGggJiYgJ2Z1bGxXaWR0aCddLFxuICAgIGxhYmVsOiBbJ2xhYmVsJ10sXG4gICAgc3RhcnRJY29uOiBbJ3N0YXJ0SWNvbicsIGBpY29uU2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gXSxcbiAgICBlbmRJY29uOiBbJ2VuZEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF1cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5jb25zdCBjb21tb25JY29uU3R5bGVzID0gb3duZXJTdGF0ZSA9PiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAxOFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdtZWRpdW0nICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYge1xuICAnJiA+ICo6bnRoLW9mLXR5cGUoMSknOiB7XG4gICAgZm9udFNpemU6IDIyXG4gIH1cbn0pO1xuY29uc3QgQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHJvb3RTaG91bGRGb3J3YXJkUHJvcChwcm9wKSB8fCBwcm9wID09PSAnY2xhc3NlcycsXG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9JHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYHNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXSwgc3R5bGVzW2Ake293bmVyU3RhdGUudmFyaWFudH1TaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiBzdHlsZXMuY29sb3JJbmhlcml0LCBvd25lclN0YXRlLmRpc2FibGVFbGV2YXRpb24gJiYgc3R5bGVzLmRpc2FibGVFbGV2YXRpb24sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHN0eWxlcy5mdWxsV2lkdGhdO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3RoZW1lJHBhbGV0dGUkZ2V0Q29uLCBfdGhlbWUkcGFsZXR0ZTtcbiAgY29uc3QgaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleVszMDBdIDogdGhlbWUucGFsZXR0ZS5ncmV5WzgwMF07XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleS5BMTAwIDogdGhlbWUucGFsZXR0ZS5ncmV5WzcwMF07XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgdGhlbWUudHlwb2dyYXBoeS5idXR0b24sIHtcbiAgICBtaW5XaWR0aDogNjQsXG4gICAgcGFkZGluZzogJzZweCAxNnB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFwZS5ib3JkZXJSYWRpdXMsXG4gICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKFsnYmFja2dyb3VuZC1jb2xvcicsICdib3gtc2hhZG93JywgJ2JvcmRlci1jb2xvcicsICdjb2xvciddLCB7XG4gICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRcbiAgICB9KSxcbiAgICAnJjpob3Zlcic6IF9leHRlbmRzKHtcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnlDaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWlufWAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuQnV0dG9uLmluaGVyaXRDb250YWluZWRIb3ZlckJnIDogaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s0XSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl0sXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZ3JleVszMDBdXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5kYXJrLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gICAgICB9XG4gICAgfSksXG4gICAgJyY6YWN0aXZlJzogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s4XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzZdXG4gICAgfSksXG4gICAgW2AmLiR7YnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXTogX2V4dGVuZHMoe1xuICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kfWBcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWQsXG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzBdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kXG4gICAgfSlcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYge1xuICAgIHBhZGRpbmc6ICc2cHggOHB4J1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzVweCAxNXB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgY3VycmVudENvbG9yJ1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbixcbiAgICBib3JkZXI6IHRoZW1lLnZhcnMgPyBgMXB4IHNvbGlkIHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gMC41KWAgOiBgMXB4IHNvbGlkICR7YWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCAwLjUpfWBcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgY29sb3I6IHRoZW1lLnZhcnMgP1xuICAgIC8vIHRoaXMgaXMgc2FmZSBiZWNhdXNlIGdyZXkgZG9lcyBub3QgY2hhbmdlIGJldHdlZW4gZGVmYXVsdCBsaWdodC9kYXJrIG1vZGVcbiAgICB0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5IDogKF90aGVtZSRwYWxldHRlJGdldENvbiA9IChfdGhlbWUkcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUpLmdldENvbnRyYXN0VGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSRwYWxldHRlJGdldENvbi5jYWxsKF90aGVtZSRwYWxldHRlLCB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSksXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkQmcgOiBpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yLFxuICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl1cbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICBib3JkZXJDb2xvcjogJ2N1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDVweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDExcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICczcHggOXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnN3B4IDIxcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDEwcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDIycHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0pO1xufSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHtcbiAgYm94U2hhZG93OiAnbm9uZScsXG4gICcmOmhvdmVyJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfSxcbiAgJyY6YWN0aXZlJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9XG59KTtcbmNvbnN0IEJ1dHRvblN0YXJ0SWNvbiA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUJ1dHRvbicsXG4gIHNsb3Q6ICdTdGFydEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnN0YXJ0SWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiA4LFxuICBtYXJnaW5MZWZ0OiAtNFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luTGVmdDogLTJcbn0sIGNvbW1vbkljb25TdHlsZXMob3duZXJTdGF0ZSkpKTtcbmNvbnN0IEJ1dHRvbkVuZEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnRW5kSWNvbicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMuZW5kSWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiAtNCxcbiAgbWFyZ2luTGVmdDogOFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luUmlnaHQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBCdXR0b24oaW5Qcm9wcywgcmVmKSB7XG4gIC8vIHByb3BzIHByaW9yaXR5OiBgaW5Qcm9wc2AgPiBgY29udGV4dFByb3BzYCA+IGB0aGVtZURlZmF1bHRQcm9wc2BcbiAgY29uc3QgY29udGV4dFByb3BzID0gUmVhY3QudXNlQ29udGV4dChCdXR0b25Hcm91cENvbnRleHQpO1xuICBjb25zdCBidXR0b25Hcm91cEJ1dHRvbkNvbnRleHRQb3NpdGlvbkNsYXNzTmFtZSA9IFJlYWN0LnVzZUNvbnRleHQoQnV0dG9uR3JvdXBCdXR0b25Db250ZXh0KTtcbiAgY29uc3QgcmVzb2x2ZWRQcm9wcyA9IHJlc29sdmVQcm9wcyhjb250ZXh0UHJvcHMsIGluUHJvcHMpO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiByZXNvbHZlZFByb3BzLFxuICAgIG5hbWU6ICdNdWlCdXR0b24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknLFxuICAgICAgY29tcG9uZW50ID0gJ2J1dHRvbicsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUVsZXZhdGlvbiA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUZvY3VzUmlwcGxlID0gZmFsc2UsXG4gICAgICBlbmRJY29uOiBlbmRJY29uUHJvcCxcbiAgICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSxcbiAgICAgIGZ1bGxXaWR0aCA9IGZhbHNlLFxuICAgICAgc2l6ZSA9ICdtZWRpdW0nLFxuICAgICAgc3RhcnRJY29uOiBzdGFydEljb25Qcm9wLFxuICAgICAgdHlwZSxcbiAgICAgIHZhcmlhbnQgPSAndGV4dCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmdWxsV2lkdGgsXG4gICAgc2l6ZSxcbiAgICB0eXBlLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3Qgc3RhcnRJY29uID0gc3RhcnRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25TdGFydEljb24sIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3RhcnRJY29uLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IHN0YXJ0SWNvblByb3BcbiAgfSk7XG4gIGNvbnN0IGVuZEljb24gPSBlbmRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25FbmRJY29uLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzLmVuZEljb24sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogZW5kSWNvblByb3BcbiAgfSk7XG4gIGNvbnN0IHBvc2l0aW9uQ2xhc3NOYW1lID0gYnV0dG9uR3JvdXBCdXR0b25Db250ZXh0UG9zaXRpb25DbGFzc05hbWUgfHwgJyc7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoQnV0dG9uUm9vdCwgX2V4dGVuZHMoe1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNvbnRleHRQcm9wcy5jbGFzc05hbWUsIGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lLCBwb3NpdGlvbkNsYXNzTmFtZSksXG4gICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIGZvY3VzUmlwcGxlOiAhZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZTogY2xzeChjbGFzc2VzLmZvY3VzVmlzaWJsZSwgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZixcbiAgICB0eXBlOiB0eXBlXG4gIH0sIG90aGVyLCB7XG4gICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICBjaGlsZHJlbjogW3N0YXJ0SWNvbiwgY2hpbGRyZW4sIGVuZEljb25dXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQnV0dG9uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNjdXN0b20tY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnaW5mbycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgbm8gZWxldmF0aW9uIGlzIHVzZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRWxldmF0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlICBrZXlib2FyZCBmb2N1cyByaXBwbGUgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEVsZW1lbnQgcGxhY2VkIGFmdGVyIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGVuZEljb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYnV0dG9uIHdpbGwgdGFrZSB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFdpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBVUkwgdG8gbGluayB0byB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogSWYgZGVmaW5lZCwgYW4gYGFgIGVsZW1lbnQgd2lsbCBiZSB1c2VkIGFzIHRoZSByb290IG5vZGUuXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogYHNtYWxsYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkZW5zZSBidXR0b24gc3R5bGluZy5cbiAgICogQGRlZmF1bHQgJ21lZGl1bSdcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBFbGVtZW50IHBsYWNlZCBiZWZvcmUgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgc3RhcnRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHR5cGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2J1dHRvbicsICdyZXNldCcsICdzdWJtaXQnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ3RleHQnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2NvbnRhaW5lZCcsICdvdXRsaW5lZCcsICd0ZXh0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCdXR0b247IiwiaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgZnJvbSAnQG11aS91dGlscy9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICdAbXVpL3V0aWxzL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlDaXJjdWxhclByb2dyZXNzJywgc2xvdCk7XG59XG5jb25zdCBjaXJjdWxhclByb2dyZXNzQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLCBbJ3Jvb3QnLCAnZGV0ZXJtaW5hdGUnLCAnaW5kZXRlcm1pbmF0ZScsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnc3ZnJywgJ2NpcmNsZScsICdjaXJjbGVEZXRlcm1pbmF0ZScsICdjaXJjbGVJbmRldGVybWluYXRlJywgJ2NpcmNsZURpc2FibGVTaHJpbmsnXSk7XG5leHBvcnQgZGVmYXVsdCBjaXJjdWxhclByb2dyZXNzQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJjb2xvclwiLCBcImRpc2FibGVTaHJpbmtcIiwgXCJzaXplXCIsIFwic3R5bGVcIiwgXCJ0aGlja25lc3NcIiwgXCJ2YWx1ZVwiLCBcInZhcmlhbnRcIl07XG5sZXQgXyA9IHQgPT4gdCxcbiAgX3QsXG4gIF90MixcbiAgX3QzLFxuICBfdDQ7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBjaGFpblByb3BUeXBlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UvY29tcG9zZUNsYXNzZXMnO1xuaW1wb3J0IHsga2V5ZnJhbWVzLCBjc3MgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9jaXJjdWxhclByb2dyZXNzQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgU0laRSA9IDQ0O1xuY29uc3QgY2lyY3VsYXJSb3RhdGVLZXlmcmFtZSA9IGtleWZyYW1lcyhfdCB8fCAoX3QgPSBfYFxuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG5gKSk7XG5jb25zdCBjaXJjdWxhckRhc2hLZXlmcmFtZSA9IGtleWZyYW1lcyhfdDIgfHwgKF90MiA9IF9gXG4gIDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxcHgsIDIwMHB4O1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xuICB9XG5cbiAgNTAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxMDBweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xNXB4O1xuICB9XG5cbiAgMTAwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMTAwcHgsIDIwMHB4O1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAtMTI1cHg7XG4gIH1cbmApKTtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIHZhcmlhbnQsXG4gICAgY29sb3IsXG4gICAgZGlzYWJsZVNocmlua1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgYGNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gXSxcbiAgICBzdmc6IFsnc3ZnJ10sXG4gICAgY2lyY2xlOiBbJ2NpcmNsZScsIGBjaXJjbGUke2NhcGl0YWxpemUodmFyaWFudCl9YCwgZGlzYWJsZVNocmluayAmJiAnY2lyY2xlRGlzYWJsZVNocmluayddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgQ2lyY3VsYXJQcm9ncmVzc1Jvb3QgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBzdHlsZXNbYGNvbG9yJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZSxcbiAgdGhlbWVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2lubGluZS1ibG9jaydcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2RldGVybWluYXRlJyAmJiB7XG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgndHJhbnNmb3JtJylcbn0sIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG59KSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYgY3NzKF90MyB8fCAoX3QzID0gX2BcbiAgICAgIGFuaW1hdGlvbjogJHswfSAxLjRzIGxpbmVhciBpbmZpbml0ZTtcbiAgICBgKSwgY2lyY3VsYXJSb3RhdGVLZXlmcmFtZSkpO1xuY29uc3QgQ2lyY3VsYXJQcm9ncmVzc1NWRyA9IHN0eWxlZCgnc3ZnJywge1xuICBuYW1lOiAnTXVpQ2lyY3VsYXJQcm9ncmVzcycsXG4gIHNsb3Q6ICdTdmcnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5zdmdcbn0pKHtcbiAgZGlzcGxheTogJ2Jsb2NrJyAvLyBLZWVwcyB0aGUgcHJvZ3Jlc3MgY2VudGVyZWRcbn0pO1xuY29uc3QgQ2lyY3VsYXJQcm9ncmVzc0NpcmNsZSA9IHN0eWxlZCgnY2lyY2xlJywge1xuICBuYW1lOiAnTXVpQ2lyY3VsYXJQcm9ncmVzcycsXG4gIHNsb3Q6ICdDaXJjbGUnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLmNpcmNsZSwgc3R5bGVzW2BjaXJjbGUke2NhcGl0YWxpemUob3duZXJTdGF0ZS52YXJpYW50KX1gXSwgb3duZXJTdGF0ZS5kaXNhYmxlU2hyaW5rICYmIHN0eWxlcy5jaXJjbGVEaXNhYmxlU2hyaW5rXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZSxcbiAgdGhlbWVcbn0pID0+IF9leHRlbmRzKHtcbiAgc3Ryb2tlOiAnY3VycmVudENvbG9yJ1xufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnICYmIHtcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdzdHJva2UtZGFzaG9mZnNldCcpXG59LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdpbmRldGVybWluYXRlJyAmJiB7XG4gIC8vIFNvbWUgZGVmYXVsdCB2YWx1ZSB0aGF0IGxvb2tzIGZpbmUgd2FpdGluZyBmb3IgdGhlIGFuaW1hdGlvbiB0byBraWNrcyBpbi5cbiAgc3Ryb2tlRGFzaGFycmF5OiAnODBweCwgMjAwcHgnLFxuICBzdHJva2VEYXNob2Zmc2V0OiAwIC8vIEFkZCB0aGUgdW5pdCB0byBmaXggYSBFZGdlIDE2IGFuZCBiZWxvdyBidWcuXG59KSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYgIW93bmVyU3RhdGUuZGlzYWJsZVNocmluayAmJiBjc3MoX3Q0IHx8IChfdDQgPSBfYFxuICAgICAgYW5pbWF0aW9uOiAkezB9IDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgYCksIGNpcmN1bGFyRGFzaEtleWZyYW1lKSk7XG5cbi8qKlxuICogIyMgQVJJQVxuICpcbiAqIElmIHRoZSBwcm9ncmVzcyBiYXIgaXMgZGVzY3JpYmluZyB0aGUgbG9hZGluZyBwcm9ncmVzcyBvZiBhIHBhcnRpY3VsYXIgcmVnaW9uIG9mIGEgcGFnZSxcbiAqIHlvdSBzaG91bGQgdXNlIGBhcmlhLWRlc2NyaWJlZGJ5YCB0byBwb2ludCB0byB0aGUgcHJvZ3Jlc3MgYmFyLCBhbmQgc2V0IHRoZSBgYXJpYS1idXN5YFxuICogYXR0cmlidXRlIHRvIGB0cnVlYCBvbiB0aGF0IHJlZ2lvbiB1bnRpbCBpdCBoYXMgZmluaXNoZWQgbG9hZGluZy5cbiAqL1xuY29uc3QgQ2lyY3VsYXJQcm9ncmVzcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENpcmN1bGFyUHJvZ3Jlc3MoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgICAgIGRpc2FibGVTaHJpbmsgPSBmYWxzZSxcbiAgICAgIHNpemUgPSA0MCxcbiAgICAgIHN0eWxlLFxuICAgICAgdGhpY2tuZXNzID0gMy42LFxuICAgICAgdmFsdWUgPSAwLFxuICAgICAgdmFyaWFudCA9ICdpbmRldGVybWluYXRlJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgZGlzYWJsZVNocmluayxcbiAgICBzaXplLFxuICAgIHRoaWNrbmVzcyxcbiAgICB2YWx1ZSxcbiAgICB2YXJpYW50XG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIGNvbnN0IGNpcmNsZVN0eWxlID0ge307XG4gIGNvbnN0IHJvb3RTdHlsZSA9IHt9O1xuICBjb25zdCByb290UHJvcHMgPSB7fTtcbiAgaWYgKHZhcmlhbnQgPT09ICdkZXRlcm1pbmF0ZScpIHtcbiAgICBjb25zdCBjaXJjdW1mZXJlbmNlID0gMiAqIE1hdGguUEkgKiAoKFNJWkUgLSB0aGlja25lc3MpIC8gMik7XG4gICAgY2lyY2xlU3R5bGUuc3Ryb2tlRGFzaGFycmF5ID0gY2lyY3VtZmVyZW5jZS50b0ZpeGVkKDMpO1xuICAgIHJvb3RQcm9wc1snYXJpYS12YWx1ZW5vdyddID0gTWF0aC5yb3VuZCh2YWx1ZSk7XG4gICAgY2lyY2xlU3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IGAkeygoMTAwIC0gdmFsdWUpIC8gMTAwICogY2lyY3VtZmVyZW5jZSkudG9GaXhlZCgzKX1weGA7XG4gICAgcm9vdFN0eWxlLnRyYW5zZm9ybSA9ICdyb3RhdGUoLTkwZGVnKSc7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogX2V4dGVuZHMoe1xuICAgICAgd2lkdGg6IHNpemUsXG4gICAgICBoZWlnaHQ6IHNpemVcbiAgICB9LCByb290U3R5bGUsIHN0eWxlKSxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIHJlZjogcmVmLFxuICAgIHJvbGU6IFwicHJvZ3Jlc3NiYXJcIlxuICB9LCByb290UHJvcHMsIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NTVkcsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5zdmcsXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgdmlld0JveDogYCR7U0laRSAvIDJ9ICR7U0laRSAvIDJ9ICR7U0laRX0gJHtTSVpFfWAsXG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQ2lyY3VsYXJQcm9ncmVzc0NpcmNsZSwge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMuY2lyY2xlLFxuICAgICAgICBzdHlsZTogY2lyY2xlU3R5bGUsXG4gICAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICAgIGN4OiBTSVpFLFxuICAgICAgICBjeTogU0laRSxcbiAgICAgICAgcjogKFNJWkUgLSB0aGlja25lc3MpIC8gMixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZVdpZHRoOiB0aGlja25lc3NcbiAgICAgIH0pXG4gICAgfSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBDaXJjdWxhclByb2dyZXNzLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2N1c3RvbS1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2luaGVyaXQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHNocmluayBhbmltYXRpb24gaXMgZGlzYWJsZWQuXG4gICAqIFRoaXMgb25seSB3b3JrcyBpZiB2YXJpYW50IGlzIGBpbmRldGVybWluYXRlYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVTaHJpbms6IGNoYWluUHJvcFR5cGVzKFByb3BUeXBlcy5ib29sLCBwcm9wcyA9PiB7XG4gICAgaWYgKHByb3BzLmRpc2FibGVTaHJpbmsgJiYgcHJvcHMudmFyaWFudCAmJiBwcm9wcy52YXJpYW50ICE9PSAnaW5kZXRlcm1pbmF0ZScpIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoJ01VSTogWW91IGhhdmUgcHJvdmlkZWQgdGhlIGBkaXNhYmxlU2hyaW5rYCBwcm9wICcgKyAnd2l0aCBhIHZhcmlhbnQgb3RoZXIgdGhhbiBgaW5kZXRlcm1pbmF0ZWAuIFRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSWYgdXNpbmcgYSBudW1iZXIsIHRoZSBwaXhlbCB1bml0IGlzIGFzc3VtZWQuXG4gICAqIElmIHVzaW5nIGEgc3RyaW5nLCB5b3UgbmVlZCB0byBwcm92aWRlIHRoZSBDU1MgdW5pdCwgZS5nLiAnM3JlbScuXG4gICAqIEBkZWZhdWx0IDQwXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB0aGlja25lc3Mgb2YgdGhlIGNpcmNsZS5cbiAgICogQGRlZmF1bHQgMy42XG4gICAqL1xuICB0aGlja25lc3M6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHByb2dyZXNzIGluZGljYXRvciBmb3IgdGhlIGRldGVybWluYXRlIHZhcmlhbnQuXG4gICAqIFZhbHVlIGJldHdlZW4gMCBhbmQgMTAwLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogVXNlIGluZGV0ZXJtaW5hdGUgd2hlbiB0aGVyZSBpcyBubyBwcm9ncmVzcyB2YWx1ZS5cbiAgICogQGRlZmF1bHQgJ2luZGV0ZXJtaW5hdGUnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydkZXRlcm1pbmF0ZScsICdpbmRldGVybWluYXRlJ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQ2lyY3VsYXJQcm9ncmVzczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb250YWluZXIgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5jb25zdCBDb250YWluZXIgPSBjcmVhdGVDb250YWluZXIoe1xuICBjcmVhdGVTdHlsZWRDb21wb25lbnQ6IHN0eWxlZCgnZGl2Jywge1xuICAgIG5hbWU6ICdNdWlDb250YWluZXInLFxuICAgIHNsb3Q6ICdSb290JyxcbiAgICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb3duZXJTdGF0ZVxuICAgICAgfSA9IHByb3BzO1xuICAgICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW2BtYXhXaWR0aCR7Y2FwaXRhbGl6ZShTdHJpbmcob3duZXJTdGF0ZS5tYXhXaWR0aCkpfWBdLCBvd25lclN0YXRlLmZpeGVkICYmIHN0eWxlcy5maXhlZCwgb3duZXJTdGF0ZS5kaXNhYmxlR3V0dGVycyAmJiBzdHlsZXMuZGlzYWJsZUd1dHRlcnNdO1xuICAgIH1cbiAgfSksXG4gIHVzZVRoZW1lUHJvcHM6IGluUHJvcHMgPT4gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUNvbnRhaW5lcidcbiAgfSlcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQ29udGFpbmVyLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgaXMgcmVtb3ZlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVHdXR0ZXJzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFNldCB0aGUgbWF4LXdpZHRoIHRvIG1hdGNoIHRoZSBtaW4td2lkdGggb2YgdGhlIGN1cnJlbnQgYnJlYWtwb2ludC5cbiAgICogVGhpcyBpcyB1c2VmdWwgaWYgeW91J2QgcHJlZmVyIHRvIGRlc2lnbiBmb3IgYSBmaXhlZCBzZXQgb2Ygc2l6ZXNcbiAgICogaW5zdGVhZCBvZiB0cnlpbmcgdG8gYWNjb21tb2RhdGUgYSBmdWxseSBmbHVpZCB2aWV3cG9ydC5cbiAgICogSXQncyBmbHVpZCBieSBkZWZhdWx0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZml4ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBtYXgtd2lkdGggb2YgdGhlIGNvbnRhaW5lci5cbiAgICogVGhlIGNvbnRhaW5lciB3aWR0aCBncm93cyB3aXRoIHRoZSBzaXplIG9mIHRoZSBzY3JlZW4uXG4gICAqIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUgYG1heFdpZHRoYC5cbiAgICogQGRlZmF1bHQgJ2xnJ1xuICAgKi9cbiAgbWF4V2lkdGg6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAneGwnLCBmYWxzZV0pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgR2xvYmFsU3R5bGVzIGZyb20gJy4uL0dsb2JhbFN0eWxlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IGh0bWwgPSAodGhlbWUsIGVuYWJsZUNvbG9yU2NoZW1lKSA9PiBfZXh0ZW5kcyh7XG4gIFdlYmtpdEZvbnRTbW9vdGhpbmc6ICdhbnRpYWxpYXNlZCcsXG4gIC8vIEFudGlhbGlhc2luZy5cbiAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gIC8vIEFudGlhbGlhc2luZy5cbiAgLy8gQ2hhbmdlIGZyb20gYGJveC1zaXppbmc6IGNvbnRlbnQtYm94YCBzbyB0aGF0IGB3aWR0aGBcbiAgLy8gaXMgbm90IGFmZmVjdGVkIGJ5IGBwYWRkaW5nYCBvciBgYm9yZGVyYC5cbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIC8vIEZpeCBmb250IHJlc2l6ZSBwcm9ibGVtIGluIGlPU1xuICBXZWJraXRUZXh0U2l6ZUFkanVzdDogJzEwMCUnXG59LCBlbmFibGVDb2xvclNjaGVtZSAmJiAhdGhlbWUudmFycyAmJiB7XG4gIGNvbG9yU2NoZW1lOiB0aGVtZS5wYWxldHRlLm1vZGVcbn0pO1xuZXhwb3J0IGNvbnN0IGJvZHkgPSB0aGVtZSA9PiBfZXh0ZW5kcyh7XG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS50ZXh0LnByaW1hcnlcbn0sIHRoZW1lLnR5cG9ncmFwaHkuYm9keTEsIHtcbiAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5iYWNrZ3JvdW5kLmRlZmF1bHQsXG4gICdAbWVkaWEgcHJpbnQnOiB7XG4gICAgLy8gU2F2ZSBwcmludGVyIGluay5cbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmNvbW1vbi53aGl0ZVxuICB9XG59KTtcbmV4cG9ydCBjb25zdCBzdHlsZXMgPSAodGhlbWUsIGVuYWJsZUNvbG9yU2NoZW1lID0gZmFsc2UpID0+IHtcbiAgdmFyIF90aGVtZSRjb21wb25lbnRzO1xuICBjb25zdCBjb2xvclNjaGVtZVN0eWxlcyA9IHt9O1xuICBpZiAoZW5hYmxlQ29sb3JTY2hlbWUgJiYgdGhlbWUuY29sb3JTY2hlbWVzKSB7XG4gICAgT2JqZWN0LmVudHJpZXModGhlbWUuY29sb3JTY2hlbWVzKS5mb3JFYWNoKChba2V5LCBzY2hlbWVdKSA9PiB7XG4gICAgICB2YXIgX3NjaGVtZSRwYWxldHRlO1xuICAgICAgY29sb3JTY2hlbWVTdHlsZXNbdGhlbWUuZ2V0Q29sb3JTY2hlbWVTZWxlY3RvcihrZXkpLnJlcGxhY2UoL1xccyomLywgJycpXSA9IHtcbiAgICAgICAgY29sb3JTY2hlbWU6IChfc2NoZW1lJHBhbGV0dGUgPSBzY2hlbWUucGFsZXR0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9zY2hlbWUkcGFsZXR0ZS5tb2RlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGxldCBkZWZhdWx0U3R5bGVzID0gX2V4dGVuZHMoe1xuICAgIGh0bWw6IGh0bWwodGhlbWUsIGVuYWJsZUNvbG9yU2NoZW1lKSxcbiAgICAnKiwgKjo6YmVmb3JlLCAqOjphZnRlcic6IHtcbiAgICAgIGJveFNpemluZzogJ2luaGVyaXQnXG4gICAgfSxcbiAgICAnc3Ryb25nLCBiJzoge1xuICAgICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0Qm9sZFxuICAgIH0sXG4gICAgYm9keTogX2V4dGVuZHMoe1xuICAgICAgbWFyZ2luOiAwXG4gICAgfSwgYm9keSh0aGVtZSksIHtcbiAgICAgIC8vIEFkZCBzdXBwb3J0IGZvciBkb2N1bWVudC5ib2R5LnJlcXVlc3RGdWxsU2NyZWVuKCkuXG4gICAgICAvLyBPdGhlciBlbGVtZW50cywgaWYgYmFja2dyb3VuZCB0cmFuc3BhcmVudCwgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAgICAnJjo6YmFja2Ryb3AnOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYmFja2dyb3VuZC5kZWZhdWx0XG4gICAgICB9XG4gICAgfSlcbiAgfSwgY29sb3JTY2hlbWVTdHlsZXMpO1xuICBjb25zdCB0aGVtZU92ZXJyaWRlcyA9IChfdGhlbWUkY29tcG9uZW50cyA9IHRoZW1lLmNvbXBvbmVudHMpID09IG51bGwgfHwgKF90aGVtZSRjb21wb25lbnRzID0gX3RoZW1lJGNvbXBvbmVudHMuTXVpQ3NzQmFzZWxpbmUpID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkY29tcG9uZW50cy5zdHlsZU92ZXJyaWRlcztcbiAgaWYgKHRoZW1lT3ZlcnJpZGVzKSB7XG4gICAgZGVmYXVsdFN0eWxlcyA9IFtkZWZhdWx0U3R5bGVzLCB0aGVtZU92ZXJyaWRlc107XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRTdHlsZXM7XG59O1xuXG4vKipcbiAqIEtpY2tzdGFydCBhbiBlbGVnYW50LCBjb25zaXN0ZW50LCBhbmQgc2ltcGxlIGJhc2VsaW5lIHRvIGJ1aWxkIHVwb24uXG4gKi9cbmZ1bmN0aW9uIENzc0Jhc2VsaW5lKGluUHJvcHMpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQ3NzQmFzZWxpbmUnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgZW5hYmxlQ29sb3JTY2hlbWUgPSBmYWxzZVxuICB9ID0gcHJvcHM7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KEdsb2JhbFN0eWxlcywge1xuICAgICAgc3R5bGVzOiB0aGVtZSA9PiBzdHlsZXModGhlbWUsIGVuYWJsZUNvbG9yU2NoZW1lKVxuICAgIH0pLCBjaGlsZHJlbl1cbiAgfSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBDc3NCYXNlbGluZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBZb3UgY2FuIHdyYXAgYSBub2RlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogRW5hYmxlIGBjb2xvci1zY2hlbWVgIENTUyBwcm9wZXJ0eSB0byB1c2UgYHRoZW1lLnBhbGV0dGUubW9kZWAuXG4gICAqIEZvciBtb3JlIGRldGFpbHMsIGNoZWNrIG91dCBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3Itc2NoZW1lXG4gICAqIEZvciBicm93c2VyIHN1cHBvcnQsIGNoZWNrIG91dCBodHRwczovL2Nhbml1c2UuY29tLz9zZWFyY2g9Y29sb3Itc2NoZW1lXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlbmFibGVDb2xvclNjaGVtZTogUHJvcFR5cGVzLmJvb2xcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBDc3NCYXNlbGluZTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhZGRFbmRMaXN0ZW5lclwiLCBcImFwcGVhclwiLCBcImNoaWxkcmVuXCIsIFwiZWFzaW5nXCIsIFwiaW5cIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmVkXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGVkXCIsIFwib25FeGl0aW5nXCIsIFwic3R5bGVcIiwgXCJ0aW1lb3V0XCIsIFwiVHJhbnNpdGlvbkNvbXBvbmVudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBlbGVtZW50QWNjZXB0aW5nUmVmIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lJztcbmltcG9ydCB7IHJlZmxvdywgZ2V0VHJhbnNpdGlvblByb3BzIH0gZnJvbSAnLi4vdHJhbnNpdGlvbnMvdXRpbHMnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3Qgc3R5bGVzID0ge1xuICBlbnRlcmluZzoge1xuICAgIG9wYWNpdHk6IDFcbiAgfSxcbiAgZW50ZXJlZDoge1xuICAgIG9wYWNpdHk6IDFcbiAgfVxufTtcblxuLyoqXG4gKiBUaGUgRmFkZSB0cmFuc2l0aW9uIGlzIHVzZWQgYnkgdGhlIFtNb2RhbF0oL21hdGVyaWFsLXVpL3JlYWN0LW1vZGFsLykgY29tcG9uZW50LlxuICogSXQgdXNlcyBbcmVhY3QtdHJhbnNpdGlvbi1ncm91cF0oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cCkgaW50ZXJuYWxseS5cbiAqL1xuY29uc3QgRmFkZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZhZGUocHJvcHMsIHJlZikge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lb3V0ID0ge1xuICAgIGVudGVyOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5lbnRlcmluZ1NjcmVlbixcbiAgICBleGl0OiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5sZWF2aW5nU2NyZWVuXG4gIH07XG4gIGNvbnN0IHtcbiAgICAgIGFkZEVuZExpc3RlbmVyLFxuICAgICAgYXBwZWFyID0gdHJ1ZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZWFzaW5nLFxuICAgICAgaW46IGluUHJvcCxcbiAgICAgIG9uRW50ZXIsXG4gICAgICBvbkVudGVyZWQsXG4gICAgICBvbkVudGVyaW5nLFxuICAgICAgb25FeGl0LFxuICAgICAgb25FeGl0ZWQsXG4gICAgICBvbkV4aXRpbmcsXG4gICAgICBzdHlsZSxcbiAgICAgIHRpbWVvdXQgPSBkZWZhdWx0VGltZW91dCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICBUcmFuc2l0aW9uQ29tcG9uZW50ID0gVHJhbnNpdGlvblxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBlbmFibGVTdHJpY3RNb2RlQ29tcGF0ID0gdHJ1ZTtcbiAgY29uc3Qgbm9kZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihub2RlUmVmLCBjaGlsZHJlbi5yZWYsIHJlZik7XG4gIGNvbnN0IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjayA9PiBtYXliZUlzQXBwZWFyaW5nID0+IHtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBub2RlUmVmLmN1cnJlbnQ7XG5cbiAgICAgIC8vIG9uRW50ZXJYeHggYW5kIG9uRXhpdFh4eCBjYWxsYmFja3MgaGF2ZSBhIGRpZmZlcmVudCBhcmd1bWVudHMubGVuZ3RoIHZhbHVlLlxuICAgICAgaWYgKG1heWJlSXNBcHBlYXJpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYWxsYmFjayhub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKG5vZGUsIG1heWJlSXNBcHBlYXJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlRW50ZXJpbmcgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKG9uRW50ZXJpbmcpO1xuICBjb25zdCBoYW5kbGVFbnRlciA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2soKG5vZGUsIGlzQXBwZWFyaW5nKSA9PiB7XG4gICAgcmVmbG93KG5vZGUpOyAvLyBTbyB0aGUgYW5pbWF0aW9uIGFsd2F5cyBzdGFydCBmcm9tIHRoZSBzdGFydC5cblxuICAgIGNvbnN0IHRyYW5zaXRpb25Qcm9wcyA9IGdldFRyYW5zaXRpb25Qcm9wcyh7XG4gICAgICBzdHlsZSxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBlYXNpbmdcbiAgICB9LCB7XG4gICAgICBtb2RlOiAnZW50ZXInXG4gICAgfSk7XG4gICAgbm9kZS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBub2RlLnN0eWxlLnRyYW5zaXRpb24gPSB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ29wYWNpdHknLCB0cmFuc2l0aW9uUHJvcHMpO1xuICAgIGlmIChvbkVudGVyKSB7XG4gICAgICBvbkVudGVyKG5vZGUsIGlzQXBwZWFyaW5nKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFbnRlcmVkID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkVudGVyZWQpO1xuICBjb25zdCBoYW5kbGVFeGl0aW5nID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkV4aXRpbmcpO1xuICBjb25zdCBoYW5kbGVFeGl0ID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhub2RlID0+IHtcbiAgICBjb25zdCB0cmFuc2l0aW9uUHJvcHMgPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2V4aXQnXG4gICAgfSk7XG4gICAgbm9kZS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBub2RlLnN0eWxlLnRyYW5zaXRpb24gPSB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ29wYWNpdHknLCB0cmFuc2l0aW9uUHJvcHMpO1xuICAgIGlmIChvbkV4aXQpIHtcbiAgICAgIG9uRXhpdChub2RlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKG9uRXhpdGVkKTtcbiAgY29uc3QgaGFuZGxlQWRkRW5kTGlzdGVuZXIgPSBuZXh0ID0+IHtcbiAgICBpZiAoYWRkRW5kTGlzdGVuZXIpIHtcbiAgICAgIC8vIE9sZCBjYWxsIHNpZ25hdHVyZSBiZWZvcmUgYHJlYWN0LXRyYW5zaXRpb24tZ3JvdXBgIGltcGxlbWVudGVkIGBub2RlUmVmYFxuICAgICAgYWRkRW5kTGlzdGVuZXIobm9kZVJlZi5jdXJyZW50LCBuZXh0KTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgYXBwZWFyOiBhcHBlYXIsXG4gICAgaW46IGluUHJvcCxcbiAgICBub2RlUmVmOiBlbmFibGVTdHJpY3RNb2RlQ29tcGF0ID8gbm9kZVJlZiA6IHVuZGVmaW5lZCxcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkVudGVyZWQ6IGhhbmRsZUVudGVyZWQsXG4gICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmcsXG4gICAgb25FeGl0OiBoYW5kbGVFeGl0LFxuICAgIG9uRXhpdGVkOiBoYW5kbGVFeGl0ZWQsXG4gICAgb25FeGl0aW5nOiBoYW5kbGVFeGl0aW5nLFxuICAgIGFkZEVuZExpc3RlbmVyOiBoYW5kbGVBZGRFbmRMaXN0ZW5lcixcbiAgICB0aW1lb3V0OiB0aW1lb3V0XG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IChzdGF0ZSwgY2hpbGRQcm9wcykgPT4ge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIF9leHRlbmRzKHtcbiAgICAgICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlID09PSAnZXhpdGVkJyAmJiAhaW5Qcm9wID8gJ2hpZGRlbicgOiB1bmRlZmluZWRcbiAgICAgICAgfSwgc3R5bGVzW3N0YXRlXSwgc3R5bGUsIGNoaWxkcmVuLnByb3BzLnN0eWxlKSxcbiAgICAgICAgcmVmOiBoYW5kbGVSZWZcbiAgICAgIH0sIGNoaWxkUHJvcHMpKTtcbiAgICB9XG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gRmFkZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gdHJhbnNpdGlvbiBlbmQgdHJpZ2dlci4gQ2FsbGVkIHdpdGggdGhlIHRyYW5zaXRpb25pbmcgRE9NXG4gICAqIG5vZGUgYW5kIGEgZG9uZSBjYWxsYmFjay4gQWxsb3dzIGZvciBtb3JlIGZpbmUgZ3JhaW5lZCB0cmFuc2l0aW9uIGVuZFxuICAgKiBsb2dpYy4gTm90ZTogVGltZW91dHMgYXJlIHN0aWxsIHVzZWQgYXMgYSBmYWxsYmFjayBpZiBwcm92aWRlZC5cbiAgICovXG4gIGFkZEVuZExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFBlcmZvcm0gdGhlIGVudGVyIHRyYW5zaXRpb24gd2hlbiBpdCBmaXJzdCBtb3VudHMgaWYgYGluYCBpcyBhbHNvIGB0cnVlYC5cbiAgICogU2V0IHRoaXMgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgYmVoYXZpb3IuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGFwcGVhcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBBIHNpbmdsZSBjaGlsZCBjb250ZW50IGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogZWxlbWVudEFjY2VwdGluZ1JlZi5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgZWFzaW5nIG9yIGEgb2JqZWN0IGNvbnRhaW5pbmcgZW50ZXIgYW5kIGV4aXQgdmFsdWVzLlxuICAgKi9cbiAgZWFzaW5nOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGVudGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGV4aXQ6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCB3aWxsIHRyYW5zaXRpb24gaW4uXG4gICAqL1xuICBpbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRW50ZXJlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRXhpdDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gZm9yIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSB0aW1lb3V0IGZvciBhbGwgdHJhbnNpdGlvbnMsIG9yIGluZGl2aWR1YWxseSB3aXRoIGFuIG9iamVjdC5cbiAgICogQGRlZmF1bHQge1xuICAgKiAgIGVudGVyOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5lbnRlcmluZ1NjcmVlbixcbiAgICogICBleGl0OiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5sZWF2aW5nU2NyZWVuLFxuICAgKiB9XG4gICAqL1xuICB0aW1lb3V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFwcGVhcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBlbnRlcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBleGl0OiBQcm9wVHlwZXMubnVtYmVyXG4gIH0pXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBGYWRlOyJdLCJuYW1lcyI6WyJkZWZhdWx0VGhlbWUiLCJjcmVhdGVUaGVtZSIsImNyZWF0ZUJveCIsInRoZW1lSWQiLCJkZWZhdWx0Q2xhc3NOYW1lIiwicm9vdCIsImdlbmVyYXRlQ2xhc3NOYW1lIiwiQ2xhc3NOYW1lR2VuZXJhdG9yIiwiZ2VuZXJhdGUiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiX2V4Y2x1ZGVkIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfIiwidCIsImVudGVyS2V5ZnJhbWUiLCJleGl0S2V5ZnJhbWUiLCJwdWxzYXRlS2V5ZnJhbWUiLCJUb3VjaFJpcHBsZVJvb3QiLCJzdHlsZWQiLCJuYW1lIiwic2xvdCIsIm92ZXJmbG93IiwicG9pbnRlckV2ZW50cyIsInBvc2l0aW9uIiwiekluZGV4IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiYm9yZGVyUmFkaXVzIiwiVG91Y2hSaXBwbGVSaXBwbGUiLCJwcm9wcyIsImNsYXNzTmFtZSIsImNsYXNzZXMiLCJwdWxzYXRlIiwicmlwcGxlWCIsInJpcHBsZVkiLCJyaXBwbGVTaXplIiwiaW4iLCJpblByb3AiLCJvbkV4aXRlZCIsInRpbWVvdXQiLCJsZWF2aW5nIiwic2V0TGVhdmluZyIsInJpcHBsZUNsYXNzTmFtZSIsImNsc3giLCJyaXBwbGUiLCJyaXBwbGVWaXNpYmxlIiwicmlwcGxlUHVsc2F0ZSIsInJpcHBsZVN0eWxlcyIsIndpZHRoIiwiaGVpZ2h0IiwiY2hpbGRDbGFzc05hbWUiLCJjaGlsZCIsImNoaWxkTGVhdmluZyIsImNoaWxkUHVsc2F0ZSIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzdHlsZSIsImNoaWxkcmVuIiwidGhlbWUiLCJ0cmFuc2l0aW9ucyIsImVhc2luZyIsImVhc2VJbk91dCIsImR1cmF0aW9uIiwic2hvcnRlciIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiY2VudGVyIiwiY2VudGVyUHJvcCIsIm90aGVyIiwicmlwcGxlcyIsInNldFJpcHBsZXMiLCJuZXh0S2V5IiwicmlwcGxlQ2FsbGJhY2siLCJjdXJyZW50IiwiaWdub3JpbmdNb3VzZURvd24iLCJzdGFydFRpbWVyIiwic3RhcnRUaW1lckNvbW1pdCIsImNvbnRhaW5lciIsInN0YXJ0Q29tbWl0IiwicGFyYW1zIiwiY2IiLCJvbGRSaXBwbGVzIiwic3RhcnQiLCJldmVudCIsIm9wdGlvbnMiLCJmYWtlRWxlbWVudCIsInR5cGUiLCJlbGVtZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInVuZGVmaW5lZCIsImNsaWVudFgiLCJjbGllbnRZIiwidG91Y2hlcyIsIk1hdGgiLCJyb3VuZCIsImxlbmd0aCIsInNxcnQiLCJzaXplWCIsIm1heCIsImFicyIsImNsaWVudFdpZHRoIiwic2l6ZVkiLCJjbGllbnRIZWlnaHQiLCJzdG9wIiwic2xpY2UiLCJUcmFuc2l0aW9uR3JvdXAiLCJjb21wb25lbnQiLCJleGl0IiwiZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyIsIkJ1dHRvbkJhc2VSb290Iiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJzdHlsZXMiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiYm94U2l6aW5nIiwiV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJvdXRsaW5lIiwiYm9yZGVyIiwibWFyZ2luIiwicGFkZGluZyIsImN1cnNvciIsInVzZXJTZWxlY3QiLCJ2ZXJ0aWNhbEFsaWduIiwiTW96QXBwZWFyYW5jZSIsIldlYmtpdEFwcGVhcmFuY2UiLCJ0ZXh0RGVjb3JhdGlvbiIsImNvbG9yIiwiYm9yZGVyU3R5bGUiLCJkaXNhYmxlZCIsImNvbG9yQWRqdXN0IiwiYWN0aW9uIiwiY2VudGVyUmlwcGxlIiwiZGlzYWJsZVJpcHBsZSIsImRpc2FibGVUb3VjaFJpcHBsZSIsImZvY3VzUmlwcGxlIiwiTGlua0NvbXBvbmVudCIsIm9uQmx1ciIsIm9uQ2xpY2siLCJvbkNvbnRleHRNZW51Iiwib25EcmFnTGVhdmUiLCJvbkZvY3VzIiwib25Gb2N1c1Zpc2libGUiLCJvbktleURvd24iLCJvbktleVVwIiwib25Nb3VzZURvd24iLCJvbk1vdXNlTGVhdmUiLCJvbk1vdXNlVXAiLCJvblRvdWNoRW5kIiwib25Ub3VjaE1vdmUiLCJvblRvdWNoU3RhcnQiLCJ0YWJJbmRleCIsIlRvdWNoUmlwcGxlUHJvcHMiLCJ0b3VjaFJpcHBsZVJlZiIsImJ1dHRvblJlZiIsInJpcHBsZVJlZiIsImhhbmRsZVJpcHBsZVJlZiIsInVzZUZvcmtSZWYiLCJpc0ZvY3VzVmlzaWJsZVJlZiIsImhhbmRsZUZvY3VzVmlzaWJsZSIsImhhbmRsZUJsdXJWaXNpYmxlIiwiZm9jdXNWaXNpYmxlUmVmIiwidXNlSXNGb2N1c1Zpc2libGUiLCJmb2N1c1Zpc2libGUiLCJzZXRGb2N1c1Zpc2libGUiLCJmb2N1cyIsIm1vdW50ZWRTdGF0ZSIsInNldE1vdW50ZWRTdGF0ZSIsImVuYWJsZVRvdWNoUmlwcGxlIiwidXNlUmlwcGxlSGFuZGxlciIsInJpcHBsZUFjdGlvbiIsImV2ZW50Q2FsbGJhY2siLCJza2lwUmlwcGxlQWN0aW9uIiwidXNlRXZlbnRDYWxsYmFjayIsImhhbmRsZU1vdXNlRG93biIsImhhbmRsZUNvbnRleHRNZW51IiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlTW91c2VVcCIsImhhbmRsZU1vdXNlTGVhdmUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVRvdWNoU3RhcnQiLCJoYW5kbGVUb3VjaEVuZCIsImhhbmRsZVRvdWNoTW92ZSIsImhhbmRsZUJsdXIiLCJoYW5kbGVGb2N1cyIsImN1cnJlbnRUYXJnZXQiLCJpc05vbk5hdGl2ZUJ1dHRvbiIsImJ1dHRvbiIsInRhZ05hbWUiLCJocmVmIiwia2V5ZG93blJlZiIsImhhbmRsZUtleURvd24iLCJrZXkiLCJ0YXJnZXQiLCJoYW5kbGVLZXlVcCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJDb21wb25lbnRQcm9wIiwidG8iLCJidXR0b25Qcm9wcyIsInJvbGUiLCJoYW5kbGVSZWYiLCJvd25lclN0YXRlIiwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lIiwic2xvdHMiLCJjb21wb3NlZENsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYXMiLCJnZXRCdXR0b25VdGlsaXR5Q2xhc3MiLCJjb21tb25JY29uU3R5bGVzIiwic2l6ZSIsImZvbnRTaXplIiwiQnV0dG9uUm9vdCIsInNob3VsZEZvcndhcmRQcm9wIiwicHJvcCIsInZhcmlhbnQiLCJjYXBpdGFsaXplIiwiY29sb3JJbmhlcml0IiwiZGlzYWJsZUVsZXZhdGlvbiIsImZ1bGxXaWR0aCIsIl90aGVtZSRwYWxldHRlJGdldENvbiIsIl90aGVtZSRwYWxldHRlIiwiaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJtb2RlIiwiZ3JleSIsImluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvciIsIkExMDAiLCJ0eXBvZ3JhcGh5IiwibWluV2lkdGgiLCJ2YXJzIiwic2hhcGUiLCJ0cmFuc2l0aW9uIiwiY3JlYXRlIiwic2hvcnQiLCJ0ZXh0IiwicHJpbWFyeUNoYW5uZWwiLCJob3Zlck9wYWNpdHkiLCJwcmltYXJ5IiwibWFpbkNoYW5uZWwiLCJtYWluIiwiQnV0dG9uIiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmciLCJib3hTaGFkb3ciLCJzaGFkb3dzIiwiZGFyayIsImRpc2FibGVkQmFja2dyb3VuZCIsImdldENvbnRyYXN0VGV4dCIsImNhbGwiLCJpbmhlcml0Q29udGFpbmVkQmciLCJjb250cmFzdFRleHQiLCJib3JkZXJDb2xvciIsInB4VG9SZW0iLCJCdXR0b25TdGFydEljb24iLCJzdGFydEljb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJCdXR0b25FbmRJY29uIiwiZW5kSWNvbiIsImNvbnRleHRQcm9wcyIsImJ1dHRvbkdyb3VwQnV0dG9uQ29udGV4dFBvc2l0aW9uQ2xhc3NOYW1lIiwicmVzb2x2ZWRQcm9wcyIsInJlc29sdmVQcm9wcyIsImRpc2FibGVGb2N1c1JpcHBsZSIsImVuZEljb25Qcm9wIiwic3RhcnRJY29uUHJvcCIsImxhYmVsIiwicG9zaXRpb25DbGFzc05hbWUiLCJnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJjaXJjdWxhclJvdGF0ZUtleWZyYW1lIiwiY2lyY3VsYXJEYXNoS2V5ZnJhbWUiLCJDaXJjdWxhclByb2dyZXNzUm9vdCIsIkNpcmN1bGFyUHJvZ3Jlc3NTVkciLCJzdmciLCJDaXJjdWxhclByb2dyZXNzQ2lyY2xlIiwiY2lyY2xlIiwiZGlzYWJsZVNocmluayIsImNpcmNsZURpc2FibGVTaHJpbmsiLCJzdHJva2UiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0IiwidGhpY2tuZXNzIiwidmFsdWUiLCJjaXJjbGVTdHlsZSIsInJvb3RTdHlsZSIsInJvb3RQcm9wcyIsImNpcmN1bWZlcmVuY2UiLCJQSSIsInRvRml4ZWQiLCJ0cmFuc2Zvcm0iLCJ2aWV3Qm94IiwiY3giLCJjeSIsInIiLCJmaWxsIiwic3Ryb2tlV2lkdGgiLCJjcmVhdGVTdHlsZWRDb21wb25lbnQiLCJTdHJpbmciLCJtYXhXaWR0aCIsImZpeGVkIiwiZGlzYWJsZUd1dHRlcnMiLCJodG1sIiwiZW5hYmxlQ29sb3JTY2hlbWUiLCJXZWJraXRGb250U21vb3RoaW5nIiwiTW96T3N4Rm9udFNtb290aGluZyIsIldlYmtpdFRleHRTaXplQWRqdXN0IiwiY29sb3JTY2hlbWUiLCJib2R5IiwiYm9keTEiLCJiYWNrZ3JvdW5kIiwiZGVmYXVsdCIsImNvbW1vbiIsIndoaXRlIiwiX3RoZW1lJGNvbXBvbmVudHMiLCJjb2xvclNjaGVtZVN0eWxlcyIsImNvbG9yU2NoZW1lcyIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwic2NoZW1lIiwiX3NjaGVtZSRwYWxldHRlIiwiZ2V0Q29sb3JTY2hlbWVTZWxlY3RvciIsInJlcGxhY2UiLCJkZWZhdWx0U3R5bGVzIiwiZm9udFdlaWdodCIsImZvbnRXZWlnaHRCb2xkIiwidGhlbWVPdmVycmlkZXMiLCJjb21wb25lbnRzIiwiTXVpQ3NzQmFzZWxpbmUiLCJzdHlsZU92ZXJyaWRlcyIsImVudGVyaW5nIiwib3BhY2l0eSIsImVudGVyZWQiLCJkZWZhdWx0VGltZW91dCIsImVudGVyIiwiZW50ZXJpbmdTY3JlZW4iLCJsZWF2aW5nU2NyZWVuIiwiYWRkRW5kTGlzdGVuZXIiLCJhcHBlYXIiLCJvbkVudGVyIiwib25FbnRlcmVkIiwib25FbnRlcmluZyIsIm9uRXhpdCIsIm9uRXhpdGluZyIsIlRyYW5zaXRpb25Db21wb25lbnQiLCJub2RlUmVmIiwibm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayIsImNhbGxiYWNrIiwibWF5YmVJc0FwcGVhcmluZyIsIm5vZGUiLCJoYW5kbGVFbnRlcmluZyIsImhhbmRsZUVudGVyIiwiaXNBcHBlYXJpbmciLCJ0cmFuc2l0aW9uUHJvcHMiLCJ3ZWJraXRUcmFuc2l0aW9uIiwiaGFuZGxlRW50ZXJlZCIsImhhbmRsZUV4aXRpbmciLCJoYW5kbGVFeGl0IiwiaGFuZGxlRXhpdGVkIiwibmV4dCIsInN0YXRlIiwiY2hpbGRQcm9wcyIsInZpc2liaWxpdHkiXSwic291cmNlUm9vdCI6IiJ9