@prisma/studio-core 0.0.0-dev.202505101544 → 0.0.0-dev.202505102024
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/index.cjs +42 -42
- package/dist/ui/index.css +148 -3
- package/dist/ui/index.js +7 -7
- package/package.json +3 -1
package/dist/ui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import"../chunk-IAKOOX7B.js";import{D as Je}from"../chunk-OGMDOPWW.js";import{B as pt,aa as mt,c as ae,q as it,r as ft,t as ct}from"../chunk-RFCV76TR.js";import{a as fs,b as Ce}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as In,motion as ns}from"motion/react";import{clsx as Ws}from"clsx";var Lt="-",cs=e=>{let a=ms(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(Lt);return u[0]===""&&u.length!==1&&u.shift(),co(u,a)||ps(s)},getConflictingClassGroupIds:(s,u)=>{let d=t[s]||[];return u&&o[s]?[...d,...o[s]]:d}}},co=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?co(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(Lt);return a.validators.find(({validator:s})=>s(l))?.classGroupId},uo=/^\[(.+)\]$/,ps=e=>{if(uo.test(e)){let a=uo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},ms=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return xs(Object.entries(e.classGroups),t).forEach(([l,s])=>{xt(s,o,l,a)}),o},xt=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:no(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(gs(r)){xt(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{xt(s,no(a,l),t,o)})})},no=(e,a)=>{let t=e;return a.split(Lt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},gs=e=>e.isThemeGetter,xs=(e,a)=>a?e.map(([t,o])=>{let r=o.map(l=>typeof l=="string"?a+l:typeof l=="object"?Object.fromEntries(Object.entries(l).map(([s,u])=>[a+s,u])):l);return[t,r]}):e,Ls=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(l,s)=>{t.set(l,s),a++,a>e&&(a=0,o=t,t=new Map)};return{get(l){let s=t.get(l);if(s!==void 0)return s;if((s=o.get(l))!==void 0)return r(l,s),s},set(l,s){t.has(l)?t.set(l,s):r(l,s)}}},po="!",Cs=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=u=>{let d=[],n=0,f=0,g;for(let L=0;L<u.length;L++){let C=u[L];if(n===0){if(C===r&&(o||u.slice(L,L+l)===a)){d.push(u.slice(f,L)),f=L+l;continue}if(C==="/"){g=L;continue}}C==="["?n++:C==="]"&&n--}let m=d.length===0?u:u.substring(f),x=m.startsWith(po),S=x?m.substring(1):m,c=g&&g>f?g-f:void 0;return{modifiers:d,hasImportantModifier:x,baseClassName:S,maybePostfixModifierPosition:c}};return t?u=>t({className:u,parseClassName:s}):s},hs=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},Is=e=>({cache:Ls(e.cacheSize),parseClassName:Cs(e),...cs(e)}),Ss=/\s+/,bs=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(Ss),u="";for(let d=s.length-1;d>=0;d-=1){let n=s[d],{modifiers:f,hasImportantModifier:g,baseClassName:m,maybePostfixModifierPosition:x}=t(n),S=!!x,c=o(S?m.substring(0,x):m);if(!c){if(!S){u=n+(u.length>0?" "+u:u);continue}if(c=o(m),!c){u=n+(u.length>0?" "+u:u);continue}S=!1}let L=hs(f).join(":"),C=g?L+po:L,w=C+c;if(l.includes(w))continue;l.push(w);let E=r(c,S);for(let W=0;W<E.length;++W){let oe=E[W];l.push(C+oe)}u=n+(u.length>0?" "+u:u)}return u};function ws(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=mo(a))&&(o&&(o+=" "),o+=t);return o}var mo=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=mo(e[o]))&&(t&&(t+=" "),t+=a);return t};function io(e,...a){let t,o,r,l=s;function s(d){let n=a.reduce((f,g)=>g(f),e());return t=Is(n),o=t.cache.get,r=t.cache.set,l=u,u(d)}function u(d){let n=o(d);if(n)return n;let f=bs(d,t);return r(d,f),f}return function(){return l(ws.apply(null,arguments))}}var F=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},go=/^\[(?:([a-z-]+):)?(.+)\]$/i,ys=/^\d+\/\d+$/,vs=new Set(["px","full","screen"]),Ps=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ks=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Rs=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Ms=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ts=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,he=e=>$e(e)||vs.has(e)||ys.test(e),Me=e=>je(e,"length",Es),$e=e=>!!e&&!Number.isNaN(Number(e)),gt=e=>je(e,"number",$e),ra=e=>!!e&&Number.isInteger(Number(e)),Ds=e=>e.endsWith("%")&&$e(e.slice(0,-1)),y=e=>go.test(e),Te=e=>Ps.test(e),As=new Set(["length","size","percentage"]),Fs=e=>je(e,As,xo),Bs=e=>je(e,"position",xo),Ns=new Set(["image","url"]),Os=e=>je(e,Ns,Hs),qs=e=>je(e,"",Us),sa=()=>!0,je=(e,a,t)=>{let o=go.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Es=e=>ks.test(e)&&!Rs.test(e),xo=()=>!1,Us=e=>Ms.test(e),Hs=e=>Ts.test(e);var fo=()=>{let e=F("colors"),a=F("spacing"),t=F("blur"),o=F("brightness"),r=F("borderColor"),l=F("borderRadius"),s=F("borderSpacing"),u=F("borderWidth"),d=F("contrast"),n=F("grayscale"),f=F("hueRotate"),g=F("invert"),m=F("gap"),x=F("gradientColorStops"),S=F("gradientColorStopPositions"),c=F("inset"),L=F("margin"),C=F("opacity"),w=F("padding"),E=F("saturate"),W=F("scale"),oe=F("sepia"),U=F("skew"),Q=F("space"),H=F("translate"),D=()=>["auto","contain","none"],v=()=>["auto","hidden","clip","visible","scroll"],Z=()=>["auto",y,a],M=()=>[y,a],xe=()=>["",he,Me],Qe=()=>["auto",$e,y],Ha=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Ze=()=>["solid","dashed","dotted","double","none"],za=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],oa=()=>["start","end","center","between","around","evenly","stretch"],ze=()=>["","0",y],Ga=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>[$e,y];return{cacheSize:500,separator:":",theme:{colors:[sa],spacing:[he,Me],blur:["none","",Te,y],brightness:T(),borderColor:[e],borderRadius:["none","","full",Te,y],borderSpacing:M(),borderWidth:xe(),contrast:T(),grayscale:ze(),hueRotate:T(),invert:ze(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[Ds,Me],inset:Z(),margin:Z(),opacity:T(),padding:M(),saturate:T(),scale:T(),sepia:ze(),skew:T(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",y]}],container:["container"],columns:[{columns:[Te]}],"break-after":[{"break-after":Ga()}],"break-before":[{"break-before":Ga()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Ha(),y]}],overflow:[{overflow:v()}],"overflow-x":[{"overflow-x":v()}],"overflow-y":[{"overflow-y":v()}],overscroll:[{overscroll:D()}],"overscroll-x":[{"overscroll-x":D()}],"overscroll-y":[{"overscroll-y":D()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[c]}],"inset-x":[{"inset-x":[c]}],"inset-y":[{"inset-y":[c]}],start:[{start:[c]}],end:[{end:[c]}],top:[{top:[c]}],right:[{right:[c]}],bottom:[{bottom:[c]}],left:[{left:[c]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ra,y]}],basis:[{basis:Z()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",y]}],grow:[{grow:ze()}],shrink:[{shrink:ze()}],order:[{order:["first","last","none",ra,y]}],"grid-cols":[{"grid-cols":[sa]}],"col-start-end":[{col:["auto",{span:["full",ra,y]},y]}],"col-start":[{"col-start":Qe()}],"col-end":[{"col-end":Qe()}],"grid-rows":[{"grid-rows":[sa]}],"row-start-end":[{row:["auto",{span:[ra,y]},y]}],"row-start":[{"row-start":Qe()}],"row-end":[{"row-end":Qe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",y]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",y]}],gap:[{gap:[m]}],"gap-x":[{"gap-x":[m]}],"gap-y":[{"gap-y":[m]}],"justify-content":[{justify:["normal",...oa()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...oa(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...oa(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[L]}],mx:[{mx:[L]}],my:[{my:[L]}],ms:[{ms:[L]}],me:[{me:[L]}],mt:[{mt:[L]}],mr:[{mr:[L]}],mb:[{mb:[L]}],ml:[{ml:[L]}],"space-x":[{"space-x":[Q]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Q]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",y,a]}],"min-w":[{"min-w":[y,a,"min","max","fit"]}],"max-w":[{"max-w":[y,a,"none","full","min","max","fit","prose",{screen:[Te]},Te]}],h:[{h:[y,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[y,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Te,Me]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",gt]}],"font-family":[{font:[sa]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",y]}],"line-clamp":[{"line-clamp":["none",$e,gt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",he,y]}],"list-image":[{"list-image":["none",y]}],"list-style-type":[{list:["none","disc","decimal",y]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[C]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[C]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ze(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",he,Me]}],"underline-offset":[{"underline-offset":["auto",he,y]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:M()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",y]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",y]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[C]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Ha(),Bs]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Fs]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Os]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[S]}],"gradient-via-pos":[{via:[S]}],"gradient-to-pos":[{to:[S]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[C]}],"border-style":[{border:[...Ze(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[C]}],"divide-style":[{divide:Ze()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...Ze()]}],"outline-offset":[{"outline-offset":[he,y]}],"outline-w":[{outline:[he,Me]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:xe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[C]}],"ring-offset-w":[{"ring-offset":[he,Me]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Te,qs]}],"shadow-color":[{shadow:[sa]}],opacity:[{opacity:[C]}],"mix-blend":[{"mix-blend":[...za(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":za()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",Te,y]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[g]}],saturate:[{saturate:[E]}],sepia:[{sepia:[oe]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f]}],"backdrop-invert":[{"backdrop-invert":[g]}],"backdrop-opacity":[{"backdrop-opacity":[C]}],"backdrop-saturate":[{"backdrop-saturate":[E]}],"backdrop-sepia":[{"backdrop-sepia":[oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",y]}],duration:[{duration:T()}],ease:[{ease:["linear","in","out","in-out",y]}],delay:[{delay:T()}],animate:[{animate:["none","spin","ping","pulse","bounce",y]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[W]}],"scale-x":[{"scale-x":[W]}],"scale-y":[{"scale-y":[W]}],rotate:[{rotate:[ra,y]}],"translate-x":[{"translate-x":[H]}],"translate-y":[{"translate-y":[H]}],"skew-x":[{"skew-x":[U]}],"skew-y":[{"skew-y":[U]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",y]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",y]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":M()}],"scroll-mx":[{"scroll-mx":M()}],"scroll-my":[{"scroll-my":M()}],"scroll-ms":[{"scroll-ms":M()}],"scroll-me":[{"scroll-me":M()}],"scroll-mt":[{"scroll-mt":M()}],"scroll-mr":[{"scroll-mr":M()}],"scroll-mb":[{"scroll-mb":M()}],"scroll-ml":[{"scroll-ml":M()}],"scroll-p":[{"scroll-p":M()}],"scroll-px":[{"scroll-px":M()}],"scroll-py":[{"scroll-py":M()}],"scroll-ps":[{"scroll-ps":M()}],"scroll-pe":[{"scroll-pe":M()}],"scroll-pt":[{"scroll-pt":M()}],"scroll-pr":[{"scroll-pr":M()}],"scroll-pb":[{"scroll-pb":M()}],"scroll-pl":[{"scroll-pl":M()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",y]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[he,Me,gt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},zs=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{la(e,"cacheSize",a),la(e,"prefix",t),la(e,"separator",o),la(e,"experimentalParseClassName",r);for(let u in s)Gs(e[u],s[u]);for(let u in l)Vs(e[u],l[u]);return e},la=(e,a,t)=>{t!==void 0&&(e[a]=t)},Gs=(e,a)=>{if(a)for(let t in a)la(e,t,a[t])},Vs=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},Lo=(e,...a)=>typeof e=="function"?io(fo,e,...a):io(()=>zs(fo(),e),...a);var Ks=Lo({prefix:"ps-"});function p(...e){return Ks(Ws(e))}import{useIsMutating as ln}from"@tanstack/react-query";import{forwardRef as _s,createElement as Qs}from"react";var Co=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Va=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Xs,createElement as Io}from"react";var ho={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var So=Xs(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},d)=>Io("svg",{ref:d,...ho,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Va("lucide",r),...u},[...s.map(([n,f])=>Io(n,f)),...Array.isArray(l)?l:[l]]));var b=(e,a)=>{let t=_s(({className:o,...r},l)=>Qs(So,{ref:l,iconNode:a,className:Va(`lucide-${Co(e)}`,o),...r}));return t.displayName=`${e}`,t};var De=b("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var ua=b("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var re=b("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var fe=b("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var da=b("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var se=b("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var na=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ia=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var fa=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Ae=b("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var Ge=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var ca=b("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var pa=b("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ma=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var ga=b("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var xa=b("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var La=b("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var Ca=b("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var ha=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ia=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Fe=b("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Be=b("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var Sa=b("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var ba=b("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var wa=b("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var Ne=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as un}from"motion-plus/react";import{useEffect as dn,useState as nn}from"react";import{toast as fn}from"sonner";import{cva as Zs}from"class-variance-authority";import{jsx as Js}from"react/jsx-runtime";var Ct=Zs("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function Wa({className:e,variant:a,...t}){return Js("div",{className:p(Ct({variant:a}),e),...t})}import{Slot as $s}from"@radix-ui/react-slot";import{cva as js}from"class-variance-authority";import*as bo from"react";import{jsx as el}from"react/jsx-runtime";var Ys=js("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),B=bo.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>el(o?$s:"button",{className:p(Ys({variant:a,size:t,className:e})),ref:l,...r}));B.displayName="Button";import*as ce from"@radix-ui/react-popover";import*as yo from"react";import{jsx as wo}from"react/jsx-runtime";var vo=ce.Root,Po=ce.Trigger;var ht=yo.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>wo(ce.Portal,{children:wo(ce.Content,{ref:r,align:a,sideOffset:t,className:p("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));ht.displayName=ce.Content.displayName;import{useMutation as yl,useQueryClient as vl}from"@tanstack/react-query";import{QueryClient as gl,QueryClientProvider as xl}from"@tanstack/react-query";import*as le from"react";import{onlineManager as al,useQueryClient as tl}from"@tanstack/react-query";var ko=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:f}=e;this.#a=ae(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=ae(l),this.#r=ae(s),this.#s=ae(u),this.#l=ae(d)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=pt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,d;return this.#u?d=this.#u:(d=ct(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=d),mt(this.#c,this.#t),it(d,ft({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},Ro=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:f,onClose:g}=e;this.#a=ae(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=ae(l),this.#r=ae(s),this.#s=ae(u),this.#l=ae(d),this.#u=ae(g)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#u[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=pt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,[d]=this.#u,n;return this.#d?n=this.#d:(n=ct(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=n),mt(this.#c,this.#t),it(n,ft({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()},get onClose(){return d()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as ol}from"react/jsx-runtime";function Mo(e){let a=tl(e.client),t=le.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}=e,[n]=le.useState(new ko({client:a,queryFlavor:"React Query",version:"5",onlineManager:al,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}));return le.useEffect(()=>{n.setClient(a)},[a,n]),le.useEffect(()=>{o&&n.setButtonPosition(o)},[o,n]),le.useEffect(()=>{r&&n.setPosition(r)},[r,n]),le.useEffect(()=>{n.setInitialIsOpen(l||!1)},[l,n]),le.useEffect(()=>{n.setErrorTypes(s||[])},[s,n]),le.useEffect(()=>(t.current&&n.mount(t.current),()=>{n.unmount()}),[n]),ol("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Ie from"react";import{onlineManager as sl,useQueryClient as ll}from"@tanstack/react-query";import{jsx as ul}from"react/jsx-runtime";function To(e){let a=ll(e.client),t=Ie.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=Ie.useState(new Ro({client:a,queryFlavor:"React Query",version:"5",onlineManager:sl,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return Ie.useEffect(()=>{s.setClient(a)},[a,s]),Ie.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),Ie.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),Ie.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),ul("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Do=process.env.NODE_ENV!=="development"?function(){return null}:Mo,Lc=process.env.NODE_ENV!=="development"?function(){return null}:To;import{createContext as Ll,useContext as Cl,useMemo as hl,useState as It}from"react";import{toast as Il}from"sonner";import{Toaster as nl}from"sonner";import{jsx as il}from"react/jsx-runtime";var Ao=({...e})=>il(nl,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as fl}from"nuqs/adapters/custom";import{useEffect as cl,useState as pl}from"react";function ml(){let e=window.location.hash.slice(1),[a,t]=pl(new URLSearchParams(e));function o(l,{history:s}){let{pathname:u,search:d}=window.location,n=l.toString(),f=`${u}${d}#${n}`;s==="push"?window.history.pushState(null,"",f):window.history.replaceState(null,"",f),t(l)}function r(){let l=window.location.hash.slice(1);return new URLSearchParams(l)}return cl(()=>{function l(){let s=window.location.hash.slice(1);t(new URLSearchParams(s))}return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Fo=fl(ml);import{jsx as Ka,jsxs as bl}from"react/jsx-runtime";var Sl=new gl,Bo=Ll(void 0);function No(e){let{children:a,...t}=e,[o,r]=It(null),[l,s]=It(!1),[u,d]=It(!0),n=e.onError;n??=x=>Il.error(x.message);let f=hl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),g=()=>s(x=>!x),m=()=>d(x=>!x);return bl(xl,{client:Sl,children:[Ka(Do,{}),Ka(Ao,{}),Ka(Fo,{children:Ka(Bo.Provider,{value:{...t,activeTable:o,isFullscreen:l,setActiveTable:r,onError:n,emitTelemetryEvent:f,toggleFullscreen:g,isNavigationOpen:u,toggleNavigation:m},children:a})})]})}function z(){let e=Cl(Bo);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function wl(e,a){let t={filter:Je(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Oo(e,a){return{...e,__ps_rowid:wl(e,a)}}function Xa(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Oo(t,a)}:o!==void 0?{...e,rows:o.map(r=>Oo(r,a))}:e}function qo(){let{activeTable:e,adapter:a}=z(),t=vl(),{schema:o=null,name:r=null}=e??{};return yl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return Xa(u,e)},onSuccess(l){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},s=>s==null?s:{...s,rows:[...l.rows,...s.rows]})},retry:!1})}import{useQuery as Pl}from"@tanstack/react-query";function Eo(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=z();return Pl({enabled:!!l,gcTime:0,placeholderData(u,d){let[,n,,f]=d?.queryKey||[];if(!(n!==l?.schema||f!==l?.name))return u},async queryFn({signal:u}){let[d,n]=await s.query({pageIndex:a,pageSize:t,sortOrder:o,table:l,filter:r},{abortSignal:u});if(d)throw d;return Xa(n,l)},queryKey:["schema",l?.schema||null,"table",l?.name||null,"query","sortOrder",o.map(u=>`${u.column}:${u.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as kl,useQueryClient as Rl}from"@tanstack/react-query";function Uo(){let{activeTable:e,adapter:a,onError:t}=z(),o=Rl(),r=["schema",e?.schema??null,"table",e?.name??null];return kl({mutationFn:async l=>{let[s,u]=await a.update(l.details,l.options);if(s)throw s;return u},mutationKey:[...r,"update"],onError(l,s){let{changes:u,row:d}=s.details;t(l),St({getFinderFn(){let n={...d,...u},f=Je(n,e.columns);return g=>f.every(([m,x])=>g[m]===x)},queryClient:o,table:e,updaterFn:function(f){return{...f,...Object.keys(u).reduce((g,m)=>({...g,[m]:d[m]}),{})}}})},onMutate(l){let{details:s}=l;St({getFinderFn(){let{row:u}=s,d=Je(u,e.columns);return n=>d.every(([f,g])=>n[f]===g)},queryClient:o,table:e,updaterFn:function(d){return{...d,...s.changes}}})},onSuccess(l,s){St({getFinderFn(){let{changes:u,row:d}=s.details,n={...d,...u},f=Je(n,e.columns);return g=>f.every(([m,x])=>g[m]===x)},queryClient:o,table:e,updaterFn:function(d){let{__ps_updated_at__:n}=d,{row:f}=l;return n!=null&&f.__ps_updated_at__<=n?d:{...d,...f}}})},retry:!1})}function St(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,l;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},s=>{let{rows:u=[]}=s||{};if(u.length===0)return s;let d=u.findIndex(l??=a());if(d===-1)return s;let n=r(u[d]);return{...s,rows:[...u.slice(0,d),n,...u.slice(d+1)]}})}import{useEffect as Al,useMemo as Ho,useState as Fl}from"react";import Bl from"short-uuid";var G={};fs(G,{keyMap:()=>bt,urlKeys:()=>Dl,useQueryState:()=>Oe,useQueryStates:()=>ya});Ce(G,dp);import{useQueryState as Ml,useQueryStates as Tl}from"nuqs";import*as dp from"nuqs";function bt(e){return e}function Dl(e){return e}var lp=Symbol("BRAND_SYMBOL");function Oe(e,a){return Ml(e,a)}function ya(e,a){return Tl(e,a)}var Nl={kind:"FilterGroup",filters:[],after:"and",id:Bl.generate()},zo=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=zo(t));return a};function Go(){let[e,a]=Oe("filter",{defaultValue:JSON.stringify(Nl)}),t=Ho(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,l]=Fl(t);Al(()=>{l(t)},[t]);let s=Ho(()=>zo(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as Ol}from"@tanstack/react-query";function _a(){return Ol({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as ql}from"react";var El=25,Ul={pageIndex:G.parseAsIndex.withDefault(0),pageSize:G.parseAsInteger.withDefault(El)};function Qa(){let[{pageIndex:e,pageSize:a},t]=ya(Ul),o=ql(r=>{t(typeof r=="function"?l=>{let s=r(l);return{pageIndex:s.pageIndex,pageSize:s.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as Gl,useState as Vl}from"react";import{useMutation as Hl,useQueryClient as zl}from"@tanstack/react-query";function Vo(){let{activeTable:e,adapter:a}=z(),t=zl(),{schema:o=null,name:r=null}=e??{};return Hl({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(l){let[s,u]=await a.delete({rows:l,table:e},{});if(s)throw s;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function Wo(e){let{activeTable:a,onError:t}=z(),{paginationState:o}=Qa(),[r,l]=Vl({}),s=Object.keys(r).length!==0,{mutate:u}=Vo();Gl(()=>l({}),[a,o.pageIndex]);function d(){let n=e?.rows.filter(f=>r[f.__ps_rowid]);u(n??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:d,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as Wl,useState as Kl}from"react";function Ko(){let[e,a]=Oe("sort",{defaultValue:""}),t=s=>{if(!s)return[];try{return s.split(",").map(u=>{let[d,n]=u.split(":");return!d||!n||!["asc","desc"].includes(n)?null:{column:d,direction:n}}).filter(Boolean)}catch(u){return console.error("Failed to parse sorting parameter:",u),[]}},[o,r]=Kl(()=>t(e));return Wl(()=>{let s=t(e);r(s)},[e]),{sortingState:o,setSortingState:s=>{let u=typeof s=="function"?s(o):s;r(u);let d=u.length>0?u.map(n=>`${n.column}:${n.direction}`).join(","):null;a(d)}}}import{isObjectType as Lu}from"remeda";import{forwardRef as tu}from"react";import*as be from"react";import{jsx as Se}from"react/jsx-runtime";var wt=be.forwardRef(({className:e,...a},t)=>Se("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Se("table",{ref:t,className:p("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));wt.displayName="Table";var yt=be.forwardRef(({className:e,...a},t)=>Se("thead",{ref:t,className:p(e),...a}));yt.displayName="TableHeader";var vt=be.forwardRef(({className:e,...a},t)=>Se("tbody",{ref:t,className:p("[&_tr:last-child]:ps-border-0",e),...a}));vt.displayName="TableBody";var Xl=be.forwardRef(({className:e,...a},t)=>Se("tfoot",{ref:t,className:p("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Xl.displayName="TableFooter";var Ve=be.forwardRef(({className:e,...a},t)=>Se("tr",{ref:t,className:p("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));Ve.displayName="TableRow";var We=be.forwardRef(({className:e,...a},t)=>Se("th",{ref:t,className:p("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));We.displayName="TableHead";var qe=be.forwardRef(({className:e,...a},t)=>Se("td",{ref:t,className:p("ps-align-middle",e),...a}));qe.displayName="TableCell";var _l=be.forwardRef(({className:e,...a},t)=>Se("caption",{ref:t,className:p("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));_l.displayName="TableCaption";import{isValidElement as au}from"react";import*as P from"@radix-ui/react-context-menu";import*as we from"react";import{jsx as J,jsxs as Rt}from"react/jsx-runtime";var Xo=P.Root,_o=P.Trigger;var Ql=we.forwardRef(({className:e,inset:a,children:t,...o},r)=>Rt(P.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,J(se,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));Ql.displayName=P.SubTrigger.displayName;var Zl=we.forwardRef(({className:e,...a},t)=>J(P.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));Zl.displayName=P.SubContent.displayName;var Pt=we.forwardRef(({className:e,...a},t)=>J(P.Portal,{children:J(P.Content,{ref:t,className:p("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));Pt.displayName=P.Content.displayName;var kt=we.forwardRef(({className:e,inset:a,...t},o)=>J(P.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));kt.displayName=P.Item.displayName;var Jl=we.forwardRef(({className:e,children:a,checked:t,...o},r)=>Rt(P.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[J("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:J(P.ItemIndicator,{children:J(re,{className:"ps-h-4 ps-w-4"})})}),a]}));Jl.displayName=P.CheckboxItem.displayName;var $l=we.forwardRef(({className:e,children:a,...t},o)=>Rt(P.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[J("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:J(P.ItemIndicator,{children:J(Ge,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));$l.displayName=P.RadioItem.displayName;var jl=we.forwardRef(({className:e,inset:a,...t},o)=>J(P.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));jl.displayName=P.Label.displayName;var Yl=we.forwardRef(({className:e,...a},t)=>J(P.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));Yl.displayName=P.Separator.displayName;var eu=({className:e,...a})=>J("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});eu.displayName="ContextMenuShortcut";import{jsx as Mt,jsxs as Qo}from"react/jsx-runtime";function Zo(e){let{children:a}=e;return Qo(Xo,{children:[Mt(_o,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),Mt(Pt,{children:Qo(kt,{onClick:()=>{let t=Tt(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[Mt(ca,{size:12}),"Copy"]})})]})}function Tt(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(au(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?Tt(a.children):""}return Array.isArray(e)?e.map(Tt).join(""):""}import{jsx as Jo}from"react/jsx-runtime";function V(e){let{children:a,className:t,ref:o,style:r,...l}=e;return Jo(qe,{...l,className:p("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:Jo(Zo,{children:a})})}import{jsx as $o}from"react/jsx-runtime";var Dt=tu((e,a)=>{let{containerProps:t,value:o,...r}=e;return $o(V,{...r,...t,ref:a,children:$o("div",{"data-cell-type":"boolean",children:String(!!o)})})});Dt.displayName="BooleanCell";import{forwardRef as ou}from"react";import{jsx as ru}from"react/jsx-runtime";var At=ou((e,a)=>{let{containerProps:t,value:o,...r}=e;return ru(V,{...r,...t,ref:a,children:String(o)})});At.displayName="DateCell";import{forwardRef as su}from"react";import{jsx as lu}from"react/jsx-runtime";var va=su((e,a)=>{let{containerProps:t,...o}=e;return lu(V,{...o,...t,ref:a})});va.displayName="EmptyCell";import{forwardRef as uu}from"react";import{jsx as du}from"react/jsx-runtime";var Ft=uu((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return du(V,{...l,...t,ref:a,children:String(o)})});Ft.displayName="EnumCell";import{forwardRef as nu}from"react";import{jsx as iu}from"react/jsx-runtime";var Za=nu((e,a)=>{let{containerProps:t,value:o,...r}=e;return iu(V,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});Za.displayName="JSONCell";import{forwardRef as fu}from"react";import{jsx as jo}from"react/jsx-runtime";var Bt=fu((e,a)=>{let{containerProps:t,...o}=e;return jo(V,{...o,...t,ref:a,children:jo("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Bt.displayName="NullCell";import{forwardRef as cu}from"react";import{jsx as Yo}from"react/jsx-runtime";var Nt=cu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Yo(V,{...r,...t,ref:a,children:Yo("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});Nt.displayName="NumericCell";import{forwardRef as pu}from"react";import{jsx as mu}from"react/jsx-runtime";var Ja=pu((e,a)=>{let{containerProps:t,value:o,...r}=e;return mu(V,{...r,...t,ref:a,children:String(o)})});Ja.displayName="RawCell";import{forwardRef as gu}from"react";import{jsx as xu}from"react/jsx-runtime";var Ot=gu((e,a)=>{let{containerProps:t,value:o,...r}=e;return xu(V,{...r,...t,ref:a,children:String(o)})});Ot.displayName="TimeCell";import{jsx as ue}from"react/jsx-runtime";function $a({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return ue(va,{containerProps:t});if(o===null)return ue(Bt,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return ue(Za,{containerProps:t,value:o});if(r==="string")return ue(Ja,{containerProps:t,value:o});if(r==="enum")return ue(Ft,{containerProps:t,value:o,options:l});if(r==="boolean")return ue(Dt,{containerProps:t,value:o});if(r==="datetime")return ue(At,{containerProps:t,value:o});if(r==="time")return ue(Ot,{containerProps:t,value:o});if(r==="numeric")return ue(Nt,{containerProps:t,value:o});if(r==="raw")return Lu(o)?ue(Za,{containerProps:t,value:o}):ue(Ja,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as Cu}from"react";import*as Pa from"@radix-ui/react-checkbox";import*as er from"react";import{jsx as qt}from"react/jsx-runtime";var ka=er.forwardRef(({className:e,...a},t)=>qt(Pa.Root,{ref:t,className:p("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:qt(Pa.Indicator,{className:p("ps-flex ps-items-center ps-justify-center ps-text-current"),children:qt(re,{className:"ps-h-4 ps-w-4"})})}));ka.displayName=Pa.Root.displayName;import{jsx as Et}from"react/jsx-runtime";var Ut=Cu((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return Et("div",{ref:a,className:r,style:l,...s,children:Et("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:Et(ka,{checked:t.getIsAllRowsSelected(),onCheckedChange:u=>t.toggleAllRowsSelected(!!u),disabled:o})})})});Ut.displayName="SelectHeaderCell";import{forwardRef as Iu}from"react";import{Fragment as hu,jsx as Ht}from"react/jsx-runtime";function ar(e){let{children:a,className:t,ref:o,style:r,isHeader:l=!1,...s}=e,u=p("ps-flex ps-items-center ps-justify-center ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)]");return Ht(hu,{children:l?Ht(We,{...s,className:p(u,"ps-h-10 ps-bg-table-head ps-z-30 ps-sticky ps-top-0 ps-left-0",t),ref:o,children:a}):Ht(qe,{...s,className:p(u,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as tr}from"react/jsx-runtime";var zt=Iu((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return tr(ar,{ref:a,className:r,style:l,...s,children:tr(ka,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});zt.displayName="SelectRowCell";import*as ye from"@radix-ui/react-popover";import*as X from"react";import{jsx as Ra}from"react/jsx-runtime";var or=X.createContext(null),Gt=({children:e,...a})=>{let[t,o]=X.useState(!1);return Ra(or.Provider,{value:{open:t,setOpen:o},children:Ra(ye.Root,{open:t,onOpenChange:o,...a,children:e})})};Gt.displayName="PopoverCell";var Vt=X.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=X.useRef(null);return Ra(ye.Trigger,{ref:s=>{typeof r=="function"?r(s):r&&(r.current=s),l.current=s},className:p("w-full h-full cursor-pointer",t),...o,children:e})});Vt.displayName="PopoverCellTrigger";var Wt=X.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ra(ye.Portal,{children:Ra(ye.Content,{ref:r,align:a,sideOffset:t,className:p("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:l=>l.preventDefault(),...o})}));Wt.displayName=ye.Content.displayName;function $(e){let a=X.useContext(or),t=X.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=X.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return X.useEffect(()=>{let r=l=>{(l.key==="Enter"||l.key==="Return")&&!l.shiftKey?t():l.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as rr,jsxs as Su}from"react/jsx-runtime";function ja(e){let{cellComponent:a,inputComponent:t}=e;return Su(Gt,{children:[rr(Vt,{asChild:!0,children:a}),rr(Wt,{align:"start",alignOffset:-1,className:p("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-[200px]"),sideOffset:-40,children:t})]})}import{closestCenter as Au,DndContext as Fu,DragOverlay as Bu,KeyboardSensor as Nu,PointerSensor as Ou,useSensor as ir,useSensors as qu}from"@dnd-kit/core";import{arrayMove as Eu,SortableContext as Uu,sortableKeyboardCoordinates as Hu,useSortable as zu,verticalListSortingStrategy as Gu}from"@dnd-kit/sortable";import{CSS as Vu}from"@dnd-kit/utilities";import{motion as _t}from"motion/react";import{AnimateNumber as Wu}from"motion-plus/react";import{useMemo as Ku,useState as Qt}from"react";import{Fragment as Xu}from"react/jsx-runtime";import{createPortal as _u}from"react-dom";import fr from"short-uuid";function sr(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function lr(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as k from"@radix-ui/react-dropdown-menu";import*as ve from"react";import{jsx as j,jsxs as Kt}from"react/jsx-runtime";var Ya=k.Root,et=k.Trigger;var bu=ve.forwardRef(({className:e,inset:a,children:t,...o},r)=>Kt(k.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,j(se,{className:"ps-ml-auto"})]}));bu.displayName=k.SubTrigger.displayName;var wu=ve.forwardRef(({className:e,...a},t)=>j(k.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));wu.displayName=k.SubContent.displayName;var Ma=ve.forwardRef(({className:e,sideOffset:a=4,...t},o)=>j(k.Portal,{children:j(k.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Ma.displayName=k.Content.displayName;var at=ve.forwardRef(({className:e,inset:a,...t},o)=>j(k.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));at.displayName=k.Item.displayName;var yu=ve.forwardRef(({className:e,children:a,checked:t,...o},r)=>Kt(k.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[j("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:j(k.ItemIndicator,{children:j(re,{className:"ps-h-4 ps-w-4"})})}),a]}));yu.displayName=k.CheckboxItem.displayName;var vu=ve.forwardRef(({className:e,children:a,...t},o)=>Kt(k.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[j("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:j(k.ItemIndicator,{children:j(Ge,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));vu.displayName=k.RadioItem.displayName;var Pu=ve.forwardRef(({className:e,inset:a,...t},o)=>j(k.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));Pu.displayName=k.Label.displayName;var ku=ve.forwardRef(({className:e,...a},t)=>j(k.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));ku.displayName=k.Separator.displayName;var Ru=({className:e,...a})=>j("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Ru.displayName="DropdownMenuShortcut";import*as ur from"react";import{jsx as Mu}from"react/jsx-runtime";var de=ur.forwardRef(({className:e,type:a,...t},o)=>Mu("input",{type:a,className:p("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));de.displayName="Input";import*as R from"@radix-ui/react-select";import*as Ee from"react";import{jsx as _,jsxs as Xt}from"react/jsx-runtime";var tt=R.Root;var ot=R.Value,Ta=Ee.forwardRef(({className:e,children:a,...t},o)=>Xt(R.Trigger,{ref:o,className:p("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...t,children:[a,_(R.Icon,{asChild:!0,children:_(fe,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Ta.displayName=R.Trigger.displayName;var dr=Ee.forwardRef(({className:e,...a},t)=>_(R.ScrollUpButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:_(na,{className:"ps-h-4 ps-w-4"})}));dr.displayName=R.ScrollUpButton.displayName;var nr=Ee.forwardRef(({className:e,...a},t)=>_(R.ScrollDownButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:_(fe,{className:"ps-h-4 ps-w-4"})}));nr.displayName=R.ScrollDownButton.displayName;var Da=Ee.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>_(R.Portal,{children:Xt(R.Content,{ref:r,className:p("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[_(dr,{}),_(R.Viewport,{className:p("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),_(nr,{})]})}));Da.displayName=R.Content.displayName;var Tu=Ee.forwardRef(({className:e,...a},t)=>_(R.Label,{ref:t,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));Tu.displayName=R.Label.displayName;var K=Ee.forwardRef(({className:e,children:a,...t},o)=>Xt(R.Item,{ref:o,className:p("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[_("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:_(R.ItemIndicator,{children:_(re,{className:"ps-h-4 ps-w-4"})})}),_(R.ItemText,{children:a})]}));K.displayName=R.Item.displayName;var Du=Ee.forwardRef(({className:e,...a},t)=>_(R.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Du.displayName=R.Separator.displayName;import{Fragment as $u,jsx as h,jsxs as O}from"react/jsx-runtime";var cr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>O(tt,{value:e,onValueChange:a,disabled:t,children:[h(Ta,{className:o,children:h(ot,{placeholder:"Logic"})}),O(Da,{children:[h(K,{value:"and",children:h("div",{className:"ps-font-semibold",children:"AND"})}),h(K,{value:"or",children:h("div",{className:"ps-font-semibold",children:"OR"})})]})]}),Qu=({activeId:e,items:a,table:t})=>{let o=a.find(u=>u.id===e);if(!o)return null;let r="and",l=!1,s=a.findIndex(u=>u.id===e);if(s>0){let u=a[s-1];u&&(r=u.after,l=!0)}return o.kind==="ColumnFilter"?h(pr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):h(Zt,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},Zu=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:u,onDragEndSignal:d})=>{let n=Ku(()=>e.map(m=>m.id),[e]),f=qu(ir(Ou,{activationConstraint:{distance:8}}),ir(Nu,{coordinateGetter:Hu}));return O(Fu,{sensors:f,collisionDetection:Au,onDragStart:u,onDragEnd:m=>{let{active:x,over:S}=m;if(S&&x.id!==S.id){let c=e.findIndex(C=>C.id===x.id),L=e.findIndex(C=>C.id===S.id);c!==-1&&L!==-1&&l(c,L)}d()},children:[h(Uu,{items:n,strategy:Gu,children:e.map((m,x)=>{let S=!1,c,L,C=!1;if(x>0){S=!0;let w=e[x-1];c=w.after,L=E=>{let W={...w,after:E};o(x-1,W)},C=x-1===e.length-1}return h(Ju,{filter:m,onUpdate:w=>o(x,w),onDelete:()=>r(x),parentDndId:a,table:t,showLeadingOperator:S,leadingOperatorValue:c,onLeadingOperatorChange:L,isLeadingOperatorTargetLast:C},m.id)})}),_u(h(Bu,{children:s?h("div",{className:"ps-opacity-80",children:h(Qu,{activeId:s,items:e,table:t})}):null}),document.body)]})},Ju=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let{attributes:n,listeners:f,setNodeRef:g,transform:m,transition:x,isDragging:S}=zu({id:e.id,data:{type:e.kind,parentId:o}}),c={transform:Vu.Transform.toString(m),transition:x,opacity:S?.5:1};return h("div",{ref:g,style:c,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?h(pr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d}):h(Zt,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})})},pr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let n=S=>{a({...e,column:S})},f=S=>{a({...e,operator:S})},g=S=>{let c=S.target.value,L=r.columns[e.column];if(L!==void 0){let C=sr(L,e.operator,c);a({...e,value:C})}},[m,x]=Qt(lr(r.columns[e.column],e.operator,e.value));return O(_t.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[O("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[h("div",{...o,className:"ps-cursor-grab",children:h(ga,{className:"ps-text-gray-500",size:16})}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&u?h(cr,{value:s,onValueChange:u,disabled:d}):null,O(tt,{value:e.column,onValueChange:n,children:[h(Ta,{className:"ps-w-28 ps-text-xs ps-h-8",children:h(ot,{placeholder:"Select column"})}),h(Da,{children:Object.keys(r.columns).map(S=>h(K,{value:S,children:S},S))})]}),O(tt,{value:e.operator,onValueChange:S=>f(S),children:[h(Ta,{className:"ps-w-20 ps-text-xs ps-h-8",children:h(ot,{placeholder:"Operator"})}),O(Da,{children:[h(K,{value:"=",children:"="}),h(K,{value:"!=",children:"!="}),h(K,{value:">",children:">"}),h(K,{value:">=",children:">="}),h(K,{value:"<",children:"<"}),h(K,{value:"<=",children:"<="}),h(K,{value:"is",children:"is"}),h(K,{value:"is not",children:"is not"}),h(K,{value:"like",children:"like"}),h(K,{value:"not like",children:"not like"}),h(K,{value:"ilike",children:"ilike"}),h(K,{value:"not ilike",children:"not ilike"})]})]}),h(de,{value:m,onChange:S=>{x(S.target.value),g(S)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),h("div",{className:"ps-flex ps-items-center ps-gap-2",children:h(B,{variant:"ghost",size:"xs",onClick:t,children:h(Ne,{size:14})})})]})},Zt=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:u,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:n})=>{let[f,g]=Qt(!0),[m,x]=Qt(null),S=()=>{let U={id:fr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,U]})},c=()=>{let U={id:fr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,U]})},L=(U,Q)=>{let H=[...e.filters];H[U]=Q,a({...e,filters:H})},C=U=>{let Q=[...e.filters];Q.splice(U,1),a({...e,filters:Q})},w=U=>{x(U.active.id)},E=()=>{x(null)},W=(U,Q)=>{if(U===Q)return;let H=Eu(e.filters,U,Q);a({...e,filters:H})},oe=()=>f?!e.filters||e.filters.length===0?h("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):h(_t.div,{transition:{layout:{duration:.12}},children:h("div",{className:p("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:h(Zu,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:L,onDeleteItem:C,onReorderItems:W,activeDragId:m,onDragStart:w,onDragEndSignal:E})})}):null;return h(_t.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:O("div",{className:p("ps-flex ps-flex-col ps-w-full",f?"ps-gap-2":""),children:[O("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&h("div",{...o,className:"ps-cursor-grab",onClick:()=>g(!f),children:f?h(fe,{size:16}):h(se,{size:16})}),s&&d&&!r&&h("div",{className:"ps-flex ps-items-center",children:h(cr,{value:u,onValueChange:d,disabled:n})}),O(B,{variant:"outline",size:"sm",onClick:S,className:p("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&h(Wa,{className:"ps-transition-all",children:h(Wu,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),h(B,{variant:"outline",size:"sm",onClick:c,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&O(Ya,{children:[h(et,{asChild:!0,children:h(B,{variant:"ghost",size:"sm",children:h(Ae,{className:"ps-size-4"})})}),h(Ma,{align:"center",className:"ps-w-full",children:e.filters.length===0?h("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):h("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:h(mr,{filter:e})})})]}),!r&&h(B,{variant:"ghost",size:"xs",onClick:t,children:h(Ne,{size:14})})]})]}),h("div",{className:p(r?"":"ps-ml-6"),children:oe()})]})})},mr=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let l,s=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!s&&(a+=1),a&&(s||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:u,operator:d}=o;l=O($u,{children:[O("span",{children:[" ",u," "]}),O("span",{children:[" ",d," "]}),h("span",{children:" ? "})]})}else l=h(mr,{filter:o});return O(Xu,{children:[a===1?h("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?h("span",{className:"ps-font-semibold",children:")"}):"",!s&&O("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return h("span",{children:t})};function gr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return O("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[h(Zt,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),h(B,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as pd,MouseSensor as md,useSensor as gd,useSensors as xd}from"@dnd-kit/core";import{arrayMove as Ld,horizontalListSortingStrategy as Cd,SortableContext as hd,useSortable as Id}from"@dnd-kit/sortable";import{CSS as Sd}from"@dnd-kit/utilities";import{getCoreRowModel as bd,useReactTable as wd}from"@tanstack/react-table";import*as Pe from"react";import I from"react";function Ue(){return Ue=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Ue.apply(null,arguments)}var ju=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function Yu(e,a){let[t,o]=I.useState();I.useEffect(()=>{let l=ju(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=I.useCallback(l=>{o(s=>{let u=l;typeof l=="function"&&(u=l(s));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var pe={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Cr=I.createContext(pe);function hr(e){let{theme:a,...t}=e;return I.createElement(Cr.Provider,Ue({value:a},t))}function ed(){return I.useContext(Cr)}function ad(e){let[a,t]=I.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return I.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=l=>{let{matches:s}=l;return t(s)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var td=typeof window>"u";function ne(e,a,t){return t===void 0&&(t={}),I.forwardRef((o,r)=>{let{style:l,...s}=o,u=ed(),d=Object.entries(t).reduce((n,f)=>{let[g,m]=f;return ad(g)?{...n,...typeof m=="function"?m(s,u):m}:n},{});return I.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...d},ref:r})})}function od(){let e=I.useRef(!1),a=I.useCallback(()=>e.current,[]);return I[td?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var rd=ne("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});ne("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var sd=ne("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));ne("code",{fontSize:".9em"});ne("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));ne("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var xr=ne("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),rt=ne("span",{cursor:"pointer",color:"white"}),ld=ne("span",(e,a)=>({color:a.danger})),Jt=ne("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),ud=ne("span",{color:"grey",fontSize:".7rem"}),Lr=e=>{let{expanded:a,style:t={},...o}=e;return I.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},dd=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:d,pageSize:n,renderer:f}=e,[g,m]=I.useState(void 0),[x,S]=I.useState([]),c=()=>{m(o())};return I.createElement(xr,{key:t},l!=null&&l.length?I.createElement(I.Fragment,null,I.createElement(rt,{onClick:()=>d()},I.createElement(Lr,{expanded:u})," ",t," ",I.createElement(ud,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?I.createElement(Jt,null,r.map(L=>a(L))):I.createElement(Jt,null,l.map((L,C)=>I.createElement("div",{key:C},I.createElement(xr,null,I.createElement(rt,{onClick:()=>S(w=>w.includes(C)?w.filter(E=>E!==C):[...w,C])},I.createElement(Lr,{expanded:u})," [",C*n," ..."," ",C*n+n-1,"]"),x.includes(C)?I.createElement(Jt,null,L.map(w=>a(w))):null)))):null):s==="function"?I.createElement(I.Fragment,null,I.createElement(me,{renderer:f,label:I.createElement("button",{onClick:c},I.createElement(rt,null,t)," \u{1F504}"," "),value:g,defaultExpanded:{}})):I.createElement(I.Fragment,null,I.createElement(rt,null,t,":")," ",I.createElement(ld,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function me(e){let{value:a,defaultExpanded:t,renderer:o=dd,pageSize:r=100,depth:l=0,...s}=e,[u,d]=I.useState(t),n=c=>{d(L=>typeof c<"u"?c:!L)},f=[],g=typeof a,m,x=[],S=c=>{let L=f.concat(c.label),C=t===!0?{[c.label]:!0}:t?.[c.label];return{...c,subPath:c,path:L,depth:l+1,defaultExpanded:C}};if(Array.isArray(a)?(g="array",m=a.map((c,L)=>S({label:L,value:c}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(g="Iterable",m=Array.from(a,(c,L)=>S({label:L,value:c}))):typeof a=="function"?g="function":typeof a=="object"&&a!==null&&(g="object",m=Object.entries(a).map(c=>{let[L,C]=c;return S({label:L,value:C})})),m){let c=0;for(;c<m.length;)x.push(m.slice(c,c+r)),c=c+r}return o({handleEntry:c=>I.createElement(me,Ue({key:c.label,renderer:o},s,c)),type:g,subEntries:m,subEntryPages:x,depth:l,value:a,path:f,expanded:u,toggle:n,pageSize:r,...s})}function Ir(e){return Pe.createElement("svg",Ue({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),Pe.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},Pe.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},Pe.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},Pe.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},Pe.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),Pe.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),Pe.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function Sr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=I.useRef(null),u=I.useRef(null),[d,n]=Yu("reactTableDevtoolsOpen",a),f=od(),{style:g={},...m}=o,{style:x={},onClick:S,...c}=r;return f()?I.createElement(l,{ref:s,className:"ReactTableDevtools"},I.createElement(hr,{theme:pe},d?I.createElement(nd,Ue({ref:u},m,{table:t,isOpen:d,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...g}})):I.createElement("button",Ue({type:"button"},c,{"aria-label":"Open React Table Devtools",onClick:L=>{n(!0),S&&S(L)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...x}}),I.createElement(Ir,{"aria-hidden":!0})))):null}var nd=I.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return I.createElement(hr,{theme:pe},I.createElement(rd,Ue({ref:t,className:"ReactTableDevtoolsPanel"},s),I.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
1
|
+
import"../chunk-IAKOOX7B.js";import{D as ra}from"../chunk-OGMDOPWW.js";import{B as Lt,aa as Ct,c as de,q as mt,r as gt,t as xt}from"../chunk-RFCV76TR.js";import{a as xs,b as Pe}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as Pn,motion as ms}from"motion/react";import{clsx as Zs}from"clsx";var St="-",Ls=e=>{let a=hs(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{let u=l.split(St);return u[0]===""&&u.length!==1&&u.shift(),Lo(u,a)||Cs(l)},getConflictingClassGroupIds:(l,u)=>{let n=t[l]||[];return u&&o[l]?[...n,...o[l]]:n}}},Lo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?Lo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let s=e.join(St);return a.validators.find(({validator:l})=>l(s))?.classGroupId},po=/^\[(.+)\]$/,Cs=e=>{if(po.test(e)){let a=po.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},hs=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return Ss(Object.entries(e.classGroups),t).forEach(([s,l])=>{It(l,o,s,a)}),o},It=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let s=r===""?a:mo(a,r);s.classGroupId=t;return}if(typeof r=="function"){if(Is(r)){It(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([s,l])=>{It(l,mo(a,s),t,o)})})},mo=(e,a)=>{let t=e;return a.split(St).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},Is=e=>e.isThemeGetter,Ss=(e,a)=>a?e.map(([t,o])=>{let r=o.map(s=>typeof s=="string"?a+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([l,u])=>[a+l,u])):s);return[t,r]}):e,bs=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(s,l)=>{t.set(s,l),a++,a>e&&(a=0,o=t,t=new Map)};return{get(s){let l=t.get(s);if(l!==void 0)return l;if((l=o.get(s))!==void 0)return r(s,l),l},set(s,l){t.has(s)?t.set(s,l):r(s,l)}}},Co="!",ys=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],s=a.length,l=u=>{let n=[],d=0,i=0,g;for(let x=0;x<u.length;x++){let C=u[x];if(d===0){if(C===r&&(o||u.slice(x,x+s)===a)){n.push(u.slice(i,x)),i=x+s;continue}if(C==="/"){g=x;continue}}C==="["?d++:C==="]"&&d--}let m=n.length===0?u:u.substring(i),L=m.startsWith(Co),S=L?m.substring(1):m,c=g&&g>i?g-i:void 0;return{modifiers:n,hasImportantModifier:L,baseClassName:S,maybePostfixModifierPosition:c}};return t?u=>t({className:u,parseClassName:l}):l},ws=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},vs=e=>({cache:bs(e.cacheSize),parseClassName:ys(e),...Ls(e)}),Ps=/\s+/,ks=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,s=[],l=e.trim().split(Ps),u="";for(let n=l.length-1;n>=0;n-=1){let d=l[n],{modifiers:i,hasImportantModifier:g,baseClassName:m,maybePostfixModifierPosition:L}=t(d),S=!!L,c=o(S?m.substring(0,L):m);if(!c){if(!S){u=d+(u.length>0?" "+u:u);continue}if(c=o(m),!c){u=d+(u.length>0?" "+u:u);continue}S=!1}let x=ws(i).join(":"),C=g?x+Co:x,y=C+c;if(s.includes(y))continue;s.push(y);let E=r(c,S);for(let W=0;W<E.length;++W){let le=E[W];s.push(C+le)}u=d+(u.length>0?" "+u:u)}return u};function Rs(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=ho(a))&&(o&&(o+=" "),o+=t);return o}var ho=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=ho(e[o]))&&(t&&(t+=" "),t+=a);return t};function go(e,...a){let t,o,r,s=l;function l(n){let d=a.reduce((i,g)=>g(i),e());return t=vs(d),o=t.cache.get,r=t.cache.set,s=u,u(n)}function u(n){let d=o(n);if(d)return d;let i=ks(n,t);return r(n,i),i}return function(){return s(Rs.apply(null,arguments))}}var B=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},Io=/^\[(?:([a-z-]+):)?(.+)\]$/i,Ms=/^\d+\/\d+$/,Ds=new Set(["px","full","screen"]),Ts=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,As=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Fs=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Bs=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ns=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ke=e=>sa(e)||Ds.has(e)||Ms.test(e),Ee=e=>la(e,"length",Gs),sa=e=>!!e&&!Number.isNaN(Number(e)),ht=e=>la(e,"number",sa),pa=e=>!!e&&Number.isInteger(Number(e)),Os=e=>e.endsWith("%")&&sa(e.slice(0,-1)),w=e=>Io.test(e),Ue=e=>Ts.test(e),qs=new Set(["length","size","percentage"]),Es=e=>la(e,qs,So),Us=e=>la(e,"position",So),Hs=new Set(["image","url"]),zs=e=>la(e,Hs,_s),Vs=e=>la(e,"",Ws),ma=()=>!0,la=(e,a,t)=>{let o=Io.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Gs=e=>As.test(e)&&!Fs.test(e),So=()=>!1,Ws=e=>Bs.test(e),_s=e=>Ns.test(e);var xo=()=>{let e=B("colors"),a=B("spacing"),t=B("blur"),o=B("brightness"),r=B("borderColor"),s=B("borderRadius"),l=B("borderSpacing"),u=B("borderWidth"),n=B("contrast"),d=B("grayscale"),i=B("hueRotate"),g=B("invert"),m=B("gap"),L=B("gradientColorStops"),S=B("gradientColorStopPositions"),c=B("inset"),x=B("margin"),C=B("opacity"),y=B("padding"),E=B("saturate"),W=B("scale"),le=B("sepia"),H=B("skew"),J=B("space"),G=B("translate"),A=()=>["auto","contain","none"],P=()=>["auto","hidden","clip","visible","scroll"],K=()=>["auto",w,a],R=()=>[w,a],ce=()=>["",ke,Ee],v=()=>["auto",sa,w],U=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],q=()=>["solid","dashed","dotted","double","none"],$=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ee=()=>["start","end","center","between","around","evenly","stretch"],we=()=>["","0",w],qe=()=>["auto","avoid","all","avoid-page","page","left","right","column"],k=()=>[sa,w];return{cacheSize:500,separator:":",theme:{colors:[ma],spacing:[ke,Ee],blur:["none","",Ue,w],brightness:k(),borderColor:[e],borderRadius:["none","","full",Ue,w],borderSpacing:R(),borderWidth:ce(),contrast:k(),grayscale:we(),hueRotate:k(),invert:we(),gap:R(),gradientColorStops:[e],gradientColorStopPositions:[Os,Ee],inset:K(),margin:K(),opacity:k(),padding:R(),saturate:k(),scale:k(),sepia:we(),skew:k(),space:R(),translate:R()},classGroups:{aspect:[{aspect:["auto","square","video",w]}],container:["container"],columns:[{columns:[Ue]}],"break-after":[{"break-after":qe()}],"break-before":[{"break-before":qe()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...U(),w]}],overflow:[{overflow:P()}],"overflow-x":[{"overflow-x":P()}],"overflow-y":[{"overflow-y":P()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[c]}],"inset-x":[{"inset-x":[c]}],"inset-y":[{"inset-y":[c]}],start:[{start:[c]}],end:[{end:[c]}],top:[{top:[c]}],right:[{right:[c]}],bottom:[{bottom:[c]}],left:[{left:[c]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",pa,w]}],basis:[{basis:K()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",w]}],grow:[{grow:we()}],shrink:[{shrink:we()}],order:[{order:["first","last","none",pa,w]}],"grid-cols":[{"grid-cols":[ma]}],"col-start-end":[{col:["auto",{span:["full",pa,w]},w]}],"col-start":[{"col-start":v()}],"col-end":[{"col-end":v()}],"grid-rows":[{"grid-rows":[ma]}],"row-start-end":[{row:["auto",{span:[pa,w]},w]}],"row-start":[{"row-start":v()}],"row-end":[{"row-end":v()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",w]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",w]}],gap:[{gap:[m]}],"gap-x":[{"gap-x":[m]}],"gap-y":[{"gap-y":[m]}],"justify-content":[{justify:["normal",...ee()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...ee(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...ee(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[y]}],px:[{px:[y]}],py:[{py:[y]}],ps:[{ps:[y]}],pe:[{pe:[y]}],pt:[{pt:[y]}],pr:[{pr:[y]}],pb:[{pb:[y]}],pl:[{pl:[y]}],m:[{m:[x]}],mx:[{mx:[x]}],my:[{my:[x]}],ms:[{ms:[x]}],me:[{me:[x]}],mt:[{mt:[x]}],mr:[{mr:[x]}],mb:[{mb:[x]}],ml:[{ml:[x]}],"space-x":[{"space-x":[J]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[J]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",w,a]}],"min-w":[{"min-w":[w,a,"min","max","fit"]}],"max-w":[{"max-w":[w,a,"none","full","min","max","fit","prose",{screen:[Ue]},Ue]}],h:[{h:[w,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[w,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[w,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[w,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Ue,Ee]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ht]}],"font-family":[{font:[ma]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",w]}],"line-clamp":[{"line-clamp":["none",sa,ht]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ke,w]}],"list-image":[{"list-image":["none",w]}],"list-style-type":[{list:["none","disc","decimal",w]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[C]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[C]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...q(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ke,Ee]}],"underline-offset":[{"underline-offset":["auto",ke,w]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",w]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",w]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[C]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...U(),Us]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Es]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},zs]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[S]}],"gradient-via-pos":[{via:[S]}],"gradient-to-pos":[{to:[S]}],"gradient-from":[{from:[L]}],"gradient-via":[{via:[L]}],"gradient-to":[{to:[L]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[C]}],"border-style":[{border:[...q(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[C]}],"divide-style":[{divide:q()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...q()]}],"outline-offset":[{"outline-offset":[ke,w]}],"outline-w":[{outline:[ke,Ee]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:ce()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[C]}],"ring-offset-w":[{"ring-offset":[ke,Ee]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ue,Vs]}],"shadow-color":[{shadow:[ma]}],opacity:[{opacity:[C]}],"mix-blend":[{"mix-blend":[...$(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":$()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[n]}],"drop-shadow":[{"drop-shadow":["","none",Ue,w]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[g]}],saturate:[{saturate:[E]}],sepia:[{sepia:[le]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[n]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[i]}],"backdrop-invert":[{"backdrop-invert":[g]}],"backdrop-opacity":[{"backdrop-opacity":[C]}],"backdrop-saturate":[{"backdrop-saturate":[E]}],"backdrop-sepia":[{"backdrop-sepia":[le]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",w]}],duration:[{duration:k()}],ease:[{ease:["linear","in","out","in-out",w]}],delay:[{delay:k()}],animate:[{animate:["none","spin","ping","pulse","bounce",w]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[W]}],"scale-x":[{"scale-x":[W]}],"scale-y":[{"scale-y":[W]}],rotate:[{rotate:[pa,w]}],"translate-x":[{"translate-x":[G]}],"translate-y":[{"translate-y":[G]}],"skew-x":[{"skew-x":[H]}],"skew-y":[{"skew-y":[H]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",w]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",w]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",w]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[ke,Ee,ht]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Ks=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:s={},override:l={}})=>{ga(e,"cacheSize",a),ga(e,"prefix",t),ga(e,"separator",o),ga(e,"experimentalParseClassName",r);for(let u in l)Xs(e[u],l[u]);for(let u in s)Qs(e[u],s[u]);return e},ga=(e,a,t)=>{t!==void 0&&(e[a]=t)},Xs=(e,a)=>{if(a)for(let t in a)ga(e,t,a[t])},Qs=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},bo=(e,...a)=>typeof e=="function"?go(xo,e,...a):go(()=>Ks(xo(),e),...a);var Js=bo({prefix:"ps-"});function p(...e){return Js(Zs(e))}import{useIsMutating as pn}from"@tanstack/react-query";import{forwardRef as Ys,createElement as js}from"react";var yo=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Xa=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as $s,createElement as vo}from"react";var wo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Po=$s(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:s,iconNode:l,...u},n)=>vo("svg",{ref:n,...wo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Xa("lucide",r),...u},[...l.map(([d,i])=>vo(d,i)),...Array.isArray(s)?s:[s]]));var b=(e,a)=>{let t=Ys(({className:o,...r},s)=>js(Po,{ref:s,iconNode:a,className:Xa(`lucide-${yo(e)}`,o),...r}));return t.displayName=`${e}`,t};var He=b("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var xa=b("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var pe=b("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var he=b("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var La=b("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var me=b("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var Ca=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ha=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var Ia=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var ze=b("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var Je=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var Sa=b("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var ba=b("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ya=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var wa=b("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var va=b("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var Pa=b("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var ka=b("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var Ra=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ma=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ve=b("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Ge=b("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var Da=b("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var Ta=b("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var Aa=b("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var We=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as mn}from"motion-plus/react";import{useEffect as gn,useState as xn}from"react";import{toast as Ln}from"sonner";import{cva as el}from"class-variance-authority";import{jsx as al}from"react/jsx-runtime";var bt=el("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function Qa({className:e,variant:a,...t}){return al("div",{className:p(bt({variant:a}),e),...t})}import{Slot as tl}from"@radix-ui/react-slot";import{cva as ol}from"class-variance-authority";import*as ko from"react";import{jsx as rl}from"react/jsx-runtime";var Za=ol("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),N=ko.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},s)=>rl(o?tl:"button",{className:p(Za({variant:a,size:t,className:e})),ref:s,...r}));N.displayName="Button";import*as Ie from"@radix-ui/react-popover";import*as Mo from"react";import{jsx as Ro}from"react/jsx-runtime";var Do=Ie.Root,To=Ie.Trigger;var yt=Mo.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ro(Ie.Portal,{children:Ro(Ie.Content,{ref:r,align:a,sideOffset:t,className:p("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));yt.displayName=Ie.Content.displayName;import{useMutation as Rl,useQueryClient as Ml}from"@tanstack/react-query";import{QueryClient as hl,QueryClientProvider as Il}from"@tanstack/react-query";import*as ge from"react";import{onlineManager as sl,useQueryClient as ll}from"@tanstack/react-query";var Ao=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:s,position:l,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i}=e;this.#a=de(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=de(s),this.#r=de(l),this.#s=de(u),this.#l=de(n)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=Lt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[u]=this.#a,n;return this.#u?n=this.#u:(n=xt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=n),Ct(this.#c,this.#t),mt(n,gt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return s()},get errorTypes(){return l()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},Fo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:s,position:l,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i,onClose:g}=e;this.#a=de(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=de(s),this.#r=de(l),this.#s=de(u),this.#l=de(n),this.#u=de(g)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#u[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=Lt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[u]=this.#a,[n]=this.#u,d;return this.#d?d=this.#d:(d=xt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=d),Ct(this.#c,this.#t),mt(d,gt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return s()},get errorTypes(){return l()},get onClose(){return n()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as ul}from"react/jsx-runtime";function Bo(e){let a=ll(e.client),t=ge.useRef(null),{buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:u,shadowDOMTarget:n}=e,[d]=ge.useState(new Ao({client:a,queryFlavor:"React Query",version:"5",onlineManager:sl,buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:u,shadowDOMTarget:n}));return ge.useEffect(()=>{d.setClient(a)},[a,d]),ge.useEffect(()=>{o&&d.setButtonPosition(o)},[o,d]),ge.useEffect(()=>{r&&d.setPosition(r)},[r,d]),ge.useEffect(()=>{d.setInitialIsOpen(s||!1)},[s,d]),ge.useEffect(()=>{d.setErrorTypes(l||[])},[l,d]),ge.useEffect(()=>(t.current&&d.mount(t.current),()=>{d.unmount()}),[d]),ul("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Re from"react";import{onlineManager as nl,useQueryClient as il}from"@tanstack/react-query";import{jsx as fl}from"react/jsx-runtime";function No(e){let a=il(e.client),t=Re.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:s}=e,[l]=Re.useState(new Fo({client:a,queryFlavor:"React Query",version:"5",onlineManager:nl,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:s,onClose:e.onClose}));return Re.useEffect(()=>{l.setClient(a)},[a,l]),Re.useEffect(()=>{l.setOnClose(e.onClose??(()=>{}))},[e.onClose,l]),Re.useEffect(()=>{l.setErrorTypes(o||[])},[o,l]),Re.useEffect(()=>(t.current&&l.mount(t.current),()=>{l.unmount()}),[l]),fl("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Oo=process.env.NODE_ENV!=="development"?function(){return null}:Bo,yc=process.env.NODE_ENV!=="development"?function(){return null}:No;import{createContext as Sl,useContext as bl,useMemo as yl,useState as wt}from"react";import{toast as wl}from"sonner";import{Toaster as pl}from"sonner";import{jsx as ml}from"react/jsx-runtime";var qo=({...e})=>ml(pl,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as gl}from"nuqs/adapters/custom";import{useEffect as xl,useState as Ll}from"react";function Cl(){let e=window.location.hash.slice(1),[a,t]=Ll(new URLSearchParams(e));function o(s,{history:l}){let{pathname:u,search:n}=window.location,d=s.toString(),i=`${u}${n}#${d}`;l==="push"?window.history.pushState(null,"",i):window.history.replaceState(null,"",i),t(s)}function r(){let s=window.location.hash.slice(1);return new URLSearchParams(s)}return xl(()=>{function s(){let l=window.location.hash.slice(1);t(new URLSearchParams(l))}return window.addEventListener("hashchange",s),()=>window.removeEventListener("hashchange",s)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Eo=gl(Cl);import{jsx as Ja,jsxs as Pl}from"react/jsx-runtime";var vl=new hl,Uo=Sl(void 0);function Ho(e){let{children:a,...t}=e,[o,r]=wt(null),[s,l]=wt(!1),[u,n]=wt(!0),d=e.onError;d??=L=>wl.error(L.message);let i=yl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),g=()=>l(L=>!L),m=()=>n(L=>!L);return Pl(Il,{client:vl,children:[Ja(Oo,{}),Ja(qo,{}),Ja(Eo,{children:Ja(Uo.Provider,{value:{...t,activeTable:o,isFullscreen:s,setActiveTable:r,onError:d,emitTelemetryEvent:i,toggleFullscreen:g,isNavigationOpen:u,toggleNavigation:m},children:a})})]})}function X(){let e=bl(Uo);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function kl(e,a){let t={filter:ra(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function zo(e,a){return{...e,__ps_rowid:kl(e,a)}}function $a(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:zo(t,a)}:o!==void 0?{...e,rows:o.map(r=>zo(r,a))}:e}function Vo(){let{activeTable:e,adapter:a}=X(),t=Ml(),{schema:o=null,name:r=null}=e??{};return Rl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(s){let[l,u]=await a.insert({rows:s,table:e},{});if(l)throw l;return $a(u,e)},onSuccess(s){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},l=>l==null?l:{...l,rows:[...s.rows,...l.rows]})},retry:!1})}import{useQuery as Dl}from"@tanstack/react-query";function Go(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:s,adapter:l}=X();return Dl({enabled:!!s,gcTime:0,placeholderData(u,n){let[,d,,i]=n?.queryKey||[];if(!(d!==s?.schema||i!==s?.name))return u},async queryFn({signal:u}){let[n,d]=await l.query({pageIndex:a,pageSize:t,sortOrder:o,table:s,filter:r},{abortSignal:u});if(n)throw n;return $a(d,s)},queryKey:["schema",s?.schema||null,"table",s?.name||null,"query","sortOrder",o.map(u=>`${u.column}:${u.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as Tl,useQueryClient as Al}from"@tanstack/react-query";function Wo(){let{activeTable:e,adapter:a,onError:t}=X(),o=Al(),r=["schema",e?.schema??null,"table",e?.name??null];return Tl({mutationFn:async s=>{let[l,u]=await a.update(s.details,s.options);if(l)throw l;return u},mutationKey:[...r,"update"],onError(s,l){let{changes:u,row:n}=l.details;t(s),vt({getFinderFn(){let d={...n,...u},i=ra(d,e.columns);return g=>i.every(([m,L])=>g[m]===L)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(u).reduce((g,m)=>({...g,[m]:n[m]}),{})}}})},onMutate(s){let{details:l}=s;vt({getFinderFn(){let{row:u}=l,n=ra(u,e.columns);return d=>n.every(([i,g])=>d[i]===g)},queryClient:o,table:e,updaterFn:function(n){return{...n,...l.changes}}})},onSuccess(s,l){vt({getFinderFn(){let{changes:u,row:n}=l.details,d={...n,...u},i=ra(d,e.columns);return g=>i.every(([m,L])=>g[m]===L)},queryClient:o,table:e,updaterFn:function(n){let{__ps_updated_at__:d}=n,{row:i}=s;return d!=null&&i.__ps_updated_at__<=d?n:{...n,...i}}})},retry:!1})}function vt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,s;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},l=>{let{rows:u=[]}=l||{};if(u.length===0)return l;let n=u.findIndex(s??=a());if(n===-1)return l;let d=r(u[n]);return{...l,rows:[...u.slice(0,n),d,...u.slice(n+1)]}})}import{useEffect as Ol,useMemo as _o,useState as ql}from"react";import El from"short-uuid";var Q={};xs(Q,{keyMap:()=>Pt,urlKeys:()=>Nl,useQueryState:()=>_e,useQueryStates:()=>Fa});Pe(Q,mp);import{useQueryState as Fl,useQueryStates as Bl}from"nuqs";import*as mp from"nuqs";function Pt(e){return e}function Nl(e){return e}var cp=Symbol("BRAND_SYMBOL");function _e(e,a){return Fl(e,a)}function Fa(e,a){return Bl(e,a)}var Ul={kind:"FilterGroup",filters:[],after:"and",id:El.generate()},Ko=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=Ko(t));return a};function Xo(){let[e,a]=_e("filter",{defaultValue:JSON.stringify(Ul)}),t=_o(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,s]=ql(t);Ol(()=>{s(t)},[t]);let l=_o(()=>Ko(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:s,totalEditingFilters:l}}import{useIsMutating as Hl}from"@tanstack/react-query";function Ya(){return Hl({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as zl}from"react";var Vl=25,Gl={pageIndex:Q.parseAsIndex.withDefault(0),pageSize:Q.parseAsInteger.withDefault(Vl)};function ja(){let[{pageIndex:e,pageSize:a},t]=Fa(Gl),o=zl(r=>{t(typeof r=="function"?s=>{let l=r(s);return{pageIndex:l.pageIndex,pageSize:l.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as Kl,useState as Xl}from"react";import{useMutation as Wl,useQueryClient as _l}from"@tanstack/react-query";function Qo(){let{activeTable:e,adapter:a}=X(),t=_l(),{schema:o=null,name:r=null}=e??{};return Wl({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(s){let[l,u]=await a.delete({rows:s,table:e},{});if(l)throw l;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function Zo(e){let{activeTable:a,onError:t}=X(),{paginationState:o}=ja(),[r,s]=Xl({}),l=Object.keys(r).length!==0,{mutate:u}=Qo();Kl(()=>s({}),[a,o.pageIndex]);function n(){let d=e?.rows.filter(i=>r[i.__ps_rowid]);u(d??[],{onSuccess(){s({})},onError:t})}return{deleteSelection:n,setRowSelectionState:s,rowSelectionState:r,isSelecting:l}}import{useEffect as Ql,useState as Zl}from"react";function Jo(){let[e,a]=_e("sort",{defaultValue:""}),t=l=>{if(!l)return[];try{return l.split(",").map(u=>{let[n,d]=u.split(":");return!n||!d||!["asc","desc"].includes(d)?null:{column:n,direction:d}}).filter(Boolean)}catch(u){return console.error("Failed to parse sorting parameter:",u),[]}},[o,r]=Zl(()=>t(e));return Ql(()=>{let l=t(e);r(l)},[e]),{sortingState:o,setSortingState:l=>{let u=typeof l=="function"?l(o):l;r(u);let n=u.length>0?u.map(d=>`${d.column}:${d.direction}`).join(","):null;a(n)}}}import{isObjectType as Su}from"remeda";import{forwardRef as lu}from"react";import*as De from"react";import{jsx as Me}from"react/jsx-runtime";var kt=De.forwardRef(({className:e,...a},t)=>Me("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Me("table",{ref:t,className:p("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));kt.displayName="Table";var Rt=De.forwardRef(({className:e,...a},t)=>Me("thead",{ref:t,className:p(e),...a}));Rt.displayName="TableHeader";var Mt=De.forwardRef(({className:e,...a},t)=>Me("tbody",{ref:t,className:p("[&_tr:last-child]:ps-border-0",e),...a}));Mt.displayName="TableBody";var Jl=De.forwardRef(({className:e,...a},t)=>Me("tfoot",{ref:t,className:p("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Jl.displayName="TableFooter";var $e=De.forwardRef(({className:e,...a},t)=>Me("tr",{ref:t,className:p("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));$e.displayName="TableRow";var Ye=De.forwardRef(({className:e,...a},t)=>Me("th",{ref:t,className:p("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));Ye.displayName="TableHead";var Ke=De.forwardRef(({className:e,...a},t)=>Me("td",{ref:t,className:p("ps-align-middle",e),...a}));Ke.displayName="TableCell";var $l=De.forwardRef(({className:e,...a},t)=>Me("caption",{ref:t,className:p("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));$l.displayName="TableCaption";import{isValidElement as su}from"react";import*as M from"@radix-ui/react-context-menu";import*as Te from"react";import{jsx as ae,jsxs as At}from"react/jsx-runtime";var $o=M.Root,Yo=M.Trigger;var Yl=Te.forwardRef(({className:e,inset:a,children:t,...o},r)=>At(M.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,ae(me,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));Yl.displayName=M.SubTrigger.displayName;var jl=Te.forwardRef(({className:e,...a},t)=>ae(M.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));jl.displayName=M.SubContent.displayName;var Dt=Te.forwardRef(({className:e,...a},t)=>ae(M.Portal,{children:ae(M.Content,{ref:t,className:p("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));Dt.displayName=M.Content.displayName;var Tt=Te.forwardRef(({className:e,inset:a,...t},o)=>ae(M.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));Tt.displayName=M.Item.displayName;var eu=Te.forwardRef(({className:e,children:a,checked:t,...o},r)=>At(M.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[ae("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ae(M.ItemIndicator,{children:ae(pe,{className:"ps-h-4 ps-w-4"})})}),a]}));eu.displayName=M.CheckboxItem.displayName;var au=Te.forwardRef(({className:e,children:a,...t},o)=>At(M.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[ae("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ae(M.ItemIndicator,{children:ae(Je,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));au.displayName=M.RadioItem.displayName;var tu=Te.forwardRef(({className:e,inset:a,...t},o)=>ae(M.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));tu.displayName=M.Label.displayName;var ou=Te.forwardRef(({className:e,...a},t)=>ae(M.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));ou.displayName=M.Separator.displayName;var ru=({className:e,...a})=>ae("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});ru.displayName="ContextMenuShortcut";import{jsx as Ft,jsxs as jo}from"react/jsx-runtime";function er(e){let{children:a}=e;return jo($o,{children:[Ft(Yo,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),Ft(Dt,{children:jo(Tt,{onClick:()=>{let t=Bt(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[Ft(Sa,{size:12}),"Copy"]})})]})}function Bt(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(su(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?Bt(a.children):""}return Array.isArray(e)?e.map(Bt).join(""):""}import{jsx as ar}from"react/jsx-runtime";function Z(e){let{children:a,className:t,ref:o,style:r,...s}=e;return ar(Ke,{...s,className:p("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:ar(er,{children:a})})}import{jsx as tr}from"react/jsx-runtime";var Nt=lu((e,a)=>{let{containerProps:t,value:o,...r}=e;return tr(Z,{...r,...t,ref:a,children:tr("div",{"data-cell-type":"boolean",children:String(!!o)})})});Nt.displayName="BooleanCell";import{forwardRef as uu}from"react";import{jsx as du}from"react/jsx-runtime";var Ot=uu((e,a)=>{let{containerProps:t,value:o,...r}=e;return du(Z,{...r,...t,ref:a,children:String(o)})});Ot.displayName="DateCell";import{forwardRef as nu}from"react";import{jsx as iu}from"react/jsx-runtime";var Ba=nu((e,a)=>{let{containerProps:t,...o}=e;return iu(Z,{...o,...t,ref:a})});Ba.displayName="EmptyCell";import{forwardRef as fu}from"react";import{jsx as cu}from"react/jsx-runtime";var qt=fu((e,a)=>{let{containerProps:t,value:o,options:r,...s}=e;return cu(Z,{...s,...t,ref:a,children:String(o)})});qt.displayName="EnumCell";import{forwardRef as pu}from"react";import{jsx as mu}from"react/jsx-runtime";var et=pu((e,a)=>{let{containerProps:t,value:o,...r}=e;return mu(Z,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});et.displayName="JSONCell";import{forwardRef as gu}from"react";import{jsx as or}from"react/jsx-runtime";var Et=gu((e,a)=>{let{containerProps:t,...o}=e;return or(Z,{...o,...t,ref:a,children:or("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Et.displayName="NullCell";import{forwardRef as xu}from"react";import{jsx as rr}from"react/jsx-runtime";var Ut=xu((e,a)=>{let{containerProps:t,value:o,...r}=e;return rr(Z,{...r,...t,ref:a,children:rr("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});Ut.displayName="NumericCell";import{forwardRef as Lu}from"react";import{jsx as Cu}from"react/jsx-runtime";var at=Lu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Cu(Z,{...r,...t,ref:a,children:String(o)})});at.displayName="RawCell";import{forwardRef as hu}from"react";import{jsx as Iu}from"react/jsx-runtime";var Ht=hu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Iu(Z,{...r,...t,ref:a,children:String(o)})});Ht.displayName="TimeCell";import{jsx as xe}from"react/jsx-runtime";function tt({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return xe(Ba,{containerProps:t});if(o===null)return xe(Et,{containerProps:t});let{group:r,options:s,isArray:l}=a.datatype;if(r==="json"||l)return xe(et,{containerProps:t,value:o});if(r==="string")return xe(at,{containerProps:t,value:o});if(r==="enum")return xe(qt,{containerProps:t,value:o,options:s});if(r==="boolean")return xe(Nt,{containerProps:t,value:o});if(r==="datetime")return xe(Ot,{containerProps:t,value:o});if(r==="time")return xe(Ht,{containerProps:t,value:o});if(r==="numeric")return xe(Ut,{containerProps:t,value:o});if(r==="raw")return Su(o)?xe(et,{containerProps:t,value:o}):xe(at,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as bu}from"react";import*as Na from"@radix-ui/react-checkbox";import*as sr from"react";import{jsx as zt}from"react/jsx-runtime";var Oa=sr.forwardRef(({className:e,...a},t)=>zt(Na.Root,{ref:t,className:p("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:zt(Na.Indicator,{className:p("ps-flex ps-items-center ps-justify-center ps-text-current"),children:zt(pe,{className:"ps-h-4 ps-w-4"})})}));Oa.displayName=Na.Root.displayName;import{jsx as Vt}from"react/jsx-runtime";var Gt=bu((e,a)=>{let{table:t,readonly:o,className:r,style:s,...l}=e;return Vt("div",{ref:a,className:r,style:s,...l,children:Vt("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:Vt(Oa,{checked:t.getIsAllRowsSelected(),onCheckedChange:u=>t.toggleAllRowsSelected(!!u),disabled:o})})})});Gt.displayName="SelectHeaderCell";import{forwardRef as wu}from"react";import{Fragment as yu,jsx as Wt}from"react/jsx-runtime";function lr(e){let{children:a,className:t,ref:o,style:r,isHeader:s=!1,...l}=e,u=p("ps-flex ps-items-center ps-justify-center ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)]");return Wt(yu,{children:s?Wt(Ye,{...l,className:p(u,"ps-h-10 ps-bg-table-head ps-z-30 ps-sticky ps-top-0 ps-left-0",t),ref:o,children:a}):Wt(Ke,{...l,className:p(u,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as ur}from"react/jsx-runtime";var _t=wu((e,a)=>{let{row:t,readonly:o,className:r,style:s,...l}=e;return ur(lr,{ref:a,className:r,style:s,...l,children:ur(Oa,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});_t.displayName="SelectRowCell";import*as Ae from"@radix-ui/react-popover";import*as Y from"react";import{jsx as qa}from"react/jsx-runtime";var dr=Y.createContext(null),Kt=({children:e,...a})=>{let[t,o]=Y.useState(!1);return qa(dr.Provider,{value:{open:t,setOpen:o},children:qa(Ae.Root,{open:t,onOpenChange:o,...a,children:e})})};Kt.displayName="PopoverCell";var Xt=Y.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let s=Y.useRef(null);return qa(Ae.Trigger,{ref:l=>{typeof r=="function"?r(l):r&&(r.current=l),s.current=l},className:p("w-full h-full cursor-pointer",t),...o,children:e})});Xt.displayName="PopoverCellTrigger";var Qt=Y.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>qa(Ae.Portal,{children:qa(Ae.Content,{ref:r,align:a,sideOffset:t,className:p("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:s=>s.preventDefault(),...o})}));Qt.displayName=Ae.Content.displayName;function te(e){let a=Y.useContext(dr),t=Y.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=Y.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return Y.useEffect(()=>{let r=s=>{(s.key==="Enter"||s.key==="Return")&&!s.shiftKey?t():s.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as nr,jsxs as vu}from"react/jsx-runtime";function ot(e){let{cellComponent:a,inputComponent:t}=e;return vu(Kt,{children:[nr(Xt,{asChild:!0,children:a}),nr(Qt,{align:"start",alignOffset:-1,className:p("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-max"),sideOffset:-40,children:t})]})}import{closestCenter as Ou,DndContext as qu,DragOverlay as Eu,KeyboardSensor as Uu,PointerSensor as Hu,useSensor as gr,useSensors as zu}from"@dnd-kit/core";import{arrayMove as Vu,SortableContext as Gu,sortableKeyboardCoordinates as Wu,useSortable as _u,verticalListSortingStrategy as Ku}from"@dnd-kit/sortable";import{CSS as Xu}from"@dnd-kit/utilities";import{motion as $t}from"motion/react";import{AnimateNumber as Qu}from"motion-plus/react";import{useMemo as Zu,useState as Yt}from"react";import{Fragment as Ju}from"react/jsx-runtime";import{createPortal as $u}from"react-dom";import xr from"short-uuid";function ir(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function fr(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as D from"@radix-ui/react-dropdown-menu";import*as Fe from"react";import{jsx as oe,jsxs as Zt}from"react/jsx-runtime";var rt=D.Root,st=D.Trigger;var Pu=Fe.forwardRef(({className:e,inset:a,children:t,...o},r)=>Zt(D.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,oe(me,{className:"ps-ml-auto"})]}));Pu.displayName=D.SubTrigger.displayName;var ku=Fe.forwardRef(({className:e,...a},t)=>oe(D.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));ku.displayName=D.SubContent.displayName;var Ea=Fe.forwardRef(({className:e,sideOffset:a=4,...t},o)=>oe(D.Portal,{children:oe(D.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Ea.displayName=D.Content.displayName;var lt=Fe.forwardRef(({className:e,inset:a,...t},o)=>oe(D.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));lt.displayName=D.Item.displayName;var Ru=Fe.forwardRef(({className:e,children:a,checked:t,...o},r)=>Zt(D.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[oe("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:oe(D.ItemIndicator,{children:oe(pe,{className:"ps-h-4 ps-w-4"})})}),a]}));Ru.displayName=D.CheckboxItem.displayName;var Mu=Fe.forwardRef(({className:e,children:a,...t},o)=>Zt(D.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[oe("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:oe(D.ItemIndicator,{children:oe(Je,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Mu.displayName=D.RadioItem.displayName;var Du=Fe.forwardRef(({className:e,inset:a,...t},o)=>oe(D.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));Du.displayName=D.Label.displayName;var Tu=Fe.forwardRef(({className:e,...a},t)=>oe(D.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Tu.displayName=D.Separator.displayName;var Au=({className:e,...a})=>oe("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Au.displayName="DropdownMenuShortcut";import*as cr from"react";import{jsx as Fu}from"react/jsx-runtime";var ne=cr.forwardRef(({className:e,type:a,...t},o)=>Fu("input",{type:a,className:p("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ne.displayName="Input";import*as T from"@radix-ui/react-select";import*as Xe from"react";import{jsx as j,jsxs as Jt}from"react/jsx-runtime";var ua=T.Root;var da=T.Value,je=Xe.forwardRef(({className:e,children:a,...t},o)=>Jt(T.Trigger,{ref:o,className:p("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...t,children:[a,j(T.Icon,{asChild:!0,children:j(he,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));je.displayName=T.Trigger.displayName;var pr=Xe.forwardRef(({className:e,...a},t)=>j(T.ScrollUpButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:j(Ca,{className:"ps-h-4 ps-w-4"})}));pr.displayName=T.ScrollUpButton.displayName;var mr=Xe.forwardRef(({className:e,...a},t)=>j(T.ScrollDownButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:j(he,{className:"ps-h-4 ps-w-4"})}));mr.displayName=T.ScrollDownButton.displayName;var ea=Xe.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>j(T.Portal,{children:Jt(T.Content,{ref:r,className:p("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[j(pr,{}),j(T.Viewport,{className:p("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),j(mr,{})]})}));ea.displayName=T.Content.displayName;var Bu=Xe.forwardRef(({className:e,...a},t)=>j(T.Label,{ref:t,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));Bu.displayName=T.Label.displayName;var _=Xe.forwardRef(({className:e,children:a,...t},o)=>Jt(T.Item,{ref:o,className:p("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[j("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:j(T.ItemIndicator,{children:j(pe,{className:"ps-h-4 ps-w-4"})})}),j(T.ItemText,{children:a})]}));_.displayName=T.Item.displayName;var Nu=Xe.forwardRef(({className:e,...a},t)=>j(T.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Nu.displayName=T.Separator.displayName;import{Fragment as ad,jsx as h,jsxs as z}from"react/jsx-runtime";var Lr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>z(ua,{value:e,onValueChange:a,disabled:t,children:[h(je,{className:o,children:h(da,{placeholder:"Logic"})}),z(ea,{children:[h(_,{value:"and",children:h("div",{className:"ps-font-semibold",children:"AND"})}),h(_,{value:"or",children:h("div",{className:"ps-font-semibold",children:"OR"})})]})]}),Yu=({activeId:e,items:a,table:t})=>{let o=a.find(u=>u.id===e);if(!o)return null;let r="and",s=!1,l=a.findIndex(u=>u.id===e);if(l>0){let u=a[l-1];u&&(r=u.after,s=!0)}return o.kind==="ColumnFilter"?h(Cr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):h(jt,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},ju=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:s,activeDragId:l,onDragStart:u,onDragEndSignal:n})=>{let d=Zu(()=>e.map(m=>m.id),[e]),i=zu(gr(Hu,{activationConstraint:{distance:8}}),gr(Uu,{coordinateGetter:Wu}));return z(qu,{sensors:i,collisionDetection:Ou,onDragStart:u,onDragEnd:m=>{let{active:L,over:S}=m;if(S&&L.id!==S.id){let c=e.findIndex(C=>C.id===L.id),x=e.findIndex(C=>C.id===S.id);c!==-1&&x!==-1&&s(c,x)}n()},children:[h(Gu,{items:d,strategy:Ku,children:e.map((m,L)=>{let S=!1,c,x,C=!1;if(L>0){S=!0;let y=e[L-1];c=y.after,x=E=>{let W={...y,after:E};o(L-1,W)},C=L-1===e.length-1}return h(ed,{filter:m,onUpdate:y=>o(L,y),onDelete:()=>r(L),parentDndId:a,table:t,showLeadingOperator:S,leadingOperatorValue:c,onLeadingOperatorChange:x,isLeadingOperatorTargetLast:C},m.id)})}),$u(h(Eu,{children:l?h("div",{className:"ps-opacity-80",children:h(Yu,{activeId:l,items:e,table:t})}):null}),document.body)]})},ed=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let{attributes:d,listeners:i,setNodeRef:g,transform:m,transition:L,isDragging:S}=_u({id:e.id,data:{type:e.kind,parentId:o}}),c={transform:Xu.Transform.toString(m),transition:L,opacity:S?.5:1};return h("div",{ref:g,style:c,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?h(Cr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n}):h(jt,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})})},Cr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let d=S=>{a({...e,column:S})},i=S=>{a({...e,operator:S})},g=S=>{let c=S.target.value,x=r.columns[e.column];if(x!==void 0){let C=ir(x,e.operator,c);a({...e,value:C})}},[m,L]=Yt(fr(r.columns[e.column],e.operator,e.value));return z($t.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[z("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[h("div",{...o,className:"ps-cursor-grab",children:h(wa,{className:"ps-text-gray-500",size:16})}),z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[s&&u?h(Lr,{value:l,onValueChange:u,disabled:n}):null,z(ua,{value:e.column,onValueChange:d,children:[h(je,{className:"ps-w-28 ps-text-xs ps-h-8",children:h(da,{placeholder:"Select column"})}),h(ea,{children:Object.keys(r.columns).map(S=>h(_,{value:S,children:S},S))})]}),z(ua,{value:e.operator,onValueChange:S=>i(S),children:[h(je,{className:"ps-w-20 ps-text-xs ps-h-8",children:h(da,{placeholder:"Operator"})}),z(ea,{children:[h(_,{value:"=",children:"="}),h(_,{value:"!=",children:"!="}),h(_,{value:">",children:">"}),h(_,{value:">=",children:">="}),h(_,{value:"<",children:"<"}),h(_,{value:"<=",children:"<="}),h(_,{value:"is",children:"is"}),h(_,{value:"is not",children:"is not"}),h(_,{value:"like",children:"like"}),h(_,{value:"not like",children:"not like"}),h(_,{value:"ilike",children:"ilike"}),h(_,{value:"not ilike",children:"not ilike"})]})]}),h(ne,{value:m,onChange:S=>{L(S.target.value),g(S)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),h("div",{className:"ps-flex ps-items-center ps-gap-2",children:h(N,{variant:"ghost",size:"xs",onClick:t,children:h(We,{size:14})})})]})},jt=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:s,showLeadingOperator:l,leadingOperatorValue:u,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:d})=>{let[i,g]=Yt(!0),[m,L]=Yt(null),S=()=>{let H={id:xr.generate(),kind:"ColumnFilter",column:Object.keys(s.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,H]})},c=()=>{let H={id:xr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,H]})},x=(H,J)=>{let G=[...e.filters];G[H]=J,a({...e,filters:G})},C=H=>{let J=[...e.filters];J.splice(H,1),a({...e,filters:J})},y=H=>{L(H.active.id)},E=()=>{L(null)},W=(H,J)=>{if(H===J)return;let G=Vu(e.filters,H,J);a({...e,filters:G})},le=()=>i?!e.filters||e.filters.length===0?h("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):h($t.div,{transition:{layout:{duration:.12}},children:h("div",{className:p("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:h(ju,{items:e.filters,parentGroupId:e.id,table:s,onUpdateItem:x,onDeleteItem:C,onReorderItems:W,activeDragId:m,onDragStart:y,onDragEndSignal:E})})}):null;return h($t.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:z("div",{className:p("ps-flex ps-flex-col ps-w-full",i?"ps-gap-2":""),children:[z("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&h("div",{...o,className:"ps-cursor-grab",onClick:()=>g(!i),children:i?h(he,{size:16}):h(me,{size:16})}),l&&n&&!r&&h("div",{className:"ps-flex ps-items-center",children:h(Lr,{value:u,onValueChange:n,disabled:d})}),z(N,{variant:"outline",size:"sm",onClick:S,className:p("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&h(Qa,{className:"ps-transition-all",children:h(Qu,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),h(N,{variant:"outline",size:"sm",onClick:c,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&z(rt,{children:[h(st,{asChild:!0,children:h(N,{variant:"ghost",size:"sm",children:h(ze,{className:"ps-size-4"})})}),h(Ea,{align:"center",className:"ps-w-full",children:e.filters.length===0?h("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):h("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:h(hr,{filter:e})})})]}),!r&&h(N,{variant:"ghost",size:"xs",onClick:t,children:h(We,{size:14})})]})]}),h("div",{className:p(r?"":"ps-ml-6"),children:le()})]})})},hr=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let s,l=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!l&&(a+=1),a&&(l||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:u,operator:n}=o;s=z(ad,{children:[z("span",{children:[" ",u," "]}),z("span",{children:[" ",n," "]}),h("span",{children:" ? "})]})}else s=h(hr,{filter:o});return z(Ju,{children:[a===1?h("span",{className:"ps-font-semibold",children:"("}):"",s,a===-1?h("span",{className:"ps-font-semibold",children:")"}):"",!l&&z("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return h("span",{children:t})};function Ir({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return z("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[h(jt,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),h(N,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as Ld,MouseSensor as Cd,useSensor as hd,useSensors as Id}from"@dnd-kit/core";import{arrayMove as Sd,horizontalListSortingStrategy as bd,SortableContext as yd,useSortable as wd}from"@dnd-kit/sortable";import{CSS as vd}from"@dnd-kit/utilities";import{getCoreRowModel as Pd,useReactTable as kd}from"@tanstack/react-table";import*as Be from"react";import I from"react";function Qe(){return Qe=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Qe.apply(null,arguments)}var td=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function od(e,a){let[t,o]=I.useState();I.useEffect(()=>{let s=td(e);o(typeof s>"u"||s===null?typeof a=="function"?a():a:s)},[a,e]);let r=I.useCallback(s=>{o(l=>{let u=s;typeof s=="function"&&(u=s(l));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var Se={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},yr=I.createContext(Se);function wr(e){let{theme:a,...t}=e;return I.createElement(yr.Provider,Qe({value:a},t))}function rd(){return I.useContext(yr)}function sd(e){let[a,t]=I.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return I.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=s=>{let{matches:l}=s;return t(l)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var ld=typeof window>"u";function Le(e,a,t){return t===void 0&&(t={}),I.forwardRef((o,r)=>{let{style:s,...l}=o,u=rd(),n=Object.entries(t).reduce((d,i)=>{let[g,m]=i;return sd(g)?{...d,...typeof m=="function"?m(l,u):m}:d},{});return I.createElement(e,{...l,style:{...typeof a=="function"?a(l,u):a,...s,...n},ref:r})})}function ud(){let e=I.useRef(!1),a=I.useCallback(()=>e.current,[]);return I[ld?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var dd=Le("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});Le("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var nd=Le("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));Le("code",{fontSize:".9em"});Le("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));Le("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var Sr=Le("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),ut=Le("span",{cursor:"pointer",color:"white"}),id=Le("span",(e,a)=>({color:a.danger})),eo=Le("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),fd=Le("span",{color:"grey",fontSize:".7rem"}),br=e=>{let{expanded:a,style:t={},...o}=e;return I.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},cd=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:s,type:l,expanded:u,toggle:n,pageSize:d,renderer:i}=e,[g,m]=I.useState(void 0),[L,S]=I.useState([]),c=()=>{m(o())};return I.createElement(Sr,{key:t},s!=null&&s.length?I.createElement(I.Fragment,null,I.createElement(ut,{onClick:()=>n()},I.createElement(br,{expanded:u})," ",t," ",I.createElement(fd,null,String(l).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?s.length===1?I.createElement(eo,null,r.map(x=>a(x))):I.createElement(eo,null,s.map((x,C)=>I.createElement("div",{key:C},I.createElement(Sr,null,I.createElement(ut,{onClick:()=>S(y=>y.includes(C)?y.filter(E=>E!==C):[...y,C])},I.createElement(br,{expanded:u})," [",C*d," ..."," ",C*d+d-1,"]"),L.includes(C)?I.createElement(eo,null,x.map(y=>a(y))):null)))):null):l==="function"?I.createElement(I.Fragment,null,I.createElement(be,{renderer:i,label:I.createElement("button",{onClick:c},I.createElement(ut,null,t)," \u{1F504}"," "),value:g,defaultExpanded:{}})):I.createElement(I.Fragment,null,I.createElement(ut,null,t,":")," ",I.createElement(id,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function be(e){let{value:a,defaultExpanded:t,renderer:o=cd,pageSize:r=100,depth:s=0,...l}=e,[u,n]=I.useState(t),d=c=>{n(x=>typeof c<"u"?c:!x)},i=[],g=typeof a,m,L=[],S=c=>{let x=i.concat(c.label),C=t===!0?{[c.label]:!0}:t?.[c.label];return{...c,subPath:c,path:x,depth:s+1,defaultExpanded:C}};if(Array.isArray(a)?(g="array",m=a.map((c,x)=>S({label:x,value:c}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(g="Iterable",m=Array.from(a,(c,x)=>S({label:x,value:c}))):typeof a=="function"?g="function":typeof a=="object"&&a!==null&&(g="object",m=Object.entries(a).map(c=>{let[x,C]=c;return S({label:x,value:C})})),m){let c=0;for(;c<m.length;)L.push(m.slice(c,c+r)),c=c+r}return o({handleEntry:c=>I.createElement(be,Qe({key:c.label,renderer:o},l,c)),type:g,subEntries:m,subEntryPages:L,depth:s,value:a,path:i,expanded:u,toggle:d,pageSize:r,...l})}function vr(e){return Be.createElement("svg",Qe({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),Be.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},Be.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},Be.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},Be.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},Be.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),Be.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),Be.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function Pr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:s="footer"}=e,l=I.useRef(null),u=I.useRef(null),[n,d]=od("reactTableDevtoolsOpen",a),i=ud(),{style:g={},...m}=o,{style:L={},onClick:S,...c}=r;return i()?I.createElement(s,{ref:l,className:"ReactTableDevtools"},I.createElement(wr,{theme:Se},n?I.createElement(pd,Qe({ref:u},m,{table:t,isOpen:n,setIsOpen:d,style:{maxHeight:"80vh",width:"100%",...g}})):I.createElement("button",Qe({type:"button"},c,{"aria-label":"Open React Table Devtools",onClick:x=>{d(!0),S&&S(x)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...L}}),I.createElement(vr,{"aria-hidden":!0})))):null}var pd=I.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:s,...l}=a;return I.createElement(wr,{theme:Se},I.createElement(dd,Qe({ref:t,className:"ReactTableDevtoolsPanel"},l),I.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
2
2
|
.ReactTableDevtoolsPanel * {
|
|
3
|
-
scrollbar-color: ${
|
|
3
|
+
scrollbar-color: ${Se.backgroundAlt} ${Se.gray};
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar, .ReactTableDevtoolsPanel scrollbar {
|
|
@@ -9,15 +9,15 @@ import"../chunk-IAKOOX7B.js";import{D as Je}from"../chunk-OGMDOPWW.js";import{B
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar-track, .ReactTableDevtoolsPanel scrollbar-track {
|
|
12
|
-
background: ${
|
|
12
|
+
background: ${Se.backgroundAlt};
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactTableDevtoolsPanel scrollbar-thumb {
|
|
16
|
-
background: ${
|
|
16
|
+
background: ${Se.gray};
|
|
17
17
|
border-radius: .5em;
|
|
18
|
-
border: 3px solid ${
|
|
18
|
+
border: 3px solid ${Se.backgroundAlt};
|
|
19
19
|
}
|
|
20
|
-
`}}),I.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${pe.grayAlt}`,display:"flex",flexDirection:"column"}},I.createElement("div",{style:{padding:".5em",background:pe.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},I.createElement(Ir,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),I.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",I.createElement("span",{style:{fontWeight:100}},"Devtools")),I.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?I.createElement(sd,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),I.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},I.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},I.createElement(me,{label:"Instance",value:o,defaultExpanded:!1}),I.createElement("div",{style:{height:".5rem"}}),I.createElement(me,{label:"State",value:o.getState(),defaultExpanded:!1}),I.createElement("div",{style:{height:".5rem"}}),I.createElement(me,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),I.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},I.createElement(me,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),I.createElement(me,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),I.createElement(me,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),I.createElement(me,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),I.createElement(me,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as yd,motion as vd}from"motion/react";import{useEffect as Pd,useMemo as kd,useState as jt}from"react";import{jsx as id}from"react/jsx-runtime";function Ye({className:e,...a}){return id("div",{className:p("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as fd}from"@tanstack/react-table";import{AnimatePresence as cd,motion as br}from"motion/react";import{Fragment as $t,jsx as q,jsxs as ge}from"react/jsx-runtime";function wr(e){let{header:a,className:t}=e;return ge("div",{className:p("ps-flex ps-items-center ps-justify-between",t),children:[ge("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[q("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:q("span",{className:"ps-flex ps-min-w-0",children:q("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:fd(a.column.columnDef.header,a.getContext())})})}),ge("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[q("span",{className:"ps-flex ps-items-center ps-ml-1",children:q(cd,{mode:"wait",children:a.column.getIsSorted()==="desc"?q(br.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:q(ha,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?q(br.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:q(Ia,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&ge(Ya,{children:[q(et,{asChild:!0,children:q(B,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:q(fe,{size:12})})}),ge(Ma,{children:[a.column.getCanSort()&&q(at,{onClick:()=>a.column.toggleSorting(),children:q("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?ge($t,{children:[q(De,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?ge($t,{children:[q(ua,{size:16}),"Sort ascending"]}):ge($t,{children:[q(Ne,{size:16}),"Cancel sorting"]})})}),q(at,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?ge("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(Sa,{size:16}),"Unpin column"]}):ge("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(ba,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&q("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:p("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as yr}from"react/jsx-runtime";function vr({className:e}){return yr("div",{"data-loading-bar":!0,className:p("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:yr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as Y,jsxs as st}from"react/jsx-runtime";function Pr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return Y("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:Y("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?st("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[Y(B,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),Y(B,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):Y("div",{className:"ps-flex ps-items-center ps-space-x-2",children:st("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[Y(B,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:Y(ia,{className:"ps-w-4 ps-h-4"})}),Y(B,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:Y(da,{className:"ps-w-4 ps-h-4"})}),st("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",Y(de,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:l=>{let s=l.target.value?Number(l.target.value)-1:0;a.setPageIndex(s)}}),st("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),Y(B,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:Y(se,{className:"ps-w-4 ps-h-4"})}),Y(B,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:Y(fa,{className:"ps-w-4 ps-h-4"})})]})})})})}function ke(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right",l=e.id==="__ps_select";return{className:p("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",(o||r)&&"ps-sticky",(o||r)&&a==="header"&&(l?"ps-z-30":"ps-z-20"),(o||r)&&a==="cell"&&(l?"ps-z-10":"ps-z-0"),o&&"ps-shadow-[2px_0_5px_-2px_rgba(0,0,0,0.1)]",r&&"ps-shadow-[-2px_0_5px_-2px_rgba(0,0,0,0.1)]"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0,position:t?"sticky":void 0}}}import{Fragment as Td,jsx as A,jsxs as ea}from"react/jsx-runtime";var Rd=e=>{let{children:a,className:t,header:o,style:r}=e,l="disableDragging"in o.column.columnDef,{attributes:s,listeners:u,transform:d,transition:n,setNodeRef:f,isDragging:g}=Id({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:Sd.Transform.toString(d),transition:n},x=p(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),S=p(x,g&&"!ps-z-50 ps-border-2 ps-border-violet-500");return A(We,{ref:f,...s,...u,style:l?r:m,className:l?x:S,children:A("div",{className:"ps-w-full",children:a})})};function Rr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:d,paginationState:n,rows:f,rowSelectionState:g,sortingState:m}=e,[x,S]=jt([]),[c,L]=jt({left:["__ps_select"],right:[]}),[C,w]=jt({}),E=kd(()=>kr(m),[m]),W=o||r;Pd(()=>{S(a.map(({accessorKey:D})=>D)),L({left:["__ps_select"],right:[]}),w({})},[a]);function oe({active:D,over:v}){v&&D.id!==v.id&&S(Z=>{let M=Z.indexOf(D.id),xe=Z.indexOf(v.id);return Ld(Z,M,xe)})}let U=gd(md,{activationConstraint:{distance:10}}),Q=xd(U),H=wd({columnResizeMode:"onChange",columns:a,data:f,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&m),getCoreRowModel:bd(),getRowId:({__ps_rowid:D})=>D,manualPagination:!0,manualSorting:!0,onColumnOrderChange:S,onColumnPinningChange:L,onColumnSizingChange:w,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:D=>u?.(v=>(typeof D=="function"&&(D=D(kr(v))),Md(D))),pageCount:d,state:{columnOrder:x,columnPinning:c,columnSizing:C,pagination:n,rowSelection:g,sorting:E}});return ea(Td,{children:[process.env.NODE_ENV==="production"?null:A(Sr,{table:H}),ea("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[A("div",{children:W&&A(vr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),A(pd,{sensors:Q,onDragEnd:oe,children:ea(wt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[A(yt,{children:H.getHeaderGroups().map(D=>A(Ve,{children:A(hd,{items:D.headers.filter(v=>!("disableDragging"in v.column.columnDef)).map(v=>v.id),strategy:Cd,children:D.headers.map(v=>{if(v.column.id==="__ps_select"){let Z=v.column.columnDef.header;if(typeof Z=="function"){let M=Z(v.getContext());if(typeof M=="function"){let xe=ke(v.column,"header");return A(We,{className:p(xe.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:xe.style,children:M({})},v.id)}return A(We,{className:p(ke(v.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:ke(v.column,"header").style,children:M},v.id)}return null}return A(Rd,{header:v,table:H,...ke(v.column,"header"),children:A(wr,{header:v})},v.id)})})},D.id))}),ea(vt,{children:[t?.(H),H.getRowModel().rows?.length?H.getRowModel().rows.map(D=>A(Ve,{className:p("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:D.getVisibleCells().map((v,Z)=>{if(typeof v.column.columnDef.cell=="function"){let M=v.column.columnDef.cell(v.getContext());return A(M,{...ke(v.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},Z)}else return A(qe,{...ke(v.column,"cell"),children:v.getValue()},v.id)})},D.id)):A(Ve,{children:A(qe,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&ea("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[A(Ye,{className:"ps-h-4 ps-w-full"}),A(Ye,{className:"ps-h-4 ps-w-4/5"}),A(Ye,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!d||d<2?null:A(Pr,{table:H,variant:"numeric"}),A(yd,{mode:"wait",children:H.getRowModel().rows?.length===0&&!o&&!r&&A(vd.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:ea("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[A("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),A("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function kr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Md(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as ie from"@radix-ui/react-tooltip";import*as Tr from"react";import{jsx as Mr}from"react/jsx-runtime";var Dr=ie.Provider,Ar=ie.Root,Fr=ie.Trigger,Yt=Tr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Mr(ie.Portal,{children:Mr(ie.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));Yt.displayName=ie.Content.displayName;import{jsx as Ke,jsxs as Br}from"react/jsx-runtime";function Nr({column:e}){return Br("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&Ke(Dr,{delayDuration:120,children:Br(Ar,{children:[Ke(Fr,{asChild:!0,children:Ke(xa,{size:12,className:"ps-text-primary"})}),Ke(Yt,{side:"bottom",className:"text-xs",children:Ke("span",{children:"Primary Key"})})]})}),Ke("span",{className:"ps-font-medium ps-truncate",children:e.name}),Ke("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as tn}from"remeda";import{motion as Ur}from"motion/react";import Nd,{useState as Hr}from"react";import*as eo from"@radix-ui/react-label";import{cva as Dd}from"class-variance-authority";import*as Or from"react";import{jsx as Fd}from"react/jsx-runtime";var Ad=Dd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Aa=Or.forwardRef(({className:e,...a},t)=>Fd(eo.Root,{ref:t,className:p(Ad(),e),...a}));Aa.displayName=eo.Root.displayName;import*as Fa from"@radix-ui/react-switch";import*as Er from"react";import{jsx as qr}from"react/jsx-runtime";var Ba=Er.forwardRef(({className:e,...a},t)=>qr(Fa.Root,{className:p("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:qr(Fa.Thumb,{className:p("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));Ba.displayName=Fa.Root.displayName;import{Fragment as Bd,jsx as Xe,jsxs as Na}from"react/jsx-runtime";var ee=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Xe("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Na(Bd,{children:[Na("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Na("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Xe("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:Xe(pa,{size:12,strokeWidth:2})})," ","Save changes"]}),Na("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Xe("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&Xe("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Na("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Xe(Ba,{id:"set-nullable",checked:r,onCheckedChange:n=>{o&&o(n)}}),Xe("span",{children:"Set to NULL"})]})})]})});import{Fragment as Od,jsx as Oa,jsxs as zr}from"react/jsx-runtime";function Gr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Hr(a===null?!1:a),[d,n]=Hr(a===null),f=a===null?!1:a,g=C=>{u(C)},m=C=>{n(C)},x=Nd.useCallback(()=>{let C=d?null:s;return C!==a?(t(C),!0):!1},[s,a,t,d]),S=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:L}=$({onSave:x,onCancel:S,readonly:r});return zr(Od,{children:[zr("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[Oa(Aa,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Oa(Ur.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Oa(Ba,{id:"boolean-input",checked:s,onCheckedChange:g,disabled:d||r})}),Oa(Ur.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:d?"NULL":String(s)})]}),Oa(ee,{onSave:c,onCancel:L,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import Vr from"dayjs";import Ed from"dayjs/plugin/localizedFormat";import{useCallback as Ud,useMemo as Hd}from"react";import{useState as qd}from"react";function aa(e){let{initialValue:a}=e,[t,o]=qd(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as zd,jsx as qa,jsxs as ao}from"react/jsx-runtime";Vr.extend(Ed);function Wr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=aa({initialValue:r}),u=Hd(()=>{try{let x=Vr(s);return x.isValid()?s.includes(":")?x.format("LL LTS"):x.format("LL"):s}catch{return s}},[s]);function d(x){x.preventDefault(),s!==r&&a(s)}let n=Ud(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:g,handleCancel:m}=$({onSave:n,onCancel:f,readonly:o});return ao(zd,{children:[ao("form",{onSubmit:d,children:[qa(de,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),qa("input",{type:"submit",className:"ps-sr-only"})]}),ao("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[qa("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),qa("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),qa(ee,{onSave:g,onCancel:m,readonly:o})]})}import{useCallback as Gd,useState as Kr}from"react";import{Fragment as Vd,jsx as lt,jsxs as Wd}from"react/jsx-runtime";function Xr(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[d,n]=Kr(u),[f,g]=Kr(o===null),m=w=>{n(w)},x=w=>{g(w)},S=Gd(()=>f?o!==null?(a(null),!0):!1:d!==u?(a(d),!0):!1,[d,u,a,f,o]),c=()=>{n(u),g(o===null)},{handleSave:L,handleCancel:C}=$({onSave:S,onCancel:c,readonly:l});return Wd(Vd,{children:[lt("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:d}),lt("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(w=>lt("button",{onClick:()=>m(w),className:Ct({variant:w===d?"default":"outline"}),disabled:f||l,children:w},w))}),lt(ee,{onSave:L,onCancel:C,onNullChange:s?x:void 0,isNull:f,readonly:l})]})}import Kd,{useState as _r}from"react";import{Fragment as Xd,jsx as to,jsxs as _d}from"react/jsx-runtime";function Qr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,s=a===null?"":JSON.stringify(a,null,2),[u,d]=_r(s),[n,f]=_r(a===null),g=C=>{d(C.target.value)},m=C=>{f(C)},x=Kd.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let C=u===""?null:JSON.parse(u);return C!==a?(t(C),!0):!1},[u,a,t,n]),S=()=>{d(s),f(a===null)},{handleSave:c,handleCancel:L}=$({onSave:x,onCancel:S,readonly:r});return _d(Xd,{children:[to("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:to("textarea",{rows:5,value:u,onChange:g,disabled:n||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),to(ee,{onSave:c,onCancel:L,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import Qd,{useState as Zr}from"react";import{Fragment as Zd,jsx as oo,jsxs as Jr}from"react/jsx-runtime";function $r(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Zr(a===null?"":String(a)),[d,n]=Zr(a===null),f=a===null?"":String(a),g=C=>{u(C.target.value)},m=C=>{n(C)},x=Qd.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let C=s===""?null:Number(s);return s!==a?(t(C),!0):!1},[s,a,t,d]),S=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:L}=$({onSave:x,onCancel:S,readonly:r});return Jr(Zd,{children:[Jr("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[oo(Aa,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),oo("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:g,disabled:d||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),oo(ee,{onSave:c,onCancel:L,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import Jd from"react";import{Fragment as $d,jsx as ro,jsxs as jr}from"react/jsx-runtime";function Yr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=aa({initialValue:r});function u(m){m.preventDefault(),s!==r&&a(s)}let d=Jd.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:f,handleCancel:g}=$({onSave:d,onCancel:n,readonly:o});return jr($d,{children:[jr("form",{onSubmit:u,children:[ro(de,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s,disabled:o}),ro("input",{type:"submit",className:"ps-sr-only"})]}),ro(ee,{onSave:f,onCancel:g,readonly:o})]})}import es from"dayjs";import jd from"dayjs/plugin/localizedFormat";import{useCallback as Yd,useMemo as en}from"react";import{Fragment as an,jsx as Ea,jsxs as so}from"react/jsx-runtime";es.extend(jd);function as(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=aa({initialValue:r}),u=en(()=>{try{if(!s.includes(":"))return s;let x=/[+-]\d{2}(:\d{2})?$/.test(s),S=es(`2000-01-01 ${s}`);if(S.isValid())return S.format("h:mm A")+(x?` (${S.format("Z")})`:"");let c=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,L=s.match(c);if(L){let C=parseInt(L[1]||"12",10),w=L[2]||"00",E=L[4]||"",W=C>=12?"PM":"AM";return`${C%12===0?12:C%12}:${w} ${W}${E?` (${E})`:""}`}return s}catch{return s}},[s]);function d(x){x.preventDefault(),s!==r&&a(s)}let n=Yd(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:g,handleCancel:m}=$({onSave:n,onCancel:f,readonly:o});return so(an,{children:[so("form",{onSubmit:d,children:[Ea(de,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Ea("input",{type:"submit",className:"ps-sr-only"})]}),so("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Ea("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Ea("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Ea(ee,{onSave:g,onCancel:m,readonly:o})]})}import{jsx as _e}from"react/jsx-runtime";function ut(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:l,isArray:s}=t.datatype,u=t.isComputed||e.readonly,d=a.getValue(),n=d===void 0?"":d;return r==="datetime"?_e(Wr,{onSubmit:o,value:n,column:t,readonly:u}):r==="time"?_e(as,{onSubmit:o,value:n,column:t,readonly:u}):r==="json"||s?_e(Qr,{onSubmit:o,value:n,column:t,readonly:u}):r==="boolean"?_e(Gr,{onSubmit:o,value:n,column:t,readonly:u}):r==="enum"?_e(Xr,{onSubmit:o,value:n,options:l,column:t,readonly:u}):r==="numeric"?_e($r,{onSubmit:o,value:n,column:t,readonly:u}):_e(Yr,{onSubmit:o,value:tn(n)?JSON.stringify(n):n,readonly:u})}import{useReactTable as on}from"@tanstack/react-table";import{omit as rn}from"remeda";import{Fragment as sn,jsx as Ua}from"react/jsx-runtime";function ts(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!_a();function l(d,n){o(f=>{let g=[...f];return g[d]={...g[d],...n},g})}let s=Object.values(a.options.columns).map(d=>d.id==="__ps_select"?{...d,cell(){return()=>Ua(va,{})}}:{...d,cell({cell:n}){return f=>Ua(ja,{cellComponent:$a({cell:n,column:d.meta,props:f}),inputComponent:ut({cell:n,column:d.meta,onSubmit(g){l(f.rowIndex,{[d.id]:g})},readonly:r})})}}),u=on({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:rn(a.options.state,["pagination","sorting"])});return Ua(sn,{children:u.getRowModel().rows.map((d,n)=>Ua(Ve,{children:d.getVisibleCells().map((f,g)=>{if(typeof f.column.columnDef.cell=="function"){let m=f.column.columnDef.cell(f.getContext());return Ua(m,{...ke(f.column,"cell"),rowIndex:n},g)}return null})},n))})}import{Fragment as lo,jsx as N,jsxs as ta}from"react/jsx-runtime";function os(e){let a=!!ln(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=z(),{sortingState:d,setSortingState:n}=Ko(),{paginationState:f,setPaginationState:g}=Qa(),[m,x]=nn([]),{appliedFilter:S,setAppliedFilter:c,editingFilter:L,setEditingFilter:C,totalEditingFilters:w}=Go(),{data:E,isFetching:W}=Eo({...f,sortOrder:d,filter:S}),{deleteSelection:oe,isSelecting:U,rowSelectionState:Q,setRowSelectionState:H}=Wo(E),D=!Object.values(t?.columns??{}).some(T=>T.isInPrimaryKey),v=_a(),Z=qo(),M=Uo();if(dn(()=>x([]),[t]),!t)return null;function xe(){Z.mutate(m,{onError:o,onSuccess(){fn.success("Rows inserted successfully"),x([])}})}function Qe(){x(T=>[...T,{}])}function Ha(){x([])}function Ze(T,Le,nt){M.mutate({details:{changes:{[Le.name]:T},row:nt,table:t},options:{}})}function za(T){T===!0?C(S):c(L)}let oa=Object.values(t?.columns??{}).map(T=>({id:T.name,accessorKey:T.name,meta:T,header(){return Nr({column:T})},cell({cell:Le}){return nt=>N(ja,{cellComponent:$a({cell:Le,column:T,props:nt}),inputComponent:ut({cell:Le,column:T,readonly:D,onSubmit(is){return Ze(is,T,Le.row.original)}})})}})),ze=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:T}){return Le=>N(Ut,{table:T,readonly:D,...Le})},cell({row:T}){return Le=>N(zt,{row:T,readonly:D,...Le})}}],Ga=[...oa,...ze].sort(pn);return ta(lo,{children:[N("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:N("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:ta("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[ta("div",{className:"ps-flex ps-items-center ps-gap-2",children:[N(B,{variant:"outline",size:"sm",onClick:s,children:u?N(Fe,{}):N(Be,{})}),ta(vo,{onOpenChange:za,children:[N(Po,{asChild:!0,children:N(B,{variant:"outline",size:"sm",className:p(w>0&&"ps-border-primary"),children:ta("span",{className:"ps-flex ps-items-center ps-gap-2",children:[N(ma,{}),w>0&&N(Wa,{children:N(un,{transition:{layout:{duration:.12}},children:w})})]})})}),N(ht,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:N(gr,{filter:L,setFilter:C,setAppliedFilter:T=>{C(T),c(T)},table:t})})]}),N(B,{variant:"outline",size:"sm",onClick:Qe,disabled:v>0,children:"Insert row"}),m.length>0&&ta(lo,{children:[N(B,{variant:"secondary",size:"sm",onClick:xe,children:"Save"}),N(B,{variant:"ghost",size:"sm",onClick:Ha,children:"Cancel"})]}),U&&N(lo,{children:N(B,{variant:"secondary",size:"sm",onClick:oe,children:"Delete"})})]}),N(B,{variant:"outline",size:"icon",onClick:l,children:r?N(Ca,{}):N(La,{})})]})})}),N(Rr,{columnDefs:Ga,getBeforeRows:T=>N(ts,{table:T,stagedRows:m,setStagedRows:x}),isLoading:W,isProcessing:a,onPaginationChange:g,onRowSelectionChange:H,onSortingChange:n,pageCount:cn(E?.filteredRowCount??1/0,f.pageSize),paginationState:f,rows:E?.rows??[],rowSelectionState:Q,sortingState:d})]})}function cn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function pn(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as Ln}from"@radix-ui/react-slot";import{useCallback as gn,useEffect as ss,useMemo as ls}from"react";import{v4 as xn}from"uuid";import{useQuery as mn}from"@tanstack/react-query";var dt=-1;function rs(){let{adapter:e}=z();return mn({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:dt,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===dt?0:1/0})}function us(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=z(),{data:r,dataUpdatedAt:l}=rs(),s=l===dt,u=ls(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),d=ls(()=>Object.values(r.schemas).reduce((c,L)=>c+Object.keys(L.tables).length,0),[r.schemas]),[n]=u,[f,g]=ya({table:{defaultValue:null,parse:c=>c,serialize:c=>c??""},schema:{defaultValue:"",parse:c=>c,serialize:c=>c??""}}),[,m]=Oe("pageIndex",{parse:c=>c,serialize:c=>c??""}),[,x]=Oe("sort",{parse:c=>c,serialize:c=>c??""});ss(()=>{if(!s){if(f?.table&&u.length>0){let c=u.find(L=>L.name===f.table);if(c){a(c);return}}u.length>0&&!e&&(a(n||null),n&&g({table:n.name,schema:n.schema}))}},[s,f,u,n,e,a,g]);let S=gn(c=>{e!==c&&(a(c),g({table:c.name,schema:c.schema}),m(null),x(null))},[e,a,g,m,x]);return ss(()=>{l!==-1&&o({event:"studio_launched",payload:{event_id:xn(),timestamp:new Date().toISOString(),table_count:d}})},[u,o,l,d]),{tables:u,activeTable:e,isLoading:s,handleTableChange:S}}import{jsx as te,jsxs as ds}from"react/jsx-runtime";function He({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=us(),l=p("ps-flex ps-flex-col ps-w-48 ps-gap-4 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return te("div",{className:l,children:te(He.Block,{label:"Tables",children:a.length>0?a.map(s=>te(He.Item,{asChild:!0,isActive:t===s,onClick:()=>{r(s)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:te("a",{href:`#table=${s.name}&schema=${s.schema}`,children:s.name})},`${s.schema}-${s.name}`)):o?Array(4).fill(null).map((s,u)=>te(He.Item,{wrapChildrenInSpan:!1,children:te(Ye,{className:"ps-h-3 ps-w-full"})},u)):te(He.Item,{children:"No tables found"})})})}var Cn=({className:e,label:a,children:t,...o})=>ds("div",{className:e,...o,children:[ds("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[te(wa,{size:16,className:"ps-text-muted-foreground/60"}),te("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),te("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),hn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>te(a?Ln:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:p("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...s,children:l?te("span",{className:"ps-truncate",children:r}):r});He.Block=Cn;He.Item=hn;import{jsx as Re,jsxs as wn}from"react/jsx-runtime";function Sn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Re(No,{adapter:a,onError:t,onTelemetryEvent:o,children:Re(bn,{})}):(console.error("No adapter provided to Studio component"),Re("div",{children:"Error: No adapter provided"}))}function bn(){let{isFullscreen:e,isNavigationOpen:a}=z(),t=p("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Re("div",{"data-fullscreen":e,className:t,children:wn("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Re(In,{mode:"wait",children:a&&Re(ns.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Re(He,{})})}),Re(ns.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:Re(os,{})})]})})}export{Sn as Studio};
|
|
20
|
+
`}}),I.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${Se.grayAlt}`,display:"flex",flexDirection:"column"}},I.createElement("div",{style:{padding:".5em",background:Se.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},I.createElement(vr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>s(!1)}),I.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",I.createElement("span",{style:{fontWeight:100}},"Devtools")),I.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?I.createElement(nd,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{s(!1)}},"Close"):null)),I.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},I.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},I.createElement(be,{label:"Instance",value:o,defaultExpanded:!1}),I.createElement("div",{style:{height:".5rem"}}),I.createElement(be,{label:"State",value:o.getState(),defaultExpanded:!1}),I.createElement("div",{style:{height:".5rem"}}),I.createElement(be,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),I.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},I.createElement(be,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),I.createElement(be,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),I.createElement(be,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),I.createElement(be,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),I.createElement(be,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as Rd,motion as Md}from"motion/react";import{useEffect as Dd,useMemo as Td,useState as to}from"react";import{jsx as md}from"react/jsx-runtime";function na({className:e,...a}){return md("div",{className:p("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as gd}from"@tanstack/react-table";import{AnimatePresence as xd,motion as kr}from"motion/react";import{Fragment as ao,jsx as V,jsxs as ye}from"react/jsx-runtime";function Rr(e){let{header:a,className:t}=e;return ye("div",{className:p("ps-flex ps-items-center ps-justify-between",t),children:[ye("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[V("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:V("span",{className:"ps-flex ps-min-w-0",children:V("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:gd(a.column.columnDef.header,a.getContext())})})}),ye("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[V("span",{className:"ps-flex ps-items-center ps-ml-1",children:V(xd,{mode:"wait",children:a.column.getIsSorted()==="desc"?V(kr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:V(Ra,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?V(kr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:V(Ma,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&ye(rt,{children:[V(st,{asChild:!0,children:V(N,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:V(he,{size:12})})}),ye(Ea,{children:[a.column.getCanSort()&&V(lt,{onClick:()=>a.column.toggleSorting(),children:V("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?ye(ao,{children:[V(He,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?ye(ao,{children:[V(xa,{size:16}),"Sort ascending"]}):ye(ao,{children:[V(We,{size:16}),"Cancel sorting"]})})}),V(lt,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?ye("span",{className:"ps-flex ps-items-center ps-gap-2",children:[V(Da,{size:16}),"Unpin column"]}):ye("span",{className:"ps-flex ps-items-center ps-gap-2",children:[V(Ta,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&V("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:p("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as Mr}from"react/jsx-runtime";function Dr({className:e}){return Mr("div",{"data-loading-bar":!0,className:p("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Mr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as re,jsxs as dt}from"react/jsx-runtime";function Tr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return re("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:re("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?dt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[re(N,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),re(N,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):re("div",{className:"ps-flex ps-items-center ps-space-x-2",children:dt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[re(N,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:re(ha,{className:"ps-w-4 ps-h-4"})}),re(N,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:re(La,{className:"ps-w-4 ps-h-4"})}),dt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",re(ne,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:s=>{let l=s.target.value?Number(s.target.value)-1:0;a.setPageIndex(l)}}),dt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),re(N,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:re(me,{className:"ps-w-4 ps-h-4"})}),re(N,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:re(Ia,{className:"ps-w-4 ps-h-4"})})]})})})})}function Ne(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right",s=e.id==="__ps_select";return{className:p("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",(o||r)&&"ps-sticky",(o||r)&&a==="header"&&(s?"ps-z-30":"ps-z-20"),(o||r)&&a==="cell"&&(s?"ps-z-10":"ps-z-0"),o&&"ps-shadow-[2px_0_5px_-2px_rgba(0,0,0,0.1)]",r&&"ps-shadow-[-2px_0_5px_-2px_rgba(0,0,0,0.1)]"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0,position:t?"sticky":void 0}}}import{Fragment as Bd,jsx as F,jsxs as ia}from"react/jsx-runtime";var Ad=e=>{let{children:a,className:t,header:o,style:r}=e,s="disableDragging"in o.column.columnDef,{attributes:l,listeners:u,transform:n,transition:d,setNodeRef:i,isDragging:g}=wd({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:vd.Transform.toString(n),transition:d},L=p(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),S=p(L,g&&"!ps-z-50 ps-border-2 ps-border-violet-500");return F(Ye,{ref:i,...l,...u,style:s?r:m,className:s?L:S,children:F("div",{className:"ps-w-full",children:a})})};function Fr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:u,pageCount:n,paginationState:d,rows:i,rowSelectionState:g,sortingState:m}=e,[L,S]=to([]),[c,x]=to({left:["__ps_select"],right:[]}),[C,y]=to({}),E=Td(()=>Ar(m),[m]),W=o||r;Dd(()=>{S(a.map(({accessorKey:A})=>A)),x({left:["__ps_select"],right:[]}),y({})},[a]);function le({active:A,over:P}){P&&A.id!==P.id&&S(K=>{let R=K.indexOf(A.id),ce=K.indexOf(P.id);return Sd(K,R,ce)})}let H=hd(Cd,{activationConstraint:{distance:10}}),J=Id(H),G=kd({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&m),getCoreRowModel:Pd(),getRowId:({__ps_rowid:A})=>A,manualPagination:!0,manualSorting:!0,onColumnOrderChange:S,onColumnPinningChange:x,onColumnSizingChange:y,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:A=>u?.(P=>(typeof A=="function"&&(A=A(Ar(P))),Fd(A))),pageCount:n,state:{columnOrder:L,columnPinning:c,columnSizing:C,pagination:d,rowSelection:g,sorting:E}});return ia(Bd,{children:[process.env.NODE_ENV==="production"?null:F(Pr,{table:G}),ia("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[F("div",{children:W&&F(Dr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),F(Ld,{sensors:J,onDragEnd:le,children:ia(kt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[F(Rt,{children:G.getHeaderGroups().map(A=>F($e,{children:F(yd,{items:A.headers.filter(P=>!("disableDragging"in P.column.columnDef)).map(P=>P.id),strategy:bd,children:A.headers.map(P=>{if(P.column.id==="__ps_select"){let K=P.column.columnDef.header;if(typeof K=="function"){let R=K(P.getContext());if(typeof R=="function"){let ce=Ne(P.column,"header");return F(Ye,{className:p(ce.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:ce.style,children:R({})},P.id)}return F(Ye,{className:p(Ne(P.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Ne(P.column,"header").style,children:R},P.id)}return null}return F(Ad,{header:P,table:G,...Ne(P.column,"header"),children:F(Rr,{header:P})},P.id)})})},A.id))}),ia(Mt,{children:[t?.(G),G.getRowModel().rows?.length?G.getRowModel().rows.map(A=>F($e,{className:p("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:A.getVisibleCells().map((P,K)=>{if(typeof P.column.columnDef.cell=="function"){let R=P.column.columnDef.cell(P.getContext());return F(R,{...Ne(P.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},K)}else return F(Ke,{...Ne(P.column,"cell"),children:P.getValue()},P.id)})},A.id)):F($e,{children:F(Ke,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&ia("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[F(na,{className:"ps-h-4 ps-w-full"}),F(na,{className:"ps-h-4 ps-w-4/5"}),F(na,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!n||n<2?null:F(Tr,{table:G,variant:"numeric"}),F(Rd,{mode:"wait",children:G.getRowModel().rows?.length===0&&!o&&!r&&F(Md.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:ia("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[F("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),F("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Ar(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Fd(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as Ce from"@radix-ui/react-tooltip";import*as Nr from"react";import{jsx as Br}from"react/jsx-runtime";var Or=Ce.Provider,qr=Ce.Root,Er=Ce.Trigger,oo=Nr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Br(Ce.Portal,{children:Br(Ce.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));oo.displayName=Ce.Content.displayName;import{jsx as aa,jsxs as Ur}from"react/jsx-runtime";function Hr({column:e}){return Ur("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&aa(Or,{delayDuration:120,children:Ur(qr,{children:[aa(Er,{asChild:!0,children:aa(va,{size:12,className:"ps-text-primary"})}),aa(oo,{side:"bottom",className:"text-xs",children:aa("span",{children:"Primary Key"})})]})}),aa("span",{className:"ps-font-medium ps-truncate",children:e.name}),aa("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as dn}from"remeda";import{motion as Wr}from"motion/react";import Ud,{useState as _r}from"react";import*as ro from"@radix-ui/react-label";import{cva as Nd}from"class-variance-authority";import*as zr from"react";import{jsx as qd}from"react/jsx-runtime";var Od=Nd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Ua=zr.forwardRef(({className:e,...a},t)=>qd(ro.Root,{ref:t,className:p(Od(),e),...a}));Ua.displayName=ro.Root.displayName;import*as Ha from"@radix-ui/react-switch";import*as Gr from"react";import{jsx as Vr}from"react/jsx-runtime";var za=Gr.forwardRef(({className:e,...a},t)=>Vr(Ha.Root,{className:p("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:Vr(Ha.Thumb,{className:p("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));za.displayName=Ha.Root.displayName;import{Fragment as Ed,jsx as ta,jsxs as Va}from"react/jsx-runtime";var se=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:s})=>ta("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!s&&Va(Ed,{children:[Va("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Va("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[ta("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:ta(ba,{size:12,strokeWidth:2})})," ","Save changes"]}),Va("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[ta("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&ta("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Va("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[ta(za,{id:"set-nullable",checked:r,onCheckedChange:d=>{o&&o(d)}}),ta("span",{children:"Set to NULL"})]})})]})});import{Fragment as Hd,jsx as Ga,jsxs as Kr}from"react/jsx-runtime";function Xr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,u]=_r(a===null?!1:a),[n,d]=_r(a===null),i=a===null?!1:a,g=C=>{u(C)},m=C=>{d(C)},L=Ud.useCallback(()=>{let C=n?null:l;return C!==a?(t(C),!0):!1},[l,a,t,n]),S=()=>{u(i),d(a===null)},{handleSave:c,handleCancel:x}=te({onSave:L,onCancel:S,readonly:r});return Kr(Hd,{children:[Kr("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[Ga(Ua,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Ga(Wr.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Ga(za,{id:"boolean-input",checked:l,onCheckedChange:g,disabled:n||r})}),Ga(Wr.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:n?"NULL":String(l)})]}),Ga(se,{onSave:c,onCancel:x,onNullChange:s?m:void 0,isNull:n,readonly:r})]})}import ie from"dayjs";import Wd from"dayjs/plugin/localizedFormat";import{useCallback as _d,useEffect as Qr,useMemo as nt,useState as lo}from"react";import{DayPicker as zd}from"react-day-picker";import{jsx as Vd}from"react/jsx-runtime";function so({className:e,classNames:a,showOutsideDays:t=!0,...o}){return Vd(zd,{mode:"single",animate:!0,captionLayout:"dropdown",showOutsideDays:t,className:p("ps-p-0",e),classNames:{months:"ps-flex ps-flex-col sm:ps-flex-row ps-space-y-4 sm:ps-space-x-4 sm:ps-space-y-0",month:"",caption:"ps-sr-only",caption_label:"ps-text-xs ps-font-medium ps-sr-only",nav:"ps-space-x-1 ps-flex ps-items-center",nav_button:p(Za({variant:"outline"}),"ps-h-7 ps-w-7 ps-bg-transparent ps-p-0 ps-opacity-50 hover:ps-opacity-100"),nav_button_previous:"ps-absolute ps-left-1",nav_button_next:"ps-absolute ps-right-1",table:"ps-w-full ps-border-collapse ps-space-y-1",head_row:"ps-flex",head_cell:"ps-text-muted-foreground ps-rounded-md ps-font-normal ps-text-[0.8rem] ps-flex ps-flex-1",row:"ps-flex ps-w-full ps-mt-2",cell:p("ps-relative ps-p-0 ps-text-center focus-within:ps-relative focus-within:ps-z-20 [&:has([aria-selected].day-outside)]:ps-bg-accent/50 [&:has([aria-selected].day-range-end)]:ps-rounded-r-md",o.mode==="range"?"[&:has(>.day-range-end)]:ps-rounded-r-md [&:has(>.day-range-start)]:ps-rounded-l-md first:[&:has([aria-selected])]:ps-rounded-l-md last:[&:has([aria-selected])]:ps-rounded-r-md":"[&:has([aria-selected])]:ps-rounded-md"),day:p(Za({variant:"ghost"}),"ps-h-8 ps-w-8 ps-p-0 ps-font-normal aria-selected:ps-opacity-100"),day_range_start:"ps-day-range-start",day_range_end:"ps-day-range-end",day_selected:"!ps-bg-primary !ps-text-primary-foreground hover:ps-bg-primary hover:ps-text-primary-foreground focus:ps-bg-primary focus:ps-text-primary-foreground",day_today:"ps-bg-accent ps-text-accent-foreground",day_outside:"ps-day-outside ps-text-muted-foreground aria-selected:ps-bg-accent/50 aria-selected:ps-text-muted-foreground",day_disabled:"ps-text-muted-foreground ps-opacity-50",day_range_middle:"aria-selected:ps-bg-accent aria-selected:ps-text-accent-foreground",day_hidden:"ps-invisible",...a},...o})}so.displayName="Calendar";import{useState as Gd}from"react";function fa(e){let{initialValue:a}=e,[t,o]=Gd(a??"");return{handleOnChange:s=>{o(s.target.value)},value:t,setValue:o}}import{Fragment as Xd,jsx as ue,jsxs as Wa}from"react/jsx-runtime";ie.extend(Wd);function Zr(e){let{onSubmit:a,value:t,readonly:o,column:r}=e,s=String(t),l=nt(()=>{let v=ie(s);return v.isValid()?v.toDate():new Date},[s]),[u,n]=lo(l),[d,i]=lo(l),{handleOnChange:g,value:m,setValue:L}=fa({initialValue:s}),S=v=>{g(v);try{let U=v.target.value,q=ie(U);if(q.isValid()){let $=q.toDate();n($),i($)}}catch{}},c=v=>{if(!v)return;n(v),i(v);let U=r?.datatype?.name||r?.datatype,q=x(U);L(q?ie(v).format(q):ie(v).toISOString())},x=v=>{switch(v){case"date":return"YYYY-MM-DD";case"time":return"HH:mm:ss.SSSSS";case"timestamp":return"YYYY-MM-DD HH:mm:ss.SSSSSS";case"timestamptz":return"YYYY-MM-DD HH:mm:ss.SSSSSSZ";case"timetz":return"HH:mm:ss.SSSSSSZ";default:return}},C=nt(()=>{try{let v=ie(m);return v.isValid()?m.includes(":")?v.format("LL LTS"):v.format("LL"):m}catch{return m}},[m]);function y(v){v.preventDefault(),m!==s&&a(m)}let E=_d(()=>m!==s?(a(m),!0):!1,[m,s,a]),W=()=>{},{handleSave:le,handleCancel:H}=te({onSave:E,onCancel:W,readonly:o}),J=v=>{v.preventDefault(),v.stopPropagation();let U=new Date;n(U),i(U);let q=r?.datatype?.name||r?.datatype,$=x(q);L($?ie(U).format($):ie(U).toISOString())},G=nt(()=>[{value:"0",label:"January"},{value:"1",label:"February"},{value:"2",label:"March"},{value:"3",label:"April"},{value:"4",label:"May"},{value:"5",label:"June"},{value:"6",label:"July"},{value:"7",label:"August"},{value:"8",label:"September"},{value:"9",label:"October"},{value:"10",label:"November"},{value:"11",label:"December"}],[]),A=nt(()=>d.getMonth().toString(),[d]),[P,K]=lo(()=>d.getFullYear().toString()),R=v=>{let U=new Date(d);if(U.setMonth(parseInt(v)),i(U),u){let q=new Date(u);q.setMonth(parseInt(v)),n(q);let $=r?.datatype?.name||r?.datatype,ee=x($);L(ee?ie(q).format(ee):ie(q).toISOString())}},ce=v=>{let U=v.target.value;if(K(U),/^\d{4}$/.test(U)){let q=parseInt(U),$=new Date(d);$.setFullYear(q),i($);let ee=u?new Date(u):new Date($);ee.setFullYear(q),n(ee);let we=r?.datatype?.name||r?.datatype,qe=x(we),k=qe?ie(ee).format(qe):ie(ee).toISOString();L(k),console.log("Year updated:",{year:q,newSelectedDate:ee,newValue:k,dbFormat:qe})}};return Qr(()=>{u&&K(u.getFullYear().toString())},[u]),Qr(()=>{d&&K(d.getFullYear().toString())},[d]),Wa(Xd,{children:[ue("form",{onSubmit:y,children:Wa("div",{className:"ps-flex ps-items-center ps-pr-[var(--studio-cell-spacing)]",children:[ue(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:S,type:"text",value:m}),ue("button",{onClick:J,className:"ps-text-xs ps-text-muted-foreground ps-px-2 ps-py-1 ps-font-medium ps-rounded-sm ps-bg-neutral-100 ps-border ps-border-neutral-200 hover:ps-border-primary hover:ps-text-card-foreground",children:"NOW"}),ue("input",{type:"submit",className:"ps-sr-only"})]})}),Wa("div",{className:"ps-flex ps-flex-col ps-gap-0 ps-p-2 ps-border-t ps-border-table-border",children:[Wa("div",{className:"ps-flex ps-items-center ps-justify-between ps-mb-2 ps-gap-2",children:[Wa(ua,{value:A,onValueChange:R,children:[ue(je,{className:"ps-h-8",children:ue(da,{placeholder:"Month"})}),ue(ea,{children:G.map(v=>ue(_,{value:v.value,children:v.label},v.value))})]}),ue(ne,{className:"ps-h-8 ps-w-20 ps-text-center",type:"text",value:P,onChange:ce,placeholder:"Year"})]}),ue(Kd,{selected:u,month:d,onSelect:c,onMonthChange:i,disabled:o}),ue("code",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:C})]}),ue(se,{onSave:le,onCancel:H,readonly:o})]})}function Kd({selected:e,month:a,onSelect:t,onMonthChange:o,disabled:r}){return ue(so,{mode:"single",selected:e,onSelect:t,disabled:r,month:a,onMonthChange:o,className:"ps-w-full",captionLayout:"dropdown"})}import{useCallback as Qd,useState as Jr}from"react";import{Fragment as Zd,jsx as it,jsxs as Jd}from"react/jsx-runtime";function $r(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:s}=e,l=t.nullable===!0,u=String(o),[n,d]=Jr(u),[i,g]=Jr(o===null),m=y=>{d(y)},L=y=>{g(y)},S=Qd(()=>i?o!==null?(a(null),!0):!1:n!==u?(a(n),!0):!1,[n,u,a,i,o]),c=()=>{d(u),g(o===null)},{handleSave:x,handleCancel:C}=te({onSave:S,onCancel:c,readonly:s});return Jd(Zd,{children:[it("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:n}),it("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(y=>it("button",{onClick:()=>m(y),className:bt({variant:y===n?"default":"outline"}),disabled:i||s,children:y},y))}),it(se,{onSave:x,onCancel:C,onNullChange:l?L:void 0,isNull:i,readonly:s})]})}import $d,{useState as Yr}from"react";import{Fragment as Yd,jsx as uo,jsxs as jd}from"react/jsx-runtime";function jr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,l=a===null?"":JSON.stringify(a,null,2),[u,n]=Yr(l),[d,i]=Yr(a===null),g=C=>{n(C.target.value)},m=C=>{i(C)},L=$d.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let C=u===""?null:JSON.parse(u);return C!==a?(t(C),!0):!1},[u,a,t,d]),S=()=>{n(l),i(a===null)},{handleSave:c,handleCancel:x}=te({onSave:L,onCancel:S,readonly:r});return jd(Yd,{children:[uo("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:uo("textarea",{rows:5,value:u,onChange:g,disabled:d||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),uo(se,{onSave:c,onCancel:x,onNullChange:s?m:void 0,isNull:d,readonly:r})]})}import en,{useState as es}from"react";import{Fragment as an,jsx as no,jsxs as as}from"react/jsx-runtime";function ts(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,u]=es(a===null?"":String(a)),[n,d]=es(a===null),i=a===null?"":String(a),g=C=>{u(C.target.value)},m=C=>{d(C)},L=en.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let C=l===""?null:Number(l);return l!==a?(t(C),!0):!1},[l,a,t,n]),S=()=>{u(i),d(a===null)},{handleSave:c,handleCancel:x}=te({onSave:L,onCancel:S,readonly:r});return as(an,{children:[as("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[no(Ua,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),no("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:l,onChange:g,disabled:n||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),no(se,{onSave:c,onCancel:x,onNullChange:s?m:void 0,isNull:n,readonly:r})]})}import tn from"react";import{Fragment as on,jsx as io,jsxs as os}from"react/jsx-runtime";function rs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=fa({initialValue:r});function u(m){m.preventDefault(),l!==r&&a(l)}let n=tn.useCallback(()=>l!==r?(a(l),!0):!1,[l,r,a]),d=()=>{},{handleSave:i,handleCancel:g}=te({onSave:n,onCancel:d,readonly:o});return os(on,{children:[os("form",{onSubmit:u,children:[io(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:s,type:"text",value:l,disabled:o}),io("input",{type:"submit",className:"ps-sr-only"})]}),io(se,{onSave:i,onCancel:g,readonly:o})]})}import ss from"dayjs";import rn from"dayjs/plugin/localizedFormat";import{useCallback as sn,useMemo as ln}from"react";import{Fragment as un,jsx as _a,jsxs as fo}from"react/jsx-runtime";ss.extend(rn);function ls(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=fa({initialValue:r}),u=ln(()=>{try{if(!l.includes(":"))return l;let L=/[+-]\d{2}(:\d{2})?$/.test(l),S=ss(`2000-01-01 ${l}`);if(S.isValid())return S.format("h:mm A")+(L?` (${S.format("Z")})`:"");let c=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,x=l.match(c);if(x){let C=parseInt(x[1]||"12",10),y=x[2]||"00",E=x[4]||"",W=C>=12?"PM":"AM";return`${C%12===0?12:C%12}:${y} ${W}${E?` (${E})`:""}`}return l}catch{return l}},[l]);function n(L){L.preventDefault(),l!==r&&a(l)}let d=sn(()=>l!==r?(a(l),!0):!1,[l,r,a]),i=()=>{},{handleSave:g,handleCancel:m}=te({onSave:d,onCancel:i,readonly:o});return fo(un,{children:[fo("form",{onSubmit:n,children:[_a(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:s,type:"text",value:l}),_a("input",{type:"submit",className:"ps-sr-only"})]}),fo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[_a("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),_a("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),_a(se,{onSave:g,onCancel:m,readonly:o})]})}import{jsx as oa}from"react/jsx-runtime";function ft(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:s,isArray:l}=t.datatype,u=t.isComputed||e.readonly,n=a.getValue(),d=n===void 0?"":n;return r==="datetime"?oa(Zr,{onSubmit:o,value:d,column:t,readonly:u}):r==="time"?oa(ls,{onSubmit:o,value:d,column:t,readonly:u}):r==="json"||l?oa(jr,{onSubmit:o,value:d,column:t,readonly:u}):r==="boolean"?oa(Xr,{onSubmit:o,value:d,column:t,readonly:u}):r==="enum"?oa($r,{onSubmit:o,value:d,options:s,column:t,readonly:u}):r==="numeric"?oa(ts,{onSubmit:o,value:d,column:t,readonly:u}):oa(rs,{onSubmit:o,value:dn(d)?JSON.stringify(d):d,readonly:u})}import{useReactTable as nn}from"@tanstack/react-table";import{omit as fn}from"remeda";import{Fragment as cn,jsx as Ka}from"react/jsx-runtime";function us(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!Ya();function s(n,d){o(i=>{let g=[...i];return g[n]={...g[n],...d},g})}let l=Object.values(a.options.columns).map(n=>n.id==="__ps_select"?{...n,cell(){return()=>Ka(Ba,{})}}:{...n,cell({cell:d}){return i=>Ka(ot,{cellComponent:tt({cell:d,column:n.meta,props:i}),inputComponent:ft({cell:d,column:n.meta,onSubmit(g){s(i.rowIndex,{[n.id]:g})},readonly:r})})}}),u=nn({...a.options,columns:l,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:fn(a.options.state,["pagination","sorting"])});return Ka(cn,{children:u.getRowModel().rows.map((n,d)=>Ka($e,{children:n.getVisibleCells().map((i,g)=>{if(typeof i.column.columnDef.cell=="function"){let m=i.column.columnDef.cell(i.getContext());return Ka(m,{...Ne(i.column,"cell"),rowIndex:d},g)}return null})},d))})}import{Fragment as co,jsx as O,jsxs as ca}from"react/jsx-runtime";function ds(e){let a=!!pn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:s,toggleNavigation:l,isNavigationOpen:u}=X(),{sortingState:n,setSortingState:d}=Jo(),{paginationState:i,setPaginationState:g}=ja(),[m,L]=xn([]),{appliedFilter:S,setAppliedFilter:c,editingFilter:x,setEditingFilter:C,totalEditingFilters:y}=Xo(),{data:E,isFetching:W}=Go({...i,sortOrder:n,filter:S}),{deleteSelection:le,isSelecting:H,rowSelectionState:J,setRowSelectionState:G}=Zo(E),A=!Object.values(t?.columns??{}).some(k=>k.isInPrimaryKey),P=Ya(),K=Vo(),R=Wo();if(gn(()=>L([]),[t]),!t)return null;function ce(){K.mutate(m,{onError:o,onSuccess(){Ln.success("Rows inserted successfully"),L([])}})}function v(){L(k=>[...k,{}])}function U(){L([])}function q(k,ve,pt){R.mutate({details:{changes:{[ve.name]:k},row:pt,table:t},options:{}})}function $(k){k===!0?C(S):c(x)}let ee=Object.values(t?.columns??{}).map(k=>({id:k.name,accessorKey:k.name,meta:k,header(){return Hr({column:k})},cell({cell:ve}){return pt=>O(ot,{cellComponent:tt({cell:ve,column:k,props:pt}),inputComponent:ft({cell:ve,column:k,readonly:A,onSubmit(gs){return q(gs,k,ve.row.original)}})})}})),we=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:k}){return ve=>O(Gt,{table:k,readonly:A,...ve})},cell({row:k}){return ve=>O(_t,{row:k,readonly:A,...ve})}}],qe=[...ee,...we].sort(hn);return ca(co,{children:[O("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:O("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:ca("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[ca("div",{className:"ps-flex ps-items-center ps-gap-2",children:[O(N,{variant:"outline",size:"sm",onClick:l,children:u?O(Ve,{}):O(Ge,{})}),ca(Do,{onOpenChange:$,children:[O(To,{asChild:!0,children:O(N,{variant:"outline",size:"sm",className:p(y>0&&"ps-border-primary"),children:ca("span",{className:"ps-flex ps-items-center ps-gap-2",children:[O(ya,{}),y>0&&O(Qa,{children:O(mn,{transition:{layout:{duration:.12}},children:y})})]})})}),O(yt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:O(Ir,{filter:x,setFilter:C,setAppliedFilter:k=>{C(k),c(k)},table:t})})]}),O(N,{variant:"outline",size:"sm",onClick:v,disabled:P>0,children:"Insert row"}),m.length>0&&ca(co,{children:[O(N,{variant:"secondary",size:"sm",onClick:ce,children:"Save"}),O(N,{variant:"ghost",size:"sm",onClick:U,children:"Cancel"})]}),H&&O(co,{children:O(N,{variant:"secondary",size:"sm",onClick:le,children:"Delete"})})]}),O(N,{variant:"outline",size:"icon",onClick:s,children:r?O(ka,{}):O(Pa,{})})]})})}),O(Fr,{columnDefs:qe,getBeforeRows:k=>O(us,{table:k,stagedRows:m,setStagedRows:L}),isLoading:W,isProcessing:a,onPaginationChange:g,onRowSelectionChange:G,onSortingChange:d,pageCount:Cn(E?.filteredRowCount??1/0,i.pageSize),paginationState:i,rows:E?.rows??[],rowSelectionState:J,sortingState:n})]})}function Cn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function hn(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as yn}from"@radix-ui/react-slot";import{useCallback as Sn,useEffect as is,useMemo as fs}from"react";import{v4 as bn}from"uuid";import{useQuery as In}from"@tanstack/react-query";var ct=-1;function ns(){let{adapter:e}=X();return In({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:ct,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===ct?0:1/0})}function cs(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=X(),{data:r,dataUpdatedAt:s}=ns(),l=s===ct,u=fs(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),n=fs(()=>Object.values(r.schemas).reduce((c,x)=>c+Object.keys(x.tables).length,0),[r.schemas]),[d]=u,[i,g]=Fa({table:{defaultValue:null,parse:c=>c,serialize:c=>c??""},schema:{defaultValue:"",parse:c=>c,serialize:c=>c??""}}),[,m]=_e("pageIndex",{parse:c=>c,serialize:c=>c??""}),[,L]=_e("sort",{parse:c=>c,serialize:c=>c??""});is(()=>{if(!l){if(i?.table&&u.length>0){let c=u.find(x=>x.name===i.table);if(c){a(c);return}}u.length>0&&!e&&(a(d||null),d&&g({table:d.name,schema:d.schema}))}},[l,i,u,d,e,a,g]);let S=Sn(c=>{e!==c&&(a(c),g({table:c.name,schema:c.schema}),m(null),L(null))},[e,a,g,m,L]);return is(()=>{s!==-1&&o({event:"studio_launched",payload:{event_id:bn(),timestamp:new Date().toISOString(),table_count:n}})},[u,o,s,n]),{tables:u,activeTable:e,isLoading:l,handleTableChange:S}}import{jsx as fe,jsxs as ps}from"react/jsx-runtime";function Ze({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=cs(),s=p("ps-flex ps-flex-col ps-w-48 ps-gap-4 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return fe("div",{className:s,children:fe(Ze.Block,{label:"Tables",children:a.length>0?a.map(l=>fe(Ze.Item,{asChild:!0,isActive:t===l,onClick:()=>{r(l)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:fe("a",{href:`#table=${l.name}&schema=${l.schema}`,children:l.name})},`${l.schema}-${l.name}`)):o?Array(4).fill(null).map((l,u)=>fe(Ze.Item,{wrapChildrenInSpan:!1,children:fe(na,{className:"ps-h-3 ps-w-full"})},u)):fe(Ze.Item,{children:"No tables found"})})})}var wn=({className:e,label:a,children:t,...o})=>ps("div",{className:e,...o,children:[ps("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[fe(Aa,{size:16,className:"ps-text-muted-foreground/60"}),fe("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),fe("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),vn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:s=!0,...l})=>fe(a?yn:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:p("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...l,children:s?fe("span",{className:"ps-truncate",children:r}):r});Ze.Block=wn;Ze.Item=vn;import{jsx as Oe,jsxs as Mn}from"react/jsx-runtime";function kn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Oe(Ho,{adapter:a,onError:t,onTelemetryEvent:o,children:Oe(Rn,{})}):(console.error("No adapter provided to Studio component"),Oe("div",{children:"Error: No adapter provided"}))}function Rn(){let{isFullscreen:e,isNavigationOpen:a}=X(),t=p("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Oe("div",{"data-fullscreen":e,className:t,children:Mn("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Oe(Pn,{mode:"wait",children:a&&Oe(ms.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Oe(Ze,{})})}),Oe(ms.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:Oe(ds,{})})]})})}export{kn as Studio};
|
|
21
21
|
/*! Bundled license information:
|
|
22
22
|
|
|
23
23
|
lucide-react/dist/esm/shared/src/utils.js:
|
|
@@ -280,4 +280,4 @@ lucide-react/dist/esm/lucide-react.js:
|
|
|
280
280
|
* @license MIT
|
|
281
281
|
*)
|
|
282
282
|
*/
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2tleS1yb3VuZC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21heGltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWluaW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtb3Blbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi1vZmYudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy90YWJsZS0yLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9zdHVkaW8vY29udGV4dC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9pbmRleC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Nvbm5lci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL051cXNIYXNoQWRhcHRlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHQudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtZmlsdGVyaW5nLnRzIiwgIi4uLy4uL3VpL2hvb2tzL251cXMudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90YWJsZS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdENlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IFN0dWRpb0NvbnRleHRQcm92aWRlciwgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gXCIuL05hdmlnYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgPSB7XG4gIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiO1xuICBwYXlsb2FkOiB7XG4gICAgZXZlbnRfaWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IHN0cmluZztcbiAgICB1c2VyX2lkPzogc3RyaW5nO1xuICAgIHdvcmtzcGFjZV9pZD86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25faWQ/OiBzdHJpbmc7XG4gICAgZW1iZWRkaW5nX3R5cGU/OiBzdHJpbmc7XG4gICAgdmVuZG9yX2lkPzogc3RyaW5nO1xuICAgIHRhYmxlX2NvdW50OiBudW1iZXI7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb1Byb3BzIHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFpbiBTdHVkaW8gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgZGF0YWJhc2UgdmlzdWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvKHByb3BzOiBTdHVkaW9Qcm9wcykge1xuICBjb25zdCB7IGFkYXB0ZXIsIG9uRXJyb3IsIG9uVGVsZW1ldHJ5RXZlbnQgfSA9IHByb3BzO1xuXG4gIGlmICghYWRhcHRlcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhZGFwdGVyIHByb3ZpZGVkIHRvIFN0dWRpbyBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIDxkaXY+RXJyb3I6IE5vIGFkYXB0ZXIgcHJvdmlkZWQ8L2Rpdj47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHVkaW9Db250ZXh0UHJvdmlkZXIgYWRhcHRlcj17YWRhcHRlcn0gb25FcnJvcj17b25FcnJvcn0gb25UZWxlbWV0cnlFdmVudD17b25UZWxlbWV0cnlFdmVudH0+XG4gICAgICA8U3R1ZGlvQ29udGVudCAvPlxuICAgIDwvU3R1ZGlvQ29udGV4dFByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBTdHVkaW9Db250ZW50KCkge1xuICBjb25zdCB7IGlzRnVsbHNjcmVlbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgY29uc3QgY29udGFpbmVyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGwgcHMtbWluLWgtMCBwcy1tYXgtaC1mdWxsXCIsXG4gICAgaXNGdWxsc2NyZWVuICYmIFwicHMtZml4ZWQgcHMtaW5zZXQtMCBwcy16LVs5OTk5XSBwcy1iZy1iYWNrZ3JvdW5kIHBzLXAtMlwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLWZ1bGxzY3JlZW49e2lzRnVsbHNjcmVlbn0gY2xhc3NOYW1lPXtjb250YWluZXJDbGFzc2VzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1nYXAtMCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC01MCBwcy1yZWxhdGl2ZSBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtcm91bmRlZC1sZ1wiPlxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gJiYgKFxuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBcImF1dG9cIiwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24gLz5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cblxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtMTAwIHBzLWZsZXgtY29sIHBzLXAtcHggcHMtcm91bmRlZC1sZyBwcy1zZWxmLXN0YXJ0IHBzLWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLW1heC1oLWZ1bGwgcHMtb3ZlcmZsb3ctY2xpcFwiXG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEFjdGl2ZVRhYmxlVmlldyAvPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICIvLyBzaGFkY24gdXRpbHNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBleHRlbmRUYWlsd2luZE1lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCI7XG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gZXh0ZW5kVGFpbHdpbmRNZXJnZSh7XG4gIHByZWZpeDogXCJwcy1cIixcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIENsYXNzR3JvdXAsXG4gICAgQ2xhc3NWYWxpZGF0b3IsXG4gICAgQ29uZmlnLFxuICAgIEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIEdlbmVyaWNDb25maWcsXG4gICAgR2VuZXJpY1RoZW1lR3JvdXBJZHMsXG4gICAgVGhlbWVHZXR0ZXIsXG4gICAgVGhlbWVPYmplY3QsXG59IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NQYXJ0T2JqZWN0IHtcbiAgICBuZXh0UGFydDogTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PlxuICAgIHZhbGlkYXRvcnM6IENsYXNzVmFsaWRhdG9yT2JqZWN0W11cbiAgICBjbGFzc0dyb3VwSWQ/OiBHZW5lcmljQ2xhc3NHcm91cElkc1xufVxuXG5pbnRlcmZhY2UgQ2xhc3NWYWxpZGF0b3JPYmplY3Qge1xuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbiAgICB2YWxpZGF0b3I6IENsYXNzVmFsaWRhdG9yXG59XG5cbmNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgY2xhc3NNYXAgPSBjcmVhdGVDbGFzc01hcChjb25maWcpXG4gICAgY29uc3QgeyBjb25mbGljdGluZ0NsYXNzR3JvdXBzLCBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMgfSA9IGNvbmZpZ1xuXG4gICAgY29uc3QgZ2V0Q2xhc3NHcm91cElkID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzUGFydHMgPSBjbGFzc05hbWUuc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICAgICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgICAgICBpZiAoY2xhc3NQYXJ0c1swXSA9PT0gJycgJiYgY2xhc3NQYXJ0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIGNsYXNzUGFydHMuc2hpZnQoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMsIGNsYXNzTWFwKSB8fCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkoY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIGNvbnN0IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyA9IChcbiAgICAgICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyOiBib29sZWFuLFxuICAgICkgPT4ge1xuICAgICAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW11cblxuICAgICAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0hXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICAgICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzLFxuICAgIH1cbn1cblxuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoXG4gICAgY2xhc3NQYXJ0czogc3RyaW5nW10sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4pOiBHZW5lcmljQ2xhc3NHcm91cElkcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF0hXG4gICAgY29uc3QgbmV4dENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQoY3VycmVudENsYXNzUGFydClcbiAgICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0XG4gICAgICAgID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdClcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydFxuICAgIH1cblxuICAgIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7IHZhbGlkYXRvciB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZFxufVxuXG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC9cblxuY29uc3QgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5ID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgICAgIGNvbnN0IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lID0gYXJiaXRyYXJ5UHJvcGVydHlSZWdleC5leGVjKGNsYXNzTmFtZSkhWzFdXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZyhcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JyksXG4gICAgICAgIClcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzTWFwID0gKGNvbmZpZzogQ29uZmlnPEdlbmVyaWNDbGFzc0dyb3VwSWRzLCBHZW5lcmljVGhlbWVHcm91cElkcz4pID0+IHtcbiAgICBjb25zdCB7IHRoZW1lLCBwcmVmaXggfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGNsYXNzTWFwOiBDbGFzc1BhcnRPYmplY3QgPSB7XG4gICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PigpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmNsYXNzR3JvdXBzKSxcbiAgICAgICAgcHJlZml4LFxuICAgIClcblxuICAgIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsYXNzTWFwXG59XG5cbmNvbnN0IHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkgPSAoXG4gICAgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICB0aGVtZTogVGhlbWVPYmplY3Q8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgY2xhc3NHcm91cC5mb3JFYWNoKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPVxuICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbiA9PT0gJycgPyBjbGFzc1BhcnRPYmplY3QgOiBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwgY2xhc3NEZWZpbml0aW9uKVxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbih0aGVtZSksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogY2xhc3NEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwLFxuICAgICAgICAgICAgICAgIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBrZXkpLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBnZXRQYXJ0ID0gKGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdFxuXG4gICAgcGF0aC5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUikuZm9yRWFjaCgocGF0aFBhcnQpID0+IHtcbiAgICAgICAgaWYgKCFjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmhhcyhwYXRoUGFydCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuc2V0KHBhdGhQYXJ0LCB7XG4gICAgICAgICAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpIVxuICAgIH0pXG5cbiAgICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdFxufVxuXG5jb25zdCBpc1RoZW1lR2V0dGVyID0gKGZ1bmM6IENsYXNzVmFsaWRhdG9yIHwgVGhlbWVHZXR0ZXIpOiBmdW5jIGlzIFRoZW1lR2V0dGVyID0+XG4gICAgKGZ1bmMgYXMgVGhlbWVHZXR0ZXIpLmlzVGhlbWVHZXR0ZXJcblxuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChcbiAgICBjbGFzc0dyb3VwRW50cmllczogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+LFxuICAgIHByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+ID0+IHtcbiAgICBpZiAoIXByZWZpeCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXNcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXAgPSBjbGFzc0dyb3VwLm1hcCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIFtjbGFzc0dyb3VwSWQsIHByZWZpeGVkQ2xhc3NHcm91cF1cbiAgICB9KVxufVxuIiwgIi8vIEV4cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGNvbXBsYWlucyBhYm91dCBhbiBlcnJvciBvdGhlcndpc2U6XG4vLyBFcnJvcjogXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9jb25maWctdXRpbHMudHMoOCwxNyk6IHNlbWFudGljIGVycm9yIFRTNDA1ODogUmV0dXJuIHR5cGUgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ0xydUNhY2hlJyBmcm9tIGV4dGVybmFsIG1vZHVsZSBcIlx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvbHJ1LWNhY2hlXCIgYnV0IGNhbm5vdCBiZSBuYW1lZC5cbmV4cG9ydCBpbnRlcmZhY2UgTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4ge1xuICAgIGdldChrZXk6IEtleSk6IFZhbHVlIHwgdW5kZWZpbmVkXG4gICAgc2V0KGtleTogS2V5LCB2YWx1ZTogVmFsdWUpOiB2b2lkXG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmV4cG9ydCBjb25zdCBjcmVhdGVMcnVDYWNoZSA9IDxLZXksIFZhbHVlPihtYXhDYWNoZVNpemU6IG51bWJlcik6IExydUNhY2hlPEtleSwgVmFsdWU+ID0+IHtcbiAgICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzZXQ6ICgpID0+IHt9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlU2l6ZSA9IDBcbiAgICBsZXQgY2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcbiAgICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuXG4gICAgY29uc3QgdXBkYXRlID0gKGtleTogS2V5LCB2YWx1ZTogVmFsdWUpID0+IHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgIGNhY2hlU2l6ZSsrXG5cbiAgICAgICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgICAgICAgY2FjaGVTaXplID0gMFxuICAgICAgICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSlcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfVxufVxuIiwgImltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXJzZUNsYXNzTmFtZSA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCB7IHNlcGFyYXRvciwgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUgfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMVxuICAgIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdXG4gICAgY29uc3Qgc2VwYXJhdG9yTGVuZ3RoID0gc2VwYXJhdG9yLmxlbmd0aFxuXG4gICAgLy8gcGFyc2VDbGFzc05hbWUgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9ibG9iL3YzLjIuMi9zcmMvdXRpbC9zcGxpdEF0VG9wTGV2ZWxPbmx5LmpzXG4gICAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gW11cblxuICAgICAgICBsZXQgYnJhY2tldERlcHRoID0gMFxuICAgICAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDBcbiAgICAgICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDaGFyYWN0ZXIgPSBjbGFzc05hbWVbaW5kZXhdXG5cbiAgICAgICAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmXG4gICAgICAgICAgICAgICAgICAgIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goY2xhc3NOYW1lLnNsaWNlKG1vZGlmaWVyU3RhcnQsIGluZGV4KSlcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJTdGFydCA9IGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoKytcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydClcbiAgICAgICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUilcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uID1cbiAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgID8gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gLSBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kaWZpZXJzLFxuICAgICAgICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbixcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7IGNsYXNzTmFtZSwgcGFyc2VDbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDbGFzc05hbWVcbn1cblxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRNb2RpZmllcnMgPSAobW9kaWZpZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIG1vZGlmaWVyc1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuICAgIGxldCB1bnNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuXG4gICAgbW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWydcblxuICAgICAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICAgICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKVxuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMucHVzaChtb2RpZmllcilcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpXG5cbiAgICByZXR1cm4gc29ydGVkTW9kaWZpZXJzXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ2xhc3NHcm91cFV0aWxzIH0gZnJvbSAnLi9jbGFzcy1ncm91cC11dGlscydcbmltcG9ydCB7IGNyZWF0ZUxydUNhY2hlIH0gZnJvbSAnLi9scnUtY2FjaGUnXG5pbXBvcnQgeyBjcmVhdGVQYXJzZUNsYXNzTmFtZSB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29uZmlnVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiAoe1xuICAgIGNhY2hlOiBjcmVhdGVMcnVDYWNoZTxzdHJpbmcsIHN0cmluZz4oY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZyksXG59KVxuIiwgImltcG9ydCB7IENvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBJTVBPUlRBTlRfTU9ESUZJRVIsIHNvcnRNb2RpZmllcnMgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy9cblxuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NMaXN0ID0gKGNsYXNzTGlzdDogc3RyaW5nLCBjb25maWdVdGlsczogQ29uZmlnVXRpbHMpID0+IHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NOYW1lLCBnZXRDbGFzc0dyb3VwSWQsIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyB9ID0gY29uZmlnVXRpbHNcblxuICAgIC8qKlxuICAgICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICAgKiBAZXhhbXBsZSAnZmxvYXQnXG4gICAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgICAqIEBleGFtcGxlICdtZDohcHInXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0OiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzTGlzdC50cmltKCkuc3BsaXQoU1BMSVRfQ0xBU1NFU19SRUdFWClcblxuICAgIGxldCByZXN1bHQgPSAnJ1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSBjbGFzc05hbWVzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XSFcblxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycywgaGFzSW1wb3J0YW50TW9kaWZpZXIsIGJhc2VDbGFzc05hbWUsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gfSA9XG4gICAgICAgICAgICBwYXJzZUNsYXNzTmFtZShvcmlnaW5hbENsYXNzTmFtZSlcblxuICAgICAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKFxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGJhc2VDbGFzc05hbWUpXG5cbiAgICAgICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFudE1vZGlmaWVyID0gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpLmpvaW4oJzonKVxuXG4gICAgICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyB2YXJpYW50TW9kaWZpZXIgKyBJTVBPUlRBTlRfTU9ESUZJRVJcbiAgICAgICAgICAgIDogdmFyaWFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWRcblxuICAgICAgICBpZiAoY2xhc3NHcm91cHNJbkNvbmZsaWN0LmluY2x1ZGVzKGNsYXNzSWQpKSB7XG4gICAgICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBvbWl0dGVkIGR1ZSB0byBjb25mbGljdFxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKGNsYXNzSWQpXG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV0hXG4gICAgICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuIiwgIi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuXG5leHBvcnQgdHlwZSBDbGFzc05hbWVWYWx1ZSA9IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IDAgfCAwbiB8IGZhbHNlXG50eXBlIENsYXNzTmFtZUFycmF5ID0gQ2xhc3NOYW1lVmFsdWVbXVxuXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oKSB7XG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBhcmd1bWVudDogQ2xhc3NOYW1lVmFsdWVcbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmICgoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nXG59XG5cbmNvbnN0IHRvVmFsdWUgPSAobWl4OiBDbGFzc05hbWVBcnJheSB8IHN0cmluZykgPT4ge1xuICAgIGlmICh0eXBlb2YgbWl4ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbWl4XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtaXgubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgaWYgKG1peFtrXSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10gYXMgQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBtZXJnZUNsYXNzTGlzdCB9IGZyb20gJy4vbWVyZ2UtY2xhc3NsaXN0J1xuaW1wb3J0IHsgQ2xhc3NOYW1lVmFsdWUsIHR3Sm9pbiB9IGZyb20gJy4vdHctam9pbidcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ0ZpcnN0ID0gKCkgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBUYWlsd2luZE1lcmdlID0gKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pID0+IHN0cmluZ1xudHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICBjcmVhdGVDb25maWdGaXJzdDogQ3JlYXRlQ29uZmlnRmlyc3QsXG4gICAgLi4uY3JlYXRlQ29uZmlnUmVzdDogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pOiBUYWlsd2luZE1lcmdlIHtcbiAgICBsZXQgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzXG4gICAgbGV0IGNhY2hlR2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnZ2V0J11cbiAgICBsZXQgY2FjaGVTZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydzZXQnXVxuICAgIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlXG5cbiAgICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksXG4gICAgICAgICAgICBjcmVhdGVDb25maWdGaXJzdCgpIGFzIEdlbmVyaWNDb25maWcsXG4gICAgICAgIClcblxuICAgICAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZylcbiAgICAgICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXRcbiAgICAgICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXRcbiAgICAgICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlXG5cbiAgICAgICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGVHZXQoY2xhc3NMaXN0KVxuXG4gICAgICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpXG4gICAgICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY2FsbFRhaWx3aW5kTWVyZ2UoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzIGFzIGFueSkpXG4gICAgfVxufVxuIiwgImltcG9ydCB7IERlZmF1bHRUaGVtZUdyb3VwSWRzLCBOb0luZmVyLCBUaGVtZUdldHRlciwgVGhlbWVPYmplY3QgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgZnJvbVRoZW1lID0gPFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgRGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciBleHRlbmRzIHN0cmluZyA9IERlZmF1bHRUaGVtZUdyb3VwSWRzLFxuPihrZXk6IE5vSW5mZXI8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPik6IFRoZW1lR2V0dGVyID0+IHtcbiAgICBjb25zdCB0aGVtZUdldHRlciA9ICh0aGVtZTogVGhlbWVPYmplY3Q8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPikgPT5cbiAgICAgICAgdGhlbWVba2V5XSB8fCBbXVxuXG4gICAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWUgYXMgY29uc3RcblxuICAgIHJldHVybiB0aGVtZUdldHRlclxufVxuIiwgImNvbnN0IGFyYml0cmFyeVZhbHVlUmVnZXggPSAvXlxcWyg/OihbYS16LV0rKTopPyguKylcXF0kL2lcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC9cbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSBuZXcgU2V0KFsncHgnLCAnZnVsbCcsICdzY3JlZW4nXSlcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC9cbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9XG4gICAgL1xcZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXFwoLitcXCl8XjAkL1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpKVxcKC4rXFwpJC9cbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS9cbmNvbnN0IGltYWdlUmVnZXggPVxuICAgIC9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXFwoLitcXCkkL1xuXG5leHBvcnQgY29uc3QgaXNMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc051bWJlcih2YWx1ZSkgfHwgc3RyaW5nTGVuZ3Rocy5oYXModmFsdWUpIHx8IGZyYWN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ2xlbmd0aCcsIGlzTGVuZ3RoT25seSlcblxuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcilcblxuZXhwb3J0IGNvbnN0IGlzSW50ZWdlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc1BlcmNlbnQgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+IGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzVHNoaXJ0U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB0c2hpcnRVbml0UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3Qgc2l6ZUxhYmVscyA9IG5ldyBTZXQoWydsZW5ndGgnLCAnc2l6ZScsICdwZXJjZW50YWdlJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcilcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5UG9zaXRpb24gPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKVxuXG5jb25zdCBpbWFnZUxhYmVscyA9IG5ldyBTZXQoWydpbWFnZScsICd1cmwnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5SW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnJywgaXNTaGFkb3cpXG5cbmV4cG9ydCBjb25zdCBpc0FueSA9ICgpID0+IHRydWVcblxuY29uc3QgZ2V0SXNBcmJpdHJhcnlWYWx1ZSA9IChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcgfCBTZXQ8c3RyaW5nPixcbiAgICB0ZXN0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuLFxuKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0hKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpc0xlbmd0aE9ubHkgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuICAgIC8vIEkgY291bGQgYWxzbyB1c2UgbG9va2JlaGluZCBhc3NlcnRpb24gaW4gYGxlbmd0aFVuaXRSZWdleGAgYnV0IHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHdpZGVseSBlbm91Z2guXG4gICAgbGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNOZXZlciA9ICgpID0+IGZhbHNlXG5cbmNvbnN0IGlzU2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzSW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKVxuIiwgImltcG9ydCB7IGZyb21UaGVtZSB9IGZyb20gJy4vZnJvbS10aGVtZSdcbmltcG9ydCB7IENvbmZpZywgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gICAgaXNBbnksXG4gICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICAgIGlzQXJiaXRyYXJ5U2hhZG93LFxuICAgIGlzQXJiaXRyYXJ5U2l6ZSxcbiAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgIGlzSW50ZWdlcixcbiAgICBpc0xlbmd0aCxcbiAgICBpc051bWJlcixcbiAgICBpc1BlcmNlbnQsXG4gICAgaXNUc2hpcnRTaXplLFxufSBmcm9tICcuL3ZhbGlkYXRvcnMnXG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IGZyb21UaGVtZSgnY29sb3JzJylcbiAgICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJylcbiAgICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJylcbiAgICBjb25zdCBicmlnaHRuZXNzID0gZnJvbVRoZW1lKCdicmlnaHRuZXNzJylcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJylcbiAgICBjb25zdCBib3JkZXJTcGFjaW5nID0gZnJvbVRoZW1lKCdib3JkZXJTcGFjaW5nJylcbiAgICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKVxuICAgIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpXG4gICAgY29uc3QgZ3JheXNjYWxlID0gZnJvbVRoZW1lKCdncmF5c2NhbGUnKVxuICAgIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJylcbiAgICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpXG4gICAgY29uc3QgZ2FwID0gZnJvbVRoZW1lKCdnYXAnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKVxuICAgIGNvbnN0IGluc2V0ID0gZnJvbVRoZW1lKCdpbnNldCcpXG4gICAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKVxuICAgIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKVxuICAgIGNvbnN0IHBhZGRpbmcgPSBmcm9tVGhlbWUoJ3BhZGRpbmcnKVxuICAgIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpXG4gICAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJylcbiAgICBjb25zdCBzZXBpYSA9IGZyb21UaGVtZSgnc2VwaWEnKVxuICAgIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKVxuICAgIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpXG4gICAgY29uc3QgdHJhbnNsYXRlID0gZnJvbVRoZW1lKCd0cmFuc2xhdGUnKVxuXG4gICAgY29uc3QgZ2V0T3ZlcnNjcm9sbCA9ICgpID0+IFsnYXV0bycsICdjb250YWluJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5ID0gKCkgPT4gW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRQb3NpdGlvbnMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgJ2xlZnQtYm90dG9tJyxcbiAgICAgICAgICAgICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgICAgICAgICAncmlnaHQtdG9wJyxcbiAgICAgICAgICAgICd0b3AnLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgJ211bHRpcGx5JyxcbiAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgJ292ZXJsYXknLFxuICAgICAgICAgICAgJ2RhcmtlbicsXG4gICAgICAgICAgICAnbGlnaHRlbicsXG4gICAgICAgICAgICAnY29sb3ItZG9kZ2UnLFxuICAgICAgICAgICAgJ2NvbG9yLWJ1cm4nLFxuICAgICAgICAgICAgJ2hhcmQtbGlnaHQnLFxuICAgICAgICAgICAgJ3NvZnQtbGlnaHQnLFxuICAgICAgICAgICAgJ2RpZmZlcmVuY2UnLFxuICAgICAgICAgICAgJ2V4Y2x1c2lvbicsXG4gICAgICAgICAgICAnaHVlJyxcbiAgICAgICAgICAgICdzYXR1cmF0aW9uJyxcbiAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAnbHVtaW5vc2l0eScsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRBbGlnbiA9ICgpID0+XG4gICAgICAgIFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QnJlYWtzID0gKCkgPT5cbiAgICAgICAgWydhdXRvJywgJ2F2b2lkJywgJ2FsbCcsICdhdm9pZC1wYWdlJywgJ3BhZ2UnLCAnbGVmdCcsICdyaWdodCcsICdjb2x1bW4nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlckFuZEFyYml0cmFyeSA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgICAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICAgICAgdGhlbWU6IHtcbiAgICAgICAgICAgIGNvbG9yczogW2lzQW55XSxcbiAgICAgICAgICAgIHNwYWNpbmc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgYmx1cjogWydub25lJywgJycsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWydub25lJywgJycsICdmdWxsJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJvcmRlclNwYWNpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBjb250cmFzdDogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmF5c2NhbGU6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgaHVlUm90YXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGludmVydDogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBnYXA6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcHM6IFtjb2xvcnNdLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnM6IFtpc1BlcmNlbnQsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGluc2V0OiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG1hcmdpbjogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBvcGFjaXR5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzYXR1cmF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzY2FsZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzZXBpYTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBza2V3OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNwYWNlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgLy8gTGF5b3V0XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFzcGVjdCBSYXRpb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FzcGVjdC1yYXRpb1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3BlY3Q6IFt7IGFzcGVjdDogWydhdXRvJywgJ3NxdWFyZScsICd2aWRlbycsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250YWluZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb2x1bW5zOiBbeyBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYWZ0ZXInOiBbeyAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQmVmb3JlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYmVmb3JlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1iZWZvcmUnOiBbeyAnYnJlYWstYmVmb3JlJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstaW5zaWRlJzogW3sgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7ICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNpemluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaXppbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm94OiBbeyBib3g6IFsnYm9yZGVyJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGlzcGxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGlzcGxheTogW1xuICAgICAgICAgICAgICAgICdibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZScsXG4gICAgICAgICAgICAgICAgJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLXRhYmxlJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2FwdGlvbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNlbGwnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4tZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1mb290ZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1oZWFkZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3ctZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3cnLFxuICAgICAgICAgICAgICAgICdmbG93LXJvb3QnLFxuICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWdyaWQnLFxuICAgICAgICAgICAgICAgICdjb250ZW50cycsXG4gICAgICAgICAgICAgICAgJ2xpc3QtaXRlbScsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbG9hdHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbG9hdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbG9hdDogW3sgZmxvYXQ6IFsncmlnaHQnLCAnbGVmdCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDbGVhclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNsZWFyOiBbeyBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtZml0JzogW3sgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtcG9zaXRpb24nOiBbeyBvYmplY3Q6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFt7IG92ZXJmbG93OiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXgnOiBbeyAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteSc6IFt7ICdvdmVyZmxvdy15JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcnNjcm9sbDogW3sgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXgnOiBbeyAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXknOiBbeyAnb3ZlcnNjcm9sbC15JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluc2V0OiBbeyBpbnNldDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC14JzogW3sgJ2luc2V0LXgnOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXknOiBbeyAnaW5zZXQteSc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0YXJ0OiBbeyBzdGFydDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVuZDogW3sgZW5kOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG9wOiBbeyB0b3A6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJpZ2h0OiBbeyByaWdodDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJvdHRvbTogW3sgYm90dG9tOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlZnQ6IFt7IGxlZnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogWi1JbmRleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgejogW3sgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmFzaXM6IFt7IGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBEaXJlY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWRpcmVjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC1kaXJlY3Rpb24nOiBbeyBmbGV4OiBbJ3JvdycsICdyb3ctcmV2ZXJzZScsICdjb2wnLCAnY29sLXJldmVyc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LXdyYXAnOiBbeyBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbGV4OiBbeyBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBHcm93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1ncm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyb3c6IFt7IGdyb3c6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNocmluazogW3sgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3JkZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcmRlcjogW3sgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWNvbHMnOiBbeyAnZ3JpZC1jb2xzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcGFuOiBbJ2Z1bGwnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQnOiBbeyAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1lbmQnOiBbeyAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1yb3dzJzogW3sgJ2dyaWQtcm93cyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAgeyByb3c6IFsnYXV0bycsIHsgc3BhbjogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydCc6IFt7ICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LWVuZCc6IFt7ICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIEZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1mbG93JzogW3sgJ2dyaWQtZmxvdyc6IFsncm93JywgJ2NvbCcsICdkZW5zZScsICdyb3ctZGVuc2UnLCAnY29sLWRlbnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tY29scyc6IFt7ICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLXJvd3MnOiBbeyAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdhcDogW3sgZ2FwOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC14JzogW3sgJ2dhcC14JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteSc6IFt7ICdnYXAteSc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IFt7IGp1c3RpZnk6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3sgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktc2VsZic6IFt7ICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1jb250ZW50JzogW3sgY29udGVudDogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24taXRlbXMnOiBbeyBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLXNlbGYnOiBbeyBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1jb250ZW50JzogW3sgJ3BsYWNlLWNvbnRlbnQnOiBbLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWl0ZW1zJzogW3sgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLXNlbGYnOiBbeyAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8vIFNwYWNpbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcDogW3sgcDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB4OiBbeyBweDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB5OiBbeyBweTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwczogW3sgcHM6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBlOiBbeyBwZTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHQ6IFt7IHB0OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByOiBbeyBwcjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGI6IFt7IHBiOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGw6IFt7IHBsOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtOiBbeyBtOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXg6IFt7IG14OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXk6IFt7IG15OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1zOiBbeyBtczogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWU6IFt7IG1lOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtdDogW3sgbXQ6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXI6IFt7IG1yOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtYjogW3sgbWI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtbDogW3sgbWw6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteCc6IFt7ICdzcGFjZS14JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXknOiBbeyAnc3BhY2UteSc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvLyBTaXppbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3Z3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4tdyc6IFt7ICdtaW4tdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2NyZWVuOiBbaXNUc2hpcnRTaXplXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUc2hpcnRTaXplLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2aCcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4taCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaXplOiBbeyBzaXplOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNpemUnOiBbeyB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXdlaWdodCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aGluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbWlib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IFt7IGZvbnQ6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ25vcm1hbC1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydvcmRpbmFsJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ3NsYXNoZWQtemVybyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydsaW5pbmctbnVtcycsICdvbGRzdHlsZS1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydwcm9wb3J0aW9uYWwtbnVtcycsICd0YWJ1bGFyLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydkaWFnb25hbC1mcmFjdGlvbnMnLCAnc3RhY2tlZC1mcmFjdG9ucyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbeyAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzbnVnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xvb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbeyAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7IGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbeyBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3sgcGxhY2Vob2xkZXI6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7ICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3sgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1jb2xvcic6IFt7IHRleHQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7ICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7IGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW1xuICAgICAgICAgICAgICAgIHsgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7ICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7IGRlY29yYXRpb246IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtd3JhcCc6IFt7IHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmRlbnQ6IFt7IGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlbGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaWRkbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC10b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHdoaXRlc3BhY2U6IFtcbiAgICAgICAgICAgICAgICB7IHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyZWFrOiBbeyBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHlwaGVuc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaHlwaGVuczogW3sgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRlbnQ6IFt7IGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1hdHRhY2htZW50JzogW3sgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY2xpcCc6IFt7ICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcGFjaXR5JzogW3sgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9yaWdpbic6IFt7ICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXBvc2l0aW9uJzogW3sgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXJlcGVhdCc6IFt7IGJnOiBbJ25vLXJlcGVhdCcsIHsgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXSB9XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1zaXplJzogW3sgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWltYWdlJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jb2xvcic6IFt7IGJnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10by1wb3MnOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10byc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8vIEJvcmRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm91bmRlZDogW3sgcm91bmRlZDogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbeyAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lJzogW3sgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFt7ICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFt7ICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbeyAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFt7ICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc3MnOiBbeyAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc2UnOiBbeyAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVlJzogW3sgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVzJzogW3sgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdGwnOiBbeyAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdHInOiBbeyAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYnInOiBbeyAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1ibCc6IFt7ICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbeyBib3JkZXI6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXMnOiBbeyAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1lJzogW3sgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3sgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7IGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgnOiBbeyAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteSc6IFt7ICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbeyAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXN0eWxlJzogW3sgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW3sgYm9yZGVyOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLWNvbG9yJzogW3sgZGl2aWRlOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1zdHlsZSc6IFt7IG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbeyAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS13JzogW3sgb3V0bGluZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLWNvbG9yJzogW3sgb3V0bGluZTogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXcnOiBbeyByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aCBJbnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdy1pbnNldCc6IFsncmluZy1pbnNldCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1jb2xvcic6IFt7IHJpbmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7ICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbeyAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtY29sb3InOiBbeyAncmluZy1vZmZzZXQnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8vIEVmZmVjdHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hhZG93OiBbeyBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7IHNoYWRvdzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3BhY2l0eTogW3sgb3BhY2l0eTogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaXgtYmxlbmQnOiBbeyAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWJsZW5kJzogW3sgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpIH1dLFxuICAgICAgICAgICAgLy8gRmlsdGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiBbeyBmaWx0ZXI6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmx1cjogW3sgYmx1cjogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBbeyBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udHJhc3Q6IFt7IGNvbnRyYXN0OiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkcm9wLXNoYWRvdyc6IFt7ICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JheXNjYWxlOiBbeyBncmF5c2NhbGU6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaHVlLXJvdGF0ZSc6IFt7ICdodWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnZlcnQ6IFt7IGludmVydDogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2F0dXJhdGU6IFt7IHNhdHVyYXRlOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlcGlhOiBbeyBzZXBpYTogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbeyAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFt7ICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFt7ICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7ICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3sgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFt7ICdiYWNrZHJvcC1odWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3sgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7ICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFt7ICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3sgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8vIFRhYmxlc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7IGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFt7ICdib3JkZXItc3BhY2luZyc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy14JzogW3sgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7ICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUYWJsZSBMYXlvdXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90YWJsZS1sYXlvdXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RhYmxlLWxheW91dCc6IFt7IHRhYmxlOiBbJ2F1dG8nLCAnZml4ZWQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNhcHRpb246IFt7IGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGR1cmF0aW9uOiBbeyBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZWFzZTogW3sgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIERlbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kZWxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkZWxheTogW3sgZGVsYXk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbmltYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYW5pbWF0ZTogW3sgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zZm9ybTogW3sgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNjYWxlOiBbeyBzY2FsZTogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS14JzogW3sgJ3NjYWxlLXgnOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXknOiBbeyAnc2NhbGUteSc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3RhdGU6IFt7IHJvdGF0ZTogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteCc6IFt7ICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXknOiBbeyAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy14JzogW3sgJ3NrZXcteCc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy15JzogW3sgJ3NrZXcteSc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWNjZW50OiBbeyBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFwcGVhcmFuY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hcHBlYXJhbmNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IFt7IGFwcGVhcmFuY2U6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEN1cnNvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dhaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vdC1hbGxvd2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0LW1lbnUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcm9zc2hhaXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduby1kcm9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiYmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsLXNjcm9sbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbi1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICducy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdud3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1vdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NhcmV0LWNvbG9yJzogW3sgY2FyZXQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7ICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jlc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXNpemU6IFt7IHJlc2l6ZTogWydub25lJywgJ3knLCAneCcsICcnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbeyBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW3sgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogW3sgJ3Njcm9sbC1teCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFt7ICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1zJzogW3sgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1lJzogW3sgJ3Njcm9sbC1tZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW10JzogW3sgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXInOiBbeyAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWInOiBbeyAnc2Nyb2xsLW1iJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1sJzogW3sgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW3sgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbeyAnc2Nyb2xsLXB4JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbeyAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBzJzogW3sgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGUnOiBbeyAnc2Nyb2xsLXBlJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wdCc6IFt7ICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHInOiBbeyAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wYic6IFt7ICdzY3JvbGwtcGInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wbCc6IFt7ICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLWFsaWduJzogW3sgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgU3RvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXN0b3BcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RvcCc6IFt7IHNuYXA6IFsnbm9ybWFsJywgJ2Fsd2F5cyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC10eXBlJzogW3sgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7IHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG91Y2g6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoOiBbJ2F1dG8nLCAnbm9uZScsICdtYW5pcHVsYXRpb24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXknOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFBpbmNoIFpvb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaC1waW5jaC16b29tJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFVzZXIgU2VsZWN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdXNlci1zZWxlY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VsZWN0OiBbeyBzZWxlY3Q6IFsnbm9uZScsICd0ZXh0JywgJ2FsbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3dpbGwtY2hhbmdlJzogW1xuICAgICAgICAgICAgICAgIHsgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFNWR1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWxsXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWxsOiBbeyBmaWxsOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2UgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2Utd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3N0cm9rZS13JzogW3sgc3Ryb2tlOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdHJva2U6IFt7IHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3sgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddIH1dLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICBvdmVyZmxvdzogWydvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFsnb3ZlcnNjcm9sbC14JywgJ292ZXJzY3JvbGwteSddLFxuICAgICAgICAgICAgaW5zZXQ6IFsnaW5zZXQteCcsICdpbnNldC15JywgJ3N0YXJ0JywgJ2VuZCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC14JzogWydyaWdodCcsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteSc6IFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgICAgICAgZmxleDogWydiYXNpcycsICdncm93JywgJ3NocmluayddLFxuICAgICAgICAgICAgZ2FwOiBbJ2dhcC14JywgJ2dhcC15J10sXG4gICAgICAgICAgICBwOiBbJ3B4JywgJ3B5JywgJ3BzJywgJ3BlJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJ10sXG4gICAgICAgICAgICBweDogWydwcicsICdwbCddLFxuICAgICAgICAgICAgcHk6IFsncHQnLCAncGInXSxcbiAgICAgICAgICAgIG06IFsnbXgnLCAnbXknLCAnbXMnLCAnbWUnLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnXSxcbiAgICAgICAgICAgIG14OiBbJ21yJywgJ21sJ10sXG4gICAgICAgICAgICBteTogWydtdCcsICdtYiddLFxuICAgICAgICAgICAgc2l6ZTogWyd3JywgJ2gnXSxcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogW1xuICAgICAgICAgICAgICAgICdmdm4tb3JkaW5hbCcsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nLFxuICAgICAgICAgICAgICAgICdmdm4tZmlndXJlJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNwYWNpbmcnLFxuICAgICAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICAgICAgICByb3VuZGVkOiBbXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtbCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc3MnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRsJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10cicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYnInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgICAgICAgJ2JvcmRlci13JzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItdy1zJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctZScsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtcHgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbJ3Njcm9sbC1wcicsICdzY3JvbGwtcGwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbJ3Njcm9sbC1wdCcsICdzY3JvbGwtcGInXSxcbiAgICAgICAgICAgIHRvdWNoOiBbJ3RvdWNoLXgnLCAndG91Y2gteScsICd0b3VjaC1weiddLFxuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gteSc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgIH0sXG4gICAgfSBhcyBjb25zdCBzYXRpc2ZpZXMgQ29uZmlnPERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcz5cbn1cbiIsICJpbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNvbmZpZ3MgPSA8Q2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZywgVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyPihcbiAgICBiYXNlQ29uZmlnOiBHZW5lcmljQ29uZmlnLFxuICAgIHtcbiAgICAgICAgY2FjaGVTaXplLFxuICAgICAgICBwcmVmaXgsXG4gICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUsXG4gICAgICAgIGV4dGVuZCA9IHt9LFxuICAgICAgICBvdmVycmlkZSA9IHt9LFxuICAgIH06IENvbmZpZ0V4dGVuc2lvbjxDbGFzc0dyb3VwSWRzLCBUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2NhY2hlU2l6ZScsIGNhY2hlU2l6ZSlcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2V4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lJywgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpXG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ0tleSBpbiBvdmVycmlkZSkge1xuICAgICAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICAgICAgb3ZlcnJpZGVbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICAgICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1trZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgICAgICBleHRlbmRba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDb25maWdcbn1cblxuY29uc3Qgb3ZlcnJpZGVQcm9wZXJ0eSA9IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gICAgYmFzZU9iamVjdDogVCxcbiAgICBvdmVycmlkZUtleTogSyxcbiAgICBvdmVycmlkZVZhbHVlOiBUW0tdIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWVcbiAgICB9XG59XG5cbmNvbnN0IG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG92ZXJyaWRlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgICAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIGtleSwgb3ZlcnJpZGVPYmplY3Rba2V5XSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgbWVyZ2VDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgbWVyZ2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVyZ2VPYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlVmFsdWUgPSBtZXJnZU9iamVjdFtrZXldXG5cbiAgICAgICAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiYXNlT2JqZWN0W2tleV0gPSAoYmFzZU9iamVjdFtrZXldIHx8IFtdKS5jb25jYXQobWVyZ2VWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcbmltcG9ydCB7IG1lcmdlQ29uZmlncyB9IGZyb20gJy4vbWVyZ2UtY29uZmlncydcbmltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xuXG5leHBvcnQgY29uc3QgZXh0ZW5kVGFpbHdpbmRNZXJnZSA9IDxcbiAgICBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4+KFxuICAgIGNvbmZpZ0V4dGVuc2lvbjpcbiAgICAgICAgfCBDb25maWdFeHRlbnNpb248XG4gICAgICAgICAgICAgIERlZmF1bHRDbGFzc0dyb3VwSWRzIHwgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHNcbiAgICAgICAgICA+XG4gICAgICAgIHwgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCxcbiAgICAuLi5jcmVhdGVDb25maWc6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKSA9PlxuICAgIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKVxuICAgICAgICA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgICAgICAgICAgICgpID0+IG1lcmdlQ29uZmlncyhnZXREZWZhdWx0Q29uZmlnKCksIGNvbmZpZ0V4dGVuc2lvbiksXG4gICAgICAgICAgICAgIC4uLmNyZWF0ZUNvbmZpZyxcbiAgICAgICAgICApXG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB0eXBlIENvbHVtbkRlZiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEZpbHRlckljb24sIE1heGltaXplLCBNaW5pbWl6ZSwgUGFuZWxMZWZ0Q2xvc2UsIFBhbmVsTGVmdE9wZW4gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsLCBTZWxlY3RIZWFkZXJDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdFJvd0NlbGwsIFNlbGVjdFJvd0NlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVRhYmxlVmlld1Byb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3RpdmVUYWJsZVZpZXcoX3Byb3BzOiBBY3RpdmVUYWJsZVZpZXdQcm9wcykge1xuICBjb25zdCBpc011dGF0aW5nID0gQm9vbGVhbih1c2VJc011dGF0aW5nKCkpO1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yLCBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZyB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH0pO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiA1MCxcbiAgICAgIG1pblNpemU6IDUwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdEhlYWRlckNlbGxQcm9wcywgXCJ0YWJsZVwiIHwgXCJyZWFkb25seVwiPikgPT4gKFxuICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8U2VsZWN0Um93Q2VsbFByb3BzLCBcInJvd1wiIHwgXCJyZWFkb25seVwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+O1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdIHNhdGlzZmllcyAoQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiAmIHsgZGlzYWJsZURyYWdnaW5nPzogYm9vbGVhbiB9KVtdO1xuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBbLi4uY29uY3JldGVDb2x1bW5EZWZzLCAuLi52aXJ0dWFsQ29sdW1uRGVmc10uc29ydChkZWZhdWx0Q29sdW1uU29ydGluZyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1iZy1zdHVkaW8taGVhZGVyLWJhY2tncm91bmQgcHMtZmxleCBwcy13LWZ1bGwgcHMtcC0yIHBzLXB5LTMgcHMtYm9yZGVyLWIgcHMtYmctY2FyZCBwcy1yb3VuZGVkLXQtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGFsaWduPVwic3RhcnRcIiBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwicHMtdy1taW4gcHMtbWF4LWgtWzUyMHB4XSBwcy1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUcmVlXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtzZXRFZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGluZ0ZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGVkaXRpbmcgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgYXBwbGllZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJsZT17YWN0aXZlVGFibGV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9e3RvZ2dsZUZ1bGxzY3JlZW59PlxuICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8RGF0YUdyaWRcbiAgICAgICAgY29sdW1uRGVmcz17Y29sdW1uRGVmc31cbiAgICAgICAgZ2V0QmVmb3JlUm93cz17KHRhYmxlKSA9PiA8U3RhZ2VkUm93cyB7Li4ueyB0YWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9fSAvPn1cbiAgICAgICAgaXNMb2FkaW5nPXtpc0ZldGNoaW5nfVxuICAgICAgICBpc1Byb2Nlc3Npbmc9e2lzTXV0YXRpbmd9XG4gICAgICAgIG9uUGFnaW5hdGlvbkNoYW5nZT17c2V0UGFnaW5hdGlvblN0YXRlfVxuICAgICAgICBvblJvd1NlbGVjdGlvbkNoYW5nZT17c2V0Um93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIG9uU29ydGluZ0NoYW5nZT17c2V0U29ydGluZ1N0YXRlfVxuICAgICAgICBwYWdlQ291bnQ9e2dldFBhZ2VDb3VudChkYXRhPy5maWx0ZXJlZFJvd0NvdW50ID8/IEluZmluaXR5LCBwYWdpbmF0aW9uU3RhdGUucGFnZVNpemUpfVxuICAgICAgICBwYWdpbmF0aW9uU3RhdGU9e3BhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgcm93cz17ZGF0YT8ucm93cyA/PyBbXX1cbiAgICAgICAgcm93U2VsZWN0aW9uU3RhdGU9e3Jvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBzb3J0aW5nU3RhdGU9e3NvcnRpbmdTdGF0ZX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhZ2VDb3VudChyb3dDb3VudDogbnVtYmVyIHwgYmlnaW50IHwgTnVtZXJpY1N0cmluZyB8IEJpZ0ludFN0cmluZywgcGFnZVNpemU6IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmIChyb3dDb3VudCA9PT0gSW5maW5pdHkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQ291bnQgPSBOdW1iZXIoKEJpZ0ludChyb3dDb3VudCkgKyBCaWdJbnQocGFnZVNpemUpIC0gQmlnSW50KDEpKSAvIEJpZ0ludChwYWdlU2l6ZSkpO1xuXG4gIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcihwYWdlQ291bnQpID8gcGFnZUNvdW50IDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRDb2x1bW5Tb3J0aW5nKGE6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGI6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pIHtcbiAgY29uc3QgYU1ldGEgPSBhLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuICBjb25zdCBiTWV0YSA9IGIubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGEuaWQgPT09IFwiX19wc19zZWxlY3RcIiB8fCBiLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChhTWV0YSA9PT0gdW5kZWZpbmVkIHx8IGJNZXRhID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDsgLy8gY2FuJ3QgYmUgY29tcGFyZWQsIHNob3VsZG4ndCBoYXBwZW5cbiAgfVxuXG4gIGlmIChhTWV0YS5pc0luUHJpbWFyeUtleSAmJiAhYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhTWV0YS5pc0luUHJpbWFyeUtleSAmJiBiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIGFNZXRhLm5hbWUubG9jYWxlQ29tcGFyZShiTWV0YS5uYW1lKTtcbn1cbiIsICJpbXBvcnQgeyBDYW1lbFRvUGFzY2FsIH0gZnJvbSAnLi91dGlsaXR5LXR5cGVzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8ga2ViYWIgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEga2ViYWJpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9LZWJhYkNhc2UgPSAoc3RyaW5nOiBzdHJpbmcpID0+XG4gIHN0cmluZy5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBjYW1lbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBjYW1lbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0NhbWVsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpID0+XG4gIHN0cmluZy5yZXBsYWNlKC9eKFtBLVpdKXxbXFxzLV9dKyhcXHcpL2csIChtYXRjaCwgcDEsIHAyKSA9PlxuICAgIHAyID8gcDIudG9VcHBlckNhc2UoKSA6IHAxLnRvTG93ZXJDYXNlKCksXG4gICk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIHBhc2NhbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBwYXNjYWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9QYXNjYWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCk6IENhbWVsVG9QYXNjYWw8VD4gPT4ge1xuICBjb25zdCBjYW1lbENhc2UgPSB0b0NhbWVsQ2FzZShzdHJpbmcpO1xuXG4gIHJldHVybiAoY2FtZWxDYXNlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2FtZWxDYXNlLnNsaWNlKDEpKSBhcyBDYW1lbFRvUGFzY2FsPFQ+O1xufTtcblxuLyoqXG4gKiBNZXJnZXMgY2xhc3NlcyBpbnRvIGEgc2luZ2xlIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7YXJyYXl9IGNsYXNzZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgc3RyaW5nIG9mIGNsYXNzZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NlcyA9IDxDbGFzc1R5cGUgPSBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPiguLi5jbGFzc2VzOiBDbGFzc1R5cGVbXSkgPT5cbiAgY2xhc3Nlc1xuICAgIC5maWx0ZXIoKGNsYXNzTmFtZSwgaW5kZXgsIGFycmF5KSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBCb29sZWFuKGNsYXNzTmFtZSkgJiZcbiAgICAgICAgKGNsYXNzTmFtZSBhcyBzdHJpbmcpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgYXJyYXkuaW5kZXhPZihjbGFzc05hbWUpID09PSBpbmRleFxuICAgICAgKTtcbiAgICB9KVxuICAgIC5qb2luKCcgJylcbiAgICAudHJpbSgpO1xuIiwgImV4cG9ydCBkZWZhdWx0IHtcbiAgeG1sbnM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIHdpZHRoOiAyNCxcbiAgaGVpZ2h0OiAyNCxcbiAgdmlld0JveDogJzAgMCAyNCAyNCcsXG4gIGZpbGw6ICdub25lJyxcbiAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIHN0cm9rZUxpbmVjYXA6ICdyb3VuZCcsXG4gIHN0cm9rZUxpbmVqb2luOiAncm91bmQnLFxufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlZmF1bHRBdHRyaWJ1dGVzIGZyb20gJy4vZGVmYXVsdEF0dHJpYnV0ZXMnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5cbmludGVyZmFjZSBJY29uQ29tcG9uZW50UHJvcHMgZXh0ZW5kcyBMdWNpZGVQcm9wcyB7XG4gIGljb25Ob2RlOiBJY29uTm9kZTtcbn1cblxuLyoqXG4gKiBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqXG4gKiBAY29tcG9uZW50IEljb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNvbG9yIC0gVGhlIGNvbG9yIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc3Ryb2tlV2lkdGggLSBUaGUgc3Ryb2tlIHdpZHRoIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByb3BzLmFic29sdXRlU3Ryb2tlV2lkdGggLSBXaGV0aGVyIHRvIHVzZSBhYnNvbHV0ZSBzdHJva2Ugd2lkdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jbGFzc05hbWUgLSBUaGUgY2xhc3MgbmFtZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuY2hpbGRyZW4gLSBUaGUgY2hpbGRyZW4gb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmljb25Ob2RlIC0gVGhlIGljb24gbm9kZSBvZiB0aGUgaWNvblxuICpcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IEljb24gPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Db21wb25lbnRQcm9wcz4oXG4gIChcbiAgICB7XG4gICAgICBjb2xvciA9ICdjdXJyZW50Q29sb3InLFxuICAgICAgc2l6ZSA9IDI0LFxuICAgICAgc3Ryb2tlV2lkdGggPSAyLFxuICAgICAgYWJzb2x1dGVTdHJva2VXaWR0aCxcbiAgICAgIGNsYXNzTmFtZSA9ICcnLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBpY29uTm9kZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAnc3ZnJyxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICAuLi5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgICAgd2lkdGg6IHNpemUsXG4gICAgICAgIGhlaWdodDogc2l6ZSxcbiAgICAgICAgc3Ryb2tlOiBjb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IGFic29sdXRlU3Ryb2tlV2lkdGggPyAoTnVtYmVyKHN0cm9rZVdpZHRoKSAqIDI0KSAvIE51bWJlcihzaXplKSA6IHN0cm9rZVdpZHRoLFxuICAgICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcygnbHVjaWRlJywgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIC4uLmljb25Ob2RlLm1hcCgoW3RhZywgYXR0cnNdKSA9PiBjcmVhdGVFbGVtZW50KHRhZywgYXR0cnMpKSxcbiAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4gOiBbY2hpbGRyZW5dKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcywgdG9LZWJhYkNhc2UgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBJY29uIGZyb20gJy4vSWNvbic7XG5cbi8qKlxuICogQ3JlYXRlIGEgTHVjaWRlIGljb24gY29tcG9uZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gaWNvbk5hbWVcbiAqIEBwYXJhbSB7YXJyYXl9IGljb25Ob2RlXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBjcmVhdGVMdWNpZGVJY29uID0gKGljb25OYW1lOiBzdHJpbmcsIGljb25Ob2RlOiBJY29uTm9kZSkgPT4ge1xuICBjb25zdCBDb21wb25lbnQgPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEx1Y2lkZVByb3BzPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT5cbiAgICBjcmVhdGVFbGVtZW50KEljb24sIHtcbiAgICAgIHJlZixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoYGx1Y2lkZS0ke3RvS2ViYWJDYXNlKGljb25OYW1lKX1gLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSksXG4gICk7XG5cbiAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7aWNvbk5hbWV9YDtcblxuICByZXR1cm4gQ29tcG9uZW50O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlTHVjaWRlSWNvbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93RG93bldpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QXhOaUEwSURRZ05DMDBJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDNJREl3VmpRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEUm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURob055SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd0Rvd25XaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dEb3duV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgMTYgNCA0IDQtNCcsIGtleTogJzFjbzZ3aicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDIwVjQnLCBrZXk6ICcxeW94ZWMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgNGgxMCcsIGtleTogJzF3ODdnYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA4aDcnLCBrZXk6ICdkanllMzQnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoNCcsIGtleTogJ3E4dGloNCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dEb3duV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93VXBXaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUE0SURRdE5DQTBJRFFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGNnTkhZeE5pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElERTJhRGNpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURJd2FEUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93VXBXaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dVcFdpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDggNC00IDQgNCcsIGtleTogJzExd2w3dScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDR2MTYnLCBrZXk6ICcxZ2xmY3gnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoMTAnLCBrZXk6ICcxNDM4amknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTZoNycsIGtleTogJ3Vvc2lzdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAyMGg0Jywga2V5OiAnMWtyYzMyJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1VwV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZWNrXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NakFnTmlBNUlERTNiQzAxTFRVaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZWNrXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hlY2sgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGVjaycsIFtbJ3BhdGgnLCB7IGQ6ICdNMjAgNiA5IDE3bC01LTUnLCBrZXk6ICcxZ21mMmMnIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkRvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQTVJRFlnTmlBMkxUWWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25Eb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiA5IDYgNiA2LTYnLCBrZXk6ICdxcnVuc2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25Eb3duO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UVWdNVGd0TmkwMklEWXROaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTE1IDE4LTYtNiA2LTYnLCBrZXk6ICcxd25mZzMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblJpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRPU0F4T0NBMkxUWXROaTAySWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25SaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25SaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTkgMTggNi02LTYtNicsIGtleTogJ210aGh3cScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblJpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRVdE5pMDJMVFlnTmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uVXAnLCBbWydwYXRoJywgeyBkOiAnbTE4IDE1LTYtNi02IDYnLCBrZXk6ICcxNTN1ZHonIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25VcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRFZ01UY3ROUzAxSURVdE5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVGN0TlMwMUlEVXROU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTExIDE3LTUtNSA1LTUnLCBrZXk6ICcxM3poYWYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTggMTctNS01IDUtNScsIGtleTogJ2g4YThldCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNMZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBeE55QTFMVFV0TlMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weE15QXhOeUExTFRVdE5TMDFJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc1JpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiAxNyA1LTUtNS01Jywga2V5OiAneG5qd3EnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTMgMTcgNS01LTUtNScsIGtleTogJzE3eG1tZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNSaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZUhlbHBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TNHdPU0E1WVRNZ015QXdJREFnTVNBMUxqZ3pJREZqTUNBeUxUTWdNeTB6SURNaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeUlERTNhQzR3TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1oZWxwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlSGVscCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZUhlbHAnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMycsIGtleTogJzF1NzczcycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN2guMDEnLCBrZXk6ICdwMzJwMDUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUhlbHA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGUgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGUnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29weVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UUWlJR2hsYVdkb2REMGlNVFFpSUhnOUlqZ2lJSGs5SWpnaUlISjRQU0l5SWlCeWVUMGlNaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5OQ0F4Tm1NdE1TNHhJREF0TWkwdU9TMHlMVEpXTkdNd0xURXVNUzQ1TFRJZ01pMHlhREV3WXpFdU1TQXdJRElnTGprZ01pQXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3B5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29weSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NvcHknLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxNCcsIGhlaWdodDogJzE0JywgeDogJzgnLCB5OiAnOCcsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzE3anllYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDInLCBrZXk6ICd6aXg5dWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcHk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3JuZXJEb3duTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXeHBibVVnY0c5cGJuUnpQU0k1SURFd0lEUWdNVFVnT1NBeU1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOSFkzWVRRZ05DQXdJREFnTVMwMElEUklOQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29ybmVyLWRvd24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcm5lckRvd25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ29ybmVyRG93bkxlZnQnLCBbXG4gIFsncG9seWxpbmUnLCB7IHBvaW50czogJzkgMTAgNCAxNSA5IDIwJywga2V5OiAncjNqcHJ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDQnLCBrZXk6ICc2bzViN2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcm5lckRvd25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRmlsdGVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVdkdmJpQndiMmx1ZEhNOUlqSXlJRE1nTWlBeklERXdJREV5TGpRMklERXdJREU1SURFMElESXhJREUwSURFeUxqUTJJREl5SURNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2ZpbHRlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEZpbHRlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0ZpbHRlcicsIFtcbiAgWydwb2x5Z29uJywgeyBwb2ludHM6ICcyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzJywga2V5OiAnMXlnNzdmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBHcmlwVmVydGljYWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSTVJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpVaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJakU1SWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlNVFVpSUdONVBTSTFJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1Ua2lJSEk5SWpFaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2dyaXAtdmVydGljYWxcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBHcmlwVmVydGljYWwgPSBjcmVhdGVMdWNpZGVJY29uKCdHcmlwVmVydGljYWwnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdmN0Z2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICdocDB0Y2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZmtqamY2JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdG1haWonIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnMTlsMjhlJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdmNHpvajMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaXBWZXJ0aWNhbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVJvdW5kXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTQxT0RZZ01UY3VOREUwUVRJZ01pQXdJREFnTUNBeUlERTRMamd5T0ZZeU1XRXhJREVnTUNBd0lEQWdNU0F4YUROaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhREZoTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFDNHhOekpoTWlBeUlEQWdNQ0F3SURFdU5ERTBMUzQxT0Rac0xqZ3hOQzB1T0RFMFlUWXVOU0EyTGpVZ01DQXhJREF0TkMwMGVpSWdMejRLSUNBOFkybHlZMnhsSUdONFBTSXhOaTQxSWlCamVUMGlOeTQxSWlCeVBTSXVOU0lnWm1sc2JEMGlZM1Z5Y21WdWRFTnZiRzl5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5LXJvdW5kXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5Um91bmQgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXlSb3VuZCcsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHonLFxuICAgICAga2V5OiAnMXM2dDd0JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNi41JywgY3k6ICc3LjUnLCByOiAnLjUnLCBmaWxsOiAnY3VycmVudENvbG9yJywga2V5OiAndzBla3BnJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXlSb3VuZDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1heGltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNbll6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNFZqVmhNaUF5SURBZ01DQXdMVEl0TW1ndE15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObll6WVRJZ01pQXdJREFnTUNBeUlESm9NeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGb00yRXlJRElnTUNBd0lEQWdNaTB5ZGkweklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21heGltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWF4aW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNYXhpbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM0g1YTIgMiAwIDAgMC0yIDJ2MycsIGtleTogJzFkY21pdCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4VjVhMiAyIDAgMCAwLTItMmgtMycsIGtleTogJzFlNGd0MycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2djNhMiAyIDAgMCAwIDIgMmgzJywga2V5OiAnd3NsNXNjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxaDNhMiAyIDAgMCAwIDItMnYtMycsIGtleTogJzE4dHJlaycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWF4aW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNaW5pbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBemRqTmhNaUF5SURBZ01DQXhMVElnTWtneklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRhQzB6WVRJZ01pQXdJREFnTVMweUxUSldNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm1nellUSWdNaUF3SURBZ01TQXlJREoyTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRjJMVE5oTWlBeUlEQWdNQ0F4SURJdE1tZ3pJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9taW5pbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1pbmltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWluaW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDN2M2EyIDIgMCAwIDEtMiAySDMnLCBrZXk6ICdob2hidHInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOGgtM2EyIDIgMCAwIDEtMi0yVjMnLCBrZXk6ICc1ancxZjMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2MycsIGtleTogJzE5OHR2cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMXYtM2EyIDIgMCAwIDEgMi0yaDMnLCBrZXk6ICdwaDhteHAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZURvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhPRXd4TWlBeU1rd3hOaUF4T0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZURvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggMThMMTIgMjJMMTYgMTgnLCBrZXk6ICdjc2t2ZnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZURvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQTJUREV5SURKTU1UWWdOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZVVwID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZVVwJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCA2TDEyIDJMMTYgNicsIGtleTogJzF5dmt5eCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRDbG9zZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTJJREUxTFRNdE15QXpMVE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdENsb3NlID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0Q2xvc2UnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTYgMTUtMy0zIDMtMycsIGtleTogJzE0eTk5eicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0Q2xvc2U7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRPcGVuXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMElEa2dNeUF6TFRNZ015SWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LW9wZW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRPcGVuID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0T3BlbicsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNCA5IDMgMy0zIDMnLCBrZXk6ICc4MDEwZWUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdE9wZW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5PZmZcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRVZ09TNHpORlkzWVRFZ01TQXdJREFnTVNBeExURWdNaUF5SURBZ01DQXdJREF0TkVnM0xqZzVJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHlJRElnTWpBZ01qQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUa2dPWFl4TGpjMllUSWdNaUF3SURBZ01TMHhMakV4SURFdU56bHNMVEV1TnpndU9VRXlJRElnTUNBd0lEQWdOU0F4TlM0eU5GWXhObUV4SURFZ01DQXdJREFnTVNBeGFERXhJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW4tb2ZmXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluT2ZmID0gY3JlYXRlTHVjaWRlSWNvbignUGluT2ZmJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNSA5LjM0VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDcuODknLCBrZXk6ICd6bnduenEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMiAyIDIwIDIwJywga2V5OiAnMW9vZXd5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgOXYxLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDExJyxcbiAgICAgIGtleTogJ2M5cWhtMicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5PZmY7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1NBeE1DNDNObUV5SURJZ01DQXdJREV0TVM0eE1TQXhMamM1YkMweExqYzRMamxCTWlBeUlEQWdNQ0F3SURVZ01UVXVNalJXTVRaaE1TQXhJREFnTUNBd0lERWdNV2d4TW1FeElERWdNQ0F3SURBZ01TMHhkaTB1TnpaaE1pQXlJREFnTUNBd0xURXVNVEV0TVM0M09Xd3RNUzQzT0MwdU9VRXlJRElnTUNBd0lERWdNVFVnTVRBdU56WldOMkV4SURFZ01DQXdJREVnTVMweElESWdNaUF3SURBZ01DQXdMVFJJT0dFeUlESWdNQ0F3SURBZ01DQTBJREVnTVNBd0lEQWdNU0F4SURGNklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BpblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BpbicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAxMC43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0uNzZhMiAyIDAgMCAwLTEuMTEtMS43OWwtMS43OC0uOUEyIDIgMCAwIDEgMTUgMTAuNzZWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRIOGEyIDIgMCAwIDAgMCA0IDEgMSAwIDAgMSAxIDF6JyxcbiAgICAgIGtleTogJzFua3o4YicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBUYWJsZTJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9TQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWTBiVFl0Tm1neE1HRXlJRElnTUNBd0lERWdNaUF5ZGpSTk9TQXpkakU0YlRBZ01HZ3hNR0V5SURJZ01DQXdJREFnTWkweVZqbE5PU0F5TVVnMVlUSWdNaUF3SURBZ01TMHlMVEpXT1cwd0lEQm9NVGdpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdGFibGUtMlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFRhYmxlMiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1RhYmxlMicsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgM0g1YTIgMiAwIDAgMC0yIDJ2NG02LTZoMTBhMiAyIDAgMCAxIDIgMnY0TTkgM3YxOG0wIDBoMTBhMiAyIDAgMCAwIDItMlY5TTkgMjFINWEyIDIgMCAwIDEtMi0yVjltMCAwaDE4JyxcbiAgICAgIGtleTogJ2d1Z2o4MycsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBUYWJsZTI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBYXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVGdnTmlBMklERTRJaUF2UGdvZ0lEeHdZWFJvSUdROUltMDJJRFlnTVRJZ01USWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy94XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgWCA9IGNyZWF0ZUx1Y2lkZUljb24oJ1gnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOCA2IDYgMTgnLCBrZXk6ICcxYmw1ZjgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtNiA2IDEyIDEyJywga2V5OiAnZDhiazZ2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBYO1xuIiwgImltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYmFkZ2VWYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtcHgtMi41IHBzLXB5LTAuNSBwcy10ZXh0LXhzIHBzLWZvbnQtc2VtaWJvbGQgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMiBmb2N1czpwcy1yaW5nLXJpbmcgZm9jdXM6cHMtcmluZy1vZmZzZXQtMlwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS84MFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzgwXCIsXG4gICAgICAgIG91dGxpbmU6IFwicHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCYWRnZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBWYXJpYW50UHJvcHM8dHlwZW9mIGJhZGdlVmFyaWFudHM+IHt9XG5cbmZ1bmN0aW9uIEJhZGdlKHsgY2xhc3NOYW1lLCB2YXJpYW50LCAuLi5wcm9wcyB9OiBCYWRnZVByb3BzKSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oYmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59XG5cbmV4cG9ydCB7IEJhZGdlLCBiYWRnZVZhcmlhbnRzIH07XG4iLCAiaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzkwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOiBcInBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvOTBcIixcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICBcInBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZ2hvc3Q6IFwiaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgbGluazogXCJwcy10ZXh0LXByaW1hcnkgcHMtdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnBzLXVuZGVybGluZVwiLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1oLTkgcHMtcHgtNCBwcy1weS0yXCIsXG4gICAgICAgIHhzOiBcInBzLWgtNiBwcy1yb3VuZGVkLW1kIHBzLXB4LTIgcHMtdGV4dC14c1wiLFxuICAgICAgICBzbTogXCJwcy1oLTggcHMtcm91bmRlZC1tZCBwcy1weC0zIHBzLXRleHQteHNcIixcbiAgICAgICAgbGc6IFwicHMtaC0xMCBwcy1yb3VuZGVkLW1kIHBzLXB4LThcIixcbiAgICAgICAgaWNvbjogXCJwcy1oLTkgcHMtdy05XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICAgIHNpemU6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvblByb3BzXG4gIGV4dGVuZHMgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgYnV0dG9uVmFyaWFudHM+IHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQsIEJ1dHRvblByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCB2YXJpYW50LCBzaXplLCBhc0NoaWxkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG4gICAgcmV0dXJuIDxDb21wIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfSByZWY9e3JlZn0gey4uLnByb3BzfSAvPjtcbiAgfSxcbik7XG5CdXR0b24uZGlzcGxheU5hbWUgPSBcIkJ1dHRvblwiO1xuXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH07XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBQb3BvdmVyID0gUG9wb3ZlclByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBQb3BvdmVyVHJpZ2dlciA9IFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgUG9wb3ZlckFuY2hvciA9IFBvcG92ZXJQcmltaXRpdmUuQW5jaG9yO1xuXG5jb25zdCBQb3BvdmVyQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLXctNzIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTQgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIHBzLW91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblBvcG92ZXJDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyVHJpZ2dlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJBbmNob3IgfTtcbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVJbnNlcnQoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImluc2VydFwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuaW5zZXJ0KHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0LCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKG5ld0RhdGEpIHtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhPEFkYXB0ZXJRdWVyeVJlc3VsdD4oXG4gICAgICAgIHtcbiAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgLy8gaGVyZSB3ZSBwYXJ0aWFsbHkgbWF0Y2ggdGhlIHF1ZXJ5IGtleSB0byBnZXQgdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgICB9LFxuICAgICAgICAob2xkRGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChvbGREYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvbGREYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vbGREYXRhLFxuICAgICAgICAgICAgcm93czogWy4uLm5ld0RhdGEucm93cywgLi4ub2xkRGF0YS5yb3dzXSxcbiAgICAgICAgICB9IHNhdGlzZmllcyBBZGFwdGVyUXVlcnlSZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IFJlYWN0UXVlcnlEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3Nvbm5lclwiO1xuaW1wb3J0IHsgTnVxc0hhc2hBZGFwdGVyIH0gZnJvbSBcIi4vTnVxc0hhc2hBZGFwdGVyXCI7XG5pbXBvcnQgeyBTdHVkaW9UZWxlbWV0cnlFdmVudCB9IGZyb20gXCIuL1N0dWRpb1wiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgc2V0QWN0aXZlVGFibGU6ICh0YWJsZTogVGFibGUgfCBudWxsKSA9PiB2b2lkO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBlbWl0VGVsZW1ldHJ5RXZlbnQ6IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbiAgLy8gVUkgc3RhdGVcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB0b2dnbGVGdWxsc2NyZWVuOiAoKSA9PiB2b2lkO1xuICBpc05hdmlnYXRpb25PcGVuOiBib29sZWFuO1xuICB0b2dnbGVOYXZpZ2F0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG4vKipcbiAqIENvbnRleHQgZm9yIHNoYXJpbmcgU3R1ZGlvIHN0YXRlIGFjcm9zcyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IFN0dWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PFN0dWRpb0NvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufT47XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9Db250ZXh0UHJvdmlkZXIocHJvcHM6IFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlXSA9IHVzZVN0YXRlPFRhYmxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtpc0Z1bGxzY3JlZW4sIHNldElzRnVsbHNjcmVlbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc05hdmlnYXRpb25PcGVuLCBzZXRJc05hdmlnYXRpb25PcGVuXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gIGxldCBvbkVycm9yID0gcHJvcHMub25FcnJvcjtcbiAgb25FcnJvciA/Pz0gKGVycm9yOiBFcnJvcikgPT4gdG9hc3QuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG5cbiAgY29uc3QgZW1pdFRlbGVtZXRyeUV2ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzLm9uVGVsZW1ldHJ5RXZlbnQgPz8gKCgpID0+IHt9KTtcbiAgfSwgW3Byb3BzLm9uVGVsZW1ldHJ5RXZlbnRdKTtcblxuICBjb25zdCB0b2dnbGVGdWxsc2NyZWVuID0gKCkgPT4gc2V0SXNGdWxsc2NyZWVuKChwcmV2KSA9PiAhcHJldik7XG4gIGNvbnN0IHRvZ2dsZU5hdmlnYXRpb24gPSAoKSA9PiBzZXRJc05hdmlnYXRpb25PcGVuKChwcmV2KSA9PiAhcHJldik7XG4gIHJldHVybiAoXG4gICAgPFF1ZXJ5Q2xpZW50UHJvdmlkZXIgY2xpZW50PXtxdWVyeUNsaWVudH0+XG4gICAgICA8UmVhY3RRdWVyeURldnRvb2xzIC8+XG4gICAgICA8VG9hc3RlciAvPlxuICAgICAgPE51cXNIYXNoQWRhcHRlcj5cbiAgICAgICAgPFN0dWRpb0NvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgLi4ub3RoZXJQcm9wcyxcbiAgICAgICAgICAgIGFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgaXNGdWxsc2NyZWVuLFxuICAgICAgICAgICAgc2V0QWN0aXZlVGFibGUsXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgZW1pdFRlbGVtZXRyeUV2ZW50LFxuICAgICAgICAgICAgdG9nZ2xlRnVsbHNjcmVlbixcbiAgICAgICAgICAgIGlzTmF2aWdhdGlvbk9wZW4sXG4gICAgICAgICAgICB0b2dnbGVOYXZpZ2F0aW9uLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R1ZGlvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvTnVxc0hhc2hBZGFwdGVyPlxuICAgIDwvUXVlcnlDbGllbnRQcm92aWRlcj5cbiAgKTtcbn1cblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyBTdHVkaW8gY29udGV4dFxuICogQHRocm93cyBFcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgU3R1ZGlvLlByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdHVkaW8oKTogU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoU3R1ZGlvQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiYHVzZVN0dWRpb2AgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBTdHVkaW9Db250ZXh0LlByb3ZpZGVyYFwiKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scyB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHtcbiAgRGV2dG9vbHNCdXR0b25Qb3NpdGlvbixcbiAgRGV2dG9vbHNFcnJvclR5cGUsXG4gIERldnRvb2xzUG9zaXRpb24sXG59IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGxvZ28gdG8gb3BlbiBhbmQgY2xvc2UgdGhlIGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbS1yaWdodCcuXG4gICAqL1xuICBidXR0b25Qb3NpdGlvbj86IERldnRvb2xzQnV0dG9uUG9zaXRpb25cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20nLlxuICAgKi9cbiAgcG9zaXRpb24/OiBEZXZ0b29sc1Bvc2l0aW9uXG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzKFxuICBwcm9wczogRGV2dG9vbHNPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHtcbiAgICBidXR0b25Qb3NpdGlvbixcbiAgICBwb3NpdGlvbixcbiAgICBpbml0aWFsSXNPcGVuLFxuICAgIGVycm9yVHlwZXMsXG4gICAgc3R5bGVOb25jZSxcbiAgICBzaGFkb3dET01UYXJnZXQsXG4gIH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29scyh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChidXR0b25Qb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0QnV0dG9uUG9zaXRpb24oYnV0dG9uUG9zaXRpb24pXG4gICAgfVxuICB9LCBbYnV0dG9uUG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0UG9zaXRpb24ocG9zaXRpb24pXG4gICAgfVxuICB9LCBbcG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEluaXRpYWxJc09wZW4oaW5pdGlhbElzT3BlbiB8fCBmYWxzZSlcbiAgfSwgW2luaXRpYWxJc09wZW4sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gPGRpdiBkaXI9XCJsdHJcIiBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIiByZWY9e3JlZn0+PC9kaXY+XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCByZW5kZXIsIGxhenksIHNldHVwU3R5bGVTaGVldCwgY3JlYXRlQ29tcG9uZW50LCBtZXJnZVByb3BzIH0gZnJvbSAnLi9jaHVuay9IUjdZWFo1SC5qcyc7XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHMudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0XG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc0NvbXBvbmVudC9DUElPWlM1WC5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbC50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNvbkNsb3NlO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlXG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgICB0aGlzLiNvbkNsb3NlID0gY3JlYXRlU2lnbmFsKG9uQ2xvc2UpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIHNldE9uQ2xvc2Uob25DbG9zZSkge1xuICAgIHRoaXMuI29uQ2xvc2VbMV0oKCkgPT4gb25DbG9zZSk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgY29uc3QgW29uQ2xvc2VdID0gdGhpcy4jb25DbG9zZTtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzUGFuZWxDb21wb25lbnQvT0tGNkU0NVIuanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25DbG9zZSgpIHtcbiAgICAgICAgICByZXR1cm4gb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMsIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH07XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IERldnRvb2xzRXJyb3JUeXBlIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc1BhbmVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxuXG4gIC8qKlxuICAgKiBDdXN0b20gc3R5bGVzIGZvciB0aGUgZGV2dG9vbHMgcGFuZWxcbiAgICogQGRlZmF1bHQgeyBoZWlnaHQ6ICc1MDBweCcgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9XG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgZGV2dG9vbHMgcGFuZWwgaXMgY2xvc2VkXG4gICAqL1xuICBvbkNsb3NlPzogKCkgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzUGFuZWwoXG4gIHByb3BzOiBEZXZ0b29sc1BhbmVsT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IGVycm9yVHlwZXMsIHN0eWxlTm9uY2UsIHNoYWRvd0RPTVRhcmdldCB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBpbml0aWFsSXNPcGVuOiB0cnVlLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlOiBwcm9wcy5vbkNsb3NlLFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0T25DbG9zZShwcm9wcy5vbkNsb3NlID8/ICgoKSA9PiB7fSkpXG4gIH0sIFtwcm9wcy5vbkNsb3NlLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBoZWlnaHQ6ICc1MDBweCcsIC4uLnByb3BzLnN0eWxlIH19XG4gICAgICBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIlxuICAgICAgcmVmPXtyZWZ9XG4gICAgPjwvZGl2PlxuICApXG59XG4iLCAiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAqIGFzIERldnRvb2xzIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzJ1xuaW1wb3J0ICogYXMgRGV2dG9vbHNQYW5lbCBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzOiAodHlwZW9mIERldnRvb2xzKVsnUmVhY3RRdWVyeURldnRvb2xzJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHMuUmVhY3RRdWVyeURldnRvb2xzXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbDogKHR5cGVvZiBEZXZ0b29sc1BhbmVsKVsnUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29sc1BhbmVsLlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsXG4iLCAiaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIgfSBmcm9tIFwic29ubmVyXCI7XG5cbi8vIGltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkAvdWkvc3R1ZGlvL3V0aWwvdGhlbWUtcHJvdmlkZXJcIjtcblxudHlwZSBUb2FzdGVyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgU29ubmVyPjtcblxuY29uc3QgVG9hc3RlciA9ICh7IC4uLnByb3BzIH06IFRvYXN0ZXJQcm9wcykgPT4ge1xuICAvLyBjb25zdCB7IHRoZW1lID0gXCJzeXN0ZW1cIiB9ID0gdXNlVGhlbWUoKTtcblxuICByZXR1cm4gKFxuICAgIDxTb25uZXJcbiAgICAgIC8vIHRoZW1lPXt0aGVtZSBhcyBUb2FzdGVyUHJvcHNbXCJ0aGVtZVwiXX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXRvYXN0ZXIgcHMtZ3JvdXBcIlxuICAgICAgdG9hc3RPcHRpb25zPXt7XG4gICAgICAgIGNsYXNzTmFtZXM6IHtcbiAgICAgICAgICB0b2FzdDpcbiAgICAgICAgICAgIFwiZ3JvdXAgdG9hc3QgZ3JvdXAtWy50b2FzdGVyXTpiZy1iYWNrZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06dGV4dC1mb3JlZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06Ym9yZGVyLWJvcmRlciBncm91cC1bLnRvYXN0ZXJdOnNoYWRvdy1sZ1wiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGFjdGlvbkJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1wcmltYXJ5IGdyb3VwLVsudG9hc3RdOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLW11dGVkIGdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICB9LFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RlciB9O1xuIiwgImltcG9ydCB7XG4gIHVuc3RhYmxlX0FkYXB0ZXJPcHRpb25zIGFzIEFkYXB0ZXJPcHRpb25zLFxuICB1bnN0YWJsZV9jcmVhdGVBZGFwdGVyUHJvdmlkZXIgYXMgY3JlYXRlQWRhcHRlclByb3ZpZGVyLFxufSBmcm9tIFwibnVxcy9hZGFwdGVycy9jdXN0b21cIjtcbmltcG9ydCB7IEZDLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdHlwZSB7IGRlZmF1bHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBIb29rIHRoYXQgTnVxcyB3aWxsIGNhbGwgdG8gcmVhZCAmIHdyaXRlIFVSTCBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gdXNlSGFzaEFkYXB0ZXIoKSB7XG4gIC8vIHJlYWQgY3VycmVudCBzdGF0ZSBmcm9tIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIFx1MjAxQyNcdTIwMURcbiAgY29uc3QgcmF3SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICBjb25zdCBbaGFzaFBhcmFtcywgc2V0SGFzaFBhcmFtc10gPSB1c2VTdGF0ZShuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcblxuICAvLyB3cml0ZSBuZXcgc3RhdGUgYmFjayBpbnRvIHRoZSBoYXNoIGZyYWdtZW50XG4gIGZ1bmN0aW9uIHVwZGF0ZVVybCh1cGRhdGVkOiBVUkxTZWFyY2hQYXJhbXMsIHsgaGlzdG9yeSB9OiBBZGFwdGVyT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IGhhc2ggPSB1cGRhdGVkLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgdXJsID0gYCR7cGF0aG5hbWV9JHtzZWFyY2h9IyR7aGFzaH1gO1xuXG4gICAgaWYgKGhpc3RvcnkgPT09IFwicHVzaFwiKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfVxuXG4gICAgc2V0SGFzaFBhcmFtcyh1cGRhdGVkKTtcbiAgfVxuXG4gIC8vIGV4cG9zZSBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHBhcmFtc1xuICBmdW5jdGlvbiBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCgpIHtcbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcblxuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHJhdyk7XG4gIH1cblxuICAvLyBzeW5jIHN0YXRlIHdoZW4gdXNlciBuYXZpZ2F0ZXMgdmlhIGJyb3dzZXIgY29udHJvbHMgb3IgZXh0ZXJuYWwgc2NyaXB0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZSgpIHtcbiAgICAgIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgICAgIHNldEhhc2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IHNlYXJjaFBhcmFtczogaGFzaFBhcmFtcywgdXBkYXRlVXJsLCBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCB9O1xufVxuXG4vKipcbiAqIFRoZSBhZGFwdGVyIHByb3ZpZGVyIGNvbXBvbmVudCB5b3Ugd3JhcCB5b3VyIGFwcCBpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE51cXNIYXNoQWRhcHRlciA9IGNyZWF0ZUFkYXB0ZXJQcm92aWRlcih1c2VIYXNoQWRhcHRlcikgYXMgRkM8UHJvcHNXaXRoQ2hpbGRyZW4+O1xuIiwgImltcG9ydCB7IGluZmVyUm93RmlsdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuZnVuY3Rpb24gZ2V0Um93SWQocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IGlkID0ge1xuICAgIGZpbHRlcjogaW5mZXJSb3dGaWx0ZXIocm93LCB0YWJsZS5jb2x1bW5zKSxcbiAgICB0YWJsZTogYCR7dGFibGUuc2NoZW1hfS4ke3RhYmxlLm5hbWV9YCxcbiAgfTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaWQpO1xufVxuXG5mdW5jdGlvbiBhZGRSb3dJZFRvUm93KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICByZXR1cm4geyAuLi5yb3csIF9fcHNfcm93aWQ6IGdldFJvd0lkKHJvdywgdGFibGUpIH07XG59XG5cbnR5cGUgQWRhcHRlclJlc3VsdCA9IHtcbiAgcm93PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJvd3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd0lkVG9SZXN1bHQ8VCBleHRlbmRzIEFkYXB0ZXJSZXN1bHQ+KHJlc3VsdDogVCwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IHsgcm93LCByb3dzIH0gPSByZXN1bHQ7XG5cbiAgaWYgKHJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3c6IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkgfTtcbiAgfVxuICBpZiAocm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3dzOiByb3dzLm1hcCgocm93KSA9PiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEZpbHRlckdyb3VwLCBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMge1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHByb3BzOiBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMpIHtcbiAgY29uc3QgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIGZpbHRlciB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBlbmFibGVkOiBCb29sZWFuKGFjdGl2ZVRhYmxlKSxcbiAgICBnY1RpbWU6IDAsXG4gICAgcGxhY2Vob2xkZXJEYXRhKHByZXZpb3VzRGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkLCBwcmV2aW91c1F1ZXJ5KSB7XG4gICAgICBjb25zdCBbLCBzY2hlbWEsICwgdGFibGVdID0gcHJldmlvdXNRdWVyeT8ucXVlcnlLZXkgfHwgW107XG5cbiAgICAgIGlmIChzY2hlbWEgIT09IGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgdGFibGUgIT09IGFjdGl2ZVRhYmxlPy5uYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0YTtcbiAgICB9LFxuICAgIGFzeW5jIHF1ZXJ5Rm4oeyBzaWduYWwgfSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGFkYXB0ZXIucXVlcnkoXG4gICAgICAgIHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCB0YWJsZTogYWN0aXZlVGFibGUhLCBmaWx0ZXIgfSxcbiAgICAgICAgeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdHMsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1xuICAgICAgXCJzY2hlbWFcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgbnVsbCxcbiAgICAgIFwidGFibGVcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5uYW1lIHx8IG51bGwsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInNvcnRPcmRlclwiLFxuICAgICAgc29ydE9yZGVyLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgfHwgXCJuYXR1cmFsXCIsXG4gICAgICBcInBhZ2VJbmRleFwiLFxuICAgICAgcGFnZUluZGV4LFxuICAgICAgXCJwYWdlU2l6ZVwiLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBcImZpbHRlclwiLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSxcbiAgICBdLFxuICAgIHN0YWxlVGltZTogSW5maW5pdHksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHR5cGUgUXVlcnlDbGllbnQsIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzLCBBZGFwdGVyVXBkYXRlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBpbmZlclJvd0ZpbHRlciB9IGZyb20gXCIuLi8uLi9kYXRhL3F1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcyB7XG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzO1xuICBvcHRpb25zOiBBZGFwdGVyVXBkYXRlT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHF1ZXJ5S2V5UHJlZml4ID0gW1wic2NoZW1hXCIsIGFjdGl2ZVRhYmxlPy5zY2hlbWEgPz8gbnVsbCwgXCJ0YWJsZVwiLCBhY3RpdmVUYWJsZT8ubmFtZSA/PyBudWxsXSBhcyBjb25zdDtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChwYXJhbXM6IFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLnVwZGF0ZShwYXJhbXMuZGV0YWlscywgcGFyYW1zLm9wdGlvbnMpO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBtdXRhdGlvbktleTogWy4uLnF1ZXJ5S2V5UHJlZml4LCBcInVwZGF0ZVwiXSxcbiAgICBvbkVycm9yKGVycm9yLCBwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgb25FcnJvcihlcnJvcik7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIHJldmVydENoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNhY2hlZFJvdyxcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKGNoYW5nZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKG9yaWdpbmFsVmFsdWVzLCBjb2x1bW5OYW1lKSA9PiAoeyAuLi5vcmlnaW5hbFZhbHVlcywgW2NvbHVtbk5hbWVdOiByb3dbY29sdW1uTmFtZV0gfSksXG4gICAgICAgICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbk11dGF0ZShwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgZGV0YWlscyB9ID0gcGFyYW1zO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IHJvdzogdW5jaGFuZ2VkUm93IH0gPSBkZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIodW5jaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4uZGV0YWlscy5jaGFuZ2VzIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhyZXN1bHQsIHBhcmFtcykge1xuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlSZWFsRGF0YVdoZW5GcmVzaGVyKGNhY2hlZFJvdykge1xuICAgICAgICAgIGNvbnN0IHsgX19wc191cGRhdGVkX2F0X18gfSA9IGNhY2hlZFJvdztcbiAgICAgICAgICBjb25zdCB7IHJvdyB9ID0gcmVzdWx0O1xuXG4gICAgICAgICAgLy8gcmVzdWx0IHJvdyBpcyBzdGFsZS5cbiAgICAgICAgICBpZiAoX19wc191cGRhdGVkX2F0X18gIT0gbnVsbCAmJiByb3cuX19wc191cGRhdGVkX2F0X18gPD0gX19wc191cGRhdGVkX2F0X18pIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSb3c7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5yb3cgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlQ2FjaGVkUm93KHBhcmFtczoge1xuICBnZXRGaW5kZXJGbjogKCkgPT4gKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgdXBkYXRlckZuOiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudDtcbn0pIHtcbiAgY29uc3QgeyBnZXRGaW5kZXJGbiwgcXVlcnlDbGllbnQsIHRhYmxlLCB1cGRhdGVyRm4gfSA9IHBhcmFtcztcblxuICBsZXQgZmluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGaW5kZXJGbj47XG5cbiAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGEoXG4gICAgeyBleGFjdDogZmFsc2UsIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgdGFibGUuc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLm5hbWUsIFwicXVlcnlcIl0gfSxcbiAgICAoY2FjaGVkUmVzdWx0OiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgeyByb3dzOiBjYWNoZWRSb3dzID0gW10gfSA9IGNhY2hlZFJlc3VsdCB8fCB7fTtcblxuICAgICAgaWYgKGNhY2hlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhY2hlZFJvd0luZGV4ID0gY2FjaGVkUm93cy5maW5kSW5kZXgoKGZpbmRlciA/Pz0gZ2V0RmluZGVyRm4oKSkpO1xuXG4gICAgICBpZiAoY2FjaGVkUm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1JvdyA9IHVwZGF0ZXJGbihjYWNoZWRSb3dzW2NhY2hlZFJvd0luZGV4XSEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jYWNoZWRSZXN1bHQhLFxuICAgICAgICByb3dzOiBbLi4uY2FjaGVkUm93cy5zbGljZSgwLCBjYWNoZWRSb3dJbmRleCksIG5ld1JvdywgLi4uY2FjaGVkUm93cy5zbGljZShjYWNoZWRSb3dJbmRleCArIDEpXSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbXSxcbiAgYWZ0ZXI6IFwiYW5kXCIsXG4gIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxufTtcblxuY29uc3QgY291bnRGaWx0ZXJzUmVjdXJzaXZlID0gKGZpbHRlckdyb3VwOiBGaWx0ZXJHcm91cCk6IG51bWJlciA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlckdyb3VwLmZpbHRlcnMpIHtcbiAgICBpZiAoZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIC8vIE9ubHkgY291bnQgZmlsdGVycyB0aGF0IGhhdmUgYSBub24tZW1wdHkgY29sdW1uIHNlbGVjdGVkXG4gICAgICBpZiAoZmlsdGVyLmNvbHVtbi50cmltKCkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbHRlci5raW5kID09PSBcIkZpbHRlckdyb3VwXCIpIHtcbiAgICAgIGNvdW50ICs9IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShmaWx0ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlsdGVyaW5nKCkge1xuICBjb25zdCBbZmlsdGVyUGFyYW0sIHNldEZpbHRlclBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJmaWx0ZXJcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogSlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpbHRlciksXG4gIH0pO1xuXG4gIGNvbnN0IGFwcGxpZWRGaWx0ZXIgPSB1c2VNZW1vKCgpID0+IEpTT04ucGFyc2UoZmlsdGVyUGFyYW0pIGFzIEZpbHRlckdyb3VwLCBbZmlsdGVyUGFyYW1dKTtcbiAgY29uc3Qgc2V0QXBwbGllZEZpbHRlciA9IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkIHNldEZpbHRlclBhcmFtKEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xuXG4gIGNvbnN0IFtlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyXSA9IHVzZVN0YXRlPEZpbHRlckdyb3VwPihhcHBsaWVkRmlsdGVyKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gIH0sIFthcHBsaWVkRmlsdGVyXSk7XG5cbiAgY29uc3QgdG90YWxFZGl0aW5nRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGVkaXRpbmdGaWx0ZXIpLCBbZWRpdGluZ0ZpbHRlcl0pO1xuXG4gIHJldHVybiB7XG4gICAgYXBwbGllZEZpbHRlcixcbiAgICBzZXRBcHBsaWVkRmlsdGVyLFxuICAgIGVkaXRpbmdGaWx0ZXIsXG4gICAgc2V0RWRpdGluZ0ZpbHRlcixcbiAgICB0b3RhbEVkaXRpbmdGaWx0ZXJzLFxuICB9O1xufVxuIiwgIi8vIHdlJ3JlIGVuc3VyaW5nIHRoYXQga2V5cyBhcmUgdHlwZS1zYWZlLiB0aGVyZSBpcyBubyBwcm9wZXIgd2F5IHRvIGFjaGlldmUgaXQgaW4gYG51cXNgLlxuLy8gdGhlIGBkZWNsYXJlIG1vZHVsZWAgdGVjaG5pcXVlIHJlc3VsdHMgaW4gYWRkaW5nIG92ZXJsb2Fkcywgbm90IG92ZXJyaWRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucy5cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IHtcbiAgdHlwZSBPcHRpb25zLFxuICB0eXBlIFBhcnNlcixcbiAgdXNlUXVlcnlTdGF0ZSBhcyB1c2VRdWVyeVN0YXRlT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZVJldHVybixcbiAgdXNlUXVlcnlTdGF0ZXMgYXMgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc09wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNSZXR1cm4sXG59IGZyb20gXCJudXFzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmV4cG9ydCAqIGZyb20gXCJudXFzXCI7XG5cbmV4cG9ydCB0eXBlIFN0YXRlS2V5ID0gXCJwYWdlSW5kZXhcIiB8IFwicGFnZVNpemVcIiB8IFwidGFibGVcIiB8IFwic29ydFwiIHwgXCJzY2hlbWFcIiB8IFwidGVzdFwiIHwgXCJmaWx0ZXJcIjtcblxuLy8gbGlmdGVkIGZyb20gQHByaXNtYS9jbGllbnQvcnVudGltZVxudHlwZSBFeGFjdDxBLCBXPiA9XG4gIHwgKEEgZXh0ZW5kcyB1bmtub3duXG4gICAgICA/IFcgZXh0ZW5kcyBBXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW0sgaW4ga2V5b2YgQV06IEV4YWN0PEFbS10sIFdbS10+O1xuICAgICAgICAgIH1cbiAgICAgICAgOiBXXG4gICAgICA6IG5ldmVyKVxuICB8IChBIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHwgYm9vbGVhbiB8IFtdID8gQSA6IG5ldmVyKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBrZXlNYXA8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAga2V5TWFwOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4ga2V5TWFwIGFzIG5ldmVyO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVybEtleXM8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdXJsS2V5czogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIHVybEtleXMgYXMgbmV2ZXI7XG59XG5cbmNvbnN0IF9CUkFORF9TWU1CT0wgPSBTeW1ib2woXCJCUkFORF9TWU1CT0xcIik7XG5cbnR5cGUgQnJhbmRlZEtleU1hcDxNYXA+ID0gTWFwICYge1xuICBbSyBpbiB0eXBlb2YgX0JSQU5EX1NZTUJPTF06IG5ldmVyO1xufTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPiAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IFQ7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBQaWNrPFVzZVF1ZXJ5U3RhdGVPcHRpb25zPHN0cmluZz4sIGtleW9mIE9wdGlvbnM+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5KTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSwgb3B0aW9ucz86IGFueSk6IGFueSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlT3JpZ2luYWwoa2V5LCBvcHRpb25zKTtcbn1cblxudHlwZSBVc2VRdWVyeVN0YXRlc0tleXNNYXA8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+PiA9IFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pixcbj4gPSB7XG4gIFtLZXkgaW4ga2V5b2YgTWFwXTogS2V5TWFwVmFsdWU8TWFwW0tleV0+O1xufTtcblxudHlwZSBLZXlNYXBWYWx1ZTxUeXBlPiA9IFBhcnNlcjxUeXBlPiAmXG4gIE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlPzogVHlwZTtcbiAgfTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlc09yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZXM8S2V5TWFwIGV4dGVuZHMgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPihcbiAga2V5TWFwOiBCcmFuZGVkS2V5TWFwPEtleU1hcD4sXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPFVzZVF1ZXJ5U3RhdGVzT3B0aW9uczxLZXlNYXA+Pixcbik6IFVzZVF1ZXJ5U3RhdGVzUmV0dXJuPEtleU1hcD4ge1xuICByZXR1cm4gdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbChrZXlNYXAgYXMgbmV2ZXIsIG9wdGlvbnMpO1xufVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbi8qKlxuICogSG9vayB0byBrbm93IHdoZXRoZXIgYW4gaW5zZXJ0IGlzIGN1cnJlbnRseSBvbmdvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNJbnNlcnRpbmcoKSB7XG4gIHJldHVybiB1c2VJc011dGF0aW5nKHtcbiAgICBwcmVkaWNhdGUoeyBvcHRpb25zOiB7IG11dGF0aW9uS2V5IH0gfSkge1xuICAgICAgcmV0dXJuIG11dGF0aW9uS2V5Py5bNF0gPT09IFwiaW5zZXJ0XCI7XG4gICAgfSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBPbkNoYW5nZUZuLCBQYWdpbmF0aW9uU3RhdGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBrZXlNYXAsIHBhcnNlQXNJbmRleCwgcGFyc2VBc0ludGVnZXIsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vLyBUT0RPOiBldmVudHVhbGx5IGNvbmZpZ3VyYWJsZSAvIGNvbnRyb2xsZWQgYnkgdXNlci4gYmFieSBzdGVwcy4uXG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDI1O1xuXG5jb25zdCBwYWdpbmF0aW9uUGFyc2VycyA9IGtleU1hcCh7XG4gIHBhZ2VJbmRleDogcGFyc2VBc0luZGV4LndpdGhEZWZhdWx0KDApLCAvLyB6ZXJvLWJhc2VkXG4gIHBhZ2VTaXplOiBwYXJzZUFzSW50ZWdlci53aXRoRGVmYXVsdChERUZBVUxUX1BBR0VfU0laRSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb24oKSB7XG4gIGNvbnN0IFt7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSwgc2V0UGFnaW5hdGlvbl0gPSB1c2VRdWVyeVN0YXRlcyhwYWdpbmF0aW9uUGFyc2Vycyk7XG5cbiAgLy8gQ29tcGF0aWJsZSB3aXRoIFRhblN0YWNrIFRhYmxlJ3MgT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+XG4gIGNvbnN0IHNldFBhZ2luYXRpb25TdGF0ZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+ID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXJPclZhbHVlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKChvbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHVwZGF0ZXJPclZhbHVlKG9sZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogbmV3U3RhdGUucGFnZUluZGV4LFxuICAgICAgICAgICAgcGFnZVNpemU6IG5ld1N0YXRlLnBhZ2VTaXplLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKHtcbiAgICAgICAgICBwYWdlSW5kZXg6IHVwZGF0ZXJPclZhbHVlLnBhZ2VJbmRleCxcbiAgICAgICAgICBwYWdlU2l6ZTogdXBkYXRlck9yVmFsdWUucGFnZVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFBhZ2luYXRpb25dLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgcGFnaW5hdGlvblN0YXRlOiB7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSxcbiAgICBzZXRQYWdpbmF0aW9uU3RhdGUsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVEZWxldGUgfSBmcm9tIFwiLi91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZVwiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuL3VzZS1wYWdpbmF0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3Rpb24oZGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IGlzU2VsZWN0aW5nID0gT2JqZWN0LmtleXMocm93U2VsZWN0aW9uU3RhdGUpLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgeyBtdXRhdGUgfSA9IHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KSwgW2FjdGl2ZVRhYmxlLCBwYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4XSk7XG5cbiAgZnVuY3Rpb24gZGVsZXRlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHJvd3MgPSBkYXRhPy5yb3dzLmZpbHRlcigocm93KSA9PiB7XG4gICAgICByZXR1cm4gcm93U2VsZWN0aW9uU3RhdGVbcm93Ll9fcHNfcm93aWQgYXMgc3RyaW5nXTtcbiAgICB9KTtcblxuICAgIG11dGF0ZShyb3dzID8/IFtdLCB7XG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGVTZWxlY3Rpb24sXG4gICAgc2V0Um93U2VsZWN0aW9uU3RhdGUsXG4gICAgcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgaXNTZWxlY3RpbmcsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiZGVsZXRlXCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5kZWxldGUoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgYXN5bmMgb25TdWNjZXNzKCkge1xuICAgICAgYXdhaXQgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNvcnRpbmcoKSB7XG4gIC8vIFVzZSBudXFzIHRvIG1hbmFnZSBzb3J0aW5nIHN0YXRlIGluIFVSTFxuICBjb25zdCBbc29ydFBhcmFtLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcInNvcnRcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgfSk7XG5cbiAgLy8gUGFyc2Ugc29ydGluZyBmcm9tIFVSTCBwYXJhbWV0ZXJcbiAgY29uc3QgcGFyc2VTb3J0aW5nID0gKHNvcnRQYXJhbTogc3RyaW5nIHwgbnVsbCk6IFNvcnRPcmRlckl0ZW1bXSA9PiB7XG4gICAgaWYgKCFzb3J0UGFyYW0pIHJldHVybiBbXTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQ6IGNvbHVtbjpkaXJlY3Rpb24sY29sdW1uOmRpcmVjdGlvblxuICAgICAgcmV0dXJuIHNvcnRQYXJhbVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dID0gaXRlbS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgaWYgKCFjb2x1bW4gfHwgIWRpcmVjdGlvbiB8fCAhW1wiYXNjXCIsIFwiZGVzY1wiXS5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgY29sdW1uLCBkaXJlY3Rpb246IGRpcmVjdGlvbiBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBTb3J0T3JkZXJJdGVtW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBwYXJzZSBzb3J0aW5nIHBhcmFtZXRlcjpcIiwgZSk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHN0YWJsZSBzb3J0aW5nIHN0YXRlIHRoYXQncyBkZXJpdmVkIGZyb20gVVJMIHBhcmFtZXRlcnNcbiAgY29uc3QgW3NvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlXSA9IHVzZVN0YXRlKCgpID0+IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pKTtcblxuICAvLyBLZWVwIGludGVybmFsIHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIFVSTCBwYXJhbWV0ZXJzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV3U29ydGluZ1N0YXRlID0gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSk7XG4gICAgc2V0U29ydGluZ1N0YXRlKG5ld1NvcnRpbmdTdGF0ZSk7XG4gIH0sIFtzb3J0UGFyYW1dKTtcblxuICAvLyBVcGRhdGUgVVJMIHdoZW4gc29ydGluZyBjaGFuZ2VzIGZyb20gdGhlIFVJXG4gIGNvbnN0IGhhbmRsZVNvcnRpbmdDaGFuZ2UgPSAobmV3U3RhdGU6IFNvcnRPcmRlckl0ZW1bXSB8ICgob2xkOiBTb3J0T3JkZXJJdGVtW10pID0+IFNvcnRPcmRlckl0ZW1bXSkpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdHlwZW9mIG5ld1N0YXRlID09PSBcImZ1bmN0aW9uXCIgPyBuZXdTdGF0ZShzb3J0aW5nU3RhdGUpIDogbmV3U3RhdGU7XG4gICAgc2V0U29ydGluZ1N0YXRlKHJlc29sdmVkU3RhdGUpO1xuXG4gICAgLy8gU2VyaWFsaXplIHNvcnRpbmcgc3RhdGUgdG8gVVJMIHBhcmFtZXRlclxuICAgIGNvbnN0IHNvcnRTdHJpbmcgPVxuICAgICAgcmVzb2x2ZWRTdGF0ZS5sZW5ndGggPiAwID8gcmVzb2x2ZWRTdGF0ZS5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIDogbnVsbDtcblxuICAgIHZvaWQgc2V0U29ydFBhcmFtKHNvcnRTdHJpbmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc29ydGluZ1N0YXRlLFxuICAgIHNldFNvcnRpbmdTdGF0ZTogaGFuZGxlU29ydGluZ0NoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5DZWxsIH0gZnJvbSBcIi4vQm9vbGVhbkNlbGxcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuaW1wb3J0IHsgRGF0ZUNlbGwgfSBmcm9tIFwiLi9EYXRlQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBFbnVtQ2VsbCB9IGZyb20gXCIuL0VudW1DZWxsXCI7XG5pbXBvcnQgeyBKU09OQ2VsbCB9IGZyb20gXCIuL0pTT05DZWxsXCI7XG5pbXBvcnQgeyBOdWxsQ2VsbCB9IGZyb20gXCIuL051bGxDZWxsXCI7XG5pbXBvcnQgeyBOdW1lcmljQ2VsbCB9IGZyb20gXCIuL051bWVyaWNDZWxsXCI7XG5pbXBvcnQgeyBSYXdDZWxsIH0gZnJvbSBcIi4vUmF3Q2VsbFwiO1xuaW1wb3J0IHsgVGltZUNlbGwgfSBmcm9tIFwiLi9UaW1lQ2VsbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbCh7XG4gIGNlbGwsXG4gIGNvbHVtbixcbiAgcHJvcHMsXG59OiB7XG4gIGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBjb2x1bW46IENvbHVtbjtcbiAgcHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn0pIHtcbiAgY29uc3QgdmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gPEVtcHR5Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDxOdWxsQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSBvcHRpb25zPXtvcHRpb25zfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwicmF3XCIpIHtcbiAgICBpZiAoaXNPYmplY3RUeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxKU09OQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlfSAvPjtcbiAgfVxuXG4gIGdyb3VwIHNhdGlzZmllcyBuZXZlcjtcbiAgdGhyb3cgbmV3IEVycm9yKGBEYXRhdHlwZSBncm91cCBcIiR7Z3JvdXAgYXMgc3RyaW5nfVwiIHdhcyBub3QgaGFuZGxlZCBpbiAnL2NlbGwvZ2V0LWNlbGwudHN4J2ApO1xufVxuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbkNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgQm9vbGVhbkNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogQm9vbGVhbkNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cImJvb2xlYW5cIj57U3RyaW5nKEJvb2xlYW4odmFsdWUpKX08L2Rpdj5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkJvb2xlYW5DZWxsLmRpc3BsYXlOYW1lID0gXCJCb29sZWFuQ2VsbFwiO1xuXG5leHBvcnQgeyBCb29sZWFuQ2VsbCB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtdy1mdWxsIHBzLW92ZXJmbG93LWF1dG8gcHMtZmxleCBwcy1pdGVtcy1zdGFydCBwcy1oLWZ1bGxcIj5cbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLXctZnVsbCBwcy1jYXB0aW9uLWJvdHRvbSBwcy10ZXh0LXNtXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcblxuY29uc3QgVGFibGVIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRoZWFkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZGVyXCI7XG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRib2R5IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwiWyZfdHI6bGFzdC1jaGlsZF06cHMtYm9yZGVyLTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCI7XG5cbmNvbnN0IFRhYmxlRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGZvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWJvcmRlci10IHBzLWJnLW11dGVkLzUwIHBzLWZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OnBzLWJvcmRlci1iLTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiO1xuXG5jb25zdCBUYWJsZVJvdyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlUm93RWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0clxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWJvcmRlci1iIHBzLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOnBzLWJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpwcy1iZy1tdXRlZFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlUm93XCI7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRoSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGhcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtMTAgcHMtcHgtMiBwcy10ZXh0LWxlZnQgcHMtYWxpZ24tbWlkZGxlIHBzLWZvbnQtbWVkaXVtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRcIjtcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtYWxpZ24tbWlkZGxlXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIjtcblxuY29uc3QgVGFibGVDYXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8Y2FwdGlvbiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLW10LTQgcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9IFwiVGFibGVDYXB0aW9uXCI7XG5cbmV4cG9ydCB7IFRhYmxlLCBUYWJsZUhlYWRlciwgVGFibGVCb2R5LCBUYWJsZUZvb3RlciwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGFibGVDZWxsLCBUYWJsZUNhcHRpb24gfTtcbiIsICJpbXBvcnQgeyBDb3B5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbnRleHRNZW51LCBDb250ZXh0TWVudUNvbnRlbnQsIENvbnRleHRNZW51SXRlbSwgQ29udGV4dE1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxvYmplY3Q+O1xuXG4vLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGludmVyc2lmaWVkIC0gdG8gbWFrZSBpdCBleHRlbnNpYmxlLCBhbmQgYWRhcHRhYmxlIHRvIGRpZmZlcmVudCBzaXR1YXRpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkQ2VsbENvbnRleHRNZW51KHByb3BzOiBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRNZW51PlxuICAgICAgPENvbnRleHRNZW51VHJpZ2dlciBjbGFzc05hbWU9XCJwcy1ibG9jayBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRleHRNZW51VHJpZ2dlcj5cbiAgICAgIDxDb250ZXh0TWVudUNvbnRlbnQ+XG4gICAgICAgIDxDb250ZXh0TWVudUl0ZW1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZXh0cmFjdFRleHRDb250ZW50KGNoaWxkcmVuKTtcbiAgICAgICAgICAgIHZvaWQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQ6XCIsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPENvcHkgc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgQ29weVxuICAgICAgICA8L0NvbnRleHRNZW51SXRlbT5cbiAgICAgIDwvQ29udGV4dE1lbnVDb250ZW50PlxuICAgIDwvQ29udGV4dE1lbnU+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUZXh0Q29udGVudChub2RlOiBSZWFjdE5vZGUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIFN0cmluZyhub2RlKTtcbiAgfVxuXG4gIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgY29uc3QgcHJvcHMgPSBub2RlLnByb3BzIGFzIHsgdGV4dD86IHN0cmluZzsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIC8vIEhhbmRsZSBSZXZlYWxUZXh0IGNvbXBvbmVudCBzcGVjaWZpY2FsbHlcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJSZXZlYWxUZXh0XCIpIHtcbiAgICAgIHJldHVybiBwcm9wcy50ZXh0IHx8IFwiXCI7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIE51bGxWYWx1ZSBjb21wb25lbnRcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJOdWxsVmFsdWVcIikge1xuICAgICAgcmV0dXJuIFwiTlVMTFwiO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIGNoaWxkcmVuXG4gICAgaWYgKHByb3BzLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdFRleHRDb250ZW50KHByb3BzLmNoaWxkcmVuIGFzIFJlYWN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIHJldHVybiBub2RlLm1hcChleHRyYWN0VGV4dENvbnRlbnQpLmpvaW4oXCJcIik7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDb250ZXh0TWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQtbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENvbnRleHRNZW51ID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQ29udGV4dE1lbnVUcmlnZ2VyID0gQ29udGV4dE1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgQ29udGV4dE1lbnVHcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVBvcnRhbCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9Hcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvIHBzLWgtNCBwcy13LTRcIiAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkNvbnRleHRNZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuQ29udGV4dE1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkNvbnRleHRNZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkNvbnRleHRNZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGQgcHMtdGV4dC1mb3JlZ3JvdW5kXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1ib3JkZXJcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKTtcbn07XG5Db250ZXh0TWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJDb250ZXh0TWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIENvbnRleHRNZW51LFxuICBDb250ZXh0TWVudVRyaWdnZXIsXG4gIENvbnRleHRNZW51Q29udGVudCxcbiAgQ29udGV4dE1lbnVJdGVtLFxuICBDb250ZXh0TWVudUNoZWNrYm94SXRlbSxcbiAgQ29udGV4dE1lbnVSYWRpb0l0ZW0sXG4gIENvbnRleHRNZW51TGFiZWwsXG4gIENvbnRleHRNZW51U2VwYXJhdG9yLFxuICBDb250ZXh0TWVudVNob3J0Y3V0LFxuICBDb250ZXh0TWVudUdyb3VwLFxuICBDb250ZXh0TWVudVBvcnRhbCxcbiAgQ29udGV4dE1lbnVTdWIsXG4gIENvbnRleHRNZW51U3ViQ29udGVudCxcbiAgQ29udGV4dE1lbnVTdWJUcmlnZ2VyLFxuICBDb250ZXh0TWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUgfSBmcm9tIFwiLi4vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENlbGwocHJvcHM6IENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxcbiAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgICAgICAvLyBcImRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctMiBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluZGlnby00MDAgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbnNldFwiLFxuICAgICAgICBcInBzLWN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICA+XG4gICAgICA8RGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+e2NoaWxkcmVufTwvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBEYXRlQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBEYXRlQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkRhdGVDZWxsLmRpc3BsYXlOYW1lID0gXCJEYXRlQ2VsbFwiO1xuXG5leHBvcnQgeyBEYXRlQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuY29uc3QgRW1wdHlDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVtcHR5Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9IC8+O1xufSk7XG5FbXB0eUNlbGwuZGlzcGxheU5hbWUgPSBcIkVtcHR5Q2VsbFwiO1xuXG5leHBvcnQgeyBFbXB0eUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3QgRW51bUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRW51bUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCBvcHRpb25zLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5FbnVtQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRW51bUNlbGxcIjtcblxuZXhwb3J0IHsgRW51bUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpTT05DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xufVxuXG5jb25zdCBKU09OQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBKU09OQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuSlNPTkNlbGwuZGlzcGxheU5hbWUgPSBcIkpTT05DZWxsXCI7XG5cbmV4cG9ydCB7IEpTT05DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdWxsQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IE51bGxDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bGxDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCI+TlVMTDwvY29kZT5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbk51bGxDZWxsLmRpc3BsYXlOYW1lID0gXCJOdWxsQ2VsbFwiO1xuXG5leHBvcnQgeyBOdWxsQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgTnVtZXJpY0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogTnVtZXJpY0NlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cIm51bWVyaWNcIj57dmFsdWUgPT09IG51bGwgPyBcIk5VTExcIiA6IFN0cmluZyh2YWx1ZSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdW1lcmljQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVtZXJpY0NlbGxcIjtcblxuZXhwb3J0IHsgTnVtZXJpY0NlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgUmF3Q2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBSYXdDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuUmF3Q2VsbC5kaXNwbGF5TmFtZSA9IFwiUmF3Q2VsbFwiO1xuXG5leHBvcnQgeyBSYXdDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBUaW1lQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBUaW1lQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblRpbWVDZWxsLmRpc3BsYXlOYW1lID0gXCJUaW1lQ2VsbFwiO1xuXG5leHBvcnQgeyBUaW1lQ2VsbCB9O1xuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RIZWFkZXJDZWxsUHJvcHMge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IFNlbGVjdEhlYWRlckNlbGwgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTZWxlY3RIZWFkZXJDZWxsUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgdGFibGUsIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBzdHlsZT17c3R5bGV9IHsuLi5yZXN0fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdy1mdWxsXCI+XG4gICAgICAgIDxDaGVja2JveFxuICAgICAgICAgIGNoZWNrZWQ9e3RhYmxlLmdldElzQWxsUm93c1NlbGVjdGVkKCl9XG4gICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+IHRhYmxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCghIXZhbHVlKX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG5TZWxlY3RIZWFkZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJTZWxlY3RIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCB7IFNlbGVjdEhlYWRlckNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCI7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1oLTQgcHMtdy00IHBzLXNocmluay0wIHBzLXJvdW5kZWQtc20gcHMtYm9yZGVyIHBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy10ZXh0LWN1cnJlbnRcIil9PlxuICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsICJpbXBvcnQgeyBSb3cgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5pbXBvcnQgeyBTZWxlY3RDZWxsIH0gZnJvbSBcIi4vU2VsZWN0Q2VsbFwiO1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RSb3dDZWxsUHJvcHMge1xuICByb3c6IFJvdzxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgU2VsZWN0Um93Q2VsbCA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFNlbGVjdFJvd0NlbGxQcm9wcz4oKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyByb3csIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3RDZWxsIHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSB7Li4ucmVzdH0+XG4gICAgICA8Q2hlY2tib3hcbiAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgZGlzYWJsZWQ9eyFyb3cuZ2V0Q2FuU2VsZWN0KCkgfHwgcmVhZG9ubHl9XG4gICAgICAgIG9uQ2hlY2tlZENoYW5nZT17cm93LmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcigpfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdENlbGw+XG4gICk7XG59KTtcblxuU2VsZWN0Um93Q2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0Um93Q2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RSb3dDZWxsIH07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwsIFRhYmxlSGVhZCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGlzSGVhZGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdENlbGwocHJvcHM6IFNlbGVjdENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIGlzSGVhZGVyID0gZmFsc2UsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICBjb25zdCBzZWxlY3RDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXVwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc0hlYWRlciA/IChcbiAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKHNlbGVjdENsYXNzZXMsIFwicHMtaC0xMCBwcy1iZy10YWJsZS1oZWFkIHBzLXotMzAgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWxlZnQtMFwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihzZWxlY3RDbGFzc2VzLCBcInBzLXotMTAgcHMtaC1bMzlweF1cIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIHNldE9wZW46IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmNvbnN0IFBvcG92ZXJDZWxsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH06IFBvcG92ZXJQcmltaXRpdmUuUG9wb3ZlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgb3Blbiwgc2V0T3BlbiB9fT5cbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlJvb3Qgb3Blbj17b3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRPcGVufSB7Li4ucHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuUm9vdD5cbiAgICA8L1BvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5Qb3BvdmVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+IHtcbiAgb25Eb3VibGVDbGljaz86ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiwgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgb25Eb3VibGVDbGljaywgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAvLyBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuICAgIC8vIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGhhbmRsZURvY3VtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAvLyAgICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiAhdHJpZ2dlclJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhcIk91dHNpZGUgY2xpY2sgLSByZW1vdmluZyBmb2N1c1wiKTtcbiAgICAvLyAgICAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vIH0sIFtdKTtcblxuICAgIC8vIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgIHNldElzRm9jdXNlZCh0cnVlKTtcbiAgICAvLyAgIGNvbnRleHQ/LnNldE9wZW4odHJ1ZSk7XG5cbiAgICAvLyAgIGlmIChlLmRldGFpbCA9PT0gMiAmJiBvbkRvdWJsZUNsaWNrKSB7XG4gICAgLy8gICAgIG9uRG91YmxlQ2xpY2soKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHJlZihub2RlKTtcbiAgICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkXG4gICAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbD5cbiAgICAgIDxQb3BvdmVyQ2VsbFRyaWdnZXIgYXNDaGlsZD57Y2VsbENvbXBvbmVudH08L1BvcG92ZXJDZWxsVHJpZ2dlcj5cbiAgICAgIDxQb3BvdmVyQ2VsbENvbnRlbnRcbiAgICAgICAgYWxpZ249XCJzdGFydFwiXG4gICAgICAgIGFsaWduT2Zmc2V0PXstMX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXJvdW5kZWQtbm9uZSBwcy1iZy1tdXRlZFwiLFxuICAgICAgICAgIFwicHMtcC0wIHBzLXotMzAgcHMtZ2FwLTAgcHMtYm9yZGVyLXByaW1hcnlcIixcbiAgICAgICAgICBcInBzLXctW2NhbGModmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV8rXzFweCldIHBzLW1heC13LTcyIHBzLW1pbi13LVsyMDBweF1cIixcbiAgICAgICAgKX1cbiAgICAgICAgc2lkZU9mZnNldD17LTQwfVxuICAgICAgPlxuICAgICAgICB7aW5wdXRDb21wb25lbnR9XG4gICAgICA8L1BvcG92ZXJDZWxsQ29udGVudD5cbiAgICA8L1BvcG92ZXJDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7XG4gIGNsb3Nlc3RDZW50ZXIsXG4gIERuZENvbnRleHQsXG4gIHR5cGUgRHJhZ0VuZEV2ZW50LFxuICBEcmFnT3ZlcmxheSxcbiAgdHlwZSBEcmFnU3RhcnRFdmVudCxcbiAgS2V5Ym9hcmRTZW5zb3IsXG4gIFBvaW50ZXJTZW5zb3IsXG4gIHR5cGUgVW5pcXVlSWRlbnRpZmllcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxufSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXJyYXlNb3ZlLFxuICBTb3J0YWJsZUNvbnRleHQsXG4gIHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyxcbiAgdXNlU29ydGFibGUsXG4gIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSxcbn0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBDaGV2cm9uRG93biwgQ2hldnJvblJpZ2h0LCBHcmlwVmVydGljYWwsIEhlbHBDaXJjbGUsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW5GaWx0ZXIsIEZpbHRlckdyb3VwLCBGaWx0ZXJPcGVyYXRvciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGNvZXJjZVRvU3RyaW5nLCBjb2VyY2VUb1ZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgRHJvcGRvd25NZW51LCBEcm9wZG93bk1lbnVDb250ZW50LCBEcm9wZG93bk1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbmNvbnN0IExlYWRpbmdPcGVyYXRvclNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBvblZhbHVlQ2hhbmdlLFxuICBkaXNhYmxlZCxcbiAgdHJpZ2dlckNsYXNzTmFtZSA9IFwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiLFxufToge1xuICB2YWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uVmFsdWVDaGFuZ2U6ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0cmlnZ2VyQ2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTZWxlY3QgdmFsdWU9e3ZhbHVlfSBvblZhbHVlQ2hhbmdlPXtvblZhbHVlQ2hhbmdlfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPXt0cmlnZ2VyQ2xhc3NOYW1lfT5cbiAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiTG9naWNcIiAvPlxuICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+QU5EPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPk9SPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICA8L1NlbGVjdD5cbiAgKTtcbn07XG5cbi8vIFJlbmRlcnMgdGhlIHByZXZpZXcgb2YgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZCBpbiB0aGUgRHJhZ092ZXJsYXkuXG5jb25zdCBEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyA9ICh7XG4gIGFjdGl2ZUlkLFxuICBpdGVtcyxcbiAgdGFibGUsXG59OiB7XG4gIGFjdGl2ZUlkOiBVbmlxdWVJZGVudGlmaWVyO1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICB0YWJsZTogVGFibGU7XG59KSA9PiB7XG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG4gIGlmICghYWN0aXZlSXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgbGV0IGxlYWRpbmdPcGVyYXRvclZhbHVlOiBcImFuZFwiIHwgXCJvclwiID0gXCJhbmRcIjsgLy8gRGVmYXVsdFxuICBsZXQgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSBmYWxzZTtcbiAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG5cbiAgaWYgKGFjdGl2ZUl0ZW1JbmRleCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBpdGVtc1thY3RpdmVJdGVtSW5kZXggLSAxXTtcbiAgICBpZiAocHJldmlvdXNJdGVtKSB7XG4gICAgICAvLyAnYWZ0ZXInIGZyb20gdGhlIHByZXZpb3VzIGl0ZW0gZGV0ZXJtaW5lcyB0aGUgb3BlcmF0b3IgbGVhZGluZyBpbnRvIHRoZSBjdXJyZW50IGl0ZW1cbiAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlID0gcHJldmlvdXNJdGVtLmFmdGVyO1xuICAgICAgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhY3RpdmVJdGVtLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICBmaWx0ZXI9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIHVwZGF0ZXNcbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgZGVsZXRlc1xuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX0gLy8gTm9uLWludGVyYWN0aXZlXG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICBncm91cD17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fVxuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319XG4gICAgICAgIGlzUm9vdD17ZmFsc2V9IC8vIERyYWdnZWQgaXRlbSBpbiBvdmVybGF5IGlzIG5vdCB0aGUgcm9vdFxuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtmYWxzZX0gLy8gTm9uLWludGVyYWN0aXZlIGZvciBwcmV2aWV3XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn07XG5cbi8vIE1hbmFnZXMgRE5EIGNvbnRleHQgYW5kIHJlbmRlcmluZyBvZiBzb3J0YWJsZSBmaWx0ZXIgaXRlbXMgZm9yIGEgZ3JvdXAuXG5jb25zdCBGaWx0ZXJMaXN0SXRlbXMgPSAoe1xuICBpdGVtcyxcbiAgcGFyZW50R3JvdXBJZCxcbiAgdGFibGUsXG4gIG9uVXBkYXRlSXRlbSxcbiAgb25EZWxldGVJdGVtLFxuICBvblJlb3JkZXJJdGVtcyxcbiAgYWN0aXZlRHJhZ0lkLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnRW5kU2lnbmFsLFxufToge1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICBwYXJlbnRHcm91cElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIG9uVXBkYXRlSXRlbTogKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRJdGVtOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGVJdGVtOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25SZW9yZGVySXRlbXM6IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhY3RpdmVEcmFnSWQ6IFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsO1xuICBvbkRyYWdTdGFydDogKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4gdm9pZDtcbiAgb25EcmFnRW5kU2lnbmFsOiAoKSA9PiB2b2lkOyAvLyBDYWxsYmFjayB0byBzaWduYWwgZHJhZyBvcGVyYXRpb24gY29tcGxldGlvblxufSkgPT4ge1xuICBjb25zdCBzb3J0YWJsZUl0ZW1JZHMgPSB1c2VNZW1vKCgpID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCksIFtpdGVtc10pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogOCB9IH0pLFxuICAgIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvciwgeyBjb29yZGluYXRlR2V0dGVyOiBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMgfSksXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW50ZXJuYWxEcmFnRW5kID0gKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZSwgb3ZlciB9ID0gZXZlbnQ7XG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBvdmVyLmlkKTtcbiAgICAgIGlmIChvbGRJbmRleCAhPT0gLTEgJiYgbmV3SW5kZXggIT09IC0xKSB7XG4gICAgICAgIG9uUmVvcmRlckl0ZW1zKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9uRHJhZ0VuZFNpZ25hbCgpOyAvLyBTaWduYWwgdG8gcGFyZW50IHRoYXQgZHJhZyBoYXMgZW5kZWQgKGUuZy4sIHRvIGNsZWFyIGFjdGl2ZURyYWdJZClcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEbmRDb250ZXh0XG4gICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgY29sbGlzaW9uRGV0ZWN0aW9uPXtjbG9zZXN0Q2VudGVyfVxuICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgb25EcmFnRW5kPXtoYW5kbGVJbnRlcm5hbERyYWdFbmR9XG4gICAgPlxuICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17c29ydGFibGVJdGVtSWRzfSBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fT5cbiAgICAgICAge2l0ZW1zLm1hcCgoY3VycmVudEZpbHRlckl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHNob3dMZWFkaW5nT3AgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgbGVhZGluZ09wVmFsOiBcImFuZFwiIHwgXCJvclwiIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBvbkxlYWRpbmdPcENoYW5nZUZuOiAoKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICBzaG93TGVhZGluZ09wID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZJdGVtID0gaXRlbXNbaW5kZXggLSAxXSE7XG4gICAgICAgICAgICBsZWFkaW5nT3BWYWwgPSBwcmV2SXRlbS5hZnRlcjtcbiAgICAgICAgICAgIG9uTGVhZGluZ09wQ2hhbmdlRm4gPSAobmV3VmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByZXZJdGVtID0geyAuLi5wcmV2SXRlbSwgYWZ0ZXI6IG5ld1ZhbHVlIH07XG4gICAgICAgICAgICAgIG9uVXBkYXRlSXRlbShpbmRleCAtIDEsIHVwZGF0ZWRQcmV2SXRlbSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gaW5kZXggLSAxID09PSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U29ydGFibGVGaWx0ZXJJdGVtXG4gICAgICAgICAgICAgIGtleT17Y3VycmVudEZpbHRlckl0ZW0uaWR9XG4gICAgICAgICAgICAgIGZpbHRlcj17Y3VycmVudEZpbHRlckl0ZW19XG4gICAgICAgICAgICAgIG9uVXBkYXRlPXsodXBkYXRlZEZpbHRlcikgPT4gb25VcGRhdGVJdGVtKGluZGV4LCB1cGRhdGVkRmlsdGVyKX1cbiAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IG9uRGVsZXRlSXRlbShpbmRleCl9XG4gICAgICAgICAgICAgIHBhcmVudERuZElkPXtwYXJlbnRHcm91cElkfVxuICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3B9XG4gICAgICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BWYWx9XG4gICAgICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcENoYW5nZUZufVxuICAgICAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgIDxEcmFnT3ZlcmxheT5cbiAgICAgICAgICB7YWN0aXZlRHJhZ0lkID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1vcGFjaXR5LTgwXCI+XG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyBhY3RpdmVJZD17YWN0aXZlRHJhZ0lkfSBpdGVtcz17aXRlbXN9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0RyYWdPdmVybGF5PixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNvcnRhYmxlIGZpbHRlciBpdGVtXG5jb25zdCBTb3J0YWJsZUZpbHRlckl0ZW0gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgcGFyZW50RG5kSWQsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIHBhcmVudERuZElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGZpbHRlci5pZCxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBmaWx0ZXIua2luZCxcbiAgICAgIHBhcmVudElkOiBwYXJlbnREbmRJZCxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIG9wYWNpdHk6IGlzRHJhZ2dpbmcgPyAwLjUgOiAxLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3NldE5vZGVSZWZ9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtZ2FwLTJcIj5cbiAgICAgIHtmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgICBncm91cD17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNpbmdsZSBmaWx0ZXIgY29uZGl0aW9uXG5jb25zdCBGaWx0ZXJDb25kaXRpb24gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlcikgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ29sdW1uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgY29sdW1uOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVyYXRvckNoYW5nZSA9ICh2YWx1ZTogRmlsdGVyT3BlcmF0b3IpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgb3BlcmF0b3I6IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBjb2x1bW5JbmZvID0gdGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXTtcblxuICAgIGlmIChjb2x1bW5JbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlVG9WYWx1ZShjb2x1bW5JbmZvLCBmaWx0ZXIub3BlcmF0b3IsIHJhd1ZhbHVlKTtcblxuICAgICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgW2VkaXRlZFZhbHVlLCBzZXRFZGl0ZWRWYWx1ZV0gPSB1c2VTdGF0ZShcbiAgICBjb2VyY2VUb1N0cmluZyh0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dLCBmaWx0ZXIub3BlcmF0b3IsIGZpbHRlci52YWx1ZSksXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCJcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCI+XG4gICAgICAgICAgPEdyaXBWZXJ0aWNhbCBjbGFzc05hbWU9XCJwcy10ZXh0LWdyYXktNTAwXCIgc2l6ZT17MTZ9IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSA/IChcbiAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIuY29sdW1ufSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVDb2x1bW5DaGFuZ2V9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yOCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY29sdW1uXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7T2JqZWN0LmtleXModGFibGUuY29sdW1ucykubWFwKChjb2x1bW4pID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e2NvbHVtbn0gdmFsdWU9e2NvbHVtbn0+XG4gICAgICAgICAgICAgICAgICB7Y29sdW1ufVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIub3BlcmF0b3J9IG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZSkgPT4gaGFuZGxlT3BlcmF0b3JDaGFuZ2UodmFsdWUgYXMgRmlsdGVyT3BlcmF0b3IpfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiT3BlcmF0b3JcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPVwiPj08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiIT1cIj4hPTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+XCI+Jmd0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+PVwiPiZndDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjxcIj4mbHQ7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjw9XCI+Jmx0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXNcIj5pczwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpcyBub3RcIj5pcyBub3Q8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibGlrZVwiPmxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGxpa2VcIj5ub3QgbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpbGlrZVwiPmlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBpbGlrZVwiPm5vdCBpbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgdmFsdWU9e2VkaXRlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIHNldEVkaXRlZFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UoZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTI0IHBzLXRleHQteHMgcHMtaC04XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBmaWx0ZXIgZ3JvdXAgKEFORC9PUilcbmNvbnN0IEZpbHRlckdyb3VwQ29tcG9uZW50ID0gKHtcbiAgZ3JvdXAsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICBpc1Jvb3QgPSBmYWxzZSxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBncm91cDogRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEdyb3VwOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgaXNSb290PzogYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVEcmFnSWQsIHNldEFjdGl2ZURyYWdJZF0gPSB1c2VTdGF0ZTxVbmlxdWVJZGVudGlmaWVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQWRkRmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcjogQ29sdW1uRmlsdGVyID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgY29sdW1uOiBPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKVswXSA/PyBcIlwiLCAvLyBBbHdheXMgc2VsZWN0IGZpcnN0IGNvbFxuICAgICAgb3BlcmF0b3I6IFwiPVwiLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3RmlsdGVyXSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGRHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdHcm91cDogRmlsdGVyR3JvdXAgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdHcm91cF0gfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlSXRlbUluR3JvdXAgPSAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEZpbHRlck9yR3JvdXA6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzW2luZGV4XSA9IHVwZGF0ZWRGaWx0ZXJPckdyb3VwO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlSXRlbUZyb21Hcm91cCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKGV2ZW50LmFjdGl2ZS5pZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZFNpZ25hbCA9ICgpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVvcmRlckl0ZW1zID0gKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAob2xkSW5kZXggPT09IG5ld0luZGV4KSByZXR1cm47XG4gICAgY29uc3QgcmVvcmRlcmVkRmlsdGVycyA9IGFycmF5TW92ZShncm91cC5maWx0ZXJzLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IHJlb3JkZXJlZEZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyR3JvdXBDb250ZW50ID0gKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFncm91cC5maWx0ZXJzIHx8IGdyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXBsLTYgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNTAwIHBzLWl0YWxpY1wiPlxuICAgICAgICAgIFRoaXMgZ3JvdXAgaXMgZW1wdHkuIEFkZCBhIGZpbHRlciBvciBhbm90aGVyIGdyb3VwLlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxtb3Rpb24uZGl2IHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmUgcHMtZ2FwLTJcIiwgaXNSb290ID8gXCJcIiA6IFwicHMtcGItMlwiKX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJdGVtc1xuICAgICAgICAgICAgaXRlbXM9e2dyb3VwLmZpbHRlcnN9XG4gICAgICAgICAgICBwYXJlbnRHcm91cElkPXtncm91cC5pZH1cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIG9uVXBkYXRlSXRlbT17dXBkYXRlSXRlbUluR3JvdXB9XG4gICAgICAgICAgICBvbkRlbGV0ZUl0ZW09e2RlbGV0ZUl0ZW1Gcm9tR3JvdXB9XG4gICAgICAgICAgICBvblJlb3JkZXJJdGVtcz17aGFuZGxlUmVvcmRlckl0ZW1zfVxuICAgICAgICAgICAgYWN0aXZlRHJhZ0lkPXthY3RpdmVEcmFnSWR9XG4gICAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgICAgb25EcmFnRW5kU2lnbmFsPXtoYW5kbGVEcmFnRW5kU2lnbmFsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGxcIiwgaXNFeHBhbmRlZCA/IFwicHMtZ2FwLTJcIiA6IFwiXCIpfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cywganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIiBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX0+XG4gICAgICAgICAgICAgICAge2lzRXhwYW5kZWQgPyA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+IDogPENoZXZyb25SaWdodCBzaXplPXsxNn0gLz59XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgJiYgIWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWRkRmlsdGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuIHBzLXRyYW5zaXRpb24tYWxsXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZGQgRmlsdGVyXG4gICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxCYWRnZSBjbGFzc05hbWU9XCJwcy10cmFuc2l0aW9uLWFsbFwiPlxuICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT57Z3JvdXAuZmlsdGVycy5sZW5ndGh9PC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2hhbmRsZUFkZEdyb3VwfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAgICAgICAgICBBZGQgR3JvdXBcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHtpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiPlxuICAgICAgICAgICAgICAgICAgICA8SGVscENpcmNsZSBjbGFzc05hbWU9XCJwcy1zaXplLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50IGFsaWduPVwiY2VudGVyXCIgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC00IHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcnMgYXBwbGllZCB5ZXQuIEFkZCBmaWx0ZXJzIHRvIHByZXZpZXcgeW91ciBxdWVyeS5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtMiBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLWJnLW5ldXRyYWwtMTAwIHBzLXJvdW5kZWQtc20gcHMtZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2dyb3VwfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oaXNSb290ID8gXCJcIiA6IFwicHMtbWwtNlwiKX0+e3JlbmRlckdyb3VwQ29udGVudCgpfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IHRvIHZpc3VhbGl6ZSB0aGUgcXVlcnkgc3RyaW5nXG5jb25zdCBRdWVyeVZpc3VhbGl6ZXIgPSAoeyBmaWx0ZXIgfTogeyBmaWx0ZXI6IEZpbHRlckdyb3VwIH0pOiBSZWFjdE5vZGUgPT4ge1xuICBsZXQgaXNBbmRHcm91cE9wZW4gPSAwO1xuXG4gIGlmIChmaWx0ZXIuZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiBcIiggKVwiO1xuXG4gIGNvbnN0IGdyb3VwID0gZmlsdGVyLmZpbHRlcnMubWFwKChmLCBpKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUmVhY3ROb2RlO1xuICAgIGNvbnN0IGlzTGFzdCA9IGZpbHRlci5maWx0ZXJzLmxlbmd0aCAtIDEgPT09IGk7XG5cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gPT09IC0xKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGYuYWZ0ZXIgPT09IFwiYW5kXCIgJiYgIWlzTGFzdCkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gKz0gMTtcbiAgICB9XG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuICYmIChpc0xhc3QgfHwgZi5hZnRlciA9PT0gXCJvclwiKSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAtMTtcbiAgICB9XG5cbiAgICBpZiAoZi5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IgfSA9IGY7XG5cbiAgICAgIHJlc3VsdCA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8c3Bhbj4ge2NvbHVtbn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiB7b3BlcmF0b3J9IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4gPyA8L3NwYW4+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2Z9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RnJhZ21lbnQga2V5PXtmLmlkfT5cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAxID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPig8L3NwYW4+IDogXCJcIn1cbiAgICAgICAge3Jlc3VsdH1cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAtMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4pPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHshaXNMYXN0ICYmIDxzcGFuIGNsYXNzTmFtZT1cInBzLXVwcGVyY2FzZSBwcy10ZXh0LWJsdWUtNTAwIHBzLWZvbnQtc2VtaWJvbGRcIj4ge2YuYWZ0ZXJ9IDwvc3Bhbj59XG4gICAgICA8L0ZyYWdtZW50PlxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiA8c3Bhbj57Z3JvdXB9PC9zcGFuPjtcbn07XG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyVHJlZSh7XG4gIGZpbHRlcixcbiAgc2V0RmlsdGVyLFxuICBzZXRBcHBsaWVkRmlsdGVyLFxuICB0YWJsZSxcbn06IHtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbiAgc2V0RmlsdGVyOiAodXBkYXRlZEZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHNldEFwcGxpZWRGaWx0ZXI6IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICB0YWJsZTogVGFibGU7XG59KSB7XG4gIGNvbnN0IGhhbmRsZUFwcGx5RmlsdGVycyA9ICgpID0+IHtcbiAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTRcIj5cbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudCBncm91cD17ZmlsdGVyfSBvblVwZGF0ZT17c2V0RmlsdGVyfSBvbkRlbGV0ZT17KCkgPT4ge319IGlzUm9vdD17dHJ1ZX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZGVmYXVsdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXNlbGYtZW5kXCIgb25DbGljaz17aGFuZGxlQXBwbHlGaWx0ZXJzfT5cbiAgICAgICAgQXBwbHkgRmlsdGVyc1xuICAgICAgPC9CdXR0b24+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDb2x1bW4sIEZpbHRlck9wZXJhdG9yIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9WYWx1ZShjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCwgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwibnVsbFwiID8gbnVsbCA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWUgPT09IFwidHJ1ZVwiO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiB2YWx1ZTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpIGFzIHVua25vd247XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1N0cmluZyhcbiAgY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsXG4gIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciB8IHVuZGVmaW5lZCxcbiAgdmFsdWU6IHVua25vd24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAob3BlcmF0b3IgJiYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gXCJudWxsXCIgOiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgaWYgKHZhbHVlID09PSBcIlwiKSByZXR1cm4gXCJcIjtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuIiwgImltcG9ydCAqIGFzIERyb3Bkb3duTWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0b1wiIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkRyb3Bkb3duTWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bdmFyKC0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpXSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZFwiLFxuICAgICAgICBcImRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ecm9wZG93bk1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MCBbJj5zdmddOnBzLXNpemUtNCBbJj5zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtMiBwcy13LTIgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51TGFiZWwuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLW9wYWNpdHktNjBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51TGFiZWwsXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gIERyb3Bkb3duTWVudUdyb3VwLFxuICBEcm9wZG93bk1lbnVQb3J0YWwsXG4gIERyb3Bkb3duTWVudVN1YixcbiAgRHJvcGRvd25NZW51U3ViQ29udGVudCxcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlcixcbiAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IElucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczxcImlucHV0XCI+PihcbiAgKHsgY2xhc3NOYW1lLCB0eXBlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMSBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZmlsZTpwcy1ib3JkZXItMCBmaWxlOnBzLWJnLXRyYW5zcGFyZW50IGZpbGU6cHMtdGV4dC1zbSBmaWxlOnBzLWZvbnQtbWVkaXVtIGZpbGU6cHMtdGV4dC1mb3JlZ3JvdW5kIHBsYWNlaG9sZGVyOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIjtcblxuZXhwb3J0IHsgSW5wdXQgfTtcbiIsICJpbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zZWxlY3RcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uRG93biwgQ2hldnJvblVwIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFNlbGVjdCA9IFNlbGVjdFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbmNvbnN0IFNlbGVjdFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0yIHBzLXRleHQtc20gcHMtc2hhZG93LXNtIHBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGF0YS1bcGxhY2Vob2xkZXJdOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0xIGZvY3VzOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJj5zcGFuXTpwcy1saW5lLWNsYW1wLTFcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLW9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBwb3NpdGlvbiA9IFwicG9wcGVyXCIsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1yZWxhdGl2ZSBwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgIFwiZGF0YS1bc2lkZT1ib3R0b21dOnBzLXRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTpwcy0tdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTpwcy10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTpwcy0tdHJhbnNsYXRlLXktMVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxTZWxlY3RTY3JvbGxVcEJ1dHRvbiAvPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcC0xXCIsXG4gICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgIFwicHMtaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gcHMtdy1mdWxsIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy13LWZ1bGwgcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTIgcHMtcHItOCBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvciByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCAiaW1wb3J0IHsgRG5kQ29udGV4dCwgdHlwZSBEcmFnRW5kRXZlbnQsIE1vdXNlU2Vuc29yLCB1c2VTZW5zb3IsIHVzZVNlbnNvcnMgfSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHsgYXJyYXlNb3ZlLCBob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSwgU29ydGFibGVDb250ZXh0LCB1c2VTb3J0YWJsZSB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBIZWFkZXIsXG4gIHR5cGUgT25DaGFuZ2VGbixcbiAgdHlwZSBQYWdpbmF0aW9uU3RhdGUsXG4gIHR5cGUgU29ydGluZ1N0YXRlLFxuICB0eXBlIFRhYmxlIGFzIFJlYWN0VGFibGUsXG4gIHVzZVJlYWN0VGFibGUsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IFJlYWN0VGFibGVEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgdHlwZSBDU1NQcm9wZXJ0aWVzLFxuICB0eXBlIFByb3BzV2l0aENoaWxkcmVuLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJcIjtcbmltcG9ydCB7IERhdGFHcmlkTG9hZGluZ0JhciB9IGZyb20gXCIuL0RhdGFHcmlkTG9hZGluZ0JhclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRQYWdpbmF0aW9uIH0gZnJvbSBcIi4vRGF0YUdyaWRQYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcblxuLy8gQWRkIHRoaXMgbmV3IGNvbXBvbmVudCBmb3IgZHJhZ2dhYmxlIGhlYWRlciBjZWxsc1xudHlwZSBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xuICB0YWJsZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVhY3RUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+O1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUhlYWRlckNlbGwgPSAocHJvcHM6IERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhlYWRlciwgc3R5bGU6IGNvbW1vblN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgZGlzYWJsZURyYWdnaW5nID0gXCJkaXNhYmxlRHJhZ2dpbmdcIiBpbiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtcblxuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBzZXROb2RlUmVmLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgfSk7XG5cbiAgY29uc3QgZHJhZ1N0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBjb21tb25DbGFzcyA9IGNuKGNsYXNzTmFtZSwgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIpO1xuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjb21tb25DbGFzcywgaXNEcmFnZ2luZyAmJiBcIiFwcy16LTUwIHBzLWJvcmRlci0yIHBzLWJvcmRlci12aW9sZXQtNTAwXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlSGVhZFxuICAgICAgcmVmPXtzZXROb2RlUmVmfVxuICAgICAgey4uLmF0dHJpYnV0ZXN9XG4gICAgICB7Li4ubGlzdGVuZXJzfVxuICAgICAgc3R5bGU9e2Rpc2FibGVEcmFnZ2luZyA/IGNvbW1vblN0eWxlIDogZHJhZ1N0eWxlfVxuICAgICAgY2xhc3NOYW1lPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25DbGFzcyA6IGRyYWdDbGFzc31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaGVhZGVyKSA9PiAhKFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYpKVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGhlYWRlcikgPT4gaGVhZGVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9e2hvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Igc2VsZWN0IGNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgaGVhZGVyIGZ1bmN0aW9uIGRpcmVjdGx5LCB3aGljaCBzaG91bGQgYmUgU2VsZWN0SGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyRm4gPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhlYWRlckZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGVhZGVyQ29tcG9uZW50ID0gaGVhZGVyRm4oaGVhZGVyLmdldENvbnRleHQoKSkgYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZnVuY3Rpb24gKG5ldyBhcHByb2FjaCB3aXRoIHByb3BzIGZvcndhcmRpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSGVhZGVyQ29tcG9uZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaW5uaW5nU3R5bGVzID0gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uaW5nU3R5bGVzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Bpbm5pbmdTdHlsZXMuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtIZWFkZXJDb21wb25lbnQoe30pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBIZWFkZXJDb21wb25lbnQgaXMgYSBkaXJlY3QgSlNYIGVsZW1lbnQgKG9sZCBhcHByb2FjaClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKS5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50IGFzIEpTWC5FbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUmVndWxhciBjb2x1bW5zIHVzZSB0aGUgZHJhZ2dhYmxlIGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJhZ2dhYmxlSGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyPXtoZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlciBoZWFkZXI9e2hlYWRlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJhZ2dhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICAgIHtnZXRCZWZvcmVSb3dzPy4odGFibGUpfVxuICAgICAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcy1iZy10YWJsZS1yb3cgcHMtb2RkOmJnLXRhYmxlLXJvdy1vZGQgcHMtZ3JvdXAgWyY6bGFzdC1vZi10eXBlX3RkXTpwcy1ib3JkZXItYi0wIHBzLWdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdyb3VwLW9kZDpwcy1iZy1uZXV0cmFsLTUwIGdyb3VwLWV2ZW46cHMtYmctd2hpdGUgZ3JvdXAtaG92ZXI6cHMtYmctbmV1dHJhbC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NlbGwuaWR9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZWxsLmdldFZhbHVlKCkgYXMgUmVhY3ROb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGZsZXhSZW5kZXIsIHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgaGVhZGVyOiBIZWFkZXI8VERhdGEsIHVua25vd24+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlcjxURGF0YT4ocHJvcHM6IEhlYWRlclByb3BzPFREYXRhPikge1xuICBjb25zdCB7IGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciwgaGVhZGVyLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkTG9hZGluZ0Jhcih7IGNsYXNzTmFtZSB9OiBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtbG9hZGluZy1iYXJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLVsycHhdIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtYmctdGFibGUtYm9yZGVyIHBzLXotNTBcIiwgY2xhc3NOYW1lKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWFuaW1hdGUtaW5kZXRlcm1pbmF0ZS1iYXIgcHMtaC1mdWxsIHBzLXctMS8zIHBzLXJvdW5kZWQtci1mdWxsIHBzLWJnLXByaW1hcnlcIiAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgQ2hldnJvbnNMZWZ0LCBDaGV2cm9uc1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHZhcmlhbnQ/OiBcImJhc2ljXCIgfCBcIm51bWVyaWNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkUGFnaW5hdGlvbihwcm9wczogRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgdmFyaWFudCA9IFwiYmFzaWNcIiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBwYWdlSW5kZXggfSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJvdW5kZWQtYi1sZyBwcy1vdmVyZmxvdy1jbGlwIHBzLXN0aWNreSBwcy1ib3R0b20tMCBwcy1sZWZ0LTAgcHMtYm9yZGVyLXQtMCB3LWZ1bGwgcHMtei0yMCBwcy1wLTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXNwYWNlLXgtMiBwcy1weS0yIHBzLXB4LTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1iYWNrZHJvcC1ibHVyLXNtIHBzLWJnLXRhYmxlLWhlYWQvOTBcIj5cbiAgICAgICAge3ZhcmlhbnQgPT09IFwiYmFzaWNcIiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQcmV2aW91c1xuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBOZXh0XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgUGFnZVxuICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICBtYXg9e3BhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYWdlSW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0xNlwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIC0gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXNocmluay0wIHBzLXctbWF4XCI+b2Yge3BhZ2VDb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblBpbm5pbmdTdHlsZXMoY29sdW1uOiBDb2x1bW48UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBraW5kOiBcImhlYWRlclwiIHwgXCJjZWxsXCIpIHtcbiAgY29uc3QgaXNQaW5uZWQgPSBjb2x1bW4uZ2V0SXNQaW5uZWQoKTtcbiAgY29uc3QgaXNMZWZ0UGlubmVkID0gaXNQaW5uZWQgPT09IFwibGVmdFwiO1xuICBjb25zdCBpc1JpZ2h0UGlubmVkID0gaXNQaW5uZWQgPT09IFwicmlnaHRcIjtcbiAgY29uc3QgaXNTZWxlY3RDb2x1bW4gPSBjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIjtcblxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogY24oXG4gICAgICBcInBzLWdyb3VwIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgIFwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXRleHQtZWxsaXBzaXNcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiAoaXNTZWxlY3RDb2x1bW4gPyBcInBzLXotMzBcIiA6IFwicHMtei0yMFwiKSxcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTEwXCIgOiBcInBzLXotMFwiKSxcbiAgICAgIGlzTGVmdFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bMnB4XzBfNXB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpXVwiLFxuICAgICAgaXNSaWdodFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bLTJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcG9zaXRpb246IGlzUGlubmVkID8gKFwic3RpY2t5XCIgYXMgY29uc3QpIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBUb29sdGlwUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdG9vbHRpcFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1iZy1wcmltYXJ5IHBzLXB4LTMgcHMtcHktMS41IHBzLXRleHQteHMgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtYW5pbWF0ZS1pbiBwcy1mYWRlLWluLTAgcHMtem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1Rvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgeyBLZXlSb3VuZCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlckNlbGwoeyBjb2x1bW4gfTogeyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAge2NvbHVtbi5pc0luUHJpbWFyeUtleSAmJiAoXG4gICAgICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MTIwfT5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICA8S2V5Um91bmQgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50IHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlByaW1hcnkgS2V5PC9zcGFuPlxuICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtbWVkaXVtIHBzLXRydW5jYXRlXCI+e2NvbHVtbi5uYW1lfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC83MCBwcy1sb3dlcmNhc2UgcHMtdHJ1bmNhdGVcIj5cbiAgICAgICAge2NvbHVtbi5kYXRhdHlwZS5uYW1lfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiLi9Cb29sZWFuSW5wdXRcIjtcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gXCIuL0RhdGVJbnB1dFwiO1xuaW1wb3J0IHsgRW51bUlucHV0IH0gZnJvbSBcIi4vRW51bUlucHV0XCI7XG5pbXBvcnQgeyBKc29uSW5wdXQgfSBmcm9tIFwiLi9Kc29uSW5wdXRcIjtcbmltcG9ydCB7IE51bWVyaWNJbnB1dCB9IGZyb20gXCIuL051bWVyaWNJbnB1dFwiO1xuaW1wb3J0IHsgUmF3SW5wdXQgfSBmcm9tIFwiLi9SYXdJbnB1dFwiO1xuaW1wb3J0IHsgVGltZUlucHV0IH0gZnJvbSBcIi4vVGltZUlucHV0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChwcm9wczoge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCB7IGNlbGwsIGNvbHVtbiwgb25TdWJtaXQgfSA9IHByb3BzO1xuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG4gIGNvbnN0IHJlYWRvbmx5ID0gY29sdW1uLmlzQ29tcHV0ZWQgfHwgcHJvcHMucmVhZG9ubHk7XG5cbiAgY29uc3QgY2VsbFZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIC8vIG9uIHJvdyBpbnNlcnRpb25zLCB3ZSB0cmVhdCB1bmRlZmluZWQgYXMgZW1wdHkgaW5wdXRcbiAgY29uc3QgdmFsdWUgPSBjZWxsVmFsdWUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBjZWxsVmFsdWU7XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKc29uSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gb3B0aW9ucz17b3B0aW9uc30gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmF3SW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17aXNPYmplY3RUeXBlKHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhbklucHV0KHByb3BzOiBCb29sZWFuSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlVG9TdWJtaXQgPSBzZXRUb051bGwgPyBudWxsIDogY3VycmVudFZhbHVlO1xuICAgIGlmICh2YWx1ZVRvU3VibWl0ICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQodmFsdWVUb1N1Ym1pdCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMCBwcy1weC0yXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwiYm9vbGVhbi1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBCb29sZWFuXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMjQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgIGlkPVwiYm9vbGVhbi1pbnB1dFwiXG4gICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGRhdGEtdmFsdWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtZm9udC1tb25vXCJcbiAgICAgICAgICBpbml0aWFsPXt7IHg6IC00MCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgeDogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTIsIGRlbGF5OiAwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7c2V0VG9OdWxsID8gXCJOVUxMXCIgOiBTdHJpbmcoY3VycmVudFZhbHVlKX1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgTGFiZWxQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1sYWJlbFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6cHMtb3BhY2l0eS03MFwiLFxuKTtcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3QgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24obGFiZWxWYXJpYW50cygpLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkxhYmVsLmRpc3BsYXlOYW1lID0gTGFiZWxQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgTGFiZWwgfTtcbiIsICJpbXBvcnQgKiBhcyBTd2l0Y2hQcmltaXRpdmVzIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc3dpdGNoXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU3dpdGNoID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTd2l0Y2hQcmltaXRpdmVzLlJvb3RcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWlubGluZS1mbGV4IHBzLWgtNSBwcy13LTkgcHMtc2hyaW5rLTAgcHMtY3Vyc29yLXBvaW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtZnVsbCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLWJnLWlucHV0XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gID5cbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5UaHVtYlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wb2ludGVyLWV2ZW50cy1ub25lIHBzLWJsb2NrIHBzLWgtNCBwcy13LTQgcHMtcm91bmRlZC1mdWxsIHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LWxnIHBzLXJpbmctMCBwcy10cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10cmFuc2xhdGUteC00IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtMFwiLFxuICAgICAgKX1cbiAgICAvPlxuICA8L1N3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbikpO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsICJpbXBvcnQgeyBDb3JuZXJEb3duTGVmdCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dEFjdGlvbnMgPSAoe1xuICBvblNhdmUsXG4gIG9uQ2FuY2VsLFxuICBvbkNsb3NlLFxuICBvbk51bGxDaGFuZ2UsXG4gIGlzTnVsbCA9IGZhbHNlLFxuICByZWFkb25seSxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1cIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtbXItYXV0b1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH0+XG4gICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtdGV4dC1bOHB4XSBwcy1sZWFkaW5nLW5vbmUgcHMtZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgIENhbmNlbCBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCIgaHRtbEZvcj1cInNldC1udWxsYWJsZVwiPlxuICAgICAgICAgICAgICAgIDxTd2l0Y2ggaWQ9XCJzZXQtbnVsbGFibGVcIiBjaGVja2VkPXtpc051bGx9IG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlTnVsbENoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIC8vIERldGVjdCBpZiBpbnB1dCBoYXMgdGltZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGhhc1RpbWUgPSBpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKTtcblxuICAgICAgLy8gSHVtYW4tcmVhZGFibGUgZm9ybWF0IChsb2NhbGl6ZWQpXG4gICAgICBpZiAoaGFzVGltZSkge1xuICAgICAgICAvLyBGb3IgdGltZXN0YW1wcywgc2hvdyBmdWxsIGRhdGUgYW5kIHRpbWVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIGRhdGVzLCBqdXN0IHNob3cgdGhlIGRhdGVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWREYXRlfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSW5wdXRQcm9wcyB7XG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlucHV0KHByb3BzOiBVc2VJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlID8/IFwiXCIpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtZ2FwLTQgcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgey8qIFRPRE86IHNjaGVtYSBzZWxlY3Rvci4gKi99XG4gICAgICA8TmF2aWdhdGlvbi5CbG9jayBsYWJlbD1cIlRhYmxlc1wiPlxuICAgICAgICB7dGFibGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgdGFibGVzLm1hcCgodGFibGUpID0+IChcbiAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHt0YWJsZS5zY2hlbWF9LSR7dGFibGUubmFtZX1gfVxuICAgICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVUYWJsZSA9PT0gdGFibGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogY2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcblxuTmF2aWdhdGlvbi5CbG9jayA9IEJsb2NrO1xuTmF2aWdhdGlvbi5JdGVtID0gSXRlbTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IFRhYmxlIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBrZXlNYXAsIHVzZVF1ZXJ5U3RhdGUsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuaW1wb3J0IHsgSU5JVElBTF9EQVRBX1VQREFURURfQVQsIHVzZUludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi91c2UtaW50cm9zcGVjdGlvblwiO1xuXG4vKipcbiAqIEhvb2sgdG8gZW5jYXBzdWxhdGUgYWxsIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGUgYWN0aXZlIHRhYmxlIHNlbGVjdGlvbi5cbiAqIEhhbmRsZXMgc3luY2luZyB3aXRoIFVSTCBwYXJhbXMsIGRlZmF1bHQgc2VsZWN0aW9uLCBhbmQgZXhwb3NlcyBhIHNpbXBsZSBBUEkgZm9yIGNvbnN1bWVycy5cbiAqIFNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aGluIFN0dWRpbyBjb250ZXh0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYVxuICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl0/LnRhYmxlcyB8fCB7fSk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXMsIGFkYXB0ZXIuZGVmYXVsdFNjaGVtYV0pO1xuXG4gIC8vIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgdGFibGVzIGFjcm9zcyBhbGwgc2NoZW1hc1xuICBjb25zdCB0b3RhbFRhYmxlQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMpLnJlZHVjZSgoc3VtLCBzY2hlbWEpID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBPYmplY3Qua2V5cyhzY2hlbWEudGFibGVzKS5sZW5ndGg7XG4gICAgfSwgMCk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXNdKTtcblxuICBjb25zdCBbZmlyc3RUYWJsZV0gPSB0YWJsZXM7XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIEVmZmVjdCB0byBzeW5jIGFjdGl2ZSB0YWJsZSB3aXRoIFVSTCBwYXJhbSBhbmQgZGVmYXVsdHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nKSByZXR1cm47XG4gICAgLy8gSWYgc2NoZW1hIGFuZCB0YWJsZSBwYXJhbXMgaW4gVVJMLCB0cnkgdG8gc2V0IHRoYXQgdGFibGVcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlKTtcblxuICAgICAgaWYgKHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBubyBzY2hlbWEvdGFibGUgcGFyYW1zIG9yIG5vdCBmb3VuZCwgc2V0IGZpcnN0IHRhYmxlIGFzIGRlZmF1bHRcbiAgICBpZiAodGFibGVzLmxlbmd0aCA+IDAgJiYgIWFjdGl2ZVRhYmxlKSB7XG4gICAgICBzZXRBY3RpdmVUYWJsZShmaXJzdFRhYmxlIHx8IG51bGwpO1xuICAgICAgaWYgKGZpcnN0VGFibGUpIHtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBmaXJzdFRhYmxlLm5hbWUsIHNjaGVtYTogZmlyc3RUYWJsZS5zY2hlbWEgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNMb2FkaW5nLCB0YWJsZUFuZFNjaGVtYSwgdGFibGVzLCBmaXJzdFRhYmxlLCBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBuZXdUYWJsZS5uYW1lLCBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSB9KTtcbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzXG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUT0RPOiByZXBsYWNlIHdpdGggaXNMb2FkaW5nXG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGlzTG9hZGluZyxcbiAgICBoYW5kbGVUYWJsZUNoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA9IC0xO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW50cm9zcGVjdGlvbigpIHtcbiAgY29uc3QgeyBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGluaXRpYWxEYXRhOiB7XG4gICAgICBzY2hlbWFzOiB7XG4gICAgICAgIFthZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXToge1xuICAgICAgICAgIHRhYmxlczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZXpvbmU6IFwiVVRDXCIsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnM6IFtdLFxuICAgIH0gc2F0aXNmaWVzIEludHJvc3BlY3Rpb24sXG4gICAgaW5pdGlhbERhdGFVcGRhdGVkQXQ6IElOSVRJQUxfREFUQV9VUERBVEVEX0FULFxuICAgIHF1ZXJ5Rm46IGFzeW5jICh7IHNpZ25hbCB9KSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIGludHJvc3BlY3Rpb25dID0gYXdhaXQgYWRhcHRlci5pbnRyb3NwZWN0KHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW50cm9zcGVjdGlvbjtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXCJpbnRyb3NwZWN0aW9uXCJdLFxuICAgIC8vIGlmIGlzIGluaXRpYWwgZGF0YSwgcmVmZXRjaCBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlLCBuZXZlciByZWZldGNoIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGJhY2tncm91bmQuXG4gICAgLy8gd2UgY2FuIHN0aWxsIHJlZmV0Y2ggbWFudWFsbHkgdXNpbmcgdGhlIHF1ZXJ5IGNsaWVudCAtIHByb2JhYmx5IHRyaWdnZXJlZCBieSBhIGJ1dHRvbi5cbiAgICBzdGFsZVRpbWU6IChjdHgpID0+IChjdHguc3RhdGUuZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQgPyAwIDogSW5maW5pdHkpLFxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI0TUFBQSxPQUFTLG1CQUFBQSxHQUFpQixVQUFBQyxPQUFjLGVDQ3hDLE9BQTBCLFFBQUFDLE9BQVksT0NxQnRDLElBQU1DLEdBQXVCLElBRWhCQyxHQUF5QkMsR0FBeUIsQ0FDM0QsSUFBTUMsRUFBV0MsR0FBZUYsQ0FBTSxFQUNoQyxDQUFFRyx1QkFBQUEsRUFBd0JDLCtCQUFBQSxDQUFnQyxFQUFHSixFQTBCbkUsTUFBTyxDQUNISyxnQkF6QnFCQyxHQUFxQixDQUMxQyxJQUFNQyxFQUFhRCxFQUFVRSxNQUFNVixFQUFvQixFQUd2RCxPQUFJUyxFQUFXLENBQUMsSUFBTSxJQUFNQSxFQUFXRSxTQUFXLEdBQzlDRixFQUFXRyxNQUFLLEVBR2JDLEdBQWtCSixFQUFZTixDQUFRLEdBQUtXLEdBQStCTixDQUFTLENBQzlGLEVBaUJJTyw0QkFmZ0NBLENBQ2hDQyxFQUNBQyxJQUNBLENBQ0EsSUFBTUMsRUFBWWIsRUFBdUJXLENBQVksR0FBSyxDQUFBLEVBRTFELE9BQUlDLEdBQXNCWCxFQUErQlUsQ0FBWSxF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QW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJjbHN4IiwgIkNMQVNTX1BBUlRfU0VQQVJBVE9SIiwgImNyZWF0ZUNsYXNzR3JvdXBVdGlscyIsICJjb25maWciLCAiY2xhc3NNYXAiLCAiY3JlYXRlQ2xhc3NNYXAiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAiZ2V0Q2xhc3NHcm91cElkIiwgImNsYXNzTmFtZSIsICJjbGFzc1BhcnRzIiwgInNwbGl0IiwgImxlbmd0aCIsICJzaGlmdCIsICJnZXRHcm91cFJlY3Vyc2l2ZSIsICJnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkiLCAiZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIiwgImNsYXNzR3JvdXBJZCIsICJoYXNQb3N0Zml4TW9kaWZpZXIiLCAiY29uZmxpY3RzIiwgImNsYXNzUGFydE9iamVjdCIsICJjdXJyZW50Q2xhc3NQYXJ0IiwgIm5leHRDbGFzc1BhcnRPYmplY3QiLCAibmV4dFBhcnQiLCAiZ2V0IiwgImNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCIsICJzbGljZSIsICJ1bmRlZmluZWQiLCAidmFsaWRhdG9ycyIsICJjbGFzc1Jlc3QiLCAiam9pbiIsICJmaW5kIiwgInZhbGlkYXRvciIsICJhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4IiwgInRlc3QiLCAiYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUiLCAiZXhlYyIsICJwcm9wZXJ0eSIsICJzdWJzdHJpbmciLCAiaW5kZXhPZiIsICJ0aGVtZSIsICJwcmVmaXgiLCAiTWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJjbGFzc0dyb3VwcyIsICJmb3JFYWNoIiwgImNsYXNzR3JvdXAiLCAicHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSIsICJjbGFzc0RlZmluaXRpb24iLCAiY2xhc3NQYXJ0T2JqZWN0VG9FZGl0IiwgImdldFBhcnQiLCAiaXNUaGVtZUdldHRlciIsICJwdXNoIiwgImtleSIsICJwYXRoIiwgImN1cnJlbnRDbGFzc1BhcnRPYmplY3QiLCAicGF0aFBhcnQiLCAiaGFzIiwgInNldCIsICJmdW5jIiwgImNsYXNzR3JvdXBFbnRyaWVzIiwgIm1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXAiLCAiZnJvbUVudHJpZXMiLCAidmFsdWUiLCAiY3JlYXRlTHJ1Q2FjaGUiLCAibWF4Q2FjaGVTaXplIiwgImNhY2hlU2l6ZSIsICJjYWNoZSIsICJwcmV2aW91c0NhY2hlIiwgInVwZGF0ZSIsICJJTVBPUlRBTlRfTU9ESUZJRVIiLCAiY3JlYXRlUGFyc2VDbGFzc05hbWUiLCAic2VwYXJhdG9yIiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIiwgImZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyIiwgInNlcGFyYXRvckxlbmd0aCIsICJwYXJzZUNsYXNzTmFtZSIsICJtb2RpZmllcnMiLCAiYnJhY2tldERlcHRoIiwgIm1vZGlmaWVyU3RhcnQiLCAicG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAiaW5kZXgiLCAiY3VycmVudENoYXJhY3RlciIsICJiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyIiwgImhhc0ltcG9ydGFudE1vZGlmaWVyIiwgInN0YXJ0c1dpdGgiLCAiYmFzZUNsYXNzTmFtZSIsICJtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgInNvcnRNb2RpZmllcnMiLCAic29ydGVkTW9kaWZpZXJzIiwgInVuc29ydGVkTW9kaWZpZXJzIiwgIm1vZGlmaWVyIiwgInNvcnQiLCAiY3JlYXRlQ29uZmlnVXRpbHMiLCAiU1BMSVRfQ0xBU1NFU19SRUdFWCIsICJtZXJnZUNsYXNzTGlzdCIsICJjbGFzc0xpc3QiLCAiY29uZmlnVXRpbHMiLCAiY2xhc3NHcm91cHNJbkNvbmZsaWN0IiwgImNsYXNzTmFtZXMiLCAidHJpbSIsICJyZXN1bHQiLCAib3JpZ2luYWxDbGFzc05hbWUiLCAiQm9vbGVhbiIsICJ2YXJpYW50TW9kaWZpZXIiLCAibW9kaWZpZXJJZCIsICJjbGFzc0lkIiwgImluY2x1ZGVzIiwgImNvbmZsaWN0R3JvdXBzIiwgImkiLCAiZ3JvdXAiLCAidHdKb2luIiwgImFyZ3VtZW50IiwgInJlc29sdmVkVmFsdWUiLCAic3RyaW5nIiwgImFyZ3VtZW50cyIsICJ0b1ZhbHVlIiwgIm1peCIsICJrIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAiY3JlYXRlQ29uZmlnRmlyc3QiLCAiY3JlYXRlQ29uZmlnUmVzdCIsICJjYWNoZUdldCIsICJjYWNoZVNldCIsICJmdW5jdGlvblRvQ2FsbCIsICJpbml0VGFpbHdpbmRNZXJnZSIsICJyZWR1Y2UiLCAicHJldmlvdXNDb25maWciLCAiY3JlYXRlQ29uZmlnQ3VycmVudCIsICJ0YWlsd2luZE1lcmdlIiwgImNhY2hlZFJlc3VsdCIsICJhcHBseSIsICJmcm9tVGhlbWUiLCAidGhlbWVHZXR0ZXIiLCAiYXJiaXRyYXJ5VmFsdWVSZWdleCIsICJmcmFjdGlvblJlZ2V4IiwgInN0cmluZ0xlbmd0aHMiLCAiU2V0IiwgInRzaGlydFVuaXRSZWdleCIsICJsZW5ndGhVbml0UmVnZXgiLCAiY29sb3JGdW5jdGlvblJlZ2V4IiwgInNoYWRvd1JlZ2V4IiwgImltYWdlUmVnZXgiLCAiaXNMZW5ndGgiLCAiaXNOdW1iZXIiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0SXNBcmJpdHJhcnlWYWx1ZSIsICJpc0xlbmd0aE9ubHkiLCAiTnVtYmVyIiwgImlzTmFOIiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgImlzSW50ZWdlciIsICJpc1BlcmNlbnQiLCAiZW5kc1dpdGgiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJpc1RzaGlydFNpemUiLCAic2l6ZUxhYmVscyIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNOZXZlciIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgImltYWdlTGFiZWxzIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiaXNJbWFnZSIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJpc1NoYWRvdyIsICJpc0FueSIsICJsYWJlbCIsICJ0ZXN0VmFsdWUiLCAiZ2V0RGVmYXVsdENvbmZpZyIsICJjb2xvcnMiLCAiZnJvbVRoZW1lIiwgInNwYWNpbmciLCAiYmx1ciIsICJicmlnaHRuZXNzIiwgImJvcmRlckNvbG9yIiwgImJvcmRlclJhZGl1cyIsICJib3JkZXJTcGFjaW5nIiwgImJvcmRlcldpZHRoIiwgImNvbnRyYXN0IiwgImdyYXlzY2FsZSIsICJodWVSb3RhdGUiLCAiaW52ZXJ0IiwgImdhcCIsICJncmFkaWVudENvbG9yU3RvcHMiLCAiZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMiLCAiaW5zZXQiLCAibWFyZ2luIiwgIm9wYWNpdHkiLCAicGFkZGluZyIsICJzYXR1cmF0ZSIsICJzY2FsZSIsICJzZXBpYSIsICJza2V3IiwgInNwYWNlIiwgInRyYW5zbGF0ZSIsICJnZXRPdmVyc2Nyb2xsIiwgImdldE92ZXJmbG93IiwgImdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc0FyYml0cmFyeVZhbHVlIiwgImdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5IiwgImdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSIsICJpc0xlbmd0aCIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc051bWJlciIsICJnZXRQb3NpdGlvbnMiLCAiZ2V0TGluZVN0eWxlcyIsICJnZXRCbGVuZE1vZGVzIiwgImdldEFsaWduIiwgImdldFplcm9BbmRFbXB0eSIsICJnZXRCcmVha3MiLCAiZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5IiwgImNhY2hlU2l6ZSIsICJzZXBhcmF0b3IiLCAidGhlbWUiLCAiaXNBbnkiLCAiaXNUc2hpcnRTaXplIiwgImlzUGVyY2VudCIsICJjbGFzc0dyb3VwcyIsICJhc3BlY3QiLCAiY29udGFpbmVyIiwgImNvbHVtbnMiLCAiYm94IiwgImRpc3BsYXkiLCAiZmxvYXQiLCAiY2xlYXIiLCAiaXNvbGF0aW9uIiwgIm9iamVjdCIsICJvdmVyZmxvdyIsICJvdmVyc2Nyb2xsIiwgInBvc2l0aW9uIiwgInN0YXJ0IiwgImVuZCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiLCAidmlzaWJpbGl0eSIsICJ6IiwgImlzSW50ZWdlciIsICJiYXNpcyIsICJmbGV4IiwgImdyb3ciLCAic2hyaW5rIiwgIm9yZGVyIiwgImNvbCIsICJzcGFuIiwgInJvdyIsICJqdXN0aWZ5IiwgImNvbnRlbnQiLCAiaXRlbXMiLCAic2VsZiIsICJwIiwgInB4IiwgInB5IiwgInBzIiwgInBlIiwgInB0IiwgInByIiwgInBiIiwgInBsIiwgIm0iLCAibXgiLCAibXkiLCAibXMiLCAibWUiLCAibXQiLCAibXIiLCAibWIiLCAibWwiLCAidyIsICJzY3JlZW4iLCAiaCIsICJzaXplIiwgInRleHQiLCAiZm9udCIsICJpc0FyYml0cmFyeU51bWJlciIsICJ0cmFja2luZyIsICJsZWFkaW5nIiwgImxpc3QiLCAicGxhY2Vob2xkZXIiLCAiZGVjb3JhdGlvbiIsICJpbmRlbnQiLCAiYWxpZ24iLCAid2hpdGVzcGFjZSIsICJicmVhayIsICJoeXBoZW5zIiwgImJnIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAicmVwZWF0IiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc0FyYml0cmFyeUltYWdlIiwgImZyb20iLCAidmlhIiwgInRvIiwgInJvdW5kZWQiLCAiYm9yZGVyIiwgImRpdmlkZSIsICJvdXRsaW5lIiwgInJpbmciLCAic2hhZG93IiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImZpbHRlciIsICJ0YWJsZSIsICJjYXB0aW9uIiwgInRyYW5zaXRpb24iLCAiZHVyYXRpb24iLCAiZWFzZSIsICJkZWxheSIsICJhbmltYXRlIiwgInRyYW5zZm9ybSIsICJyb3RhdGUiLCAib3JpZ2luIiwgImFjY2VudCIsICJhcHBlYXJhbmNlIiwgImN1cnNvciIsICJjYXJldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNuYXAiLCAidG91Y2giLCAic2VsZWN0IiwgImZpbGwiLCAic3Ryb2tlIiwgInNyIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgIm1lcmdlQ29uZmlncyIsICJiYXNlQ29uZmlnIiwgInByZWZpeCIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJleHRlbmQiLCAib3ZlcnJpZGUiLCAib3ZlcnJpZGVQcm9wZXJ0eSIsICJjb25maWdLZXkiLCAib3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzIiwgImtleSIsICJtZXJnZUNvbmZpZ1Byb3BlcnRpZXMiLCAiYmFzZU9iamVjdCIsICJvdmVycmlkZUtleSIsICJvdmVycmlkZVZhbHVlIiwgInVuZGVmaW5lZCIsICJvdmVycmlkZU9iamVjdCIsICJtZXJnZU9iamVjdCIsICJtZXJnZVZhbHVlIiwgImNvbmNhdCIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNvbmZpZ0V4dGVuc2lvbiIsICJjcmVhdGVDb25maWciLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJ0d01lcmdlIiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY24iLCAiaW5wdXRzIiwgImNsc3giLCAidXNlSXNNdXRhdGluZyIsICJ0b0tlYmFiQ2FzZSIsICJzdHJpbmciLCAibWVyZ2VDbGFzc2VzIiwgImNsYXNzZXMiLCAiY2xhc3NOYW1lIiwgImluZGV4IiwgImFycmF5IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIkljb24iLCAiZm9yd2FyZFJlZiIsICJjb2xvciIsICJzaXplIiwgInN0cm9rZVdpZHRoIiwgImFic29sdXRlU3Ryb2tlV2lkdGgiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImljb25Ob2RlIiwgInJlc3QiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAibWVyZ2VDbGFzc2VzIiwgInRhZyIsICJhdHRycyIsICJjcmVhdGVMdWNpZGVJY29uIiwgImljb25OYW1lIiwgImljb25Ob2RlIiwgIkNvbXBvbmVudCIsICJmb3J3YXJkUmVmIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJJY29uIiwgIm1lcmdlQ2xhc3NlcyIsICJ0b0tlYmFiQ2FzZSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiVGFibGUyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiWCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInRvYXN0IiwgImN2YSIsICJqc3giLCAiYmFkZ2VWYXJpYW50cyIsICJjdmEiLCAiQmFkZ2UiLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAicHJvcHMiLCAiY24iLCAiU2xvdCIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImJ1dHRvblZhcmlhbnRzIiwgImN2YSIsICJCdXR0b24iLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAic2l6ZSIsICJhc0NoaWxkIiwgInByb3BzIiwgInJlZiIsICJTbG90IiwgImNuIiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiY2xhc3NOYW1lIiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImpzeCIsICJjbiIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudFByb3ZpZGVyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzIiwgIiNjbGllbnQiLCAiI29ubGluZU1hbmFnZXIiLCAiI3F1ZXJ5Rmxhdm9yIiwgIiN2ZXJzaW9uIiwgIiNpc01vdW50ZWQiLCAiI3N0eWxlTm9uY2UiLCAiI3NoYWRvd0RPTVRhcmdldCIsICIjYnV0dG9uUG9zaXRpb24iLCAiI3Bvc2l0aW9uIiwgIiNpbml0aWFsSXNPcGVuIiwgIiNlcnJvclR5cGVzIiwgIiNDb21wb25lbnQiLCAiI2Rpc3Bvc2UiLCAiY29uZmlnIiwgImNsaWVudCIsICJxdWVyeUZsYXZvciIsICJ2ZXJzaW9uIiwgIm9ubGluZU1hbmFnZXIiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImNyZWF0ZVNpZ25hbCIsICJpc09wZW4iLCAiZWwiLCAiZGlzcG9zZSIsICJyZW5kZXIiLCAiX3NlbGYkIiwgImJ0blBvc2l0aW9uIiwgInBvcyIsICJlcnJvcnMiLCAicXVlcnlDbGllbnQiLCAiRGV2dG9vbHMiLCAibGF6eSIsICJzZXR1cFN0eWxlU2hlZXQiLCAiY3JlYXRlQ29tcG9uZW50IiwgIm1lcmdlUHJvcHMiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwiLCAiI29uQ2xvc2UiLCAib25DbG9zZSIsICJqc3giLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiZGV2dG9vbHMiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJqc3giLCAiUmVhY3RRdWVyeURldnRvb2xzUGFuZWwiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiZGV2dG9vbHMiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwiLCAib25saW5lTWFuYWdlciIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAiUmVhY3RRdWVyeURldnRvb2xzUGFuZWwiLCAiY3JlYXRlQ29udGV4dCIsICJ1c2VDb250ZXh0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAidG9hc3QiLCAiU29ubmVyIiwgImpzeCIsICJUb2FzdGVyIiwgInByb3BzIiwgImNyZWF0ZUFkYXB0ZXJQcm92aWRlciIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlSGFzaEFkYXB0ZXIiLCAicmF3SGFzaCIsICJoYXNoUGFyYW1zIiwgInNldEhhc2hQYXJhbXMiLCAidXBkYXRlVXJsIiwgInVwZGF0ZWQiLCAiaGlzdG9yeSIsICJwYXRobmFtZSIsICJzZWFyY2giLCAiaGFzaCIsICJ1cmwiLCAiZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QiLCAicmF3IiwgImhhbmRsZUhhc2hDaGFuZ2UiLCAiTnVxc0hhc2hBZGFwdGVyIiwgImpzeCIsICJqc3hzIiwgInF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlN0dWRpb0NvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJTdHVkaW9Db250ZXh0UHJvdmlkZXIiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAib3RoZXJQcm9wcyIsICJhY3RpdmVUYWJsZSIsICJzZXRBY3RpdmVUYWJsZSIsICJ1c2VTdGF0ZSIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJ1c2VTdHVkaW8iLCAiY29udGV4dCIsICJ1c2VDb250ZXh0IiwgImdldFJvd0lkIiwgInJvdyIsICJ0YWJsZSIsICJpZCIsICJpbmZlclJvd0ZpbHRlciIsICJhZGRSb3dJZFRvUm93IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAicmVzdWx0IiwgInJvd3MiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAibmV3RGF0YSIsICJvbGREYXRhIiwgInVzZVF1ZXJ5IiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAicHJvcHMiLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNvcnRPcmRlciIsICJmaWx0ZXIiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAicHJldmlvdXNEYXRhIiwgInByZXZpb3VzUXVlcnkiLCAic2NoZW1hIiwgInRhYmxlIiwgInNpZ25hbCIsICJlcnJvciIsICJyZXN1bHRzIiwgImFkZFJvd0lkVG9SZXN1bHQiLCAiaXRlbSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInF1ZXJ5S2V5UHJlZml4IiwgInVzZU11dGF0aW9uIiwgInBhcmFtcyIsICJlcnJvciIsICJyZXN1bHQiLCAiY2hhbmdlcyIsICJyb3ciLCAib3ZlcndyaXRlQ2FjaGVkUm93IiwgImNoYW5nZWRSb3ciLCAicm93RmlsdGVyIiwgImluZmVyUm93RmlsdGVyIiwgImNhY2hlZFJvdyIsICJjb2x1bW5OYW1lIiwgInZhbHVlIiwgIm9yaWdpbmFsVmFsdWVzIiwgImRldGFpbHMiLCAidW5jaGFuZ2VkUm93IiwgIl9fcHNfdXBkYXRlZF9hdF9fIiwgImdldEZpbmRlckZuIiwgInRhYmxlIiwgInVwZGF0ZXJGbiIsICJmaW5kZXIiLCAiY2FjaGVkUmVzdWx0IiwgImNhY2hlZFJvd3MiLCAiY2FjaGVkUm93SW5kZXgiLCAibmV3Um93IiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInNob3J0IiwgIm51cXNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJ1c2VRdWVyeVN0YXRlIiwgInVzZVF1ZXJ5U3RhdGVzIiwgIl9fcmVFeHBvcnQiLCAibnVxc19leHBvcnRzIiwgIm51cXNfc3RhciIsICJ1c2VRdWVyeVN0YXRlT3JpZ2luYWwiLCAidXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJfQlJBTkRfU1lNQk9MIiwgInVzZVF1ZXJ5U3RhdGUiLCAia2V5IiwgIm9wdGlvbnMiLCAidXNlUXVlcnlTdGF0ZXMiLCAiZGVmYXVsdEZpbHRlciIsICJzaG9ydCIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJSZWFjdCIsICJqc3giLCAiVGFibGUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJUYWJsZUhlYWRlciIsICJUYWJsZUJvZHkiLCAiVGFibGVGb290ZXIiLCAiVGFibGVSb3ciLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJUYWJsZUNhcHRpb24iLCAiaXNWYWxpZEVsZW1lbnQiLCAiQ29udGV4dE1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJDb250ZXh0TWVudVN1YkNvbnRlbnQiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJDb250ZXh0TWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkNvbnRleHRNZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJDb250ZXh0TWVudUxhYmVsIiwgIkNvbnRleHRNZW51U2VwYXJhdG9yIiwgIkNvbnRleHRNZW51U2hvcnRjdXQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiY29udGVudCIsICJleHRyYWN0VGV4dENvbnRlbnQiLCAiZXJyb3IiLCAiQ29weSIsICJub2RlIiwgImlzVmFsaWRFbGVtZW50IiwgImpzeCIsICJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiVGFibGVDZWxsIiwgImNuIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkRhdGVDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW1wdHlDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW51bUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAib3B0aW9ucyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkpTT05DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiTnVsbENlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIlJhd0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJUaW1lQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImpzeCIsICJnZXRDZWxsIiwgImNlbGwiLCAiY29sdW1uIiwgInByb3BzIiwgInZhbHVlIiwgIkVtcHR5Q2VsbCIsICJOdWxsQ2VsbCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJDaGVja2JveFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiQ2hlY2tib3giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJDaGVjayIsICJqc3giLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJ0YWJsZSIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJDaGVja2JveCIsICJ2YWx1ZSIsICJmb3J3YXJkUmVmIiwgIkZyYWdtZW50IiwgImpzeCIsICJTZWxlY3RDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiaXNIZWFkZXIiLCAiZm9yd2FyZGVkUHJvcHMiLCAic2VsZWN0Q2xhc3NlcyIsICJjbiIsICJUYWJsZUhlYWQiLCAiVGFibGVDZWxsIiwgImpzeCIsICJTZWxlY3RSb3dDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgInJvdyIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJTZWxlY3RDZWxsIiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgIlBvcG92ZXJDZWxsIiwgIlBvcG92ZXJDZWxsVHJpZ2dlciIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiY24iLCAiY2xvc2VzdENlbnRlciIsICJEbmRDb250ZXh0IiwgIkRyYWdPdmVybGF5IiwgIktleWJvYXJkU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgIlNvcnRhYmxlQ29udGV4dCIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAidXNlU29ydGFibGUiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIkNTUyIsICJtb3Rpb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImNyZWF0ZVBvcnRhbCIsICJzaG9ydCIsICJjb2VyY2VUb1ZhbHVlIiwgImNvbHVtbiIsICJvcGVyYXRvciIsICJ2YWx1ZSIsICJkYXRhVHlwZUdyb3VwIiwgImNvZXJjZVRvU3RyaW5nIiwgIkRyb3Bkb3duTWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJEcm9wZG93bk1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkRyb3Bkb3duTWVudVN1YkNvbnRlbnQiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJzaWRlT2Zmc2V0IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiRHJvcGRvd25NZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJEcm9wZG93bk1lbnVMYWJlbCIsICJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCAiRHJvcGRvd25NZW51U2hvcnRjdXQiLCAiUmVhY3QiLCAianN4IiwgIklucHV0IiwgImNsYXNzTmFtZSIsICJ0eXBlIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTZWxlY3RQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiU2VsZWN0IiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdFRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uRG93biIsICJTZWxlY3RTY3JvbGxVcEJ1dHRvbiIsICJDaGV2cm9uVXAiLCAiU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiIsICJTZWxlY3RDb250ZW50IiwgInBvc2l0aW9uIiwgIlNlbGVjdExhYmVsIiwgIlNlbGVjdEl0ZW0iLCAiQ2hlY2siLCAiU2VsZWN0U2VwYXJhdG9yIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkxlYWRpbmdPcGVyYXRvclNlbGVjdCIsICJ2YWx1ZSIsICJvblZhbHVlQ2hhbmdlIiwgImRpc2FibGVkIiwgInRyaWdnZXJDbGFzc05hbWUiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJTZWxlY3RJdGVtIiwgIkRyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IiwgImFjdGl2ZUlkIiwgIml0ZW1zIiwgInRhYmxlIiwgImFjdGl2ZUl0ZW0iLCAiaXRlbSIsICJsZWFkaW5nT3BlcmF0b3JWYWx1ZSIsICJzaG93TGVhZGluZ09wRm9yT3ZlcmxheSIsICJhY3RpdmVJdGVtSW5kZXgiLCAicHJldmlvdXNJdGVtIiwgIkZpbHRlckNvbmRpdGlvbiIsICJGaWx0ZXJHcm91cENvbXBvbmVudCIsICJGaWx0ZXJMaXN0SXRlbXMiLCAicGFyZW50R3JvdXBJZCIsICJvblVwZGF0ZUl0ZW0iLCAib25EZWxldGVJdGVtIiwgIm9uUmVvcmRlckl0ZW1zIiwgImFjdGl2ZURyYWdJZCIsICJvbkRyYWdTdGFydCIsICJvbkRyYWdFbmRTaWduYWwiLCAic29ydGFibGVJdGVtSWRzIiwgInVzZU1lbW8iLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInVzZVNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgIktleWJvYXJkU2Vuc29yIiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJEbmRDb250ZXh0IiwgImNsb3Nlc3RDZW50ZXIiLCAiZXZlbnQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib2xkSW5kZXgiLCAibmV3SW5kZXgiLCAiU29ydGFibGVDb250ZXh0IiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJjdXJyZW50RmlsdGVySXRlbSIsICJpbmRleCIsICJzaG93TGVhZGluZ09wIiwgImxlYWRpbmdPcFZhbCIsICJvbkxlYWRpbmdPcENoYW5nZUZuIiwgImlzTGVhZGluZ09wVGFyZ2V0TGFzdCIsICJwcmV2SXRlbSIsICJuZXdWYWx1ZSIsICJ1cGRhdGVkUHJldkl0ZW0iLCAiU29ydGFibGVGaWx0ZXJJdGVtIiwgInVwZGF0ZWRGaWx0ZXIiLCAiY3JlYXRlUG9ydGFsIiwgIkRyYWdPdmVybGF5IiwgImZpbHRlciIsICJvblVwZGF0ZSIsICJvbkRlbGV0ZSIsICJwYXJlbnREbmRJZCIsICJzaG93TGVhZGluZ09wZXJhdG9yIiwgIm9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlIiwgImlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJzZXROb2RlUmVmIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAic3R5bGUiLCAiQ1NTIiwgImRyYWdIYW5kbGVQcm9wcyIsICJoYW5kbGVDb2x1bW5DaGFuZ2UiLCAiaGFuZGxlT3BlcmF0b3JDaGFuZ2UiLCAiaGFuZGxlVmFsdWVDaGFuZ2UiLCAiZSIsICJyYXdWYWx1ZSIsICJjb2x1bW5JbmZvIiwgImNvZXJjZVRvVmFsdWUiLCAiZWRpdGVkVmFsdWUiLCAic2V0RWRpdGVkVmFsdWUiLCAidXNlU3RhdGUiLCAiY29lcmNlVG9TdHJpbmciLCAibW90aW9uIiwgIkdyaXBWZXJ0aWNhbCIsICJjb2x1bW4iLCAiSW5wdXQiLCAiQnV0dG9uIiwgIlgiLCAiZ3JvdXAiLCAiaXNSb290IiwgImlzRXhwYW5kZWQiLCAic2V0SXNFeHBhbmRlZCIsICJzZXRBY3RpdmVEcmFnSWQiLCAiaGFuZGxlQWRkRmlsdGVyIiwgIm5ld0ZpbHRlciIsICJzaG9ydCIsICJoYW5kbGVBZGRHcm91cCIsICJuZXdHcm91cCIsICJ1cGRhdGVJdGVtSW5Hcm91cCIsICJ1cGRhdGVkRmlsdGVyT3JHcm91cCIsICJuZXdGaWx0ZXJzIiwgImRlbGV0ZUl0ZW1Gcm9tR3JvdXAiLCAiaGFuZGxlRHJhZ1N0YXJ0IiwgImhhbmRsZURyYWdFbmRTaWduYWwiLCAiaGFuZGxlUmVvcmRlckl0ZW1zIiwgInJlb3JkZXJlZEZpbHRlcnMiLCAiYXJyYXlNb3ZlIiwgInJlbmRlckdyb3VwQ29udGVudCIsICJjbiIsICJDaGV2cm9uRG93biIsICJDaGV2cm9uUmlnaHQiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJDaXJjbGVIZWxwIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiUXVlcnlWaXN1YWxpemVyIiwgImlzQW5kR3JvdXBPcGVuIiwgImYiLCAiaSIsICJyZXN1bHQiLCAiaXNMYXN0IiwgIm9wZXJhdG9yIiwgIkZpbHRlclRyZWUiLCAic2V0RmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiRG5kQ29udGV4dCIsICJNb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiU29ydGFibGVDb250ZXh0IiwgInVzZVNvcnRhYmxlIiwgIkNTUyIsICJnZXRDb3JlUm93TW9kZWwiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRJdGVtIiwgImtleSIsICJpdGVtVmFsdWUiLCAibG9jYWxTdG9yYWdlIiwgIkpTT04iLCAicGFyc2UiLCAidXNlTG9jYWxTdG9yYWdlIiwgImRlZmF1bHRWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAiaW5pdGlhbFZhbHVlIiwgInNldHRlciIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyIiwgIm9sZCIsICJuZXdWYWwiLCAic2V0SXRlbSIsICJzdHJpbmdpZnkiLCAiZGVmYXVsdFRoZW1lIiwgImJhY2tncm91bmQiLCAiYmFja2dyb3VuZEFsdCIsICJmb3JlZ3JvdW5kIiwgImdyYXkiLCAiZ3JheUFsdCIsICJpbnB1dEJhY2tncm91bmRDb2xvciIsICJpbnB1dFRleHRDb2xvciIsICJzdWNjZXNzIiwgImRhbmdlciIsICJhY3RpdmUiLCAid2FybmluZyIsICJUaGVtZUNvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJUaGVtZVByb3ZpZGVyIiwgIl9yZWYiLCAidGhlbWUiLCAicmVzdCIsICJjcmVhdGVFbGVtZW50IiwgIlByb3ZpZGVyIiwgIl9leHRlbmRzIiwgInVzZVRoZW1lIiwgInVzZUNvbnRleHQiLCAidXNlTWVkaWFRdWVyeSIsICJxdWVyeSIsICJpc01hdGNoIiwgInNldElzTWF0Y2giLCAid2luZG93IiwgIm1hdGNoTWVkaWEiLCAibWF0Y2hlcyIsICJtYXRjaGVyIiwgIm9uQ2hhbmdlIiwgImFkZExpc3RlbmVyIiwgInJlbW92ZUxpc3RlbmVyIiwgImlzU2VydmVyIiwgInN0eWxlZCIsICJ0eXBlIiwgIm5ld1N0eWxlcyIsICJxdWVyaWVzIiwgImZvcndhcmRSZWYiLCAicmVmIiwgInN0eWxlIiwgIm1lZGlhU3R5bGVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgInJlZHVjZSIsICJjdXJyZW50IiwgIl9yZWYyIiwgInVzZUlzTW91bnRlZCIsICJtb3VudGVkUmVmIiwgInVzZVJlZiIsICJpc01vdW50ZWQiLCAiUGFuZWwiLCAiX3Byb3BzIiwgImZvbnRTaXplIiwgImZvbnRGYW1pbHkiLCAiZGlzcGxheSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiY29sb3IiLCAiZmxleERpcmVjdGlvbiIsICJmbGV4IiwgIm92ZXJmbG93IiwgImhlaWdodCIsICIobWF4LXdpZHRoOiA3MDBweCkiLCAiYm9yZGVyVG9wIiwgIkJ1dHRvbiIsICJwcm9wcyIsICJhcHBlYXJhbmNlIiwgImZvbnRXZWlnaHQiLCAiYm9yZGVyIiwgImJvcmRlclJhZGl1cyIsICJwYWRkaW5nIiwgIm9wYWNpdHkiLCAiZGlzYWJsZWQiLCAidW5kZWZpbmVkIiwgImN1cnNvciIsICJsaW5lSGVpZ2h0IiwgIldlYmtpdEFwcGVhcmFuY2UiLCAiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmRSZXBlYXQiLCAiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmRTaXplIiwgIkVudHJ5IiwgIm91dGxpbmUiLCAid29yZEJyZWFrIiwgIkxhYmVsIiwgIlZhbHVlIiwgIlN1YkVudHJpZXMiLCAibWFyZ2luTGVmdCIsICJwYWRkaW5nTGVmdCIsICJib3JkZXJMZWZ0IiwgIkluZm8iLCAiRXhwYW5kZXIiLCAiZXhwYW5kZWQiLCAidHJhbnNpdGlvbiIsICJ0cmFuc2Zvcm0iLCAiRGVmYXVsdFJlbmRlcmVyIiwgImhhbmRsZUVudHJ5IiwgImxhYmVsIiwgInN1YkVudHJpZXMiLCAic3ViRW50cnlQYWdlcyIsICJ0b2dnbGUiLCAicGFnZVNpemUiLCAicmVuZGVyZXIiLCAidmFsdWVTbmFwc2hvdCIsICJzZXRWYWx1ZVNuYXBzaG90IiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJyZWZyZXNoVmFsdWVTbmFwc2hvdCIsICJsZW5ndGgiLCAiRnJhZ21lbnQiLCAib25DbGljayIsICJTdHJpbmciLCAidG9Mb3dlckNhc2UiLCAibWFwIiwgImVudHJ5IiwgImluZGV4IiwgImluY2x1ZGVzIiwgImZpbHRlciIsICJkIiwgIkV4cGxvcmVyIiwgImRlZmF1bHRFeHBhbmRlZCIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9yZWYzIiwgImRlcHRoIiwgInNldEV4cGFuZGVkIiwgInNldCIsICJwYXRoIiwgIm1ha2VQcm9wZXJ0eSIsICJzdWIiLCAibmV3UGF0aCIsICJjb25jYXQiLCAic3ViRGVmYXVsdEV4cGFuZGVkIiwgInN1YlBhdGgiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJpIiwgIlN5bWJvbCIsICJpdGVyYXRvciIsICJmcm9tIiwgInZhbCIsICJfcmVmNCIsICJwdXNoIiwgInNsaWNlIiwgIkxvZ28iLCAid2lkdGgiLCAidmlld0JveCIsICJ2ZXJzaW9uIiwgInN0cm9rZSIsICJzdHJva2VXaWR0aCIsICJmaWxsIiwgImZpbGxSdWxlIiwgImlkIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJpbml0aWFsSXNPcGVuIiwgInRhYmxlIiwgInBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uUHJvcHMiLCAiY29udGFpbmVyRWxlbWVudCIsICJDb250YWluZXIiLCAicm9vdFJlZiIsICJwYW5lbFJlZiIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgInBhbmVsU3R5bGUiLCAib3RoZXJQYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblN0eWxlIiwgIm9uVG9nZ2xlQ2xpY2siLCAib3RoZXJUb2dnbGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiUmVhY3RUYWJsZURldnRvb2xzUGFuZWwiLCAibWF4SGVpZ2h0IiwgImUiLCAibWFyZ2luIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgIl9faHRtbCIsICJtaW5IZWlnaHQiLCAiYm9yZGVyUmlnaHQiLCAianVzdGlmeUNvbnRlbnQiLCAiYWxpZ25JdGVtcyIsICJtYXJnaW5SaWdodCIsICJmbGV4V3JhcCIsICJvdmVyZmxvd1kiLCAiZ2V0U3RhdGUiLCAiZ2V0QWxsQ29sdW1ucyIsICJnZXRDb3JlUm93TW9kZWwiLCAiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsICJnZXRTb3J0ZWRSb3dNb2RlbCIsICJnZXRHcm91cGVkUm93TW9kZWwiLCAiZ2V0RXhwYW5kZWRSb3dNb2RlbCIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgImpzeCIsICJTa2VsZXRvbiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAiZmxleFJlbmRlciIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyIiwgInByb3BzIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiZmxleFJlbmRlciIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk1vdmVEb3duIiwgIk1vdmVVcCIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJCdXR0b24iLCAiQ2hldnJvbkRvd24iLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiWCIsICJQaW5PZmYiLCAiUGluIiwgImUiLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJpc1NlbGVjdENvbHVtbiIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiZGlzYWJsZURyYWdnaW5nIiwgImF0dHJpYnV0ZXMiLCAibGlzdGVuZXJzIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgInNldE5vZGVSZWYiLCAiaXNEcmFnZ2luZyIsICJ1c2VTb3J0YWJsZSIsICJkcmFnU3R5bGUiLCAiQ1NTIiwgImNvbW1vbkNsYXNzIiwgImNuIiwgImRyYWdDbGFzcyIsICJUYWJsZUhlYWQiLCAiRGF0YUdyaWQiLCAiY29sdW1uRGVmcyIsICJnZXRCZWZvcmVSb3dzIiwgImlzTG9hZGluZyIsICJpc1Byb2Nlc3NpbmciLCAib25QYWdpbmF0aW9uQ2hhbmdlIiwgIm9uUm93U2VsZWN0aW9uQ2hhbmdlIiwgIm9uU29ydGluZ0NoYW5nZSIsICJwYWdlQ291bnQiLCAicGFnaW5hdGlvblN0YXRlIiwgInJvd3MiLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic29ydGluZ1N0YXRlIiwgImNvbHVtbk9yZGVyIiwgInNldENvbHVtbk9yZGVyIiwgInVzZVN0YXRlIiwgImNvbHVtblBpbm5pbmciLCAic2V0Q29sdW1uUGlubmluZyIsICJjb2x1bW5TaXppbmciLCAic2V0Q29sdW1uU2l6aW5nIiwgInNvcnRpbmciLCAidXNlTWVtbyIsICJ0b1NvcnRpbmdTdGF0ZSIsICJkaXNwbGF5TG9hZGVyIiwgInVzZUVmZmVjdCIsICJhY2Nlc3NvcktleSIsICJoYW5kbGVEcmFnRW5kIiwgImFjdGl2ZSIsICJvdmVyIiwgIm9yZGVyIiwgImFjdGl2ZUluZGV4IiwgIm92ZXJJbmRleCIsICJhcnJheU1vdmUiLCAibW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgIk1vdXNlU2Vuc29yIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgImdldENvcmVSb3dNb2RlbCIsICJfX3BzX3Jvd2lkIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJ0b1NvcnRPcmRlckl0ZW1zIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJEYXRhR3JpZExvYWRpbmdCYXIiLCAiRG5kQ29udGV4dCIsICJUYWJsZSIsICJUYWJsZUhlYWRlciIsICJoZWFkZXJHcm91cCIsICJUYWJsZVJvdyIsICJTb3J0YWJsZUNvbnRleHQiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaGVhZGVyRm4iLCAiSGVhZGVyQ29tcG9uZW50IiwgInBpbm5pbmdTdHlsZXMiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJEYXRhR3JpZEhlYWRlciIsICJUYWJsZUJvZHkiLCAicm93IiwgImNlbGwiLCAiaSIsICJDZWxsIiwgIlRhYmxlQ2VsbCIsICJTa2VsZXRvbiIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJmcm9tIiwgIml0ZW0iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiaXNPYmplY3RUeXBlIiwgIm1vdGlvbiIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJMYWJlbFByaW1pdGl2ZSIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImxhYmVsVmFyaWFudHMiLCAiY3ZhIiwgIkxhYmVsIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU3dpdGNoUHJpbWl0aXZlcyIsICJSZWFjdCIsICJqc3giLCAiU3dpdGNoIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSW5wdXRBY3Rpb25zIiwgIm9uU2F2ZSIsICJvbkNhbmNlbCIsICJvbkNsb3NlIiwgIm9uTnVsbENoYW5nZSIsICJpc051bGwiLCAicmVhZG9ubHkiLCAiQ29ybmVyRG93bkxlZnQiLCAiU3dpdGNoIiwgImNoZWNrZWQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQm9vbGVhbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJ2YWx1ZVRvU3VibWl0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJtb3Rpb24iLCAiU3dpdGNoIiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWREYXRlIiwgInVzZU1lbW8iLCAiZGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgInVzZUNhbGxiYWNrIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkVudW1JbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAidmFsdWUiLCAib3B0aW9ucyIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlU2VsZWN0T3B0aW9uIiwgIm9wdGlvbiIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImJhZGdlVmFyaWFudHMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkpzb25JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJqc29uVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJOdW1lcmljSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAibnVtZXJpY1ZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiUmF3SW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiVGltZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZFRpbWUiLCAidXNlTWVtbyIsICJoYXNUaW1lem9uZSIsICJkYXRlIiwgInRpbWVSZWdleCIsICJtYXRjaCIsICJob3VycyIsICJtaW51dGVzIiwgInR6T2Zmc2V0IiwgInBlcmlvZCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImpzeCIsICJnZXRJbnB1dCIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJvblN1Ym1pdCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAicmVhZG9ubHkiLCAiY2VsbFZhbHVlIiwgInZhbHVlIiwgIkRhdGVJbnB1dCIsICJUaW1lSW5wdXQiLCAiSnNvbklucHV0IiwgIkJvb2xlYW5JbnB1dCIsICJFbnVtSW5wdXQiLCAiTnVtZXJpY0lucHV0IiwgIlJhd0lucHV0IiwgImlzT2JqZWN0VHlwZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAiRnJhZ21lbnQiLCAianN4IiwgIlN0YWdlZFJvd3MiLCAicHJvcHMiLCAicGFyZW50VGFibGUiLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInJlYWRvbmx5IiwgInVzZUlzSW5zZXJ0aW5nIiwgInVwZGF0ZVN0YWdlZFJvdyIsICJyb3dJbmRleCIsICJwYXJ0aWFsUm93IiwgInByZXZSb3dzIiwgIm5ld1Jvd3MiLCAiY29sdW1uRGVmcyIsICJjb2x1bW4iLCAiRW1wdHlDZWxsIiwgImNlbGwiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZhbHVlIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJyb3ciLCAiaSIsICJUYWJsZVJvdyIsICJqIiwgIkNlbGwiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJBY3RpdmVUYWJsZVZpZXciLCAiX3Byb3BzIiwgImlzTXV0YXRpbmciLCAidXNlSXNNdXRhdGluZyIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgImlzRnVsbHNjcmVlbiIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInBhZ2luYXRpb25TdGF0ZSIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAidXNlU3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUZpbHRlcmluZyIsICJkYXRhIiwgImlzRmV0Y2hpbmciLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJkZWxldGVTZWxlY3Rpb24iLCAiaXNTZWxlY3RpbmciLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU2VsZWN0aW9uIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpc0luc2VydGluZyIsICJ1c2VJc0luc2VydGluZyIsICJpbnNlcnQiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAidXBkYXRlIiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgInVzZUVmZmVjdCIsICJzYXZlU3RhZ2VkUm93cyIsICJ0b2FzdCIsICJuZXdTdGFnZWRSb3ciLCAib2xkIiwgImRyb3BTdGFnZWRSb3dzIiwgImhhbmRsZUNlbGxJbnB1dFN1Ym1pdCIsICJ2YWx1ZSIsICJyb3ciLCAib25GaWx0ZXJPcGVuQ2hhbmdlIiwgIm9wZW4iLCAiY29uY3JldGVDb2x1bW5EZWZzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjZWxsIiwgInByb3BzIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2aXJ0dWFsQ29sdW1uRGVmcyIsICJ0YWJsZSIsICJTZWxlY3RIZWFkZXJDZWxsIiwgIlNlbGVjdFJvd0NlbGwiLCAiY29sdW1uRGVmcyIsICJkZWZhdWx0Q29sdW1uU29ydGluZyIsICJCdXR0b24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiUGFuZWxMZWZ0T3BlbiIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgImNuIiwgIkZpbHRlciIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIlBvcG92ZXJDb250ZW50IiwgIkZpbHRlclRyZWUiLCAiZmlsdGVyIiwgIk1pbmltaXplIiwgIk1heGltaXplIiwgIkRhdGFHcmlkIiwgIlN0YWdlZFJvd3MiLCAiZ2V0UGFnZUNvdW50IiwgInJvd0NvdW50IiwgInBhZ2VTaXplIiwgInBhZ2VDb3VudCIsICJhIiwgImIiLCAiYU1ldGEiLCAiYk1ldGEiLCAiU2xvdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1dWlkdjQiLCAidXNlUXVlcnkiLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJzaWduYWwiLCAiZXJyb3IiLCAiaW50cm9zcGVjdGlvbiIsICJjdHgiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlU3R1ZGlvIiwgImludHJvc3BlY3Rpb24iLCAiZGF0YVVwZGF0ZWRBdCIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImlzTG9hZGluZyIsICJJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCIsICJ0YWJsZXMiLCAidXNlTWVtbyIsICJ0b3RhbFRhYmxlQ291bnQiLCAic3VtIiwgInNjaGVtYSIsICJmaXJzdFRhYmxlIiwgInRhYmxlQW5kU2NoZW1hIiwgInNldFRhYmxlQW5kU2NoZW1hIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInYiLCAic2V0UGFnZVBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAic2V0U29ydFBhcmFtIiwgInVzZUVmZmVjdCIsICJ0YWJsZUZyb21QYXJhbSIsICJ0IiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUNhbGxiYWNrIiwgIm5ld1RhYmxlIiwgInV1aWR2NCIsICJqc3giLCAianN4cyIsICJOYXZpZ2F0aW9uIiwgImNsYXNzTmFtZSIsICJ0YWJsZXMiLCAiYWN0aXZlVGFibGUiLCAiaXNMb2FkaW5nIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgInNpZGVCYXJDbGFzc2VzIiwgImNuIiwgInRhYmxlIiwgIl8iLCAiaW5kZXgiLCAiU2tlbGV0b24iLCAiQmxvY2siLCAibGFiZWwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAiVGFibGUyIiwgIkl0ZW0iLCAiYXNDaGlsZCIsICJpc0FjdGl2ZSIsICJzaXplIiwgIndyYXBDaGlsZHJlbkluU3BhbiIsICJTbG90IiwgImpzeCIsICJqc3hzIiwgIlN0dWRpbyIsICJwcm9wcyIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAib25UZWxlbWV0cnlFdmVudCIsICJTdHVkaW9Db250ZXh0UHJvdmlkZXIiLCAiU3R1ZGlvQ29udGVudCIsICJpc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAiY29udGFpbmVyQ2xhc3NlcyIsICJjbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk5hdmlnYXRpb24iLCAiQWN0aXZlVGFibGVWaWV3Il0KfQo=
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2tleS1yb3VuZC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21heGltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWluaW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtb3Blbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi1vZmYudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy90YWJsZS0yLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9zdHVkaW8vY29udGV4dC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9pbmRleC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Nvbm5lci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL051cXNIYXNoQWRhcHRlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHQudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtZmlsdGVyaW5nLnRzIiwgIi4uLy4uL3VpL2hvb2tzL251cXMudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90YWJsZS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdENlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2FsZW5kYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IFN0dWRpb0NvbnRleHRQcm92aWRlciwgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gXCIuL05hdmlnYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgPSB7XG4gIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiO1xuICBwYXlsb2FkOiB7XG4gICAgZXZlbnRfaWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IHN0cmluZztcbiAgICB1c2VyX2lkPzogc3RyaW5nO1xuICAgIHdvcmtzcGFjZV9pZD86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25faWQ/OiBzdHJpbmc7XG4gICAgZW1iZWRkaW5nX3R5cGU/OiBzdHJpbmc7XG4gICAgdmVuZG9yX2lkPzogc3RyaW5nO1xuICAgIHRhYmxlX2NvdW50OiBudW1iZXI7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb1Byb3BzIHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFpbiBTdHVkaW8gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgZGF0YWJhc2UgdmlzdWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvKHByb3BzOiBTdHVkaW9Qcm9wcykge1xuICBjb25zdCB7IGFkYXB0ZXIsIG9uRXJyb3IsIG9uVGVsZW1ldHJ5RXZlbnQgfSA9IHByb3BzO1xuXG4gIGlmICghYWRhcHRlcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhZGFwdGVyIHByb3ZpZGVkIHRvIFN0dWRpbyBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIDxkaXY+RXJyb3I6IE5vIGFkYXB0ZXIgcHJvdmlkZWQ8L2Rpdj47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHVkaW9Db250ZXh0UHJvdmlkZXIgYWRhcHRlcj17YWRhcHRlcn0gb25FcnJvcj17b25FcnJvcn0gb25UZWxlbWV0cnlFdmVudD17b25UZWxlbWV0cnlFdmVudH0+XG4gICAgICA8U3R1ZGlvQ29udGVudCAvPlxuICAgIDwvU3R1ZGlvQ29udGV4dFByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBTdHVkaW9Db250ZW50KCkge1xuICBjb25zdCB7IGlzRnVsbHNjcmVlbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgY29uc3QgY29udGFpbmVyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGwgcHMtbWluLWgtMCBwcy1tYXgtaC1mdWxsXCIsXG4gICAgaXNGdWxsc2NyZWVuICYmIFwicHMtZml4ZWQgcHMtaW5zZXQtMCBwcy16LVs5OTk5XSBwcy1iZy1iYWNrZ3JvdW5kIHBzLXAtMlwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLWZ1bGxzY3JlZW49e2lzRnVsbHNjcmVlbn0gY2xhc3NOYW1lPXtjb250YWluZXJDbGFzc2VzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1nYXAtMCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC01MCBwcy1yZWxhdGl2ZSBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtcm91bmRlZC1sZ1wiPlxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gJiYgKFxuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBcImF1dG9cIiwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24gLz5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cblxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtMTAwIHBzLWZsZXgtY29sIHBzLXAtcHggcHMtcm91bmRlZC1sZyBwcy1zZWxmLXN0YXJ0IHBzLWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLW1heC1oLWZ1bGwgcHMtb3ZlcmZsb3ctY2xpcFwiXG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEFjdGl2ZVRhYmxlVmlldyAvPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICIvLyBzaGFkY24gdXRpbHNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBleHRlbmRUYWlsd2luZE1lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCI7XG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gZXh0ZW5kVGFpbHdpbmRNZXJnZSh7XG4gIHByZWZpeDogXCJwcy1cIixcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIENsYXNzR3JvdXAsXG4gICAgQ2xhc3NWYWxpZGF0b3IsXG4gICAgQ29uZmlnLFxuICAgIEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIEdlbmVyaWNDb25maWcsXG4gICAgR2VuZXJpY1RoZW1lR3JvdXBJZHMsXG4gICAgVGhlbWVHZXR0ZXIsXG4gICAgVGhlbWVPYmplY3QsXG59IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NQYXJ0T2JqZWN0IHtcbiAgICBuZXh0UGFydDogTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PlxuICAgIHZhbGlkYXRvcnM6IENsYXNzVmFsaWRhdG9yT2JqZWN0W11cbiAgICBjbGFzc0dyb3VwSWQ/OiBHZW5lcmljQ2xhc3NHcm91cElkc1xufVxuXG5pbnRlcmZhY2UgQ2xhc3NWYWxpZGF0b3JPYmplY3Qge1xuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbiAgICB2YWxpZGF0b3I6IENsYXNzVmFsaWRhdG9yXG59XG5cbmNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgY2xhc3NNYXAgPSBjcmVhdGVDbGFzc01hcChjb25maWcpXG4gICAgY29uc3QgeyBjb25mbGljdGluZ0NsYXNzR3JvdXBzLCBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMgfSA9IGNvbmZpZ1xuXG4gICAgY29uc3QgZ2V0Q2xhc3NHcm91cElkID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzUGFydHMgPSBjbGFzc05hbWUuc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICAgICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgICAgICBpZiAoY2xhc3NQYXJ0c1swXSA9PT0gJycgJiYgY2xhc3NQYXJ0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIGNsYXNzUGFydHMuc2hpZnQoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMsIGNsYXNzTWFwKSB8fCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkoY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIGNvbnN0IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyA9IChcbiAgICAgICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyOiBib29sZWFuLFxuICAgICkgPT4ge1xuICAgICAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW11cblxuICAgICAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0hXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICAgICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzLFxuICAgIH1cbn1cblxuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoXG4gICAgY2xhc3NQYXJ0czogc3RyaW5nW10sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4pOiBHZW5lcmljQ2xhc3NHcm91cElkcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF0hXG4gICAgY29uc3QgbmV4dENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQoY3VycmVudENsYXNzUGFydClcbiAgICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0XG4gICAgICAgID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdClcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydFxuICAgIH1cblxuICAgIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7IHZhbGlkYXRvciB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZFxufVxuXG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC9cblxuY29uc3QgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5ID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgICAgIGNvbnN0IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lID0gYXJiaXRyYXJ5UHJvcGVydHlSZWdleC5leGVjKGNsYXNzTmFtZSkhWzFdXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZyhcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JyksXG4gICAgICAgIClcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzTWFwID0gKGNvbmZpZzogQ29uZmlnPEdlbmVyaWNDbGFzc0dyb3VwSWRzLCBHZW5lcmljVGhlbWVHcm91cElkcz4pID0+IHtcbiAgICBjb25zdCB7IHRoZW1lLCBwcmVmaXggfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGNsYXNzTWFwOiBDbGFzc1BhcnRPYmplY3QgPSB7XG4gICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PigpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmNsYXNzR3JvdXBzKSxcbiAgICAgICAgcHJlZml4LFxuICAgIClcblxuICAgIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsYXNzTWFwXG59XG5cbmNvbnN0IHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkgPSAoXG4gICAgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICB0aGVtZTogVGhlbWVPYmplY3Q8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgY2xhc3NHcm91cC5mb3JFYWNoKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPVxuICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbiA9PT0gJycgPyBjbGFzc1BhcnRPYmplY3QgOiBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwgY2xhc3NEZWZpbml0aW9uKVxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbih0aGVtZSksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogY2xhc3NEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwLFxuICAgICAgICAgICAgICAgIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBrZXkpLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBnZXRQYXJ0ID0gKGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdFxuXG4gICAgcGF0aC5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUikuZm9yRWFjaCgocGF0aFBhcnQpID0+IHtcbiAgICAgICAgaWYgKCFjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmhhcyhwYXRoUGFydCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuc2V0KHBhdGhQYXJ0LCB7XG4gICAgICAgICAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpIVxuICAgIH0pXG5cbiAgICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdFxufVxuXG5jb25zdCBpc1RoZW1lR2V0dGVyID0gKGZ1bmM6IENsYXNzVmFsaWRhdG9yIHwgVGhlbWVHZXR0ZXIpOiBmdW5jIGlzIFRoZW1lR2V0dGVyID0+XG4gICAgKGZ1bmMgYXMgVGhlbWVHZXR0ZXIpLmlzVGhlbWVHZXR0ZXJcblxuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChcbiAgICBjbGFzc0dyb3VwRW50cmllczogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+LFxuICAgIHByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+ID0+IHtcbiAgICBpZiAoIXByZWZpeCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXNcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXAgPSBjbGFzc0dyb3VwLm1hcCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIFtjbGFzc0dyb3VwSWQsIHByZWZpeGVkQ2xhc3NHcm91cF1cbiAgICB9KVxufVxuIiwgIi8vIEV4cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGNvbXBsYWlucyBhYm91dCBhbiBlcnJvciBvdGhlcndpc2U6XG4vLyBFcnJvcjogXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9jb25maWctdXRpbHMudHMoOCwxNyk6IHNlbWFudGljIGVycm9yIFRTNDA1ODogUmV0dXJuIHR5cGUgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ0xydUNhY2hlJyBmcm9tIGV4dGVybmFsIG1vZHVsZSBcIlx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvbHJ1LWNhY2hlXCIgYnV0IGNhbm5vdCBiZSBuYW1lZC5cbmV4cG9ydCBpbnRlcmZhY2UgTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4ge1xuICAgIGdldChrZXk6IEtleSk6IFZhbHVlIHwgdW5kZWZpbmVkXG4gICAgc2V0KGtleTogS2V5LCB2YWx1ZTogVmFsdWUpOiB2b2lkXG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmV4cG9ydCBjb25zdCBjcmVhdGVMcnVDYWNoZSA9IDxLZXksIFZhbHVlPihtYXhDYWNoZVNpemU6IG51bWJlcik6IExydUNhY2hlPEtleSwgVmFsdWU+ID0+IHtcbiAgICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzZXQ6ICgpID0+IHt9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlU2l6ZSA9IDBcbiAgICBsZXQgY2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcbiAgICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuXG4gICAgY29uc3QgdXBkYXRlID0gKGtleTogS2V5LCB2YWx1ZTogVmFsdWUpID0+IHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgIGNhY2hlU2l6ZSsrXG5cbiAgICAgICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgICAgICAgY2FjaGVTaXplID0gMFxuICAgICAgICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSlcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfVxufVxuIiwgImltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXJzZUNsYXNzTmFtZSA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCB7IHNlcGFyYXRvciwgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUgfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMVxuICAgIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdXG4gICAgY29uc3Qgc2VwYXJhdG9yTGVuZ3RoID0gc2VwYXJhdG9yLmxlbmd0aFxuXG4gICAgLy8gcGFyc2VDbGFzc05hbWUgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9ibG9iL3YzLjIuMi9zcmMvdXRpbC9zcGxpdEF0VG9wTGV2ZWxPbmx5LmpzXG4gICAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gW11cblxuICAgICAgICBsZXQgYnJhY2tldERlcHRoID0gMFxuICAgICAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDBcbiAgICAgICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDaGFyYWN0ZXIgPSBjbGFzc05hbWVbaW5kZXhdXG5cbiAgICAgICAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmXG4gICAgICAgICAgICAgICAgICAgIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goY2xhc3NOYW1lLnNsaWNlKG1vZGlmaWVyU3RhcnQsIGluZGV4KSlcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJTdGFydCA9IGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoKytcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydClcbiAgICAgICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUilcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uID1cbiAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgID8gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gLSBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kaWZpZXJzLFxuICAgICAgICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbixcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7IGNsYXNzTmFtZSwgcGFyc2VDbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDbGFzc05hbWVcbn1cblxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRNb2RpZmllcnMgPSAobW9kaWZpZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIG1vZGlmaWVyc1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuICAgIGxldCB1bnNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuXG4gICAgbW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWydcblxuICAgICAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICAgICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKVxuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMucHVzaChtb2RpZmllcilcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpXG5cbiAgICByZXR1cm4gc29ydGVkTW9kaWZpZXJzXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ2xhc3NHcm91cFV0aWxzIH0gZnJvbSAnLi9jbGFzcy1ncm91cC11dGlscydcbmltcG9ydCB7IGNyZWF0ZUxydUNhY2hlIH0gZnJvbSAnLi9scnUtY2FjaGUnXG5pbXBvcnQgeyBjcmVhdGVQYXJzZUNsYXNzTmFtZSB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29uZmlnVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiAoe1xuICAgIGNhY2hlOiBjcmVhdGVMcnVDYWNoZTxzdHJpbmcsIHN0cmluZz4oY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZyksXG59KVxuIiwgImltcG9ydCB7IENvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBJTVBPUlRBTlRfTU9ESUZJRVIsIHNvcnRNb2RpZmllcnMgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy9cblxuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NMaXN0ID0gKGNsYXNzTGlzdDogc3RyaW5nLCBjb25maWdVdGlsczogQ29uZmlnVXRpbHMpID0+IHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NOYW1lLCBnZXRDbGFzc0dyb3VwSWQsIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyB9ID0gY29uZmlnVXRpbHNcblxuICAgIC8qKlxuICAgICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICAgKiBAZXhhbXBsZSAnZmxvYXQnXG4gICAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgICAqIEBleGFtcGxlICdtZDohcHInXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0OiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzTGlzdC50cmltKCkuc3BsaXQoU1BMSVRfQ0xBU1NFU19SRUdFWClcblxuICAgIGxldCByZXN1bHQgPSAnJ1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSBjbGFzc05hbWVzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XSFcblxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycywgaGFzSW1wb3J0YW50TW9kaWZpZXIsIGJhc2VDbGFzc05hbWUsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gfSA9XG4gICAgICAgICAgICBwYXJzZUNsYXNzTmFtZShvcmlnaW5hbENsYXNzTmFtZSlcblxuICAgICAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKFxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGJhc2VDbGFzc05hbWUpXG5cbiAgICAgICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFudE1vZGlmaWVyID0gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpLmpvaW4oJzonKVxuXG4gICAgICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyB2YXJpYW50TW9kaWZpZXIgKyBJTVBPUlRBTlRfTU9ESUZJRVJcbiAgICAgICAgICAgIDogdmFyaWFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWRcblxuICAgICAgICBpZiAoY2xhc3NHcm91cHNJbkNvbmZsaWN0LmluY2x1ZGVzKGNsYXNzSWQpKSB7XG4gICAgICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBvbWl0dGVkIGR1ZSB0byBjb25mbGljdFxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKGNsYXNzSWQpXG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV0hXG4gICAgICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuIiwgIi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuXG5leHBvcnQgdHlwZSBDbGFzc05hbWVWYWx1ZSA9IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IDAgfCAwbiB8IGZhbHNlXG50eXBlIENsYXNzTmFtZUFycmF5ID0gQ2xhc3NOYW1lVmFsdWVbXVxuXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oKSB7XG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBhcmd1bWVudDogQ2xhc3NOYW1lVmFsdWVcbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmICgoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nXG59XG5cbmNvbnN0IHRvVmFsdWUgPSAobWl4OiBDbGFzc05hbWVBcnJheSB8IHN0cmluZykgPT4ge1xuICAgIGlmICh0eXBlb2YgbWl4ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbWl4XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtaXgubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgaWYgKG1peFtrXSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10gYXMgQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBtZXJnZUNsYXNzTGlzdCB9IGZyb20gJy4vbWVyZ2UtY2xhc3NsaXN0J1xuaW1wb3J0IHsgQ2xhc3NOYW1lVmFsdWUsIHR3Sm9pbiB9IGZyb20gJy4vdHctam9pbidcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ0ZpcnN0ID0gKCkgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBUYWlsd2luZE1lcmdlID0gKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pID0+IHN0cmluZ1xudHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICBjcmVhdGVDb25maWdGaXJzdDogQ3JlYXRlQ29uZmlnRmlyc3QsXG4gICAgLi4uY3JlYXRlQ29uZmlnUmVzdDogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pOiBUYWlsd2luZE1lcmdlIHtcbiAgICBsZXQgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzXG4gICAgbGV0IGNhY2hlR2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnZ2V0J11cbiAgICBsZXQgY2FjaGVTZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydzZXQnXVxuICAgIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlXG5cbiAgICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksXG4gICAgICAgICAgICBjcmVhdGVDb25maWdGaXJzdCgpIGFzIEdlbmVyaWNDb25maWcsXG4gICAgICAgIClcblxuICAgICAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZylcbiAgICAgICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXRcbiAgICAgICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXRcbiAgICAgICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlXG5cbiAgICAgICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGVHZXQoY2xhc3NMaXN0KVxuXG4gICAgICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpXG4gICAgICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY2FsbFRhaWx3aW5kTWVyZ2UoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzIGFzIGFueSkpXG4gICAgfVxufVxuIiwgImltcG9ydCB7IERlZmF1bHRUaGVtZUdyb3VwSWRzLCBOb0luZmVyLCBUaGVtZUdldHRlciwgVGhlbWVPYmplY3QgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgZnJvbVRoZW1lID0gPFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgRGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciBleHRlbmRzIHN0cmluZyA9IERlZmF1bHRUaGVtZUdyb3VwSWRzLFxuPihrZXk6IE5vSW5mZXI8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPik6IFRoZW1lR2V0dGVyID0+IHtcbiAgICBjb25zdCB0aGVtZUdldHRlciA9ICh0aGVtZTogVGhlbWVPYmplY3Q8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPikgPT5cbiAgICAgICAgdGhlbWVba2V5XSB8fCBbXVxuXG4gICAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWUgYXMgY29uc3RcblxuICAgIHJldHVybiB0aGVtZUdldHRlclxufVxuIiwgImNvbnN0IGFyYml0cmFyeVZhbHVlUmVnZXggPSAvXlxcWyg/OihbYS16LV0rKTopPyguKylcXF0kL2lcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC9cbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSBuZXcgU2V0KFsncHgnLCAnZnVsbCcsICdzY3JlZW4nXSlcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC9cbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9XG4gICAgL1xcZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXFwoLitcXCl8XjAkL1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpKVxcKC4rXFwpJC9cbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS9cbmNvbnN0IGltYWdlUmVnZXggPVxuICAgIC9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXFwoLitcXCkkL1xuXG5leHBvcnQgY29uc3QgaXNMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc051bWJlcih2YWx1ZSkgfHwgc3RyaW5nTGVuZ3Rocy5oYXModmFsdWUpIHx8IGZyYWN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ2xlbmd0aCcsIGlzTGVuZ3RoT25seSlcblxuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcilcblxuZXhwb3J0IGNvbnN0IGlzSW50ZWdlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc1BlcmNlbnQgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+IGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzVHNoaXJ0U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB0c2hpcnRVbml0UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3Qgc2l6ZUxhYmVscyA9IG5ldyBTZXQoWydsZW5ndGgnLCAnc2l6ZScsICdwZXJjZW50YWdlJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcilcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5UG9zaXRpb24gPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKVxuXG5jb25zdCBpbWFnZUxhYmVscyA9IG5ldyBTZXQoWydpbWFnZScsICd1cmwnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5SW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnJywgaXNTaGFkb3cpXG5cbmV4cG9ydCBjb25zdCBpc0FueSA9ICgpID0+IHRydWVcblxuY29uc3QgZ2V0SXNBcmJpdHJhcnlWYWx1ZSA9IChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcgfCBTZXQ8c3RyaW5nPixcbiAgICB0ZXN0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuLFxuKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0hKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpc0xlbmd0aE9ubHkgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuICAgIC8vIEkgY291bGQgYWxzbyB1c2UgbG9va2JlaGluZCBhc3NlcnRpb24gaW4gYGxlbmd0aFVuaXRSZWdleGAgYnV0IHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHdpZGVseSBlbm91Z2guXG4gICAgbGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNOZXZlciA9ICgpID0+IGZhbHNlXG5cbmNvbnN0IGlzU2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzSW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKVxuIiwgImltcG9ydCB7IGZyb21UaGVtZSB9IGZyb20gJy4vZnJvbS10aGVtZSdcbmltcG9ydCB7IENvbmZpZywgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gICAgaXNBbnksXG4gICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICAgIGlzQXJiaXRyYXJ5U2hhZG93LFxuICAgIGlzQXJiaXRyYXJ5U2l6ZSxcbiAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgIGlzSW50ZWdlcixcbiAgICBpc0xlbmd0aCxcbiAgICBpc051bWJlcixcbiAgICBpc1BlcmNlbnQsXG4gICAgaXNUc2hpcnRTaXplLFxufSBmcm9tICcuL3ZhbGlkYXRvcnMnXG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IGZyb21UaGVtZSgnY29sb3JzJylcbiAgICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJylcbiAgICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJylcbiAgICBjb25zdCBicmlnaHRuZXNzID0gZnJvbVRoZW1lKCdicmlnaHRuZXNzJylcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJylcbiAgICBjb25zdCBib3JkZXJTcGFjaW5nID0gZnJvbVRoZW1lKCdib3JkZXJTcGFjaW5nJylcbiAgICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKVxuICAgIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpXG4gICAgY29uc3QgZ3JheXNjYWxlID0gZnJvbVRoZW1lKCdncmF5c2NhbGUnKVxuICAgIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJylcbiAgICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpXG4gICAgY29uc3QgZ2FwID0gZnJvbVRoZW1lKCdnYXAnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKVxuICAgIGNvbnN0IGluc2V0ID0gZnJvbVRoZW1lKCdpbnNldCcpXG4gICAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKVxuICAgIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKVxuICAgIGNvbnN0IHBhZGRpbmcgPSBmcm9tVGhlbWUoJ3BhZGRpbmcnKVxuICAgIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpXG4gICAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJylcbiAgICBjb25zdCBzZXBpYSA9IGZyb21UaGVtZSgnc2VwaWEnKVxuICAgIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKVxuICAgIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpXG4gICAgY29uc3QgdHJhbnNsYXRlID0gZnJvbVRoZW1lKCd0cmFuc2xhdGUnKVxuXG4gICAgY29uc3QgZ2V0T3ZlcnNjcm9sbCA9ICgpID0+IFsnYXV0bycsICdjb250YWluJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5ID0gKCkgPT4gW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRQb3NpdGlvbnMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgJ2xlZnQtYm90dG9tJyxcbiAgICAgICAgICAgICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgICAgICAgICAncmlnaHQtdG9wJyxcbiAgICAgICAgICAgICd0b3AnLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgJ211bHRpcGx5JyxcbiAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgJ292ZXJsYXknLFxuICAgICAgICAgICAgJ2RhcmtlbicsXG4gICAgICAgICAgICAnbGlnaHRlbicsXG4gICAgICAgICAgICAnY29sb3ItZG9kZ2UnLFxuICAgICAgICAgICAgJ2NvbG9yLWJ1cm4nLFxuICAgICAgICAgICAgJ2hhcmQtbGlnaHQnLFxuICAgICAgICAgICAgJ3NvZnQtbGlnaHQnLFxuICAgICAgICAgICAgJ2RpZmZlcmVuY2UnLFxuICAgICAgICAgICAgJ2V4Y2x1c2lvbicsXG4gICAgICAgICAgICAnaHVlJyxcbiAgICAgICAgICAgICdzYXR1cmF0aW9uJyxcbiAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAnbHVtaW5vc2l0eScsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRBbGlnbiA9ICgpID0+XG4gICAgICAgIFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QnJlYWtzID0gKCkgPT5cbiAgICAgICAgWydhdXRvJywgJ2F2b2lkJywgJ2FsbCcsICdhdm9pZC1wYWdlJywgJ3BhZ2UnLCAnbGVmdCcsICdyaWdodCcsICdjb2x1bW4nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlckFuZEFyYml0cmFyeSA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgICAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICAgICAgdGhlbWU6IHtcbiAgICAgICAgICAgIGNvbG9yczogW2lzQW55XSxcbiAgICAgICAgICAgIHNwYWNpbmc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgYmx1cjogWydub25lJywgJycsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWydub25lJywgJycsICdmdWxsJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJvcmRlclNwYWNpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBjb250cmFzdDogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmF5c2NhbGU6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgaHVlUm90YXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGludmVydDogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBnYXA6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcHM6IFtjb2xvcnNdLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnM6IFtpc1BlcmNlbnQsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGluc2V0OiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG1hcmdpbjogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBvcGFjaXR5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzYXR1cmF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzY2FsZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzZXBpYTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBza2V3OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNwYWNlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgLy8gTGF5b3V0XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFzcGVjdCBSYXRpb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FzcGVjdC1yYXRpb1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3BlY3Q6IFt7IGFzcGVjdDogWydhdXRvJywgJ3NxdWFyZScsICd2aWRlbycsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250YWluZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb2x1bW5zOiBbeyBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYWZ0ZXInOiBbeyAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQmVmb3JlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYmVmb3JlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1iZWZvcmUnOiBbeyAnYnJlYWstYmVmb3JlJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstaW5zaWRlJzogW3sgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7ICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNpemluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaXppbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm94OiBbeyBib3g6IFsnYm9yZGVyJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGlzcGxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGlzcGxheTogW1xuICAgICAgICAgICAgICAgICdibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZScsXG4gICAgICAgICAgICAgICAgJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLXRhYmxlJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2FwdGlvbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNlbGwnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4tZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1mb290ZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1oZWFkZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3ctZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3cnLFxuICAgICAgICAgICAgICAgICdmbG93LXJvb3QnLFxuICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWdyaWQnLFxuICAgICAgICAgICAgICAgICdjb250ZW50cycsXG4gICAgICAgICAgICAgICAgJ2xpc3QtaXRlbScsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbG9hdHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbG9hdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbG9hdDogW3sgZmxvYXQ6IFsncmlnaHQnLCAnbGVmdCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDbGVhclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNsZWFyOiBbeyBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtZml0JzogW3sgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtcG9zaXRpb24nOiBbeyBvYmplY3Q6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFt7IG92ZXJmbG93OiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXgnOiBbeyAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteSc6IFt7ICdvdmVyZmxvdy15JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcnNjcm9sbDogW3sgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXgnOiBbeyAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXknOiBbeyAnb3ZlcnNjcm9sbC15JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluc2V0OiBbeyBpbnNldDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC14JzogW3sgJ2luc2V0LXgnOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXknOiBbeyAnaW5zZXQteSc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0YXJ0OiBbeyBzdGFydDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVuZDogW3sgZW5kOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG9wOiBbeyB0b3A6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJpZ2h0OiBbeyByaWdodDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJvdHRvbTogW3sgYm90dG9tOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlZnQ6IFt7IGxlZnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogWi1JbmRleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgejogW3sgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmFzaXM6IFt7IGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBEaXJlY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWRpcmVjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC1kaXJlY3Rpb24nOiBbeyBmbGV4OiBbJ3JvdycsICdyb3ctcmV2ZXJzZScsICdjb2wnLCAnY29sLXJldmVyc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LXdyYXAnOiBbeyBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbGV4OiBbeyBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBHcm93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1ncm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyb3c6IFt7IGdyb3c6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNocmluazogW3sgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3JkZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcmRlcjogW3sgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWNvbHMnOiBbeyAnZ3JpZC1jb2xzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcGFuOiBbJ2Z1bGwnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQnOiBbeyAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1lbmQnOiBbeyAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1yb3dzJzogW3sgJ2dyaWQtcm93cyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAgeyByb3c6IFsnYXV0bycsIHsgc3BhbjogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydCc6IFt7ICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LWVuZCc6IFt7ICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIEZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1mbG93JzogW3sgJ2dyaWQtZmxvdyc6IFsncm93JywgJ2NvbCcsICdkZW5zZScsICdyb3ctZGVuc2UnLCAnY29sLWRlbnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tY29scyc6IFt7ICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLXJvd3MnOiBbeyAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdhcDogW3sgZ2FwOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC14JzogW3sgJ2dhcC14JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteSc6IFt7ICdnYXAteSc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IFt7IGp1c3RpZnk6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3sgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktc2VsZic6IFt7ICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1jb250ZW50JzogW3sgY29udGVudDogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24taXRlbXMnOiBbeyBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLXNlbGYnOiBbeyBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1jb250ZW50JzogW3sgJ3BsYWNlLWNvbnRlbnQnOiBbLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWl0ZW1zJzogW3sgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLXNlbGYnOiBbeyAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8vIFNwYWNpbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcDogW3sgcDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB4OiBbeyBweDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB5OiBbeyBweTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwczogW3sgcHM6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBlOiBbeyBwZTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHQ6IFt7IHB0OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByOiBbeyBwcjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGI6IFt7IHBiOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGw6IFt7IHBsOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtOiBbeyBtOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXg6IFt7IG14OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXk6IFt7IG15OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1zOiBbeyBtczogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWU6IFt7IG1lOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtdDogW3sgbXQ6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXI6IFt7IG1yOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtYjogW3sgbWI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtbDogW3sgbWw6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteCc6IFt7ICdzcGFjZS14JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXknOiBbeyAnc3BhY2UteSc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvLyBTaXppbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3Z3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4tdyc6IFt7ICdtaW4tdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2NyZWVuOiBbaXNUc2hpcnRTaXplXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUc2hpcnRTaXplLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2aCcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4taCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaXplOiBbeyBzaXplOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNpemUnOiBbeyB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXdlaWdodCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aGluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbWlib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IFt7IGZvbnQ6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ25vcm1hbC1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydvcmRpbmFsJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ3NsYXNoZWQtemVybyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydsaW5pbmctbnVtcycsICdvbGRzdHlsZS1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydwcm9wb3J0aW9uYWwtbnVtcycsICd0YWJ1bGFyLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydkaWFnb25hbC1mcmFjdGlvbnMnLCAnc3RhY2tlZC1mcmFjdG9ucyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbeyAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzbnVnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xvb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbeyAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7IGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbeyBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3sgcGxhY2Vob2xkZXI6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7ICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3sgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1jb2xvcic6IFt7IHRleHQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7ICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7IGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW1xuICAgICAgICAgICAgICAgIHsgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7ICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7IGRlY29yYXRpb246IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtd3JhcCc6IFt7IHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmRlbnQ6IFt7IGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlbGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaWRkbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC10b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHdoaXRlc3BhY2U6IFtcbiAgICAgICAgICAgICAgICB7IHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyZWFrOiBbeyBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHlwaGVuc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaHlwaGVuczogW3sgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRlbnQ6IFt7IGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1hdHRhY2htZW50JzogW3sgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY2xpcCc6IFt7ICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcGFjaXR5JzogW3sgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9yaWdpbic6IFt7ICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXBvc2l0aW9uJzogW3sgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXJlcGVhdCc6IFt7IGJnOiBbJ25vLXJlcGVhdCcsIHsgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXSB9XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1zaXplJzogW3sgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWltYWdlJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jb2xvcic6IFt7IGJnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10by1wb3MnOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10byc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8vIEJvcmRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm91bmRlZDogW3sgcm91bmRlZDogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbeyAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lJzogW3sgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFt7ICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFt7ICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbeyAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFt7ICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc3MnOiBbeyAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc2UnOiBbeyAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVlJzogW3sgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVzJzogW3sgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdGwnOiBbeyAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdHInOiBbeyAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYnInOiBbeyAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1ibCc6IFt7ICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbeyBib3JkZXI6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXMnOiBbeyAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1lJzogW3sgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3sgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7IGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgnOiBbeyAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteSc6IFt7ICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbeyAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXN0eWxlJzogW3sgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW3sgYm9yZGVyOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLWNvbG9yJzogW3sgZGl2aWRlOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1zdHlsZSc6IFt7IG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbeyAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS13JzogW3sgb3V0bGluZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLWNvbG9yJzogW3sgb3V0bGluZTogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXcnOiBbeyByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aCBJbnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdy1pbnNldCc6IFsncmluZy1pbnNldCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1jb2xvcic6IFt7IHJpbmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7ICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbeyAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtY29sb3InOiBbeyAncmluZy1vZmZzZXQnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8vIEVmZmVjdHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hhZG93OiBbeyBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7IHNoYWRvdzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3BhY2l0eTogW3sgb3BhY2l0eTogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaXgtYmxlbmQnOiBbeyAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWJsZW5kJzogW3sgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpIH1dLFxuICAgICAgICAgICAgLy8gRmlsdGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiBbeyBmaWx0ZXI6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmx1cjogW3sgYmx1cjogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBbeyBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udHJhc3Q6IFt7IGNvbnRyYXN0OiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkcm9wLXNoYWRvdyc6IFt7ICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JheXNjYWxlOiBbeyBncmF5c2NhbGU6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaHVlLXJvdGF0ZSc6IFt7ICdodWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnZlcnQ6IFt7IGludmVydDogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2F0dXJhdGU6IFt7IHNhdHVyYXRlOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlcGlhOiBbeyBzZXBpYTogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbeyAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFt7ICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFt7ICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7ICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3sgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFt7ICdiYWNrZHJvcC1odWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3sgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7ICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFt7ICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3sgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8vIFRhYmxlc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7IGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFt7ICdib3JkZXItc3BhY2luZyc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy14JzogW3sgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7ICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUYWJsZSBMYXlvdXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90YWJsZS1sYXlvdXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RhYmxlLWxheW91dCc6IFt7IHRhYmxlOiBbJ2F1dG8nLCAnZml4ZWQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNhcHRpb246IFt7IGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGR1cmF0aW9uOiBbeyBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZWFzZTogW3sgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIERlbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kZWxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkZWxheTogW3sgZGVsYXk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbmltYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYW5pbWF0ZTogW3sgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zZm9ybTogW3sgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNjYWxlOiBbeyBzY2FsZTogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS14JzogW3sgJ3NjYWxlLXgnOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXknOiBbeyAnc2NhbGUteSc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3RhdGU6IFt7IHJvdGF0ZTogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteCc6IFt7ICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXknOiBbeyAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy14JzogW3sgJ3NrZXcteCc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy15JzogW3sgJ3NrZXcteSc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWNjZW50OiBbeyBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFwcGVhcmFuY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hcHBlYXJhbmNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IFt7IGFwcGVhcmFuY2U6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEN1cnNvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dhaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vdC1hbGxvd2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0LW1lbnUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcm9zc2hhaXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduby1kcm9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiYmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsLXNjcm9sbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbi1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICducy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdud3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1vdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NhcmV0LWNvbG9yJzogW3sgY2FyZXQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7ICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jlc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXNpemU6IFt7IHJlc2l6ZTogWydub25lJywgJ3knLCAneCcsICcnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbeyBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW3sgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogW3sgJ3Njcm9sbC1teCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFt7ICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1zJzogW3sgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1lJzogW3sgJ3Njcm9sbC1tZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW10JzogW3sgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXInOiBbeyAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWInOiBbeyAnc2Nyb2xsLW1iJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1sJzogW3sgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW3sgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbeyAnc2Nyb2xsLXB4JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbeyAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBzJzogW3sgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGUnOiBbeyAnc2Nyb2xsLXBlJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wdCc6IFt7ICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHInOiBbeyAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wYic6IFt7ICdzY3JvbGwtcGInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wbCc6IFt7ICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLWFsaWduJzogW3sgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgU3RvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXN0b3BcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RvcCc6IFt7IHNuYXA6IFsnbm9ybWFsJywgJ2Fsd2F5cyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC10eXBlJzogW3sgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7IHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG91Y2g6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoOiBbJ2F1dG8nLCAnbm9uZScsICdtYW5pcHVsYXRpb24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXknOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFBpbmNoIFpvb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaC1waW5jaC16b29tJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFVzZXIgU2VsZWN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdXNlci1zZWxlY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VsZWN0OiBbeyBzZWxlY3Q6IFsnbm9uZScsICd0ZXh0JywgJ2FsbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3dpbGwtY2hhbmdlJzogW1xuICAgICAgICAgICAgICAgIHsgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFNWR1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWxsXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWxsOiBbeyBmaWxsOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2UgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2Utd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3N0cm9rZS13JzogW3sgc3Ryb2tlOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdHJva2U6IFt7IHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3sgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddIH1dLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICBvdmVyZmxvdzogWydvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFsnb3ZlcnNjcm9sbC14JywgJ292ZXJzY3JvbGwteSddLFxuICAgICAgICAgICAgaW5zZXQ6IFsnaW5zZXQteCcsICdpbnNldC15JywgJ3N0YXJ0JywgJ2VuZCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC14JzogWydyaWdodCcsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteSc6IFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgICAgICAgZmxleDogWydiYXNpcycsICdncm93JywgJ3NocmluayddLFxuICAgICAgICAgICAgZ2FwOiBbJ2dhcC14JywgJ2dhcC15J10sXG4gICAgICAgICAgICBwOiBbJ3B4JywgJ3B5JywgJ3BzJywgJ3BlJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJ10sXG4gICAgICAgICAgICBweDogWydwcicsICdwbCddLFxuICAgICAgICAgICAgcHk6IFsncHQnLCAncGInXSxcbiAgICAgICAgICAgIG06IFsnbXgnLCAnbXknLCAnbXMnLCAnbWUnLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnXSxcbiAgICAgICAgICAgIG14OiBbJ21yJywgJ21sJ10sXG4gICAgICAgICAgICBteTogWydtdCcsICdtYiddLFxuICAgICAgICAgICAgc2l6ZTogWyd3JywgJ2gnXSxcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogW1xuICAgICAgICAgICAgICAgICdmdm4tb3JkaW5hbCcsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nLFxuICAgICAgICAgICAgICAgICdmdm4tZmlndXJlJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNwYWNpbmcnLFxuICAgICAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICAgICAgICByb3VuZGVkOiBbXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtbCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc3MnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRsJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10cicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYnInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgICAgICAgJ2JvcmRlci13JzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItdy1zJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctZScsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtcHgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbJ3Njcm9sbC1wcicsICdzY3JvbGwtcGwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbJ3Njcm9sbC1wdCcsICdzY3JvbGwtcGInXSxcbiAgICAgICAgICAgIHRvdWNoOiBbJ3RvdWNoLXgnLCAndG91Y2gteScsICd0b3VjaC1weiddLFxuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gteSc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgIH0sXG4gICAgfSBhcyBjb25zdCBzYXRpc2ZpZXMgQ29uZmlnPERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcz5cbn1cbiIsICJpbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNvbmZpZ3MgPSA8Q2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZywgVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyPihcbiAgICBiYXNlQ29uZmlnOiBHZW5lcmljQ29uZmlnLFxuICAgIHtcbiAgICAgICAgY2FjaGVTaXplLFxuICAgICAgICBwcmVmaXgsXG4gICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUsXG4gICAgICAgIGV4dGVuZCA9IHt9LFxuICAgICAgICBvdmVycmlkZSA9IHt9LFxuICAgIH06IENvbmZpZ0V4dGVuc2lvbjxDbGFzc0dyb3VwSWRzLCBUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2NhY2hlU2l6ZScsIGNhY2hlU2l6ZSlcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2V4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lJywgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpXG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ0tleSBpbiBvdmVycmlkZSkge1xuICAgICAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICAgICAgb3ZlcnJpZGVbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICAgICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1trZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgICAgICBleHRlbmRba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDb25maWdcbn1cblxuY29uc3Qgb3ZlcnJpZGVQcm9wZXJ0eSA9IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gICAgYmFzZU9iamVjdDogVCxcbiAgICBvdmVycmlkZUtleTogSyxcbiAgICBvdmVycmlkZVZhbHVlOiBUW0tdIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWVcbiAgICB9XG59XG5cbmNvbnN0IG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG92ZXJyaWRlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgICAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIGtleSwgb3ZlcnJpZGVPYmplY3Rba2V5XSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgbWVyZ2VDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgbWVyZ2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVyZ2VPYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlVmFsdWUgPSBtZXJnZU9iamVjdFtrZXldXG5cbiAgICAgICAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiYXNlT2JqZWN0W2tleV0gPSAoYmFzZU9iamVjdFtrZXldIHx8IFtdKS5jb25jYXQobWVyZ2VWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcbmltcG9ydCB7IG1lcmdlQ29uZmlncyB9IGZyb20gJy4vbWVyZ2UtY29uZmlncydcbmltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xuXG5leHBvcnQgY29uc3QgZXh0ZW5kVGFpbHdpbmRNZXJnZSA9IDxcbiAgICBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4+KFxuICAgIGNvbmZpZ0V4dGVuc2lvbjpcbiAgICAgICAgfCBDb25maWdFeHRlbnNpb248XG4gICAgICAgICAgICAgIERlZmF1bHRDbGFzc0dyb3VwSWRzIHwgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHNcbiAgICAgICAgICA+XG4gICAgICAgIHwgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCxcbiAgICAuLi5jcmVhdGVDb25maWc6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKSA9PlxuICAgIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKVxuICAgICAgICA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgICAgICAgICAgICgpID0+IG1lcmdlQ29uZmlncyhnZXREZWZhdWx0Q29uZmlnKCksIGNvbmZpZ0V4dGVuc2lvbiksXG4gICAgICAgICAgICAgIC4uLmNyZWF0ZUNvbmZpZyxcbiAgICAgICAgICApXG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB0eXBlIENvbHVtbkRlZiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEZpbHRlckljb24sIE1heGltaXplLCBNaW5pbWl6ZSwgUGFuZWxMZWZ0Q2xvc2UsIFBhbmVsTGVmdE9wZW4gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsLCBTZWxlY3RIZWFkZXJDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdFJvd0NlbGwsIFNlbGVjdFJvd0NlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVRhYmxlVmlld1Byb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3RpdmVUYWJsZVZpZXcoX3Byb3BzOiBBY3RpdmVUYWJsZVZpZXdQcm9wcykge1xuICBjb25zdCBpc011dGF0aW5nID0gQm9vbGVhbih1c2VJc011dGF0aW5nKCkpO1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yLCBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZyB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH0pO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiA1MCxcbiAgICAgIG1pblNpemU6IDUwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdEhlYWRlckNlbGxQcm9wcywgXCJ0YWJsZVwiIHwgXCJyZWFkb25seVwiPikgPT4gKFxuICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8U2VsZWN0Um93Q2VsbFByb3BzLCBcInJvd1wiIHwgXCJyZWFkb25seVwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+O1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdIHNhdGlzZmllcyAoQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiAmIHsgZGlzYWJsZURyYWdnaW5nPzogYm9vbGVhbiB9KVtdO1xuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBbLi4uY29uY3JldGVDb2x1bW5EZWZzLCAuLi52aXJ0dWFsQ29sdW1uRGVmc10uc29ydChkZWZhdWx0Q29sdW1uU29ydGluZyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1iZy1zdHVkaW8taGVhZGVyLWJhY2tncm91bmQgcHMtZmxleCBwcy13LWZ1bGwgcHMtcC0yIHBzLXB5LTMgcHMtYm9yZGVyLWIgcHMtYmctY2FyZCBwcy1yb3VuZGVkLXQtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGFsaWduPVwic3RhcnRcIiBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwicHMtdy1taW4gcHMtbWF4LWgtWzUyMHB4XSBwcy1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUcmVlXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtzZXRFZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGluZ0ZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGVkaXRpbmcgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgYXBwbGllZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJsZT17YWN0aXZlVGFibGV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9e3RvZ2dsZUZ1bGxzY3JlZW59PlxuICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8RGF0YUdyaWRcbiAgICAgICAgY29sdW1uRGVmcz17Y29sdW1uRGVmc31cbiAgICAgICAgZ2V0QmVmb3JlUm93cz17KHRhYmxlKSA9PiA8U3RhZ2VkUm93cyB7Li4ueyB0YWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9fSAvPn1cbiAgICAgICAgaXNMb2FkaW5nPXtpc0ZldGNoaW5nfVxuICAgICAgICBpc1Byb2Nlc3Npbmc9e2lzTXV0YXRpbmd9XG4gICAgICAgIG9uUGFnaW5hdGlvbkNoYW5nZT17c2V0UGFnaW5hdGlvblN0YXRlfVxuICAgICAgICBvblJvd1NlbGVjdGlvbkNoYW5nZT17c2V0Um93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIG9uU29ydGluZ0NoYW5nZT17c2V0U29ydGluZ1N0YXRlfVxuICAgICAgICBwYWdlQ291bnQ9e2dldFBhZ2VDb3VudChkYXRhPy5maWx0ZXJlZFJvd0NvdW50ID8/IEluZmluaXR5LCBwYWdpbmF0aW9uU3RhdGUucGFnZVNpemUpfVxuICAgICAgICBwYWdpbmF0aW9uU3RhdGU9e3BhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgcm93cz17ZGF0YT8ucm93cyA/PyBbXX1cbiAgICAgICAgcm93U2VsZWN0aW9uU3RhdGU9e3Jvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBzb3J0aW5nU3RhdGU9e3NvcnRpbmdTdGF0ZX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhZ2VDb3VudChyb3dDb3VudDogbnVtYmVyIHwgYmlnaW50IHwgTnVtZXJpY1N0cmluZyB8IEJpZ0ludFN0cmluZywgcGFnZVNpemU6IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmIChyb3dDb3VudCA9PT0gSW5maW5pdHkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQ291bnQgPSBOdW1iZXIoKEJpZ0ludChyb3dDb3VudCkgKyBCaWdJbnQocGFnZVNpemUpIC0gQmlnSW50KDEpKSAvIEJpZ0ludChwYWdlU2l6ZSkpO1xuXG4gIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcihwYWdlQ291bnQpID8gcGFnZUNvdW50IDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRDb2x1bW5Tb3J0aW5nKGE6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGI6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pIHtcbiAgY29uc3QgYU1ldGEgPSBhLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuICBjb25zdCBiTWV0YSA9IGIubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGEuaWQgPT09IFwiX19wc19zZWxlY3RcIiB8fCBiLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChhTWV0YSA9PT0gdW5kZWZpbmVkIHx8IGJNZXRhID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDsgLy8gY2FuJ3QgYmUgY29tcGFyZWQsIHNob3VsZG4ndCBoYXBwZW5cbiAgfVxuXG4gIGlmIChhTWV0YS5pc0luUHJpbWFyeUtleSAmJiAhYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhTWV0YS5pc0luUHJpbWFyeUtleSAmJiBiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIGFNZXRhLm5hbWUubG9jYWxlQ29tcGFyZShiTWV0YS5uYW1lKTtcbn1cbiIsICJpbXBvcnQgeyBDYW1lbFRvUGFzY2FsIH0gZnJvbSAnLi91dGlsaXR5LXR5cGVzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8ga2ViYWIgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEga2ViYWJpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9LZWJhYkNhc2UgPSAoc3RyaW5nOiBzdHJpbmcpID0+XG4gIHN0cmluZy5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBjYW1lbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBjYW1lbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0NhbWVsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpID0+XG4gIHN0cmluZy5yZXBsYWNlKC9eKFtBLVpdKXxbXFxzLV9dKyhcXHcpL2csIChtYXRjaCwgcDEsIHAyKSA9PlxuICAgIHAyID8gcDIudG9VcHBlckNhc2UoKSA6IHAxLnRvTG93ZXJDYXNlKCksXG4gICk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIHBhc2NhbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBwYXNjYWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9QYXNjYWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCk6IENhbWVsVG9QYXNjYWw8VD4gPT4ge1xuICBjb25zdCBjYW1lbENhc2UgPSB0b0NhbWVsQ2FzZShzdHJpbmcpO1xuXG4gIHJldHVybiAoY2FtZWxDYXNlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2FtZWxDYXNlLnNsaWNlKDEpKSBhcyBDYW1lbFRvUGFzY2FsPFQ+O1xufTtcblxuLyoqXG4gKiBNZXJnZXMgY2xhc3NlcyBpbnRvIGEgc2luZ2xlIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7YXJyYXl9IGNsYXNzZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgc3RyaW5nIG9mIGNsYXNzZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NlcyA9IDxDbGFzc1R5cGUgPSBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPiguLi5jbGFzc2VzOiBDbGFzc1R5cGVbXSkgPT5cbiAgY2xhc3Nlc1xuICAgIC5maWx0ZXIoKGNsYXNzTmFtZSwgaW5kZXgsIGFycmF5KSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBCb29sZWFuKGNsYXNzTmFtZSkgJiZcbiAgICAgICAgKGNsYXNzTmFtZSBhcyBzdHJpbmcpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgYXJyYXkuaW5kZXhPZihjbGFzc05hbWUpID09PSBpbmRleFxuICAgICAgKTtcbiAgICB9KVxuICAgIC5qb2luKCcgJylcbiAgICAudHJpbSgpO1xuIiwgImV4cG9ydCBkZWZhdWx0IHtcbiAgeG1sbnM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIHdpZHRoOiAyNCxcbiAgaGVpZ2h0OiAyNCxcbiAgdmlld0JveDogJzAgMCAyNCAyNCcsXG4gIGZpbGw6ICdub25lJyxcbiAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIHN0cm9rZUxpbmVjYXA6ICdyb3VuZCcsXG4gIHN0cm9rZUxpbmVqb2luOiAncm91bmQnLFxufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlZmF1bHRBdHRyaWJ1dGVzIGZyb20gJy4vZGVmYXVsdEF0dHJpYnV0ZXMnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5cbmludGVyZmFjZSBJY29uQ29tcG9uZW50UHJvcHMgZXh0ZW5kcyBMdWNpZGVQcm9wcyB7XG4gIGljb25Ob2RlOiBJY29uTm9kZTtcbn1cblxuLyoqXG4gKiBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqXG4gKiBAY29tcG9uZW50IEljb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNvbG9yIC0gVGhlIGNvbG9yIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc3Ryb2tlV2lkdGggLSBUaGUgc3Ryb2tlIHdpZHRoIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByb3BzLmFic29sdXRlU3Ryb2tlV2lkdGggLSBXaGV0aGVyIHRvIHVzZSBhYnNvbHV0ZSBzdHJva2Ugd2lkdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jbGFzc05hbWUgLSBUaGUgY2xhc3MgbmFtZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuY2hpbGRyZW4gLSBUaGUgY2hpbGRyZW4gb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmljb25Ob2RlIC0gVGhlIGljb24gbm9kZSBvZiB0aGUgaWNvblxuICpcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IEljb24gPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Db21wb25lbnRQcm9wcz4oXG4gIChcbiAgICB7XG4gICAgICBjb2xvciA9ICdjdXJyZW50Q29sb3InLFxuICAgICAgc2l6ZSA9IDI0LFxuICAgICAgc3Ryb2tlV2lkdGggPSAyLFxuICAgICAgYWJzb2x1dGVTdHJva2VXaWR0aCxcbiAgICAgIGNsYXNzTmFtZSA9ICcnLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBpY29uTm9kZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAnc3ZnJyxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICAuLi5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgICAgd2lkdGg6IHNpemUsXG4gICAgICAgIGhlaWdodDogc2l6ZSxcbiAgICAgICAgc3Ryb2tlOiBjb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IGFic29sdXRlU3Ryb2tlV2lkdGggPyAoTnVtYmVyKHN0cm9rZVdpZHRoKSAqIDI0KSAvIE51bWJlcihzaXplKSA6IHN0cm9rZVdpZHRoLFxuICAgICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcygnbHVjaWRlJywgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIC4uLmljb25Ob2RlLm1hcCgoW3RhZywgYXR0cnNdKSA9PiBjcmVhdGVFbGVtZW50KHRhZywgYXR0cnMpKSxcbiAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4gOiBbY2hpbGRyZW5dKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcywgdG9LZWJhYkNhc2UgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBJY29uIGZyb20gJy4vSWNvbic7XG5cbi8qKlxuICogQ3JlYXRlIGEgTHVjaWRlIGljb24gY29tcG9uZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gaWNvbk5hbWVcbiAqIEBwYXJhbSB7YXJyYXl9IGljb25Ob2RlXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBjcmVhdGVMdWNpZGVJY29uID0gKGljb25OYW1lOiBzdHJpbmcsIGljb25Ob2RlOiBJY29uTm9kZSkgPT4ge1xuICBjb25zdCBDb21wb25lbnQgPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEx1Y2lkZVByb3BzPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT5cbiAgICBjcmVhdGVFbGVtZW50KEljb24sIHtcbiAgICAgIHJlZixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoYGx1Y2lkZS0ke3RvS2ViYWJDYXNlKGljb25OYW1lKX1gLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSksXG4gICk7XG5cbiAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7aWNvbk5hbWV9YDtcblxuICByZXR1cm4gQ29tcG9uZW50O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlTHVjaWRlSWNvbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93RG93bldpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QXhOaUEwSURRZ05DMDBJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDNJREl3VmpRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEUm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURob055SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd0Rvd25XaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dEb3duV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgMTYgNCA0IDQtNCcsIGtleTogJzFjbzZ3aicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDIwVjQnLCBrZXk6ICcxeW94ZWMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgNGgxMCcsIGtleTogJzF3ODdnYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA4aDcnLCBrZXk6ICdkanllMzQnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoNCcsIGtleTogJ3E4dGloNCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dEb3duV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93VXBXaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUE0SURRdE5DQTBJRFFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGNnTkhZeE5pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElERTJhRGNpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURJd2FEUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93VXBXaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dVcFdpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDggNC00IDQgNCcsIGtleTogJzExd2w3dScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDR2MTYnLCBrZXk6ICcxZ2xmY3gnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoMTAnLCBrZXk6ICcxNDM4amknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTZoNycsIGtleTogJ3Vvc2lzdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAyMGg0Jywga2V5OiAnMWtyYzMyJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1VwV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZWNrXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NakFnTmlBNUlERTNiQzAxTFRVaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZWNrXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hlY2sgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGVjaycsIFtbJ3BhdGgnLCB7IGQ6ICdNMjAgNiA5IDE3bC01LTUnLCBrZXk6ICcxZ21mMmMnIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkRvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQTVJRFlnTmlBMkxUWWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25Eb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiA5IDYgNiA2LTYnLCBrZXk6ICdxcnVuc2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25Eb3duO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UVWdNVGd0TmkwMklEWXROaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTE1IDE4LTYtNiA2LTYnLCBrZXk6ICcxd25mZzMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblJpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRPU0F4T0NBMkxUWXROaTAySWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25SaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25SaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTkgMTggNi02LTYtNicsIGtleTogJ210aGh3cScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblJpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRVdE5pMDJMVFlnTmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uVXAnLCBbWydwYXRoJywgeyBkOiAnbTE4IDE1LTYtNi02IDYnLCBrZXk6ICcxNTN1ZHonIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25VcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRFZ01UY3ROUzAxSURVdE5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVGN0TlMwMUlEVXROU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTExIDE3LTUtNSA1LTUnLCBrZXk6ICcxM3poYWYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTggMTctNS01IDUtNScsIGtleTogJ2g4YThldCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNMZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBeE55QTFMVFV0TlMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weE15QXhOeUExTFRVdE5TMDFJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc1JpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiAxNyA1LTUtNS01Jywga2V5OiAneG5qd3EnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTMgMTcgNS01LTUtNScsIGtleTogJzE3eG1tZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNSaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZUhlbHBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TNHdPU0E1WVRNZ015QXdJREFnTVNBMUxqZ3pJREZqTUNBeUxUTWdNeTB6SURNaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeUlERTNhQzR3TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1oZWxwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlSGVscCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZUhlbHAnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMycsIGtleTogJzF1NzczcycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN2guMDEnLCBrZXk6ICdwMzJwMDUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUhlbHA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGUgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGUnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29weVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UUWlJR2hsYVdkb2REMGlNVFFpSUhnOUlqZ2lJSGs5SWpnaUlISjRQU0l5SWlCeWVUMGlNaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5OQ0F4Tm1NdE1TNHhJREF0TWkwdU9TMHlMVEpXTkdNd0xURXVNUzQ1TFRJZ01pMHlhREV3WXpFdU1TQXdJRElnTGprZ01pQXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3B5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29weSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NvcHknLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxNCcsIGhlaWdodDogJzE0JywgeDogJzgnLCB5OiAnOCcsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzE3anllYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDInLCBrZXk6ICd6aXg5dWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcHk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3JuZXJEb3duTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXeHBibVVnY0c5cGJuUnpQU0k1SURFd0lEUWdNVFVnT1NBeU1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOSFkzWVRRZ05DQXdJREFnTVMwMElEUklOQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29ybmVyLWRvd24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcm5lckRvd25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ29ybmVyRG93bkxlZnQnLCBbXG4gIFsncG9seWxpbmUnLCB7IHBvaW50czogJzkgMTAgNCAxNSA5IDIwJywga2V5OiAncjNqcHJ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDQnLCBrZXk6ICc2bzViN2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcm5lckRvd25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRmlsdGVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVdkdmJpQndiMmx1ZEhNOUlqSXlJRE1nTWlBeklERXdJREV5TGpRMklERXdJREU1SURFMElESXhJREUwSURFeUxqUTJJREl5SURNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2ZpbHRlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEZpbHRlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0ZpbHRlcicsIFtcbiAgWydwb2x5Z29uJywgeyBwb2ludHM6ICcyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzJywga2V5OiAnMXlnNzdmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBHcmlwVmVydGljYWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSTVJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpVaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJakU1SWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlNVFVpSUdONVBTSTFJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1Ua2lJSEk5SWpFaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2dyaXAtdmVydGljYWxcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBHcmlwVmVydGljYWwgPSBjcmVhdGVMdWNpZGVJY29uKCdHcmlwVmVydGljYWwnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdmN0Z2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICdocDB0Y2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZmtqamY2JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdG1haWonIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnMTlsMjhlJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdmNHpvajMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaXBWZXJ0aWNhbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVJvdW5kXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTQxT0RZZ01UY3VOREUwUVRJZ01pQXdJREFnTUNBeUlERTRMamd5T0ZZeU1XRXhJREVnTUNBd0lEQWdNU0F4YUROaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhREZoTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFDNHhOekpoTWlBeUlEQWdNQ0F3SURFdU5ERTBMUzQxT0Rac0xqZ3hOQzB1T0RFMFlUWXVOU0EyTGpVZ01DQXhJREF0TkMwMGVpSWdMejRLSUNBOFkybHlZMnhsSUdONFBTSXhOaTQxSWlCamVUMGlOeTQxSWlCeVBTSXVOU0lnWm1sc2JEMGlZM1Z5Y21WdWRFTnZiRzl5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5LXJvdW5kXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5Um91bmQgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXlSb3VuZCcsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHonLFxuICAgICAga2V5OiAnMXM2dDd0JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNi41JywgY3k6ICc3LjUnLCByOiAnLjUnLCBmaWxsOiAnY3VycmVudENvbG9yJywga2V5OiAndzBla3BnJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXlSb3VuZDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1heGltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNbll6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNFZqVmhNaUF5SURBZ01DQXdMVEl0TW1ndE15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObll6WVRJZ01pQXdJREFnTUNBeUlESm9NeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGb00yRXlJRElnTUNBd0lEQWdNaTB5ZGkweklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21heGltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWF4aW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNYXhpbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM0g1YTIgMiAwIDAgMC0yIDJ2MycsIGtleTogJzFkY21pdCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4VjVhMiAyIDAgMCAwLTItMmgtMycsIGtleTogJzFlNGd0MycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2djNhMiAyIDAgMCAwIDIgMmgzJywga2V5OiAnd3NsNXNjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxaDNhMiAyIDAgMCAwIDItMnYtMycsIGtleTogJzE4dHJlaycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWF4aW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNaW5pbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBemRqTmhNaUF5SURBZ01DQXhMVElnTWtneklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRhQzB6WVRJZ01pQXdJREFnTVMweUxUSldNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm1nellUSWdNaUF3SURBZ01TQXlJREoyTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRjJMVE5oTWlBeUlEQWdNQ0F4SURJdE1tZ3pJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9taW5pbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1pbmltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWluaW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDN2M2EyIDIgMCAwIDEtMiAySDMnLCBrZXk6ICdob2hidHInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOGgtM2EyIDIgMCAwIDEtMi0yVjMnLCBrZXk6ICc1ancxZjMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2MycsIGtleTogJzE5OHR2cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMXYtM2EyIDIgMCAwIDEgMi0yaDMnLCBrZXk6ICdwaDhteHAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZURvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhPRXd4TWlBeU1rd3hOaUF4T0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZURvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggMThMMTIgMjJMMTYgMTgnLCBrZXk6ICdjc2t2ZnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZURvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQTJUREV5SURKTU1UWWdOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZVVwID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZVVwJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCA2TDEyIDJMMTYgNicsIGtleTogJzF5dmt5eCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRDbG9zZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTJJREUxTFRNdE15QXpMVE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdENsb3NlID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0Q2xvc2UnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTYgMTUtMy0zIDMtMycsIGtleTogJzE0eTk5eicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0Q2xvc2U7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRPcGVuXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMElEa2dNeUF6TFRNZ015SWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LW9wZW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRPcGVuID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0T3BlbicsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNCA5IDMgMy0zIDMnLCBrZXk6ICc4MDEwZWUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdE9wZW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5PZmZcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRVZ09TNHpORlkzWVRFZ01TQXdJREFnTVNBeExURWdNaUF5SURBZ01DQXdJREF0TkVnM0xqZzVJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHlJRElnTWpBZ01qQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUa2dPWFl4TGpjMllUSWdNaUF3SURBZ01TMHhMakV4SURFdU56bHNMVEV1TnpndU9VRXlJRElnTUNBd0lEQWdOU0F4TlM0eU5GWXhObUV4SURFZ01DQXdJREFnTVNBeGFERXhJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW4tb2ZmXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluT2ZmID0gY3JlYXRlTHVjaWRlSWNvbignUGluT2ZmJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNSA5LjM0VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDcuODknLCBrZXk6ICd6bnduenEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMiAyIDIwIDIwJywga2V5OiAnMW9vZXd5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgOXYxLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDExJyxcbiAgICAgIGtleTogJ2M5cWhtMicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5PZmY7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1NBeE1DNDNObUV5SURJZ01DQXdJREV0TVM0eE1TQXhMamM1YkMweExqYzRMamxCTWlBeUlEQWdNQ0F3SURVZ01UVXVNalJXTVRaaE1TQXhJREFnTUNBd0lERWdNV2d4TW1FeElERWdNQ0F3SURBZ01TMHhkaTB1TnpaaE1pQXlJREFnTUNBd0xURXVNVEV0TVM0M09Xd3RNUzQzT0MwdU9VRXlJRElnTUNBd0lERWdNVFVnTVRBdU56WldOMkV4SURFZ01DQXdJREVnTVMweElESWdNaUF3SURBZ01DQXdMVFJJT0dFeUlESWdNQ0F3SURBZ01DQTBJREVnTVNBd0lEQWdNU0F4SURGNklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BpblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BpbicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAxMC43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0uNzZhMiAyIDAgMCAwLTEuMTEtMS43OWwtMS43OC0uOUEyIDIgMCAwIDEgMTUgMTAuNzZWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRIOGEyIDIgMCAwIDAgMCA0IDEgMSAwIDAgMSAxIDF6JyxcbiAgICAgIGtleTogJzFua3o4YicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBUYWJsZTJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9TQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWTBiVFl0Tm1neE1HRXlJRElnTUNBd0lERWdNaUF5ZGpSTk9TQXpkakU0YlRBZ01HZ3hNR0V5SURJZ01DQXdJREFnTWkweVZqbE5PU0F5TVVnMVlUSWdNaUF3SURBZ01TMHlMVEpXT1cwd0lEQm9NVGdpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdGFibGUtMlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFRhYmxlMiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1RhYmxlMicsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgM0g1YTIgMiAwIDAgMC0yIDJ2NG02LTZoMTBhMiAyIDAgMCAxIDIgMnY0TTkgM3YxOG0wIDBoMTBhMiAyIDAgMCAwIDItMlY5TTkgMjFINWEyIDIgMCAwIDEtMi0yVjltMCAwaDE4JyxcbiAgICAgIGtleTogJ2d1Z2o4MycsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBUYWJsZTI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBYXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVGdnTmlBMklERTRJaUF2UGdvZ0lEeHdZWFJvSUdROUltMDJJRFlnTVRJZ01USWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy94XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgWCA9IGNyZWF0ZUx1Y2lkZUljb24oJ1gnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOCA2IDYgMTgnLCBrZXk6ICcxYmw1ZjgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtNiA2IDEyIDEyJywga2V5OiAnZDhiazZ2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBYO1xuIiwgImltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYmFkZ2VWYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtcHgtMi41IHBzLXB5LTAuNSBwcy10ZXh0LXhzIHBzLWZvbnQtc2VtaWJvbGQgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMiBmb2N1czpwcy1yaW5nLXJpbmcgZm9jdXM6cHMtcmluZy1vZmZzZXQtMlwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS84MFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzgwXCIsXG4gICAgICAgIG91dGxpbmU6IFwicHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCYWRnZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBWYXJpYW50UHJvcHM8dHlwZW9mIGJhZGdlVmFyaWFudHM+IHt9XG5cbmZ1bmN0aW9uIEJhZGdlKHsgY2xhc3NOYW1lLCB2YXJpYW50LCAuLi5wcm9wcyB9OiBCYWRnZVByb3BzKSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oYmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59XG5cbmV4cG9ydCB7IEJhZGdlLCBiYWRnZVZhcmlhbnRzIH07XG4iLCAiaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzkwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOiBcInBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvOTBcIixcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICBcInBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZ2hvc3Q6IFwiaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgbGluazogXCJwcy10ZXh0LXByaW1hcnkgcHMtdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnBzLXVuZGVybGluZVwiLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1oLTkgcHMtcHgtNCBwcy1weS0yXCIsXG4gICAgICAgIHhzOiBcInBzLWgtNiBwcy1yb3VuZGVkLW1kIHBzLXB4LTIgcHMtdGV4dC14c1wiLFxuICAgICAgICBzbTogXCJwcy1oLTggcHMtcm91bmRlZC1tZCBwcy1weC0zIHBzLXRleHQteHNcIixcbiAgICAgICAgbGc6IFwicHMtaC0xMCBwcy1yb3VuZGVkLW1kIHBzLXB4LThcIixcbiAgICAgICAgaWNvbjogXCJwcy1oLTkgcHMtdy05XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICAgIHNpemU6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvblByb3BzXG4gIGV4dGVuZHMgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgYnV0dG9uVmFyaWFudHM+IHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQsIEJ1dHRvblByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCB2YXJpYW50LCBzaXplLCBhc0NoaWxkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG4gICAgcmV0dXJuIDxDb21wIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfSByZWY9e3JlZn0gey4uLnByb3BzfSAvPjtcbiAgfSxcbik7XG5CdXR0b24uZGlzcGxheU5hbWUgPSBcIkJ1dHRvblwiO1xuXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH07XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBQb3BvdmVyID0gUG9wb3ZlclByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBQb3BvdmVyVHJpZ2dlciA9IFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgUG9wb3ZlckFuY2hvciA9IFBvcG92ZXJQcmltaXRpdmUuQW5jaG9yO1xuXG5jb25zdCBQb3BvdmVyQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLXctNzIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTQgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIHBzLW91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblBvcG92ZXJDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyVHJpZ2dlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJBbmNob3IgfTtcbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVJbnNlcnQoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImluc2VydFwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuaW5zZXJ0KHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0LCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKG5ld0RhdGEpIHtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhPEFkYXB0ZXJRdWVyeVJlc3VsdD4oXG4gICAgICAgIHtcbiAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgLy8gaGVyZSB3ZSBwYXJ0aWFsbHkgbWF0Y2ggdGhlIHF1ZXJ5IGtleSB0byBnZXQgdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgICB9LFxuICAgICAgICAob2xkRGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChvbGREYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvbGREYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vbGREYXRhLFxuICAgICAgICAgICAgcm93czogWy4uLm5ld0RhdGEucm93cywgLi4ub2xkRGF0YS5yb3dzXSxcbiAgICAgICAgICB9IHNhdGlzZmllcyBBZGFwdGVyUXVlcnlSZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IFJlYWN0UXVlcnlEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3Nvbm5lclwiO1xuaW1wb3J0IHsgTnVxc0hhc2hBZGFwdGVyIH0gZnJvbSBcIi4vTnVxc0hhc2hBZGFwdGVyXCI7XG5pbXBvcnQgeyBTdHVkaW9UZWxlbWV0cnlFdmVudCB9IGZyb20gXCIuL1N0dWRpb1wiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgc2V0QWN0aXZlVGFibGU6ICh0YWJsZTogVGFibGUgfCBudWxsKSA9PiB2b2lkO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBlbWl0VGVsZW1ldHJ5RXZlbnQ6IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbiAgLy8gVUkgc3RhdGVcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB0b2dnbGVGdWxsc2NyZWVuOiAoKSA9PiB2b2lkO1xuICBpc05hdmlnYXRpb25PcGVuOiBib29sZWFuO1xuICB0b2dnbGVOYXZpZ2F0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG4vKipcbiAqIENvbnRleHQgZm9yIHNoYXJpbmcgU3R1ZGlvIHN0YXRlIGFjcm9zcyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IFN0dWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PFN0dWRpb0NvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufT47XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9Db250ZXh0UHJvdmlkZXIocHJvcHM6IFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlXSA9IHVzZVN0YXRlPFRhYmxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtpc0Z1bGxzY3JlZW4sIHNldElzRnVsbHNjcmVlbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc05hdmlnYXRpb25PcGVuLCBzZXRJc05hdmlnYXRpb25PcGVuXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gIGxldCBvbkVycm9yID0gcHJvcHMub25FcnJvcjtcbiAgb25FcnJvciA/Pz0gKGVycm9yOiBFcnJvcikgPT4gdG9hc3QuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG5cbiAgY29uc3QgZW1pdFRlbGVtZXRyeUV2ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzLm9uVGVsZW1ldHJ5RXZlbnQgPz8gKCgpID0+IHt9KTtcbiAgfSwgW3Byb3BzLm9uVGVsZW1ldHJ5RXZlbnRdKTtcblxuICBjb25zdCB0b2dnbGVGdWxsc2NyZWVuID0gKCkgPT4gc2V0SXNGdWxsc2NyZWVuKChwcmV2KSA9PiAhcHJldik7XG4gIGNvbnN0IHRvZ2dsZU5hdmlnYXRpb24gPSAoKSA9PiBzZXRJc05hdmlnYXRpb25PcGVuKChwcmV2KSA9PiAhcHJldik7XG4gIHJldHVybiAoXG4gICAgPFF1ZXJ5Q2xpZW50UHJvdmlkZXIgY2xpZW50PXtxdWVyeUNsaWVudH0+XG4gICAgICA8UmVhY3RRdWVyeURldnRvb2xzIC8+XG4gICAgICA8VG9hc3RlciAvPlxuICAgICAgPE51cXNIYXNoQWRhcHRlcj5cbiAgICAgICAgPFN0dWRpb0NvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgLi4ub3RoZXJQcm9wcyxcbiAgICAgICAgICAgIGFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgaXNGdWxsc2NyZWVuLFxuICAgICAgICAgICAgc2V0QWN0aXZlVGFibGUsXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgZW1pdFRlbGVtZXRyeUV2ZW50LFxuICAgICAgICAgICAgdG9nZ2xlRnVsbHNjcmVlbixcbiAgICAgICAgICAgIGlzTmF2aWdhdGlvbk9wZW4sXG4gICAgICAgICAgICB0b2dnbGVOYXZpZ2F0aW9uLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R1ZGlvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvTnVxc0hhc2hBZGFwdGVyPlxuICAgIDwvUXVlcnlDbGllbnRQcm92aWRlcj5cbiAgKTtcbn1cblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyBTdHVkaW8gY29udGV4dFxuICogQHRocm93cyBFcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgU3R1ZGlvLlByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdHVkaW8oKTogU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoU3R1ZGlvQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiYHVzZVN0dWRpb2AgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBTdHVkaW9Db250ZXh0LlByb3ZpZGVyYFwiKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scyB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHtcbiAgRGV2dG9vbHNCdXR0b25Qb3NpdGlvbixcbiAgRGV2dG9vbHNFcnJvclR5cGUsXG4gIERldnRvb2xzUG9zaXRpb24sXG59IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGxvZ28gdG8gb3BlbiBhbmQgY2xvc2UgdGhlIGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbS1yaWdodCcuXG4gICAqL1xuICBidXR0b25Qb3NpdGlvbj86IERldnRvb2xzQnV0dG9uUG9zaXRpb25cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20nLlxuICAgKi9cbiAgcG9zaXRpb24/OiBEZXZ0b29sc1Bvc2l0aW9uXG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzKFxuICBwcm9wczogRGV2dG9vbHNPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHtcbiAgICBidXR0b25Qb3NpdGlvbixcbiAgICBwb3NpdGlvbixcbiAgICBpbml0aWFsSXNPcGVuLFxuICAgIGVycm9yVHlwZXMsXG4gICAgc3R5bGVOb25jZSxcbiAgICBzaGFkb3dET01UYXJnZXQsXG4gIH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29scyh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChidXR0b25Qb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0QnV0dG9uUG9zaXRpb24oYnV0dG9uUG9zaXRpb24pXG4gICAgfVxuICB9LCBbYnV0dG9uUG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0UG9zaXRpb24ocG9zaXRpb24pXG4gICAgfVxuICB9LCBbcG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEluaXRpYWxJc09wZW4oaW5pdGlhbElzT3BlbiB8fCBmYWxzZSlcbiAgfSwgW2luaXRpYWxJc09wZW4sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gPGRpdiBkaXI9XCJsdHJcIiBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIiByZWY9e3JlZn0+PC9kaXY+XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCByZW5kZXIsIGxhenksIHNldHVwU3R5bGVTaGVldCwgY3JlYXRlQ29tcG9uZW50LCBtZXJnZVByb3BzIH0gZnJvbSAnLi9jaHVuay9IUjdZWFo1SC5qcyc7XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHMudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0XG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc0NvbXBvbmVudC9DUElPWlM1WC5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbC50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNvbkNsb3NlO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlXG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgICB0aGlzLiNvbkNsb3NlID0gY3JlYXRlU2lnbmFsKG9uQ2xvc2UpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIHNldE9uQ2xvc2Uob25DbG9zZSkge1xuICAgIHRoaXMuI29uQ2xvc2VbMV0oKCkgPT4gb25DbG9zZSk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgY29uc3QgW29uQ2xvc2VdID0gdGhpcy4jb25DbG9zZTtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzUGFuZWxDb21wb25lbnQvT0tGNkU0NVIuanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25DbG9zZSgpIHtcbiAgICAgICAgICByZXR1cm4gb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMsIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH07XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IERldnRvb2xzRXJyb3JUeXBlIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc1BhbmVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxuXG4gIC8qKlxuICAgKiBDdXN0b20gc3R5bGVzIGZvciB0aGUgZGV2dG9vbHMgcGFuZWxcbiAgICogQGRlZmF1bHQgeyBoZWlnaHQ6ICc1MDBweCcgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9XG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgZGV2dG9vbHMgcGFuZWwgaXMgY2xvc2VkXG4gICAqL1xuICBvbkNsb3NlPzogKCkgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzUGFuZWwoXG4gIHByb3BzOiBEZXZ0b29sc1BhbmVsT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IGVycm9yVHlwZXMsIHN0eWxlTm9uY2UsIHNoYWRvd0RPTVRhcmdldCB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBpbml0aWFsSXNPcGVuOiB0cnVlLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlOiBwcm9wcy5vbkNsb3NlLFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0T25DbG9zZShwcm9wcy5vbkNsb3NlID8/ICgoKSA9PiB7fSkpXG4gIH0sIFtwcm9wcy5vbkNsb3NlLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBoZWlnaHQ6ICc1MDBweCcsIC4uLnByb3BzLnN0eWxlIH19XG4gICAgICBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIlxuICAgICAgcmVmPXtyZWZ9XG4gICAgPjwvZGl2PlxuICApXG59XG4iLCAiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAqIGFzIERldnRvb2xzIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzJ1xuaW1wb3J0ICogYXMgRGV2dG9vbHNQYW5lbCBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzOiAodHlwZW9mIERldnRvb2xzKVsnUmVhY3RRdWVyeURldnRvb2xzJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHMuUmVhY3RRdWVyeURldnRvb2xzXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbDogKHR5cGVvZiBEZXZ0b29sc1BhbmVsKVsnUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29sc1BhbmVsLlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsXG4iLCAiaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIgfSBmcm9tIFwic29ubmVyXCI7XG5cbi8vIGltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkAvdWkvc3R1ZGlvL3V0aWwvdGhlbWUtcHJvdmlkZXJcIjtcblxudHlwZSBUb2FzdGVyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgU29ubmVyPjtcblxuY29uc3QgVG9hc3RlciA9ICh7IC4uLnByb3BzIH06IFRvYXN0ZXJQcm9wcykgPT4ge1xuICAvLyBjb25zdCB7IHRoZW1lID0gXCJzeXN0ZW1cIiB9ID0gdXNlVGhlbWUoKTtcblxuICByZXR1cm4gKFxuICAgIDxTb25uZXJcbiAgICAgIC8vIHRoZW1lPXt0aGVtZSBhcyBUb2FzdGVyUHJvcHNbXCJ0aGVtZVwiXX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXRvYXN0ZXIgcHMtZ3JvdXBcIlxuICAgICAgdG9hc3RPcHRpb25zPXt7XG4gICAgICAgIGNsYXNzTmFtZXM6IHtcbiAgICAgICAgICB0b2FzdDpcbiAgICAgICAgICAgIFwiZ3JvdXAgdG9hc3QgZ3JvdXAtWy50b2FzdGVyXTpiZy1iYWNrZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06dGV4dC1mb3JlZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06Ym9yZGVyLWJvcmRlciBncm91cC1bLnRvYXN0ZXJdOnNoYWRvdy1sZ1wiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGFjdGlvbkJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1wcmltYXJ5IGdyb3VwLVsudG9hc3RdOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLW11dGVkIGdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICB9LFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RlciB9O1xuIiwgImltcG9ydCB7XG4gIHVuc3RhYmxlX0FkYXB0ZXJPcHRpb25zIGFzIEFkYXB0ZXJPcHRpb25zLFxuICB1bnN0YWJsZV9jcmVhdGVBZGFwdGVyUHJvdmlkZXIgYXMgY3JlYXRlQWRhcHRlclByb3ZpZGVyLFxufSBmcm9tIFwibnVxcy9hZGFwdGVycy9jdXN0b21cIjtcbmltcG9ydCB7IEZDLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdHlwZSB7IGRlZmF1bHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBIb29rIHRoYXQgTnVxcyB3aWxsIGNhbGwgdG8gcmVhZCAmIHdyaXRlIFVSTCBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gdXNlSGFzaEFkYXB0ZXIoKSB7XG4gIC8vIHJlYWQgY3VycmVudCBzdGF0ZSBmcm9tIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIFx1MjAxQyNcdTIwMURcbiAgY29uc3QgcmF3SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICBjb25zdCBbaGFzaFBhcmFtcywgc2V0SGFzaFBhcmFtc10gPSB1c2VTdGF0ZShuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcblxuICAvLyB3cml0ZSBuZXcgc3RhdGUgYmFjayBpbnRvIHRoZSBoYXNoIGZyYWdtZW50XG4gIGZ1bmN0aW9uIHVwZGF0ZVVybCh1cGRhdGVkOiBVUkxTZWFyY2hQYXJhbXMsIHsgaGlzdG9yeSB9OiBBZGFwdGVyT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IGhhc2ggPSB1cGRhdGVkLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgdXJsID0gYCR7cGF0aG5hbWV9JHtzZWFyY2h9IyR7aGFzaH1gO1xuXG4gICAgaWYgKGhpc3RvcnkgPT09IFwicHVzaFwiKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfVxuXG4gICAgc2V0SGFzaFBhcmFtcyh1cGRhdGVkKTtcbiAgfVxuXG4gIC8vIGV4cG9zZSBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHBhcmFtc1xuICBmdW5jdGlvbiBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCgpIHtcbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcblxuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHJhdyk7XG4gIH1cblxuICAvLyBzeW5jIHN0YXRlIHdoZW4gdXNlciBuYXZpZ2F0ZXMgdmlhIGJyb3dzZXIgY29udHJvbHMgb3IgZXh0ZXJuYWwgc2NyaXB0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZSgpIHtcbiAgICAgIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgICAgIHNldEhhc2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IHNlYXJjaFBhcmFtczogaGFzaFBhcmFtcywgdXBkYXRlVXJsLCBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCB9O1xufVxuXG4vKipcbiAqIFRoZSBhZGFwdGVyIHByb3ZpZGVyIGNvbXBvbmVudCB5b3Ugd3JhcCB5b3VyIGFwcCBpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE51cXNIYXNoQWRhcHRlciA9IGNyZWF0ZUFkYXB0ZXJQcm92aWRlcih1c2VIYXNoQWRhcHRlcikgYXMgRkM8UHJvcHNXaXRoQ2hpbGRyZW4+O1xuIiwgImltcG9ydCB7IGluZmVyUm93RmlsdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuZnVuY3Rpb24gZ2V0Um93SWQocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IGlkID0ge1xuICAgIGZpbHRlcjogaW5mZXJSb3dGaWx0ZXIocm93LCB0YWJsZS5jb2x1bW5zKSxcbiAgICB0YWJsZTogYCR7dGFibGUuc2NoZW1hfS4ke3RhYmxlLm5hbWV9YCxcbiAgfTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaWQpO1xufVxuXG5mdW5jdGlvbiBhZGRSb3dJZFRvUm93KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICByZXR1cm4geyAuLi5yb3csIF9fcHNfcm93aWQ6IGdldFJvd0lkKHJvdywgdGFibGUpIH07XG59XG5cbnR5cGUgQWRhcHRlclJlc3VsdCA9IHtcbiAgcm93PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJvd3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd0lkVG9SZXN1bHQ8VCBleHRlbmRzIEFkYXB0ZXJSZXN1bHQ+KHJlc3VsdDogVCwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IHsgcm93LCByb3dzIH0gPSByZXN1bHQ7XG5cbiAgaWYgKHJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3c6IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkgfTtcbiAgfVxuICBpZiAocm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3dzOiByb3dzLm1hcCgocm93KSA9PiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEZpbHRlckdyb3VwLCBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMge1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHByb3BzOiBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMpIHtcbiAgY29uc3QgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIGZpbHRlciB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBlbmFibGVkOiBCb29sZWFuKGFjdGl2ZVRhYmxlKSxcbiAgICBnY1RpbWU6IDAsXG4gICAgcGxhY2Vob2xkZXJEYXRhKHByZXZpb3VzRGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkLCBwcmV2aW91c1F1ZXJ5KSB7XG4gICAgICBjb25zdCBbLCBzY2hlbWEsICwgdGFibGVdID0gcHJldmlvdXNRdWVyeT8ucXVlcnlLZXkgfHwgW107XG5cbiAgICAgIGlmIChzY2hlbWEgIT09IGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgdGFibGUgIT09IGFjdGl2ZVRhYmxlPy5uYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0YTtcbiAgICB9LFxuICAgIGFzeW5jIHF1ZXJ5Rm4oeyBzaWduYWwgfSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGFkYXB0ZXIucXVlcnkoXG4gICAgICAgIHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCB0YWJsZTogYWN0aXZlVGFibGUhLCBmaWx0ZXIgfSxcbiAgICAgICAgeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdHMsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1xuICAgICAgXCJzY2hlbWFcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgbnVsbCxcbiAgICAgIFwidGFibGVcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5uYW1lIHx8IG51bGwsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInNvcnRPcmRlclwiLFxuICAgICAgc29ydE9yZGVyLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgfHwgXCJuYXR1cmFsXCIsXG4gICAgICBcInBhZ2VJbmRleFwiLFxuICAgICAgcGFnZUluZGV4LFxuICAgICAgXCJwYWdlU2l6ZVwiLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBcImZpbHRlclwiLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSxcbiAgICBdLFxuICAgIHN0YWxlVGltZTogSW5maW5pdHksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHR5cGUgUXVlcnlDbGllbnQsIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzLCBBZGFwdGVyVXBkYXRlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBpbmZlclJvd0ZpbHRlciB9IGZyb20gXCIuLi8uLi9kYXRhL3F1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcyB7XG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzO1xuICBvcHRpb25zOiBBZGFwdGVyVXBkYXRlT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHF1ZXJ5S2V5UHJlZml4ID0gW1wic2NoZW1hXCIsIGFjdGl2ZVRhYmxlPy5zY2hlbWEgPz8gbnVsbCwgXCJ0YWJsZVwiLCBhY3RpdmVUYWJsZT8ubmFtZSA/PyBudWxsXSBhcyBjb25zdDtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChwYXJhbXM6IFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLnVwZGF0ZShwYXJhbXMuZGV0YWlscywgcGFyYW1zLm9wdGlvbnMpO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBtdXRhdGlvbktleTogWy4uLnF1ZXJ5S2V5UHJlZml4LCBcInVwZGF0ZVwiXSxcbiAgICBvbkVycm9yKGVycm9yLCBwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgb25FcnJvcihlcnJvcik7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIHJldmVydENoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNhY2hlZFJvdyxcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKGNoYW5nZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKG9yaWdpbmFsVmFsdWVzLCBjb2x1bW5OYW1lKSA9PiAoeyAuLi5vcmlnaW5hbFZhbHVlcywgW2NvbHVtbk5hbWVdOiByb3dbY29sdW1uTmFtZV0gfSksXG4gICAgICAgICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbk11dGF0ZShwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgZGV0YWlscyB9ID0gcGFyYW1zO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IHJvdzogdW5jaGFuZ2VkUm93IH0gPSBkZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIodW5jaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4uZGV0YWlscy5jaGFuZ2VzIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhyZXN1bHQsIHBhcmFtcykge1xuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlSZWFsRGF0YVdoZW5GcmVzaGVyKGNhY2hlZFJvdykge1xuICAgICAgICAgIGNvbnN0IHsgX19wc191cGRhdGVkX2F0X18gfSA9IGNhY2hlZFJvdztcbiAgICAgICAgICBjb25zdCB7IHJvdyB9ID0gcmVzdWx0O1xuXG4gICAgICAgICAgLy8gcmVzdWx0IHJvdyBpcyBzdGFsZS5cbiAgICAgICAgICBpZiAoX19wc191cGRhdGVkX2F0X18gIT0gbnVsbCAmJiByb3cuX19wc191cGRhdGVkX2F0X18gPD0gX19wc191cGRhdGVkX2F0X18pIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSb3c7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5yb3cgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlQ2FjaGVkUm93KHBhcmFtczoge1xuICBnZXRGaW5kZXJGbjogKCkgPT4gKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgdXBkYXRlckZuOiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudDtcbn0pIHtcbiAgY29uc3QgeyBnZXRGaW5kZXJGbiwgcXVlcnlDbGllbnQsIHRhYmxlLCB1cGRhdGVyRm4gfSA9IHBhcmFtcztcblxuICBsZXQgZmluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGaW5kZXJGbj47XG5cbiAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGEoXG4gICAgeyBleGFjdDogZmFsc2UsIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgdGFibGUuc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLm5hbWUsIFwicXVlcnlcIl0gfSxcbiAgICAoY2FjaGVkUmVzdWx0OiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgeyByb3dzOiBjYWNoZWRSb3dzID0gW10gfSA9IGNhY2hlZFJlc3VsdCB8fCB7fTtcblxuICAgICAgaWYgKGNhY2hlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhY2hlZFJvd0luZGV4ID0gY2FjaGVkUm93cy5maW5kSW5kZXgoKGZpbmRlciA/Pz0gZ2V0RmluZGVyRm4oKSkpO1xuXG4gICAgICBpZiAoY2FjaGVkUm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1JvdyA9IHVwZGF0ZXJGbihjYWNoZWRSb3dzW2NhY2hlZFJvd0luZGV4XSEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jYWNoZWRSZXN1bHQhLFxuICAgICAgICByb3dzOiBbLi4uY2FjaGVkUm93cy5zbGljZSgwLCBjYWNoZWRSb3dJbmRleCksIG5ld1JvdywgLi4uY2FjaGVkUm93cy5zbGljZShjYWNoZWRSb3dJbmRleCArIDEpXSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbXSxcbiAgYWZ0ZXI6IFwiYW5kXCIsXG4gIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxufTtcblxuY29uc3QgY291bnRGaWx0ZXJzUmVjdXJzaXZlID0gKGZpbHRlckdyb3VwOiBGaWx0ZXJHcm91cCk6IG51bWJlciA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlckdyb3VwLmZpbHRlcnMpIHtcbiAgICBpZiAoZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIC8vIE9ubHkgY291bnQgZmlsdGVycyB0aGF0IGhhdmUgYSBub24tZW1wdHkgY29sdW1uIHNlbGVjdGVkXG4gICAgICBpZiAoZmlsdGVyLmNvbHVtbi50cmltKCkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbHRlci5raW5kID09PSBcIkZpbHRlckdyb3VwXCIpIHtcbiAgICAgIGNvdW50ICs9IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShmaWx0ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlsdGVyaW5nKCkge1xuICBjb25zdCBbZmlsdGVyUGFyYW0sIHNldEZpbHRlclBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJmaWx0ZXJcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogSlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpbHRlciksXG4gIH0pO1xuXG4gIGNvbnN0IGFwcGxpZWRGaWx0ZXIgPSB1c2VNZW1vKCgpID0+IEpTT04ucGFyc2UoZmlsdGVyUGFyYW0pIGFzIEZpbHRlckdyb3VwLCBbZmlsdGVyUGFyYW1dKTtcbiAgY29uc3Qgc2V0QXBwbGllZEZpbHRlciA9IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkIHNldEZpbHRlclBhcmFtKEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xuXG4gIGNvbnN0IFtlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyXSA9IHVzZVN0YXRlPEZpbHRlckdyb3VwPihhcHBsaWVkRmlsdGVyKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gIH0sIFthcHBsaWVkRmlsdGVyXSk7XG5cbiAgY29uc3QgdG90YWxFZGl0aW5nRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGVkaXRpbmdGaWx0ZXIpLCBbZWRpdGluZ0ZpbHRlcl0pO1xuXG4gIHJldHVybiB7XG4gICAgYXBwbGllZEZpbHRlcixcbiAgICBzZXRBcHBsaWVkRmlsdGVyLFxuICAgIGVkaXRpbmdGaWx0ZXIsXG4gICAgc2V0RWRpdGluZ0ZpbHRlcixcbiAgICB0b3RhbEVkaXRpbmdGaWx0ZXJzLFxuICB9O1xufVxuIiwgIi8vIHdlJ3JlIGVuc3VyaW5nIHRoYXQga2V5cyBhcmUgdHlwZS1zYWZlLiB0aGVyZSBpcyBubyBwcm9wZXIgd2F5IHRvIGFjaGlldmUgaXQgaW4gYG51cXNgLlxuLy8gdGhlIGBkZWNsYXJlIG1vZHVsZWAgdGVjaG5pcXVlIHJlc3VsdHMgaW4gYWRkaW5nIG92ZXJsb2Fkcywgbm90IG92ZXJyaWRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucy5cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IHtcbiAgdHlwZSBPcHRpb25zLFxuICB0eXBlIFBhcnNlcixcbiAgdXNlUXVlcnlTdGF0ZSBhcyB1c2VRdWVyeVN0YXRlT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZVJldHVybixcbiAgdXNlUXVlcnlTdGF0ZXMgYXMgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc09wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNSZXR1cm4sXG59IGZyb20gXCJudXFzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmV4cG9ydCAqIGZyb20gXCJudXFzXCI7XG5cbmV4cG9ydCB0eXBlIFN0YXRlS2V5ID0gXCJwYWdlSW5kZXhcIiB8IFwicGFnZVNpemVcIiB8IFwidGFibGVcIiB8IFwic29ydFwiIHwgXCJzY2hlbWFcIiB8IFwidGVzdFwiIHwgXCJmaWx0ZXJcIjtcblxuLy8gbGlmdGVkIGZyb20gQHByaXNtYS9jbGllbnQvcnVudGltZVxudHlwZSBFeGFjdDxBLCBXPiA9XG4gIHwgKEEgZXh0ZW5kcyB1bmtub3duXG4gICAgICA/IFcgZXh0ZW5kcyBBXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW0sgaW4ga2V5b2YgQV06IEV4YWN0PEFbS10sIFdbS10+O1xuICAgICAgICAgIH1cbiAgICAgICAgOiBXXG4gICAgICA6IG5ldmVyKVxuICB8IChBIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHwgYm9vbGVhbiB8IFtdID8gQSA6IG5ldmVyKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBrZXlNYXA8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAga2V5TWFwOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4ga2V5TWFwIGFzIG5ldmVyO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVybEtleXM8Y29uc3QgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+PihcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdXJsS2V5czogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIHVybEtleXMgYXMgbmV2ZXI7XG59XG5cbmNvbnN0IF9CUkFORF9TWU1CT0wgPSBTeW1ib2woXCJCUkFORF9TWU1CT0xcIik7XG5cbnR5cGUgQnJhbmRlZEtleU1hcDxNYXA+ID0gTWFwICYge1xuICBbSyBpbiB0eXBlb2YgX0JSQU5EX1NZTUJPTF06IG5ldmVyO1xufTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPiAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IFQ7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlPFQ+KFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBVc2VRdWVyeVN0YXRlT3B0aW9uczxUPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIH0sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdHlwZW9mIG9wdGlvbnMuZGVmYXVsdFZhbHVlPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBQaWNrPFVzZVF1ZXJ5U3RhdGVPcHRpb25zPHN0cmluZz4sIGtleW9mIE9wdGlvbnM+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5KTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHVuZGVmaW5lZD47XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSwgb3B0aW9ucz86IGFueSk6IGFueSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlT3JpZ2luYWwoa2V5LCBvcHRpb25zKTtcbn1cblxudHlwZSBVc2VRdWVyeVN0YXRlc0tleXNNYXA8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+PiA9IFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pixcbj4gPSB7XG4gIFtLZXkgaW4ga2V5b2YgTWFwXTogS2V5TWFwVmFsdWU8TWFwW0tleV0+O1xufTtcblxudHlwZSBLZXlNYXBWYWx1ZTxUeXBlPiA9IFBhcnNlcjxUeXBlPiAmXG4gIE9wdGlvbnMgJiB7XG4gICAgZGVmYXVsdFZhbHVlPzogVHlwZTtcbiAgfTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB1c2VRdWVyeVN0YXRlc09yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZXM8S2V5TWFwIGV4dGVuZHMgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPihcbiAga2V5TWFwOiBCcmFuZGVkS2V5TWFwPEtleU1hcD4sXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPFVzZVF1ZXJ5U3RhdGVzT3B0aW9uczxLZXlNYXA+Pixcbik6IFVzZVF1ZXJ5U3RhdGVzUmV0dXJuPEtleU1hcD4ge1xuICByZXR1cm4gdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbChrZXlNYXAgYXMgbmV2ZXIsIG9wdGlvbnMpO1xufVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbi8qKlxuICogSG9vayB0byBrbm93IHdoZXRoZXIgYW4gaW5zZXJ0IGlzIGN1cnJlbnRseSBvbmdvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNJbnNlcnRpbmcoKSB7XG4gIHJldHVybiB1c2VJc011dGF0aW5nKHtcbiAgICBwcmVkaWNhdGUoeyBvcHRpb25zOiB7IG11dGF0aW9uS2V5IH0gfSkge1xuICAgICAgcmV0dXJuIG11dGF0aW9uS2V5Py5bNF0gPT09IFwiaW5zZXJ0XCI7XG4gICAgfSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBPbkNoYW5nZUZuLCBQYWdpbmF0aW9uU3RhdGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBrZXlNYXAsIHBhcnNlQXNJbmRleCwgcGFyc2VBc0ludGVnZXIsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vLyBUT0RPOiBldmVudHVhbGx5IGNvbmZpZ3VyYWJsZSAvIGNvbnRyb2xsZWQgYnkgdXNlci4gYmFieSBzdGVwcy4uXG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDI1O1xuXG5jb25zdCBwYWdpbmF0aW9uUGFyc2VycyA9IGtleU1hcCh7XG4gIHBhZ2VJbmRleDogcGFyc2VBc0luZGV4LndpdGhEZWZhdWx0KDApLCAvLyB6ZXJvLWJhc2VkXG4gIHBhZ2VTaXplOiBwYXJzZUFzSW50ZWdlci53aXRoRGVmYXVsdChERUZBVUxUX1BBR0VfU0laRSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb24oKSB7XG4gIGNvbnN0IFt7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSwgc2V0UGFnaW5hdGlvbl0gPSB1c2VRdWVyeVN0YXRlcyhwYWdpbmF0aW9uUGFyc2Vycyk7XG5cbiAgLy8gQ29tcGF0aWJsZSB3aXRoIFRhblN0YWNrIFRhYmxlJ3MgT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+XG4gIGNvbnN0IHNldFBhZ2luYXRpb25TdGF0ZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+ID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXJPclZhbHVlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKChvbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHVwZGF0ZXJPclZhbHVlKG9sZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogbmV3U3RhdGUucGFnZUluZGV4LFxuICAgICAgICAgICAgcGFnZVNpemU6IG5ld1N0YXRlLnBhZ2VTaXplLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKHtcbiAgICAgICAgICBwYWdlSW5kZXg6IHVwZGF0ZXJPclZhbHVlLnBhZ2VJbmRleCxcbiAgICAgICAgICBwYWdlU2l6ZTogdXBkYXRlck9yVmFsdWUucGFnZVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFBhZ2luYXRpb25dLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgcGFnaW5hdGlvblN0YXRlOiB7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSxcbiAgICBzZXRQYWdpbmF0aW9uU3RhdGUsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVEZWxldGUgfSBmcm9tIFwiLi91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZVwiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuL3VzZS1wYWdpbmF0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3Rpb24oZGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IGlzU2VsZWN0aW5nID0gT2JqZWN0LmtleXMocm93U2VsZWN0aW9uU3RhdGUpLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgeyBtdXRhdGUgfSA9IHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KSwgW2FjdGl2ZVRhYmxlLCBwYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4XSk7XG5cbiAgZnVuY3Rpb24gZGVsZXRlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHJvd3MgPSBkYXRhPy5yb3dzLmZpbHRlcigocm93KSA9PiB7XG4gICAgICByZXR1cm4gcm93U2VsZWN0aW9uU3RhdGVbcm93Ll9fcHNfcm93aWQgYXMgc3RyaW5nXTtcbiAgICB9KTtcblxuICAgIG11dGF0ZShyb3dzID8/IFtdLCB7XG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGVTZWxlY3Rpb24sXG4gICAgc2V0Um93U2VsZWN0aW9uU3RhdGUsXG4gICAgcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgaXNTZWxlY3RpbmcsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiZGVsZXRlXCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5kZWxldGUoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgYXN5bmMgb25TdWNjZXNzKCkge1xuICAgICAgYXdhaXQgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNvcnRpbmcoKSB7XG4gIC8vIFVzZSBudXFzIHRvIG1hbmFnZSBzb3J0aW5nIHN0YXRlIGluIFVSTFxuICBjb25zdCBbc29ydFBhcmFtLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcInNvcnRcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgfSk7XG5cbiAgLy8gUGFyc2Ugc29ydGluZyBmcm9tIFVSTCBwYXJhbWV0ZXJcbiAgY29uc3QgcGFyc2VTb3J0aW5nID0gKHNvcnRQYXJhbTogc3RyaW5nIHwgbnVsbCk6IFNvcnRPcmRlckl0ZW1bXSA9PiB7XG4gICAgaWYgKCFzb3J0UGFyYW0pIHJldHVybiBbXTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQ6IGNvbHVtbjpkaXJlY3Rpb24sY29sdW1uOmRpcmVjdGlvblxuICAgICAgcmV0dXJuIHNvcnRQYXJhbVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dID0gaXRlbS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgaWYgKCFjb2x1bW4gfHwgIWRpcmVjdGlvbiB8fCAhW1wiYXNjXCIsIFwiZGVzY1wiXS5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgY29sdW1uLCBkaXJlY3Rpb246IGRpcmVjdGlvbiBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBTb3J0T3JkZXJJdGVtW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBwYXJzZSBzb3J0aW5nIHBhcmFtZXRlcjpcIiwgZSk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHN0YWJsZSBzb3J0aW5nIHN0YXRlIHRoYXQncyBkZXJpdmVkIGZyb20gVVJMIHBhcmFtZXRlcnNcbiAgY29uc3QgW3NvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlXSA9IHVzZVN0YXRlKCgpID0+IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pKTtcblxuICAvLyBLZWVwIGludGVybmFsIHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIFVSTCBwYXJhbWV0ZXJzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV3U29ydGluZ1N0YXRlID0gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSk7XG4gICAgc2V0U29ydGluZ1N0YXRlKG5ld1NvcnRpbmdTdGF0ZSk7XG4gIH0sIFtzb3J0UGFyYW1dKTtcblxuICAvLyBVcGRhdGUgVVJMIHdoZW4gc29ydGluZyBjaGFuZ2VzIGZyb20gdGhlIFVJXG4gIGNvbnN0IGhhbmRsZVNvcnRpbmdDaGFuZ2UgPSAobmV3U3RhdGU6IFNvcnRPcmRlckl0ZW1bXSB8ICgob2xkOiBTb3J0T3JkZXJJdGVtW10pID0+IFNvcnRPcmRlckl0ZW1bXSkpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdHlwZW9mIG5ld1N0YXRlID09PSBcImZ1bmN0aW9uXCIgPyBuZXdTdGF0ZShzb3J0aW5nU3RhdGUpIDogbmV3U3RhdGU7XG4gICAgc2V0U29ydGluZ1N0YXRlKHJlc29sdmVkU3RhdGUpO1xuXG4gICAgLy8gU2VyaWFsaXplIHNvcnRpbmcgc3RhdGUgdG8gVVJMIHBhcmFtZXRlclxuICAgIGNvbnN0IHNvcnRTdHJpbmcgPVxuICAgICAgcmVzb2x2ZWRTdGF0ZS5sZW5ndGggPiAwID8gcmVzb2x2ZWRTdGF0ZS5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIDogbnVsbDtcblxuICAgIHZvaWQgc2V0U29ydFBhcmFtKHNvcnRTdHJpbmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc29ydGluZ1N0YXRlLFxuICAgIHNldFNvcnRpbmdTdGF0ZTogaGFuZGxlU29ydGluZ0NoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5DZWxsIH0gZnJvbSBcIi4vQm9vbGVhbkNlbGxcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuaW1wb3J0IHsgRGF0ZUNlbGwgfSBmcm9tIFwiLi9EYXRlQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBFbnVtQ2VsbCB9IGZyb20gXCIuL0VudW1DZWxsXCI7XG5pbXBvcnQgeyBKU09OQ2VsbCB9IGZyb20gXCIuL0pTT05DZWxsXCI7XG5pbXBvcnQgeyBOdWxsQ2VsbCB9IGZyb20gXCIuL051bGxDZWxsXCI7XG5pbXBvcnQgeyBOdW1lcmljQ2VsbCB9IGZyb20gXCIuL051bWVyaWNDZWxsXCI7XG5pbXBvcnQgeyBSYXdDZWxsIH0gZnJvbSBcIi4vUmF3Q2VsbFwiO1xuaW1wb3J0IHsgVGltZUNlbGwgfSBmcm9tIFwiLi9UaW1lQ2VsbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbCh7XG4gIGNlbGwsXG4gIGNvbHVtbixcbiAgcHJvcHMsXG59OiB7XG4gIGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBjb2x1bW46IENvbHVtbjtcbiAgcHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn0pIHtcbiAgY29uc3QgdmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gPEVtcHR5Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDxOdWxsQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IC8+O1xuICB9XG5cbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSBvcHRpb25zPXtvcHRpb25zfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwicmF3XCIpIHtcbiAgICBpZiAoaXNPYmplY3RUeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxKU09OQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIDxSYXdDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlfSAvPjtcbiAgfVxuXG4gIGdyb3VwIHNhdGlzZmllcyBuZXZlcjtcbiAgdGhyb3cgbmV3IEVycm9yKGBEYXRhdHlwZSBncm91cCBcIiR7Z3JvdXAgYXMgc3RyaW5nfVwiIHdhcyBub3QgaGFuZGxlZCBpbiAnL2NlbGwvZ2V0LWNlbGwudHN4J2ApO1xufVxuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbkNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgQm9vbGVhbkNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogQm9vbGVhbkNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cImJvb2xlYW5cIj57U3RyaW5nKEJvb2xlYW4odmFsdWUpKX08L2Rpdj5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkJvb2xlYW5DZWxsLmRpc3BsYXlOYW1lID0gXCJCb29sZWFuQ2VsbFwiO1xuXG5leHBvcnQgeyBCb29sZWFuQ2VsbCB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtdy1mdWxsIHBzLW92ZXJmbG93LWF1dG8gcHMtZmxleCBwcy1pdGVtcy1zdGFydCBwcy1oLWZ1bGxcIj5cbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLXctZnVsbCBwcy1jYXB0aW9uLWJvdHRvbSBwcy10ZXh0LXNtXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcblxuY29uc3QgVGFibGVIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRoZWFkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZGVyXCI7XG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRib2R5IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwiWyZfdHI6bGFzdC1jaGlsZF06cHMtYm9yZGVyLTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCI7XG5cbmNvbnN0IFRhYmxlRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGZvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWJvcmRlci10IHBzLWJnLW11dGVkLzUwIHBzLWZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OnBzLWJvcmRlci1iLTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiO1xuXG5jb25zdCBUYWJsZVJvdyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlUm93RWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0clxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWJvcmRlci1iIHBzLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOnBzLWJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpwcy1iZy1tdXRlZFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlUm93XCI7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRoSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGhcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtMTAgcHMtcHgtMiBwcy10ZXh0LWxlZnQgcHMtYWxpZ24tbWlkZGxlIHBzLWZvbnQtbWVkaXVtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRcIjtcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtYWxpZ24tbWlkZGxlXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIjtcblxuY29uc3QgVGFibGVDYXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8Y2FwdGlvbiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLW10LTQgcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9IFwiVGFibGVDYXB0aW9uXCI7XG5cbmV4cG9ydCB7IFRhYmxlLCBUYWJsZUhlYWRlciwgVGFibGVCb2R5LCBUYWJsZUZvb3RlciwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGFibGVDZWxsLCBUYWJsZUNhcHRpb24gfTtcbiIsICJpbXBvcnQgeyBDb3B5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbnRleHRNZW51LCBDb250ZXh0TWVudUNvbnRlbnQsIENvbnRleHRNZW51SXRlbSwgQ29udGV4dE1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxvYmplY3Q+O1xuXG4vLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGludmVyc2lmaWVkIC0gdG8gbWFrZSBpdCBleHRlbnNpYmxlLCBhbmQgYWRhcHRhYmxlIHRvIGRpZmZlcmVudCBzaXR1YXRpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkQ2VsbENvbnRleHRNZW51KHByb3BzOiBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRNZW51PlxuICAgICAgPENvbnRleHRNZW51VHJpZ2dlciBjbGFzc05hbWU9XCJwcy1ibG9jayBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRleHRNZW51VHJpZ2dlcj5cbiAgICAgIDxDb250ZXh0TWVudUNvbnRlbnQ+XG4gICAgICAgIDxDb250ZXh0TWVudUl0ZW1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZXh0cmFjdFRleHRDb250ZW50KGNoaWxkcmVuKTtcbiAgICAgICAgICAgIHZvaWQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQ6XCIsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPENvcHkgc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgQ29weVxuICAgICAgICA8L0NvbnRleHRNZW51SXRlbT5cbiAgICAgIDwvQ29udGV4dE1lbnVDb250ZW50PlxuICAgIDwvQ29udGV4dE1lbnU+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUZXh0Q29udGVudChub2RlOiBSZWFjdE5vZGUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIFN0cmluZyhub2RlKTtcbiAgfVxuXG4gIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgY29uc3QgcHJvcHMgPSBub2RlLnByb3BzIGFzIHsgdGV4dD86IHN0cmluZzsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIC8vIEhhbmRsZSBSZXZlYWxUZXh0IGNvbXBvbmVudCBzcGVjaWZpY2FsbHlcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJSZXZlYWxUZXh0XCIpIHtcbiAgICAgIHJldHVybiBwcm9wcy50ZXh0IHx8IFwiXCI7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIE51bGxWYWx1ZSBjb21wb25lbnRcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJOdWxsVmFsdWVcIikge1xuICAgICAgcmV0dXJuIFwiTlVMTFwiO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIGNoaWxkcmVuXG4gICAgaWYgKHByb3BzLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdFRleHRDb250ZW50KHByb3BzLmNoaWxkcmVuIGFzIFJlYWN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIHJldHVybiBub2RlLm1hcChleHRyYWN0VGV4dENvbnRlbnQpLmpvaW4oXCJcIik7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDb250ZXh0TWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQtbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENvbnRleHRNZW51ID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQ29udGV4dE1lbnVUcmlnZ2VyID0gQ29udGV4dE1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgQ29udGV4dE1lbnVHcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVBvcnRhbCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9Hcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvIHBzLWgtNCBwcy13LTRcIiAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkNvbnRleHRNZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuQ29udGV4dE1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkNvbnRleHRNZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkNvbnRleHRNZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGQgcHMtdGV4dC1mb3JlZ3JvdW5kXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1ib3JkZXJcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKTtcbn07XG5Db250ZXh0TWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJDb250ZXh0TWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIENvbnRleHRNZW51LFxuICBDb250ZXh0TWVudVRyaWdnZXIsXG4gIENvbnRleHRNZW51Q29udGVudCxcbiAgQ29udGV4dE1lbnVJdGVtLFxuICBDb250ZXh0TWVudUNoZWNrYm94SXRlbSxcbiAgQ29udGV4dE1lbnVSYWRpb0l0ZW0sXG4gIENvbnRleHRNZW51TGFiZWwsXG4gIENvbnRleHRNZW51U2VwYXJhdG9yLFxuICBDb250ZXh0TWVudVNob3J0Y3V0LFxuICBDb250ZXh0TWVudUdyb3VwLFxuICBDb250ZXh0TWVudVBvcnRhbCxcbiAgQ29udGV4dE1lbnVTdWIsXG4gIENvbnRleHRNZW51U3ViQ29udGVudCxcbiAgQ29udGV4dE1lbnVTdWJUcmlnZ2VyLFxuICBDb250ZXh0TWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUgfSBmcm9tIFwiLi4vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENlbGwocHJvcHM6IENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxcbiAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgICAgICAvLyBcImRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctMiBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluZGlnby00MDAgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbnNldFwiLFxuICAgICAgICBcInBzLWN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICA+XG4gICAgICA8RGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+e2NoaWxkcmVufTwvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBEYXRlQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBEYXRlQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkRhdGVDZWxsLmRpc3BsYXlOYW1lID0gXCJEYXRlQ2VsbFwiO1xuXG5leHBvcnQgeyBEYXRlQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuY29uc3QgRW1wdHlDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVtcHR5Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9IC8+O1xufSk7XG5FbXB0eUNlbGwuZGlzcGxheU5hbWUgPSBcIkVtcHR5Q2VsbFwiO1xuXG5leHBvcnQgeyBFbXB0eUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3QgRW51bUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRW51bUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCBvcHRpb25zLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5FbnVtQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRW51bUNlbGxcIjtcblxuZXhwb3J0IHsgRW51bUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpTT05DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xufVxuXG5jb25zdCBKU09OQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBKU09OQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuSlNPTkNlbGwuZGlzcGxheU5hbWUgPSBcIkpTT05DZWxsXCI7XG5cbmV4cG9ydCB7IEpTT05DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdWxsQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IE51bGxDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bGxDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCI+TlVMTDwvY29kZT5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbk51bGxDZWxsLmRpc3BsYXlOYW1lID0gXCJOdWxsQ2VsbFwiO1xuXG5leHBvcnQgeyBOdWxsQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgTnVtZXJpY0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogTnVtZXJpY0NlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGRpdiBkYXRhLWNlbGwtdHlwZT1cIm51bWVyaWNcIj57dmFsdWUgPT09IG51bGwgPyBcIk5VTExcIiA6IFN0cmluZyh2YWx1ZSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdW1lcmljQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVtZXJpY0NlbGxcIjtcblxuZXhwb3J0IHsgTnVtZXJpY0NlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0NlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgUmF3Q2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBSYXdDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuUmF3Q2VsbC5kaXNwbGF5TmFtZSA9IFwiUmF3Q2VsbFwiO1xuXG5leHBvcnQgeyBSYXdDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBUaW1lQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBUaW1lQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblRpbWVDZWxsLmRpc3BsYXlOYW1lID0gXCJUaW1lQ2VsbFwiO1xuXG5leHBvcnQgeyBUaW1lQ2VsbCB9O1xuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RIZWFkZXJDZWxsUHJvcHMge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IFNlbGVjdEhlYWRlckNlbGwgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTZWxlY3RIZWFkZXJDZWxsUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgdGFibGUsIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBzdHlsZT17c3R5bGV9IHsuLi5yZXN0fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdy1mdWxsXCI+XG4gICAgICAgIDxDaGVja2JveFxuICAgICAgICAgIGNoZWNrZWQ9e3RhYmxlLmdldElzQWxsUm93c1NlbGVjdGVkKCl9XG4gICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+IHRhYmxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCghIXZhbHVlKX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG5TZWxlY3RIZWFkZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJTZWxlY3RIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCB7IFNlbGVjdEhlYWRlckNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCI7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1oLTQgcHMtdy00IHBzLXNocmluay0wIHBzLXJvdW5kZWQtc20gcHMtYm9yZGVyIHBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy10ZXh0LWN1cnJlbnRcIil9PlxuICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsICJpbXBvcnQgeyBSb3cgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5pbXBvcnQgeyBTZWxlY3RDZWxsIH0gZnJvbSBcIi4vU2VsZWN0Q2VsbFwiO1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RSb3dDZWxsUHJvcHMge1xuICByb3c6IFJvdzxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgU2VsZWN0Um93Q2VsbCA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFNlbGVjdFJvd0NlbGxQcm9wcz4oKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyByb3csIHJlYWRvbmx5LCBjbGFzc05hbWUsIHN0eWxlLCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3RDZWxsIHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSB7Li4ucmVzdH0+XG4gICAgICA8Q2hlY2tib3hcbiAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgZGlzYWJsZWQ9eyFyb3cuZ2V0Q2FuU2VsZWN0KCkgfHwgcmVhZG9ubHl9XG4gICAgICAgIG9uQ2hlY2tlZENoYW5nZT17cm93LmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcigpfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdENlbGw+XG4gICk7XG59KTtcblxuU2VsZWN0Um93Q2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0Um93Q2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RSb3dDZWxsIH07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwsIFRhYmxlSGVhZCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGlzSGVhZGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdENlbGwocHJvcHM6IFNlbGVjdENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIGlzSGVhZGVyID0gZmFsc2UsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICBjb25zdCBzZWxlY3RDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXVwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc0hlYWRlciA/IChcbiAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKHNlbGVjdENsYXNzZXMsIFwicHMtaC0xMCBwcy1iZy10YWJsZS1oZWFkIHBzLXotMzAgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWxlZnQtMFwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihzZWxlY3RDbGFzc2VzLCBcInBzLXotMTAgcHMtaC1bMzlweF1cIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIHNldE9wZW46IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmNvbnN0IFBvcG92ZXJDZWxsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH06IFBvcG92ZXJQcmltaXRpdmUuUG9wb3ZlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgb3Blbiwgc2V0T3BlbiB9fT5cbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlJvb3Qgb3Blbj17b3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRPcGVufSB7Li4ucHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuUm9vdD5cbiAgICA8L1BvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5Qb3BvdmVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+IHtcbiAgb25Eb3VibGVDbGljaz86ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiwgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgb25Eb3VibGVDbGljaywgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAvLyBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuICAgIC8vIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGhhbmRsZURvY3VtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAvLyAgICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiAhdHJpZ2dlclJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhcIk91dHNpZGUgY2xpY2sgLSByZW1vdmluZyBmb2N1c1wiKTtcbiAgICAvLyAgICAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vIH0sIFtdKTtcblxuICAgIC8vIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgIHNldElzRm9jdXNlZCh0cnVlKTtcbiAgICAvLyAgIGNvbnRleHQ/LnNldE9wZW4odHJ1ZSk7XG5cbiAgICAvLyAgIGlmIChlLmRldGFpbCA9PT0gMiAmJiBvbkRvdWJsZUNsaWNrKSB7XG4gICAgLy8gICAgIG9uRG91YmxlQ2xpY2soKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHJlZihub2RlKTtcbiAgICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkXG4gICAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbD5cbiAgICAgIDxQb3BvdmVyQ2VsbFRyaWdnZXIgYXNDaGlsZD57Y2VsbENvbXBvbmVudH08L1BvcG92ZXJDZWxsVHJpZ2dlcj5cbiAgICAgIDxQb3BvdmVyQ2VsbENvbnRlbnRcbiAgICAgICAgYWxpZ249XCJzdGFydFwiXG4gICAgICAgIGFsaWduT2Zmc2V0PXstMX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXJvdW5kZWQtbm9uZSBwcy1iZy1tdXRlZFwiLFxuICAgICAgICAgIFwicHMtcC0wIHBzLXotMzAgcHMtZ2FwLTAgcHMtYm9yZGVyLXByaW1hcnlcIixcbiAgICAgICAgICBcInBzLXctW2NhbGModmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV8rXzFweCldIHBzLW1heC13LTcyIHBzLW1pbi13LW1heFwiLFxuICAgICAgICApfVxuICAgICAgICBzaWRlT2Zmc2V0PXstNDB9XG4gICAgICA+XG4gICAgICAgIHtpbnB1dENvbXBvbmVudH1cbiAgICAgIDwvUG9wb3ZlckNlbGxDb250ZW50PlxuICAgIDwvUG9wb3ZlckNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHtcbiAgY2xvc2VzdENlbnRlcixcbiAgRG5kQ29udGV4dCxcbiAgdHlwZSBEcmFnRW5kRXZlbnQsXG4gIERyYWdPdmVybGF5LFxuICB0eXBlIERyYWdTdGFydEV2ZW50LFxuICBLZXlib2FyZFNlbnNvcixcbiAgUG9pbnRlclNlbnNvcixcbiAgdHlwZSBVbmlxdWVJZGVudGlmaWVyLFxuICB1c2VTZW5zb3IsXG4gIHVzZVNlbnNvcnMsXG59IGZyb20gXCJAZG5kLWtpdC9jb3JlXCI7XG5pbXBvcnQge1xuICBhcnJheU1vdmUsXG4gIFNvcnRhYmxlQ29udGV4dCxcbiAgc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzLFxuICB1c2VTb3J0YWJsZSxcbiAgdmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5LFxufSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uUmlnaHQsIEdyaXBWZXJ0aWNhbCwgSGVscENpcmNsZSwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCBzaG9ydCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbkZpbHRlciwgRmlsdGVyR3JvdXAsIEZpbHRlck9wZXJhdG9yLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgY29lcmNlVG9TdHJpbmcsIGNvZXJjZVRvVmFsdWUgfSBmcm9tIFwiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnUsIERyb3Bkb3duTWVudUNvbnRlbnQsIERyb3Bkb3duTWVudVRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdENvbnRlbnQsIFNlbGVjdEl0ZW0sIFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxuY29uc3QgTGVhZGluZ09wZXJhdG9yU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIG9uVmFsdWVDaGFuZ2UsXG4gIGRpc2FibGVkLFxuICB0cmlnZ2VyQ2xhc3NOYW1lID0gXCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCIsXG59OiB7XG4gIHZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25WYWx1ZUNoYW5nZTogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHRyaWdnZXJDbGFzc05hbWU/OiBzdHJpbmc7XG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFNlbGVjdCB2YWx1ZT17dmFsdWV9IG9uVmFsdWVDaGFuZ2U9e29uVmFsdWVDaGFuZ2V9IGRpc2FibGVkPXtkaXNhYmxlZH0+XG4gICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9e3RyaWdnZXJDbGFzc05hbWV9PlxuICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJMb2dpY1wiIC8+XG4gICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJhbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5BTkQ8L2Rpdj5cbiAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+T1I8L2Rpdj5cbiAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgIDwvU2VsZWN0PlxuICApO1xufTtcblxuLy8gUmVuZGVycyB0aGUgcHJldmlldyBvZiB0aGUgaXRlbSBiZWluZyBkcmFnZ2VkIGluIHRoZSBEcmFnT3ZlcmxheS5cbmNvbnN0IERyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3ID0gKHtcbiAgYWN0aXZlSWQsXG4gIGl0ZW1zLFxuICB0YWJsZSxcbn06IHtcbiAgYWN0aXZlSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIGl0ZW1zOiBBcnJheTxDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cD47XG4gIHRhYmxlOiBUYWJsZTtcbn0pID0+IHtcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZUlkKTtcbiAgaWYgKCFhY3RpdmVJdGVtKSByZXR1cm4gbnVsbDtcblxuICBsZXQgbGVhZGluZ09wZXJhdG9yVmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIgPSBcImFuZFwiOyAvLyBEZWZhdWx0XG4gIGxldCBzaG93TGVhZGluZ09wRm9yT3ZlcmxheSA9IGZhbHNlO1xuICBjb25zdCBhY3RpdmVJdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZUlkKTtcblxuICBpZiAoYWN0aXZlSXRlbUluZGV4ID4gMCkge1xuICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IGl0ZW1zW2FjdGl2ZUl0ZW1JbmRleCAtIDFdO1xuICAgIGlmIChwcmV2aW91c0l0ZW0pIHtcbiAgICAgIC8vICdhZnRlcicgZnJvbSB0aGUgcHJldmlvdXMgaXRlbSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRvciBsZWFkaW5nIGludG8gdGhlIGN1cnJlbnQgaXRlbVxuICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWUgPSBwcmV2aW91c0l0ZW0uYWZ0ZXI7XG4gICAgICBzaG93TGVhZGluZ09wRm9yT3ZlcmxheSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGFjdGl2ZUl0ZW0ua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyQ29uZGl0aW9uXG4gICAgICAgIGZpbHRlcj17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgdXBkYXRlc1xuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciBkZWxldGVzXG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcEZvck92ZXJsYXl9XG4gICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9eygpID0+IHt9fSAvLyBOb24taW50ZXJhY3RpdmVcbiAgICAgIC8+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgIGdyb3VwPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319XG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNSb290PXtmYWxzZX0gLy8gRHJhZ2dlZCBpdGVtIGluIG92ZXJsYXkgaXMgbm90IHRoZSByb290XG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcEZvck92ZXJsYXl9XG4gICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9eygpID0+IHt9fVxuICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2ZhbHNlfSAvLyBOb24taW50ZXJhY3RpdmUgZm9yIHByZXZpZXdcbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufTtcblxuLy8gTWFuYWdlcyBETkQgY29udGV4dCBhbmQgcmVuZGVyaW5nIG9mIHNvcnRhYmxlIGZpbHRlciBpdGVtcyBmb3IgYSBncm91cC5cbmNvbnN0IEZpbHRlckxpc3RJdGVtcyA9ICh7XG4gIGl0ZW1zLFxuICBwYXJlbnRHcm91cElkLFxuICB0YWJsZSxcbiAgb25VcGRhdGVJdGVtLFxuICBvbkRlbGV0ZUl0ZW0sXG4gIG9uUmVvcmRlckl0ZW1zLFxuICBhY3RpdmVEcmFnSWQsXG4gIG9uRHJhZ1N0YXJ0LFxuICBvbkRyYWdFbmRTaWduYWwsXG59OiB7XG4gIGl0ZW1zOiBBcnJheTxDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cD47XG4gIHBhcmVudEdyb3VwSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIHRhYmxlOiBUYWJsZTtcbiAgb25VcGRhdGVJdGVtOiAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEl0ZW06IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZUl0ZW06IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblJlb3JkZXJJdGVtczogKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIGFjdGl2ZURyYWdJZDogVW5pcXVlSWRlbnRpZmllciB8IG51bGw7XG4gIG9uRHJhZ1N0YXJ0OiAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB2b2lkO1xuICBvbkRyYWdFbmRTaWduYWw6ICgpID0+IHZvaWQ7IC8vIENhbGxiYWNrIHRvIHNpZ25hbCBkcmFnIG9wZXJhdGlvbiBjb21wbGV0aW9uXG59KSA9PiB7XG4gIGNvbnN0IHNvcnRhYmxlSXRlbUlkcyA9IHVzZU1lbW8oKCkgPT4gaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmlkKSwgW2l0ZW1zXSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKFxuICAgIHVzZVNlbnNvcihQb2ludGVyU2Vuc29yLCB7IGFjdGl2YXRpb25Db25zdHJhaW50OiB7IGRpc3RhbmNlOiA4IH0gfSksXG4gICAgdXNlU2Vuc29yKEtleWJvYXJkU2Vuc29yLCB7IGNvb3JkaW5hdGVHZXR0ZXI6IHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyB9KSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVJbnRlcm5hbERyYWdFbmQgPSAoZXZlbnQ6IERyYWdFbmRFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlLCBvdmVyIH0gPSBldmVudDtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIGNvbnN0IG9sZEluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmUuaWQpO1xuICAgICAgY29uc3QgbmV3SW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG92ZXIuaWQpO1xuICAgICAgaWYgKG9sZEluZGV4ICE9PSAtMSAmJiBuZXdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgb25SZW9yZGVySXRlbXMob2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgb25EcmFnRW5kU2lnbmFsKCk7IC8vIFNpZ25hbCB0byBwYXJlbnQgdGhhdCBkcmFnIGhhcyBlbmRlZCAoZS5nLiwgdG8gY2xlYXIgYWN0aXZlRHJhZ0lkKVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERuZENvbnRleHRcbiAgICAgIHNlbnNvcnM9e3NlbnNvcnN9XG4gICAgICBjb2xsaXNpb25EZXRlY3Rpb249e2Nsb3Nlc3RDZW50ZXJ9XG4gICAgICBvbkRyYWdTdGFydD17b25EcmFnU3RhcnR9XG4gICAgICBvbkRyYWdFbmQ9e2hhbmRsZUludGVybmFsRHJhZ0VuZH1cbiAgICA+XG4gICAgICA8U29ydGFibGVDb250ZXh0IGl0ZW1zPXtzb3J0YWJsZUl0ZW1JZHN9IHN0cmF0ZWd5PXt2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3l9PlxuICAgICAgICB7aXRlbXMubWFwKChjdXJyZW50RmlsdGVySXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgc2hvd0xlYWRpbmdPcCA9IGZhbHNlO1xuICAgICAgICAgIGxldCBsZWFkaW5nT3BWYWw6IFwiYW5kXCIgfCBcIm9yXCIgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IG9uTGVhZGluZ09wQ2hhbmdlRm46ICgodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBpc0xlYWRpbmdPcFRhcmdldExhc3QgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIHNob3dMZWFkaW5nT3AgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgcHJldkl0ZW0gPSBpdGVtc1tpbmRleCAtIDFdITtcbiAgICAgICAgICAgIGxlYWRpbmdPcFZhbCA9IHByZXZJdGVtLmFmdGVyO1xuICAgICAgICAgICAgb25MZWFkaW5nT3BDaGFuZ2VGbiA9IChuZXdWYWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUHJldkl0ZW0gPSB7IC4uLnByZXZJdGVtLCBhZnRlcjogbmV3VmFsdWUgfTtcbiAgICAgICAgICAgICAgb25VcGRhdGVJdGVtKGluZGV4IC0gMSwgdXBkYXRlZFByZXZJdGVtKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpc0xlYWRpbmdPcFRhcmdldExhc3QgPSBpbmRleCAtIDEgPT09IGl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTb3J0YWJsZUZpbHRlckl0ZW1cbiAgICAgICAgICAgICAga2V5PXtjdXJyZW50RmlsdGVySXRlbS5pZH1cbiAgICAgICAgICAgICAgZmlsdGVyPXtjdXJyZW50RmlsdGVySXRlbX1cbiAgICAgICAgICAgICAgb25VcGRhdGU9eyh1cGRhdGVkRmlsdGVyKSA9PiBvblVwZGF0ZUl0ZW0oaW5kZXgsIHVwZGF0ZWRGaWx0ZXIpfVxuICAgICAgICAgICAgICBvbkRlbGV0ZT17KCkgPT4gb25EZWxldGVJdGVtKGluZGV4KX1cbiAgICAgICAgICAgICAgcGFyZW50RG5kSWQ9e3BhcmVudEdyb3VwSWR9XG4gICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcH1cbiAgICAgICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcFZhbH1cbiAgICAgICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wQ2hhbmdlRm59XG4gICAgICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BUYXJnZXRMYXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAge2NyZWF0ZVBvcnRhbChcbiAgICAgICAgPERyYWdPdmVybGF5PlxuICAgICAgICAgIHthY3RpdmVEcmFnSWQgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLW9wYWNpdHktODBcIj5cbiAgICAgICAgICAgICAgPERyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IGFjdGl2ZUlkPXthY3RpdmVEcmFnSWR9IGl0ZW1zPXtpdGVtc30gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvRHJhZ092ZXJsYXk+LFxuICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgKX1cbiAgICA8L0RuZENvbnRleHQ+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgc29ydGFibGUgZmlsdGVyIGl0ZW1cbmNvbnN0IFNvcnRhYmxlRmlsdGVySXRlbSA9ICh7XG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBwYXJlbnREbmRJZCxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgcGFyZW50RG5kSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IHsgYXR0cmlidXRlcywgbGlzdGVuZXJzLCBzZXROb2RlUmVmLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIGlzRHJhZ2dpbmcgfSA9IHVzZVNvcnRhYmxlKHtcbiAgICBpZDogZmlsdGVyLmlkLFxuICAgIGRhdGE6IHtcbiAgICAgIHR5cGU6IGZpbHRlci5raW5kLFxuICAgICAgcGFyZW50SWQ6IHBhcmVudERuZElkLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gICAgb3BhY2l0eTogaXNEcmFnZ2luZyA/IDAuNSA6IDEsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17c2V0Tm9kZVJlZn0gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWp1c3RpZnktYmV0d2VlbiBwcy1nYXAtMlwiPlxuICAgICAge2ZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiID8gKFxuICAgICAgICA8RmlsdGVyQ29uZGl0aW9uXG4gICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgb25VcGRhdGU9e29uVXBkYXRlfVxuICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICBkcmFnSGFuZGxlUHJvcHM9e3sgLi4uYXR0cmlidXRlcywgLi4ubGlzdGVuZXJzIH19XG4gICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BlcmF0b3J9XG4gICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICAgIGdyb3VwPXtmaWx0ZXJ9XG4gICAgICAgICAgb25VcGRhdGU9e29uVXBkYXRlfVxuICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICBkcmFnSGFuZGxlUHJvcHM9e3sgLi4uYXR0cmlidXRlcywgLi4ubGlzdGVuZXJzIH19XG4gICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BlcmF0b3J9XG4gICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgc2luZ2xlIGZpbHRlciBjb25kaXRpb25cbmNvbnN0IEZpbHRlckNvbmRpdGlvbiA9ICh7XG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBkcmFnSGFuZGxlUHJvcHMsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXI7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgZHJhZ0hhbmRsZVByb3BzPzogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBoYW5kbGVDb2x1bW5DaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCBjb2x1bW46IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZXJhdG9yQ2hhbmdlID0gKHZhbHVlOiBGaWx0ZXJPcGVyYXRvcikgPT4ge1xuICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCBvcGVyYXRvcjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsdWVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCByYXdWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGNvbHVtbkluZm8gPSB0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dO1xuXG4gICAgaWYgKGNvbHVtbkluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VUb1ZhbHVlKGNvbHVtbkluZm8sIGZpbHRlci5vcGVyYXRvciwgcmF3VmFsdWUpO1xuXG4gICAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgdmFsdWU6IG5ld1ZhbHVlIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBbZWRpdGVkVmFsdWUsIHNldEVkaXRlZFZhbHVlXSA9IHVzZVN0YXRlKFxuICAgIGNvZXJjZVRvU3RyaW5nKHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl0sIGZpbHRlci5vcGVyYXRvciwgZmlsdGVyLnZhbHVlKSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2XG4gICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIlxuICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIj5cbiAgICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cInBzLXRleHQtZ3JheS01MDBcIiBzaXplPXsxNn0gLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlID8gKFxuICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2ZpbHRlci5jb2x1bW59IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZUNvbHVtbkNoYW5nZX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTI4IHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIlNlbGVjdCBjb2x1bW5cIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIHtPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKS5tYXAoKGNvbHVtbikgPT4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RJdGVtIGtleT17Y29sdW1ufSB2YWx1ZT17Y29sdW1ufT5cbiAgICAgICAgICAgICAgICAgIHtjb2x1bW59XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2ZpbHRlci5vcGVyYXRvcn0gb25WYWx1ZUNoYW5nZT17KHZhbHVlKSA9PiBoYW5kbGVPcGVyYXRvckNoYW5nZSh2YWx1ZSBhcyBGaWx0ZXJPcGVyYXRvcil9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJPcGVyYXRvclwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI9XCI+PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCIhPVwiPiE9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj5cIj4mZ3Q7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj49XCI+Jmd0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPFwiPiZsdDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPD1cIj4mbHQ7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpc1wiPmlzPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzIG5vdFwiPmlzIG5vdDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJsaWtlXCI+bGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgbGlrZVwiPm5vdCBsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlsaWtlXCI+aWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGlsaWtlXCI+bm90IGlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICB2YWx1ZT17ZWRpdGVkVmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgc2V0RWRpdGVkVmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZShlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMjQgcHMtdGV4dC14cyBwcy1oLThcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIGZpbHRlciBncm91cCAoQU5EL09SKVxuY29uc3QgRmlsdGVyR3JvdXBDb21wb25lbnQgPSAoe1xuICBncm91cCxcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBkcmFnSGFuZGxlUHJvcHMsXG4gIGlzUm9vdCA9IGZhbHNlLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGdyb3VwOiBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkR3JvdXA6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgZHJhZ0hhbmRsZVByb3BzPzogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuICBpc1Jvb3Q/OiBib29sZWFuO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW2FjdGl2ZURyYWdJZCwgc2V0QWN0aXZlRHJhZ0lkXSA9IHVzZVN0YXRlPFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBoYW5kbGVBZGRGaWx0ZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyOiBDb2x1bW5GaWx0ZXIgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCIsXG4gICAgICBjb2x1bW46IE9iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpWzBdID8/IFwiXCIsIC8vIEFsd2F5cyBzZWxlY3QgZmlyc3QgY29sXG4gICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdGaWx0ZXJdIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFkZEdyb3VwID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0dyb3VwOiBGaWx0ZXJHcm91cCA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0dyb3VwXSB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVJdGVtSW5Hcm91cCA9IChpbmRleDogbnVtYmVyLCB1cGRhdGVkRmlsdGVyT3JHcm91cDogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnNbaW5kZXhdID0gdXBkYXRlZEZpbHRlck9yR3JvdXA7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBkZWxldGVJdGVtRnJvbUdyb3VwID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQoZXZlbnQuYWN0aXZlLmlkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kU2lnbmFsID0gKCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZW9yZGVySXRlbXMgPSAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChvbGRJbmRleCA9PT0gbmV3SW5kZXgpIHJldHVybjtcbiAgICBjb25zdCByZW9yZGVyZWRGaWx0ZXJzID0gYXJyYXlNb3ZlKGdyb3VwLmZpbHRlcnMsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogcmVvcmRlcmVkRmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJHcm91cENvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIWdyb3VwLmZpbHRlcnMgfHwgZ3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcGwtNiBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC01MDAgcHMtaXRhbGljXCI+XG4gICAgICAgICAgVGhpcyBncm91cCBpcyBlbXB0eS4gQWRkIGEgZmlsdGVyIG9yIGFub3RoZXIgZ3JvdXAuXG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPG1vdGlvbi5kaXYgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1yZWxhdGl2ZSBwcy1nYXAtMlwiLCBpc1Jvb3QgPyBcIlwiIDogXCJwcy1wYi0yXCIpfT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEl0ZW1zXG4gICAgICAgICAgICBpdGVtcz17Z3JvdXAuZmlsdGVyc31cbiAgICAgICAgICAgIHBhcmVudEdyb3VwSWQ9e2dyb3VwLmlkfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgb25VcGRhdGVJdGVtPXt1cGRhdGVJdGVtSW5Hcm91cH1cbiAgICAgICAgICAgIG9uRGVsZXRlSXRlbT17ZGVsZXRlSXRlbUZyb21Hcm91cH1cbiAgICAgICAgICAgIG9uUmVvcmRlckl0ZW1zPXtoYW5kbGVSZW9yZGVySXRlbXN9XG4gICAgICAgICAgICBhY3RpdmVEcmFnSWQ9e2FjdGl2ZURyYWdJZH1cbiAgICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgICBvbkRyYWdFbmRTaWduYWw9e2hhbmRsZURyYWdFbmRTaWduYWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21vdGlvbi5kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbFwiLCBpc0V4cGFuZGVkID8gXCJwcy1nYXAtMlwiIDogXCJcIil9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLCBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfT5cbiAgICAgICAgICAgICAgICB7aXNFeHBhbmRlZCA/IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz4gOiA8Q2hldnJvblJpZ2h0IHNpemU9ezE2fSAvPn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSAmJiAhaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBZGRGaWx0ZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBvdmVyZmxvdy1oaWRkZW4gcHMtdHJhbnNpdGlvbi1hbGxcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFkZCBGaWx0ZXJcbiAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPEJhZGdlIGNsYXNzTmFtZT1cInBzLXRyYW5zaXRpb24tYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19Pntncm91cC5maWx0ZXJzLmxlbmd0aH08L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17aGFuZGxlQWRkR3JvdXB9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xXCI+XG4gICAgICAgICAgICAgIEFkZCBHcm91cFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAge2lzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxIZWxwQ2lyY2xlIGNsYXNzTmFtZT1cInBzLXNpemUtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249XCJjZW50ZXJcIiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTQgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgTm8gZmlsdGVycyBhcHBsaWVkIHlldC4gQWRkIGZpbHRlcnMgdG8gcHJldmlldyB5b3VyIHF1ZXJ5LlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC0yIHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtYmctbmV1dHJhbC0xMDAgcHMtcm91bmRlZC1zbSBwcy1mb250LW1vbm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Z3JvdXB9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihpc1Jvb3QgPyBcIlwiIDogXCJwcy1tbC02XCIpfT57cmVuZGVyR3JvdXBDb250ZW50KCl9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgdG8gdmlzdWFsaXplIHRoZSBxdWVyeSBzdHJpbmdcbmNvbnN0IFF1ZXJ5VmlzdWFsaXplciA9ICh7IGZpbHRlciB9OiB7IGZpbHRlcjogRmlsdGVyR3JvdXAgfSk6IFJlYWN0Tm9kZSA9PiB7XG4gIGxldCBpc0FuZEdyb3VwT3BlbiA9IDA7XG5cbiAgaWYgKGZpbHRlci5maWx0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiKCApXCI7XG5cbiAgY29uc3QgZ3JvdXAgPSBmaWx0ZXIuZmlsdGVycy5tYXAoKGYsIGkpID0+IHtcbiAgICBsZXQgcmVzdWx0OiBSZWFjdE5vZGU7XG4gICAgY29uc3QgaXNMYXN0ID0gZmlsdGVyLmZpbHRlcnMubGVuZ3RoIC0gMSA9PT0gaTtcblxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiA9PT0gLTEpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gMDtcbiAgICB9XG5cbiAgICBpZiAoZi5hZnRlciA9PT0gXCJhbmRcIiAmJiAhaXNMYXN0KSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiArPSAxO1xuICAgIH1cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gJiYgKGlzTGFzdCB8fCBmLmFmdGVyID09PSBcIm9yXCIpKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IC0xO1xuICAgIH1cblxuICAgIGlmIChmLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIGNvbnN0IHsgY29sdW1uLCBvcGVyYXRvciB9ID0gZjtcblxuICAgICAgcmVzdWx0ID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxzcGFuPiB7Y29sdW1ufSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+IHtvcGVyYXRvcn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiA/IDwvc3Bhbj5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Zn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGcmFnbWVudCBrZXk9e2YuaWR9PlxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IDEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KDwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7cmVzdWx0fVxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IC0xID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPik8L3NwYW4+IDogXCJcIn1cbiAgICAgICAgeyFpc0xhc3QgJiYgPHNwYW4gY2xhc3NOYW1lPVwicHMtdXBwZXJjYXNlIHBzLXRleHQtYmx1ZS01MDAgcHMtZm9udC1zZW1pYm9sZFwiPiB7Zi5hZnRlcn0gPC9zcGFuPn1cbiAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIDxzcGFuPntncm91cH08L3NwYW4+O1xufTtcblxuLy8gTWFpbiBjb21wb25lbnRcbmV4cG9ydCBmdW5jdGlvbiBGaWx0ZXJUcmVlKHtcbiAgZmlsdGVyLFxuICBzZXRGaWx0ZXIsXG4gIHNldEFwcGxpZWRGaWx0ZXIsXG4gIHRhYmxlLFxufToge1xuICBmaWx0ZXI6IEZpbHRlckdyb3VwO1xuICBzZXRGaWx0ZXI6ICh1cGRhdGVkRmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgc2V0QXBwbGllZEZpbHRlcjogKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHRhYmxlOiBUYWJsZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlQXBwbHlGaWx0ZXJzID0gKCkgPT4ge1xuICAgIHNldEFwcGxpZWRGaWx0ZXIoZmlsdGVyKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtNFwiPlxuICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50IGdyb3VwPXtmaWx0ZXJ9IG9uVXBkYXRlPXtzZXRGaWx0ZXJ9IG9uRGVsZXRlPXsoKSA9PiB7fX0gaXNSb290PXt0cnVlfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJkZWZhdWx0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtc2VsZi1lbmRcIiBvbkNsaWNrPXtoYW5kbGVBcHBseUZpbHRlcnN9PlxuICAgICAgICBBcHBseSBGaWx0ZXJzXG4gICAgICA8L0J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENvbHVtbiwgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1ZhbHVlKGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLCBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpIHtcbiAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJudWxsXCIgPyBudWxsIDogdmFsdWU7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiB2YWx1ZSA9PT0gXCJ0cnVlXCI7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIHZhbHVlO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgdW5rbm93bjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IFwiXCIgPyBudWxsIDogTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvU3RyaW5nKFxuICBjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCxcbiAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yIHwgdW5kZWZpbmVkLFxuICB2YWx1ZTogdW5rbm93bixcbik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChvcGVyYXRvciAmJiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICBpZiAodmFsdWUgPT09IFwiXCIpIHJldHVybiBcIlwiO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG4iLCAiaW1wb3J0ICogYXMgRHJvcGRvd25NZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duTWVudSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBEcm9wZG93bk1lbnVUcmlnZ2VyID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IERyb3Bkb3duTWVudUdyb3VwID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVQb3J0YWwgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0dyb3VwID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJnLWFjY2VudCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvXCIgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbikpO1xuRHJvcGRvd25NZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy16LTUwIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVt2YXIoLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCldIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kXCIsXG4gICAgICAgIFwiZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkRyb3Bkb3duTWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwIFsmPnN2Z106cHMtc2l6ZS00IFsmPnN2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGNoZWNrZWQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC0yIHBzLXctMiBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgaW5zZXQgJiYgXCJwcy1wbC04XCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLW11dGVkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtb3BhY2l0eS02MFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufTtcbkRyb3Bkb3duTWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bk1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSxcbiAgRHJvcGRvd25NZW51UmFkaW9JdGVtLFxuICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yLFxuICBEcm9wZG93bk1lbnVTaG9ydGN1dCxcbiAgRHJvcGRvd25NZW51R3JvdXAsXG4gIERyb3Bkb3duTWVudVBvcnRhbCxcbiAgRHJvcGRvd25NZW51U3ViLFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzPFwiaW5wdXRcIj4+KFxuICAoeyBjbGFzc05hbWUsIHR5cGUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLWZsZXggcHMtaC05IHBzLXctZnVsbCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0xIHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmaWxlOnBzLWJvcmRlci0wIGZpbGU6cHMtYmctdHJhbnNwYXJlbnQgZmlsZTpwcy10ZXh0LXNtIGZpbGU6cHMtZm9udC1tZWRpdW0gZmlsZTpwcy10ZXh0LWZvcmVncm91bmQgcGxhY2Vob2xkZXI6cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcbklucHV0LmRpc3BsYXlOYW1lID0gXCJJbnB1dFwiO1xuXG5leHBvcnQgeyBJbnB1dCB9O1xuIiwgImltcG9ydCAqIGFzIFNlbGVjdFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNlbGVjdFwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuY29uc3QgU2VsZWN0VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtaC05IHBzLXctZnVsbCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTIgcHMtdGV4dC1zbSBwcy1zaGFkb3ctc20gcHMtcmluZy1vZmZzZXQtYmFja2dyb3VuZCBkYXRhLVtwbGFjZWhvbGRlcl06cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTEgZm9jdXM6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmPnNwYW5dOnBzLWxpbmUtY2xhbXAtMVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxTZWxlY3RQcmltaXRpdmUuSWNvbiBhc0NoaWxkPlxuICAgICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQgcHMtb3BhY2l0eS01MFwiIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuSWNvbj5cbiAgPC9TZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj5cbikpO1xuU2VsZWN0VHJpZ2dlci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxVcEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvblVwIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbERvd25CdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIHBvc2l0aW9uID0gXCJwb3BwZXJcIiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxTZWxlY3RQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXJlbGF0aXZlIHBzLXotNTAgcHMtbWF4LWgtWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodF0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgXCJkYXRhLVtzaWRlPWJvdHRvbV06cHMtdHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOnBzLS10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOnBzLS10cmFuc2xhdGUteS0xXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICBwb3NpdGlvbj17cG9zaXRpb259XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPFNlbGVjdFNjcm9sbFVwQnV0dG9uIC8+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1wLTFcIixcbiAgICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgICAgXCJwcy1oLVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpXSBwcy13LWZ1bGwgcHMtbWluLXctW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoKV1cIixcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuVmlld3BvcnQ+XG4gICAgICA8U2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuU2VsZWN0Q29udGVudC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuU2VsZWN0TGFiZWwuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXctZnVsbCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtMiBwcy1wci04IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1yaWdodC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+e2NoaWxkcmVufTwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtPlxuKSk7XG5TZWxlY3RJdGVtLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLW11dGVkXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuU2VsZWN0U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgU2VsZWN0LFxuICBTZWxlY3RHcm91cCxcbiAgU2VsZWN0VmFsdWUsXG4gIFNlbGVjdFRyaWdnZXIsXG4gIFNlbGVjdENvbnRlbnQsXG4gIFNlbGVjdExhYmVsLFxuICBTZWxlY3RJdGVtLFxuICBTZWxlY3RTZXBhcmF0b3IsXG4gIFNlbGVjdFNjcm9sbFVwQnV0dG9uLFxuICBTZWxlY3RTY3JvbGxEb3duQnV0dG9uLFxufTtcbiIsICJpbXBvcnQgeyBEbmRDb250ZXh0LCB0eXBlIERyYWdFbmRFdmVudCwgTW91c2VTZW5zb3IsIHVzZVNlbnNvciwgdXNlU2Vuc29ycyB9IGZyb20gXCJAZG5kLWtpdC9jb3JlXCI7XG5pbXBvcnQgeyBhcnJheU1vdmUsIGhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5LCBTb3J0YWJsZUNvbnRleHQsIHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZSwgUm93U2VsZWN0aW9uU3RhdGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQge1xuICB0eXBlIENvbHVtblBpbm5pbmdTdGF0ZSxcbiAgdHlwZSBDb2x1bW5TaXppbmdTdGF0ZSxcbiAgZ2V0Q29yZVJvd01vZGVsLFxuICB0eXBlIEhlYWRlcixcbiAgdHlwZSBPbkNoYW5nZUZuLFxuICB0eXBlIFBhZ2luYXRpb25TdGF0ZSxcbiAgdHlwZSBTb3J0aW5nU3RhdGUsXG4gIHR5cGUgVGFibGUgYXMgUmVhY3RUYWJsZSxcbiAgdXNlUmVhY3RUYWJsZSxcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgUmVhY3RUYWJsZURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQge1xuICBDb21wb25lbnRUeXBlLFxuICB0eXBlIENTU1Byb3BlcnRpZXMsXG4gIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgVGFibGUsIFRhYmxlQm9keSwgVGFibGVDZWxsLCBUYWJsZUhlYWQsIFRhYmxlSGVhZGVyLCBUYWJsZVJvdyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4uL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXIgfSBmcm9tIFwiLi9EYXRhR3JpZEhlYWRlclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRMb2FkaW5nQmFyIH0gZnJvbSBcIi4vRGF0YUdyaWRMb2FkaW5nQmFyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZFBhZ2luYXRpb24gfSBmcm9tIFwiLi9EYXRhR3JpZFBhZ2luYXRpb25cIjtcbmltcG9ydCB7IGdldENvbHVtblBpbm5pbmdTdHlsZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuXG4vLyBBZGQgdGhpcyBuZXcgY29tcG9uZW50IGZvciBkcmFnZ2FibGUgaGVhZGVyIGNlbGxzXG50eXBlIERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIGhlYWRlcjogSGVhZGVyPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG4gIHRhYmxlOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj47XG59PjtcblxuY29uc3QgRHJhZ2dhYmxlSGVhZGVyQ2VsbCA9IChwcm9wczogRHJhZ2dhYmxlSGVhZGVyQ2VsbFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaGVhZGVyLCBzdHlsZTogY29tbW9uU3R5bGUgfSA9IHByb3BzO1xuICBjb25zdCBkaXNhYmxlRHJhZ2dpbmcgPSBcImRpc2FibGVEcmFnZ2luZ1wiIGluIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmO1xuXG4gIGNvbnN0IHsgYXR0cmlidXRlcywgbGlzdGVuZXJzLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIHNldE5vZGVSZWYsIGlzRHJhZ2dpbmcgfSA9IHVzZVNvcnRhYmxlKHtcbiAgICBpZDogaGVhZGVyLmlkLFxuICB9KTtcblxuICBjb25zdCBkcmFnU3R5bGUgPSB7XG4gICAgLi4uY29tbW9uU3R5bGUsXG4gICAgY3Vyc29yOiBcImdyYWJcIixcbiAgICB0b3VjaEFjdGlvbjogXCJub25lXCIsXG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgfSBhcyBDU1NQcm9wZXJ0aWVzO1xuXG4gIGNvbnN0IGNvbW1vbkNsYXNzID0gY24oY2xhc3NOYW1lLCBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIik7XG4gIGNvbnN0IGRyYWdDbGFzcyA9IGNuKGNvbW1vbkNsYXNzLCBpc0RyYWdnaW5nICYmIFwiIXBzLXotNTAgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXZpb2xldC01MDBcIik7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVIZWFkXG4gICAgICByZWY9e3NldE5vZGVSZWZ9XG4gICAgICB7Li4uYXR0cmlidXRlc31cbiAgICAgIHsuLi5saXN0ZW5lcnN9XG4gICAgICBzdHlsZT17ZGlzYWJsZURyYWdnaW5nID8gY29tbW9uU3R5bGUgOiBkcmFnU3R5bGV9XG4gICAgICBjbGFzc05hbWU9e2Rpc2FibGVEcmFnZ2luZyA/IGNvbW1vbkNsYXNzIDogZHJhZ0NsYXNzfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCI+e2NoaWxkcmVufTwvZGl2PlxuICAgIDwvVGFibGVIZWFkPlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZFByb3BzIHtcbiAgY29sdW1uRGVmczogQWNjZXNzb3JLZXlDb2x1bW5EZWZCYXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PltdO1xuICBnZXRCZWZvcmVSb3dzPyh0aGlzOiB2b2lkLCB0YWJsZTogUmVhY3RUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pOiBSZWFjdE5vZGU7XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgaXNQcm9jZXNzaW5nOiBib29sZWFuO1xuICBvblBhZ2luYXRpb25DaGFuZ2U6IE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPjtcbiAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U6IE9uQ2hhbmdlRm48Um93U2VsZWN0aW9uU3RhdGU+O1xuICBvblNvcnRpbmdDaGFuZ2U/OiBPbkNoYW5nZUZuPFNvcnRPcmRlckl0ZW1bXT47XG4gIHBhZ2VDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwYWdpbmF0aW9uU3RhdGU6IFBhZ2luYXRpb25TdGF0ZTtcbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgcm93U2VsZWN0aW9uU3RhdGU6IFJvd1NlbGVjdGlvblN0YXRlO1xuICBzb3J0aW5nU3RhdGU/OiBTb3J0T3JkZXJJdGVtW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZChwcm9wczogRGF0YUdyaWRQcm9wcykge1xuICBjb25zdCB7XG4gICAgY29sdW1uRGVmcyxcbiAgICBnZXRCZWZvcmVSb3dzLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1Byb2Nlc3NpbmcsXG4gICAgb25QYWdpbmF0aW9uQ2hhbmdlLFxuICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlLFxuICAgIG9uU29ydGluZ0NoYW5nZSxcbiAgICBwYWdlQ291bnQsXG4gICAgcGFnaW5hdGlvblN0YXRlLFxuICAgIHJvd3MsXG4gICAgcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgc29ydGluZ1N0YXRlLFxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgW2NvbHVtbk9yZGVyLCBzZXRDb2x1bW5PcmRlcl0gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xuICBjb25zdCBbY29sdW1uUGlubmluZywgc2V0Q29sdW1uUGlubmluZ10gPSB1c2VTdGF0ZTxDb2x1bW5QaW5uaW5nU3RhdGU+KHsgbGVmdDogW1wiX19wc19zZWxlY3RcIl0sIHJpZ2h0OiBbXSB9KTtcbiAgY29uc3QgW2NvbHVtblNpemluZywgc2V0Q29sdW1uU2l6aW5nXSA9IHVzZVN0YXRlPENvbHVtblNpemluZ1N0YXRlPih7fSk7XG4gIGNvbnN0IHNvcnRpbmcgPSB1c2VNZW1vKCgpID0+IHRvU29ydGluZ1N0YXRlKHNvcnRpbmdTdGF0ZSksIFtzb3J0aW5nU3RhdGVdKTtcbiAgY29uc3QgZGlzcGxheUxvYWRlciA9IGlzTG9hZGluZyB8fCBpc1Byb2Nlc3Npbmc7XG5cbiAgLy8gUmVzZXQgY29sdW1uIG9yZGVyLCBwaW5uaW5nLCBhbmQgc2l6aW5nIHdoZW4gY29sdW1uRGVmcyBjaGFuZ2UgKHdoaWNoIGhhcHBlbnMgd2hlbiB0YWJsZSBjaGFuZ2VzKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENvbHVtbk9yZGVyKGNvbHVtbkRlZnMubWFwKCh7IGFjY2Vzc29yS2V5IH0pID0+IGFjY2Vzc29yS2V5KSk7XG4gICAgc2V0Q29sdW1uUGlubmluZyh7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gICAgc2V0Q29sdW1uU2l6aW5nKHt9KTtcbiAgfSwgW2NvbHVtbkRlZnNdKTtcblxuICAvLyBoYW5kbGVzIG1vdmluZyBhbmQgcmUtb3JkZXJpbmcgb2YgdGhlIGNvbHVtbnMgYW5kIHN0YXRlXG4gIGZ1bmN0aW9uIGhhbmRsZURyYWdFbmQoeyBhY3RpdmUsIG92ZXIgfTogRHJhZ0VuZEV2ZW50KSB7XG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBzZXRDb2x1bW5PcmRlcigob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSBvcmRlci5pbmRleE9mKGFjdGl2ZS5pZCBhcyBzdHJpbmcpO1xuICAgICAgICBjb25zdCBvdmVySW5kZXggPSBvcmRlci5pbmRleE9mKG92ZXIuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIGFycmF5TW92ZShvcmRlciwgYWN0aXZlSW5kZXgsIG92ZXJJbmRleCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBDb25maWd1cmUgdGhlIG1vdXNlIHNlbnNvciBmb3IgZHJhZyBhbmQgZHJvcFxuICBjb25zdCBtb3VzZVNlbnNvciA9IHVzZVNlbnNvcihNb3VzZVNlbnNvciwge1xuICAgIC8vIFJlcXVpcmUgdGhlIG1vdXNlIHRvIG1vdmUgYnkgMTAgcGl4ZWxzIGJlZm9yZSBhY3RpdmF0aW5nXG4gICAgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHtcbiAgICAgIGRpc3RhbmNlOiAxMCxcbiAgICB9LFxuICB9KTtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnMobW91c2VTZW5zb3IpO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgY29sdW1uUmVzaXplTW9kZTogXCJvbkNoYW5nZVwiLFxuICAgIGNvbHVtbnM6IGNvbHVtbkRlZnMsXG4gICAgZGF0YTogcm93cyxcbiAgICBkZWZhdWx0Q29sdW1uOiB7IHNpemU6IDIwMCwgbWluU2l6ZTogNTAsIG1heFNpemU6IDUwMCB9LFxuICAgIGVuYWJsZUNvbHVtblBpbm5pbmc6IHRydWUsXG4gICAgZW5hYmxlQ29sdW1uUmVzaXppbmc6IHRydWUsXG4gICAgZW5hYmxlUm93U2VsZWN0aW9uOiB0cnVlLFxuICAgIGVuYWJsZVNvcnRpbmc6IEJvb2xlYW4ob25Tb3J0aW5nQ2hhbmdlICYmIHNvcnRpbmdTdGF0ZSksXG4gICAgZ2V0Q29yZVJvd01vZGVsOiBnZXRDb3JlUm93TW9kZWwoKSxcbiAgICBnZXRSb3dJZDogKHsgX19wc19yb3dpZCB9KSA9PiBfX3BzX3Jvd2lkIGFzIHN0cmluZyxcbiAgICBtYW51YWxQYWdpbmF0aW9uOiB0cnVlLFxuICAgIG1hbnVhbFNvcnRpbmc6IHRydWUsXG4gICAgb25Db2x1bW5PcmRlckNoYW5nZTogc2V0Q29sdW1uT3JkZXIsXG4gICAgb25Db2x1bW5QaW5uaW5nQ2hhbmdlOiBzZXRDb2x1bW5QaW5uaW5nLFxuICAgIG9uQ29sdW1uU2l6aW5nQ2hhbmdlOiBzZXRDb2x1bW5TaXppbmcsXG4gICAgb25QYWdpbmF0aW9uQ2hhbmdlLFxuICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlLFxuICAgIG9uU29ydGluZ0NoYW5nZTogKHVwZGF0ZXJPclZhbHVlKSA9PlxuICAgICAgb25Tb3J0aW5nQ2hhbmdlPy4oKG9sZCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICB1cGRhdGVyT3JWYWx1ZSA9IHVwZGF0ZXJPclZhbHVlKHRvU29ydGluZ1N0YXRlKG9sZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvU29ydE9yZGVySXRlbXModXBkYXRlck9yVmFsdWUpO1xuICAgICAgfSksXG4gICAgcGFnZUNvdW50LFxuICAgIHN0YXRlOiB7XG4gICAgICBjb2x1bW5PcmRlcixcbiAgICAgIGNvbHVtblBpbm5pbmcsXG4gICAgICBjb2x1bW5TaXppbmcsXG4gICAgICBwYWdpbmF0aW9uOiBwYWdpbmF0aW9uU3RhdGUsXG4gICAgICByb3dTZWxlY3Rpb246IHJvd1NlbGVjdGlvblN0YXRlLFxuICAgICAgc29ydGluZyxcbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogVE9ETzogcGF0Y2ggc28gaXQgaXMgbm90IGJ1bmRsZWQgbGlrZSByZWFjdC1xdWVyeSBkZXZ0b29scywgb3IgcmVtb3ZlIGNvbXBsZXRlbHkgb25jZSBkYXRhIGdyaWQgaXMgc3RhYmxlIGFuZCB0ZXN0ZWQuICovfVxuICAgICAge3Byb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IG51bGwgOiA8UmVhY3RUYWJsZURldnRvb2xzIHRhYmxlPXt0YWJsZX0gLz59XG4gICAgICA8ZGl2IGRhdGEtc3R1ZGlvPVwiY29udGVudFwiIGNsYXNzTmFtZT1cInBzLWZsZXgtMSBwcy13LTAgcHMtaC0wIHBzLW1pbi13LWZ1bGwgcHMtZmxleCBwcy1mbGV4LWNvbCBwcy1yZWxhdGl2ZVwiPlxuICAgICAgICA8ZGl2PntkaXNwbGF5TG9hZGVyICYmIDxEYXRhR3JpZExvYWRpbmdCYXIgY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgLXBzLXRvcC1bMXB4XSBwcy1sZWZ0LTAgcHMtcmlnaHQtMFwiIC8+fTwvZGl2PlxuICAgICAgICA8RG5kQ29udGV4dCBzZW5zb3JzPXtzZW5zb3JzfSBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9PlxuICAgICAgICAgIDxUYWJsZSBjbGFzc05hbWU9XCJwcy10YWJsZS1maXhlZCBwcy1ib3JkZXItc2VwYXJhdGUgcHMtYm9yZGVyLXNwYWNpbmctMCBwcy1ib3gtYm9yZGVyIHBzLXctYXV0b1wiPlxuICAgICAgICAgICAgPFRhYmxlSGVhZGVyPlxuICAgICAgICAgICAgICB7dGFibGUuZ2V0SGVhZGVyR3JvdXBzKCkubWFwKChoZWFkZXJHcm91cCkgPT4gKFxuICAgICAgICAgICAgICAgIDxUYWJsZVJvdyBrZXk9e2hlYWRlckdyb3VwLmlkfT5cbiAgICAgICAgICAgICAgICAgIDxTb3J0YWJsZUNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM9e2hlYWRlckdyb3VwLmhlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChoZWFkZXIpID0+ICEoXCJkaXNhYmxlRHJhZ2dpbmdcIiBpbiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZikpXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcCgoaGVhZGVyKSA9PiBoZWFkZXIuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT17aG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3l9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBzZWxlY3QgY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlci5jb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBoZWFkZXIgZnVuY3Rpb24gZGlyZWN0bHksIHdoaWNoIHNob3VsZCBiZSBTZWxlY3RIZWFkZXJDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJGbiA9IGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaGVhZGVyRm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIZWFkZXJDb21wb25lbnQgPSBoZWFkZXJGbihoZWFkZXIuZ2V0Q29udGV4dCgpKSBhcyB1bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBIZWFkZXJDb21wb25lbnQgaXMgYSBmdW5jdGlvbiAobmV3IGFwcHJvYWNoIHdpdGggcHJvcHMgZm9yd2FyZGluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBIZWFkZXJDb21wb25lbnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpbm5pbmdTdHlsZXMgPSBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aGVhZGVyLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5pbmdTdHlsZXMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17cGlubmluZ1N0eWxlcy5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0hlYWRlckNvbXBvbmVudCh7fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIEhlYWRlckNvbXBvbmVudCBpcyBhIGRpcmVjdCBKU1ggZWxlbWVudCAob2xkIGFwcHJvYWNoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aGVhZGVyLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKS5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpLnN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtIZWFkZXJDb21wb25lbnQgYXMgSlNYLkVsZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAvLyBSZWd1bGFyIGNvbHVtbnMgdXNlIHRoZSBkcmFnZ2FibGUgaGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEcmFnZ2FibGVIZWFkZXJDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aGVhZGVyLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXI9e2hlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGVyIGhlYWRlcj17aGVhZGVyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9EcmFnZ2FibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgICAge2dldEJlZm9yZVJvd3M/Lih0YWJsZSl9XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3M/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICB0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgICAgIDxUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICBcInBzLWJnLXRhYmxlLXJvdyBwcy1vZGQ6YmctdGFibGUtcm93LW9kZCBwcy1ncm91cCBbJjpsYXN0LW9mLXR5cGVfdGRdOnBzLWJvcmRlci1iLTAgcHMtZ3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+PjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAtb2RkOnBzLWJnLW5ldXRyYWwtNTAgZ3JvdXAtZXZlbjpwcy1iZy13aGl0ZSBncm91cC1ob3Zlcjpwcy1iZy1uZXV0cmFsLTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsIGtleT17Y2VsbC5pZH0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbGwuZ2V0VmFsdWUoKSBhcyBSZWFjdE5vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUYWJsZVJvdz5cbiAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICAgICAgICAgICAgY29sU3Bhbj17Y29sdW1uRGVmcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtMjQgcHMtdGV4dC1sZWZ0IHBzLXAtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LWZ1bGxcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQvNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctMi8zXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1RhYmxlQm9keT5cbiAgICAgICAgICA8L1RhYmxlPlxuICAgICAgICA8L0RuZENvbnRleHQ+XG4gICAgICAgIHshcGFnZUNvdW50IHx8IHBhZ2VDb3VudCA8IDIgPyBudWxsIDogPERhdGFHcmlkUGFnaW5hdGlvbiB0YWJsZT17dGFibGV9IHZhcmlhbnQ9XCJudW1lcmljXCIgLz59XG5cbiAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3M/Lmxlbmd0aCA9PT0gMCAmJiAhaXNMb2FkaW5nICYmICFpc1Byb2Nlc3NpbmcgJiYgKFxuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtYWJzb2x1dGUgLXBzLWluc2V0LTAgcHMtcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5ObyByZXN1bHRzIGZvdW5kPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgSXQgZG9lc24mYXBvczt0IGxvb2sgbGlrZSB5b3UgaGF2ZSBhbnkgZGF0YSBpbiB0aGlzIHRhYmxlLlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRpbmdTdGF0ZShmcm9tOiBTb3J0T3JkZXJJdGVtW10gfCB1bmRlZmluZWQpOiBTb3J0aW5nU3RhdGUge1xuICByZXR1cm4gZnJvbT8ubWFwKChpdGVtKSA9PiAoeyBpZDogaXRlbS5jb2x1bW4sIGRlc2M6IGl0ZW0uZGlyZWN0aW9uID09PSBcImRlc2NcIiB9KSkgfHwgW107XG59XG5cbmZ1bmN0aW9uIHRvU29ydE9yZGVySXRlbXMoZnJvbTogU29ydGluZ1N0YXRlKTogU29ydE9yZGVySXRlbVtdIHtcbiAgcmV0dXJuIGZyb20ubWFwKChpdGVtKSA9PiAoe1xuICAgIGNvbHVtbjogaXRlbS5pZCxcbiAgICBkaXJlY3Rpb246IGl0ZW0uZGVzYyA/IFwiZGVzY1wiIDogXCJhc2NcIixcbiAgfSkpO1xufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgZ2V0SXRlbSA9IChrZXk6IHN0cmluZyk6IHVua25vd24gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSlcbiAgICBpZiAodHlwZW9mIGl0ZW1WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW1WYWx1ZSlcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTG9jYWxTdG9yYWdlPFQ+KFxuICBrZXk6IHN0cmluZyxcbiAgZGVmYXVsdFZhbHVlOiBUIHwgdW5kZWZpbmVkXG4pOiBbVCB8IHVuZGVmaW5lZCwgKG5ld1ZhbDogVCB8ICgocHJldlZhbDogVCkgPT4gVCkpID0+IHZvaWRdIHtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZTxUPigpXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXRJdGVtKGtleSkgYXMgVCB8IHVuZGVmaW5lZFxuXG4gICAgaWYgKHR5cGVvZiBpbml0aWFsVmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IGluaXRpYWxWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgc2V0VmFsdWUoXG4gICAgICAgIHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdmdW5jdGlvbicgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRWYWx1ZShpbml0aWFsVmFsdWUpXG4gICAgfVxuICB9LCBbZGVmYXVsdFZhbHVlLCBrZXldKVxuXG4gIGNvbnN0IHNldHRlciA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVyOiBhbnkpID0+IHtcbiAgICAgIHNldFZhbHVlKG9sZCA9PiB7XG4gICAgICAgIGxldCBuZXdWYWwgPSB1cGRhdGVyXG5cbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBuZXdWYWwgPSB1cGRhdGVyKG9sZClcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkobmV3VmFsKSlcbiAgICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICAgIHJldHVybiBuZXdWYWxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBba2V5XVxuICApXG5cbiAgcmV0dXJuIFt2YWx1ZSwgc2V0dGVyXVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUaGVtZSA9IHtcbiAgYmFja2dyb3VuZDogJyMwYjE1MjEnLFxuICBiYWNrZ3JvdW5kQWx0OiAnIzEzMjMzNycsXG4gIGZvcmVncm91bmQ6ICd3aGl0ZScsXG4gIGdyYXk6ICcjM2Y0ZTYwJyxcbiAgZ3JheUFsdDogJyMyMjJlM2UnLFxuICBpbnB1dEJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICBpbnB1dFRleHRDb2xvcjogJyMwMDAnLFxuICBzdWNjZXNzOiAnIzAwYWI1MicsXG4gIGRhbmdlcjogJyNmZjAwODUnLFxuICBhY3RpdmU6ICcjMDA2YmZmJyxcbiAgd2FybmluZzogJyNmZmIyMDAnLFxufSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBUaGVtZSA9IHR5cGVvZiBkZWZhdWx0VGhlbWVcbmludGVyZmFjZSBQcm92aWRlclByb3BzIHtcbiAgdGhlbWU6IFRoZW1lXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59XG5cbmNvbnN0IFRoZW1lQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoZGVmYXVsdFRoZW1lKVxuXG5leHBvcnQgZnVuY3Rpb24gVGhlbWVQcm92aWRlcih7IHRoZW1lLCAuLi5yZXN0IH06IFByb3ZpZGVyUHJvcHMpIHtcbiAgcmV0dXJuIDxUaGVtZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3RoZW1lfSB7Li4ucmVzdH0gLz5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVRoZW1lKCkge1xuICByZXR1cm4gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgLy8gS2VlcCB0cmFjayBvZiB0aGUgcHJlZmVyZW5jZSBpbiBzdGF0ZSwgc3RhcnQgd2l0aCB0aGUgY3VycmVudCBtYXRjaFxuICBjb25zdCBbaXNNYXRjaCwgc2V0SXNNYXRjaF0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXNcbiAgICB9XG4gIH0pXG5cbiAgLy8gV2F0Y2ggZm9yIGNoYW5nZXNcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICghd2luZG93Lm1hdGNoTWVkaWEpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBhIG1hdGNoZXJcbiAgICAgIGNvbnN0IG1hdGNoZXIgPSB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSlcblxuICAgICAgLy8gQ3JlYXRlIG91ciBoYW5kbGVyXG4gICAgICBjb25zdCBvbkNoYW5nZSA9ICh7IG1hdGNoZXMgfTogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+XG4gICAgICAgIHNldElzTWF0Y2gobWF0Y2hlcylcblxuICAgICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzXG4gICAgICBtYXRjaGVyLmFkZExpc3RlbmVyKG9uQ2hhbmdlKVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAvLyBTdG9wIGxpc3RlbmluZyBmb3IgY2hhbmdlc1xuICAgICAgICBtYXRjaGVyLnJlbW92ZUxpc3RlbmVyKG9uQ2hhbmdlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzTWF0Y2gsIHF1ZXJ5LCBzZXRJc01hdGNoXSlcblxuICByZXR1cm4gaXNNYXRjaFxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgVGhlbWUsIHVzZVRoZW1lIH0gZnJvbSAnLi90aGVtZSdcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gJy4vdXNlTWVkaWFRdWVyeSdcblxuY29uc3QgaXNTZXJ2ZXIgPSB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuXG50eXBlIFN0eWxlZENvbXBvbmVudDxUPiA9IFQgZXh0ZW5kcyAnYnV0dG9uJ1xuICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgICA+XG4gIDogVCBleHRlbmRzICdpbnB1dCdcbiAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICBSZWFjdC5JbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgICAgICBIVE1MSW5wdXRFbGVtZW50XG4gICAgICA+XG4gICAgOiBUIGV4dGVuZHMgJ3NlbGVjdCdcbiAgICAgID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICAgICAgUmVhY3QuU2VsZWN0SFRNTEF0dHJpYnV0ZXM8SFRNTFNlbGVjdEVsZW1lbnQ+LFxuICAgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50XG4gICAgICAgID5cbiAgICAgIDogVCBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcFxuICAgICAgICA/IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXT5cbiAgICAgICAgOiBuZXZlclxuXG4vLyBleHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29sb3IobWF0Y2g6IFJvdXRlTWF0Y2gsIHRoZW1lOiBUaGVtZSkge1xuLy8gICByZXR1cm4gbWF0Y2guaXNMb2FkaW5nXG4vLyAgICAgPyB0aGVtZS5hY3RpdmVcbi8vICAgICA6IG1hdGNoLnN0YXR1cyA9PT0gJ3JlamVjdGVkJ1xuLy8gICAgID8gdGhlbWUuZGFuZ2VyXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdwZW5kaW5nJ1xuLy8gICAgID8gdGhlbWUud2FybmluZ1xuLy8gICAgIDogdGhlbWUuc3VjY2Vzc1xuLy8gfVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlTdGF0dXNMYWJlbChxdWVyeTogUXVlcnkpIHtcbi8vICAgcmV0dXJuIHF1ZXJ5LnN0YXRlLmlzRmV0Y2hpbmdcbi8vICAgICA/ICdmZXRjaGluZydcbi8vICAgICA6ICFxdWVyeS5nZXRPYnNlcnZlcnNDb3VudCgpXG4vLyAgICAgPyAnaW5hY3RpdmUnXG4vLyAgICAgOiBxdWVyeS5pc1N0YWxlKClcbi8vICAgICA/ICdzdGFsZSdcbi8vICAgICA6ICdmcmVzaCdcbi8vIH1cblxudHlwZSBTdHlsZXMgPVxuICB8IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgfCAoKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB0aGVtZTogVGhlbWUpID0+IFJlYWN0LkNTU1Byb3BlcnRpZXMpXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZWQ8VCBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG4gIHR5cGU6IFQsXG4gIG5ld1N0eWxlczogU3R5bGVzLFxuICBxdWVyaWVzOiBSZWNvcmQ8c3RyaW5nLCBTdHlsZXM+ID0ge31cbikge1xuICByZXR1cm4gUmVhY3QuZm9yd2FyZFJlZjxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0sIFN0eWxlZENvbXBvbmVudDxUPj4oXG4gICAgKHsgc3R5bGUsIC4uLnJlc3QgfSwgcmVmKSA9PiB7XG4gICAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcblxuICAgICAgY29uc3QgbWVkaWFTdHlsZXMgPSBPYmplY3QuZW50cmllcyhxdWVyaWVzKS5yZWR1Y2UoXG4gICAgICAgIChjdXJyZW50LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgICByZXR1cm4gdXNlTWVkaWFRdWVyeShrZXkpXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICAgICAgICAgIC4uLih0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZShyZXN0LCB0aGVtZSkgOiB2YWx1ZSksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogY3VycmVudFxuICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKVxuXG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudCh0eXBlLCB7XG4gICAgICAgIC4uLnJlc3QsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgLi4uKHR5cGVvZiBuZXdTdHlsZXMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gbmV3U3R5bGVzKHJlc3QsIHRoZW1lKVxuICAgICAgICAgICAgOiBuZXdTdHlsZXMpLFxuICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgIC4uLm1lZGlhU3R5bGVzLFxuICAgICAgICB9LFxuICAgICAgICByZWYsXG4gICAgICB9KVxuICAgIH1cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNNb3VudGVkKCkge1xuICBjb25zdCBtb3VudGVkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKVxuICBjb25zdCBpc01vdW50ZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiBtb3VudGVkUmVmLmN1cnJlbnQsIFtdKVxuXG4gIFJlYWN0W2lzU2VydmVyID8gJ3VzZUVmZmVjdCcgOiAndXNlTGF5b3V0RWZmZWN0J10oKCkgPT4ge1xuICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHJldHVybiBpc01vdW50ZWRcbn1cblxuLyoqXG4gKiBUaGlzIGhvb2sgaXMgYSBzYWZlIHVzZVN0YXRlIHZlcnNpb24gd2hpY2ggc2NoZWR1bGVzIHN0YXRlIHVwZGF0ZXMgaW4gbWljcm90YXNrc1xuICogdG8gcHJldmVudCB1cGRhdGluZyBhIGNvbXBvbmVudCBzdGF0ZSB3aGlsZSBSZWFjdCBpcyByZW5kZXJpbmcgZGlmZmVyZW50IGNvbXBvbmVudHNcbiAqIG9yIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBub3QgbW91bnRlZCBhbnltb3JlLlxuICovXG5mdW5jdGlvbiB1c2VTYWZlU3RhdGU8VD4oaW5pdGlhbFN0YXRlOiBUKTogW1QsICh2YWx1ZTogVCkgPT4gdm9pZF0ge1xuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IFJlYWN0LnVzZVN0YXRlKGluaXRpYWxTdGF0ZSlcblxuICBjb25zdCBzYWZlU2V0U3RhdGUgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IFQpID0+IHtcbiAgICAgIHNjaGVkdWxlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgaWYgKGlzTW91bnRlZCgpKSB7XG4gICAgICAgICAgc2V0U3RhdGUodmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbaXNNb3VudGVkXVxuICApXG5cbiAgcmV0dXJuIFtzdGF0ZSwgc2FmZVNldFN0YXRlXVxufVxuXG4vKipcbiAqIFNjaGVkdWxlcyBhIG1pY3JvdGFzay5cbiAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzY2hlZHVsZSBzdGF0ZSB1cGRhdGVzIGFmdGVyIHJlbmRlcmluZy5cbiAqL1xuZnVuY3Rpb24gc2NoZWR1bGVNaWNyb3Rhc2soY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgUHJvbWlzZS5yZXNvbHZlKClcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goZXJyb3IgPT5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfSlcbiAgICApXG59XG4iLCAiaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi91dGlscydcblxuZXhwb3J0IGNvbnN0IFBhbmVsID0gc3R5bGVkKFxuICAnZGl2JyxcbiAgKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgZm9udFNpemU6ICdjbGFtcCgxMnB4LCAxLjV2dywgMTRweCknLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLFxuICAgIGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB9LFxuICAgICcobWF4LXdpZHRoOiA2MDBweCknOiB7XG4gICAgICBmb250U2l6ZTogJy45ZW0nLFxuICAgICAgLy8gZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgfVxuKVxuXG5jb25zdCBBY3RpdmVQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gICgpID0+ICh7XG4gICAgZmxleDogJzEgMSA1MDBweCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDcwMHB4KSc6IChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgICAgYm9yZGVyVG9wOiBgMnB4IHNvbGlkICR7dGhlbWUuZ3JheX1gLFxuICAgIH0pLFxuICB9XG4pXG5cbmV4cG9ydCBjb25zdCBCdXR0b24gPSBzdHlsZWQoJ2J1dHRvbicsIChwcm9wcywgdGhlbWUpID0+ICh7XG4gIGFwcGVhcmFuY2U6ICdub25lJyxcbiAgZm9udFNpemU6ICcuOWVtJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxuICBiYWNrZ3JvdW5kOiB0aGVtZS5ncmF5LFxuICBib3JkZXI6ICcwJyxcbiAgYm9yZGVyUmFkaXVzOiAnLjNlbScsXG4gIGNvbG9yOiAnd2hpdGUnLFxuICBwYWRkaW5nOiAnLjVlbScsXG4gIG9wYWNpdHk6IHByb3BzLmRpc2FibGVkID8gJy41JyA6IHVuZGVmaW5lZCxcbiAgY3Vyc29yOiAncG9pbnRlcicsXG59KSlcblxuLy8gZXhwb3J0IGNvbnN0IFF1ZXJ5S2V5cyA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4vLyAgIGZvbnRTaXplOiAnMC45ZW0nLFxuLy8gfSlcblxuLy8gZXhwb3J0IGNvbnN0IFF1ZXJ5S2V5ID0gc3R5bGVkKCdzcGFuJywge1xuLy8gICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuLy8gICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbi8vICAgcGFkZGluZzogJy4yZW0gLjRlbScsXG4vLyAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbi8vICAgdGV4dFNoYWRvdzogJzAgMCAxMHB4IGJsYWNrJyxcbi8vICAgYm9yZGVyUmFkaXVzOiAnLjJlbScsXG4vLyB9KVxuXG5jb25zdCBDb2RlID0gc3R5bGVkKCdjb2RlJywge1xuICBmb250U2l6ZTogJy45ZW0nLFxufSlcblxuY29uc3QgSW5wdXQgPSBzdHlsZWQoJ2lucHV0JywgKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gIGJvcmRlcjogMCxcbiAgYm9yZGVyUmFkaXVzOiAnLjJlbScsXG4gIGNvbG9yOiB0aGVtZS5pbnB1dFRleHRDb2xvcixcbiAgZm9udFNpemU6ICcuOWVtJyxcbiAgbGluZUhlaWdodDogYDEuM2AsXG4gIHBhZGRpbmc6ICcuM2VtIC40ZW0nLFxufSkpXG5cbmNvbnN0IFNlbGVjdCA9IHN0eWxlZChcbiAgJ3NlbGVjdCcsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGRpc3BsYXk6IGBpbmxpbmUtYmxvY2tgLFxuICAgIGZvbnRTaXplOiBgLjllbWAsXG4gICAgZm9udEZhbWlseTogYHNhbnMtc2VyaWZgLFxuICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICAgIHBhZGRpbmc6IGAuM2VtIDEuNWVtIC4zZW0gLjVlbWAsXG4gICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgYm9yZGVyOiAwLFxuICAgIGJvcmRlclJhZGl1czogYC4yZW1gLFxuICAgIGFwcGVhcmFuY2U6IGBub25lYCxcbiAgICBXZWJraXRBcHBlYXJhbmNlOiAnbm9uZScsXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5pbnB1dEJhY2tncm91bmRDb2xvcixcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnIGZpbGw9JyUyMzQ0NDQ0NCc+PHBvbHlnb24gcG9pbnRzPScwLDI1IDEwMCwyNSA1MCw3NScvPjwvc3ZnPlwiKWAsXG4gICAgYmFja2dyb3VuZFJlcGVhdDogYG5vLXJlcGVhdGAsXG4gICAgYmFja2dyb3VuZFBvc2l0aW9uOiBgcmlnaHQgLjU1ZW0gY2VudGVyYCxcbiAgICBiYWNrZ3JvdW5kU2l6ZTogYC42NWVtIGF1dG8sIDEwMCVgLFxuICAgIGNvbG9yOiB0aGVtZS5pbnB1dFRleHRDb2xvcixcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNTAwcHgpJzoge1xuICAgICAgZGlzcGxheTogJ25vbmUnLFxuICAgIH0sXG4gIH1cbilcbiIsICIvLyBAdHMtbm9jaGVja1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmNvbnN0IEVudHJ5ID0gc3R5bGVkKCdkaXYnLCB7XG4gIGZvbnRGYW1pbHk6ICdNZW5sbywgbW9ub3NwYWNlJyxcbiAgZm9udFNpemU6ICcwLjdyZW0nLFxuICBsaW5lSGVpZ2h0OiAnMS43JyxcbiAgb3V0bGluZTogJ25vbmUnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbn0pXG5cbmNvbnN0IExhYmVsID0gc3R5bGVkKCdzcGFuJywge1xuICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgY29sb3I6ICd3aGl0ZScsXG59KVxuXG5jb25zdCBWYWx1ZSA9IHN0eWxlZCgnc3BhbicsIChwcm9wcywgdGhlbWUpID0+ICh7XG4gIGNvbG9yOiB0aGVtZS5kYW5nZXIsXG59KSlcblxuY29uc3QgU3ViRW50cmllcyA9IHN0eWxlZCgnZGl2Jywge1xuICBtYXJnaW5MZWZ0OiAnLjFyZW0nLFxuICBwYWRkaW5nTGVmdDogJzFyZW0nLFxuICBib3JkZXJMZWZ0OiAnMnB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KScsXG59KVxuXG5jb25zdCBJbmZvID0gc3R5bGVkKCdzcGFuJywge1xuICBjb2xvcjogJ2dyZXknLFxuICBmb250U2l6ZTogJy43cmVtJyxcbn0pXG5cbmNvbnN0IEV4cGFuZGVyID0gKHsgZXhwYW5kZWQsIHN0eWxlID0ge30sIC4uLnJlc3QgfSkgPT4gKFxuICA8c3BhblxuICAgIHN0eWxlPXt7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIHRyYW5zaXRpb246ICdhbGwgLjFzIGVhc2UnLFxuICAgICAgdHJhbnNmb3JtOiBgcm90YXRlKCR7ZXhwYW5kZWQgPyA5MCA6IDB9ZGVnKSAke3N0eWxlLnRyYW5zZm9ybSB8fCAnJ31gLFxuICAgICAgLi4uc3R5bGUsXG4gICAgfX1cbiAgPlxuICAgIOKWtlxuICA8L3NwYW4+XG4pXG5cbmNvbnN0IERlZmF1bHRSZW5kZXJlciA9ICh7XG4gIGhhbmRsZUVudHJ5LFxuICBsYWJlbCxcbiAgdmFsdWUsXG4gIC8vIHBhdGgsXG4gIHN1YkVudHJpZXMsXG4gIHN1YkVudHJ5UGFnZXMsXG4gIHR5cGUsXG4gIC8vIGRlcHRoLFxuICBleHBhbmRlZCxcbiAgdG9nZ2xlLFxuICBwYWdlU2l6ZSxcbiAgcmVuZGVyZXIsXG59KSA9PiB7XG4gIGNvbnN0IFt2YWx1ZVNuYXBzaG90LCBzZXRWYWx1ZVNuYXBzaG90XSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZClcbiAgY29uc3QgW2V4cGFuZGVkUGFnZXMsIHNldEV4cGFuZGVkUGFnZXNdID0gUmVhY3QudXNlU3RhdGUoW10pXG5cbiAgY29uc3QgcmVmcmVzaFZhbHVlU25hcHNob3QgPSAoKSA9PiB7XG4gICAgc2V0VmFsdWVTbmFwc2hvdCh2YWx1ZSgpKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8RW50cnkga2V5PXtsYWJlbH0+XG4gICAgICB7c3ViRW50cnlQYWdlcz8ubGVuZ3RoID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxMYWJlbCBvbkNsaWNrPXsoKSA9PiB0b2dnbGUoKX0+XG4gICAgICAgICAgICA8RXhwYW5kZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPiB7bGFiZWx9eycgJ31cbiAgICAgICAgICAgIDxJbmZvPlxuICAgICAgICAgICAgICB7U3RyaW5nKHR5cGUpLnRvTG93ZXJDYXNlKCkgPT09ICdpdGVyYWJsZScgPyAnKEl0ZXJhYmxlKSAnIDogJyd9XG4gICAgICAgICAgICAgIHtzdWJFbnRyaWVzLmxlbmd0aH0ge3N1YkVudHJpZXMubGVuZ3RoID4gMSA/IGBpdGVtc2AgOiBgaXRlbWB9XG4gICAgICAgICAgICA8L0luZm8+XG4gICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgICB7ZXhwYW5kZWQgPyAoXG4gICAgICAgICAgICBzdWJFbnRyeVBhZ2VzLmxlbmd0aCA9PT0gMSA/IChcbiAgICAgICAgICAgICAgPFN1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAge3N1YkVudHJpZXMubWFwKGVudHJ5ID0+IGhhbmRsZUVudHJ5KGVudHJ5KSl9XG4gICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyeVBhZ2VzLm1hcCgoZW50cmllcywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgIDxFbnRyeT5cbiAgICAgICAgICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4cGFuZGVkUGFnZXMob2xkID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLmluY2x1ZGVzKGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvbGQuZmlsdGVyKGQgPT4gZCAhPT0gaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFsuLi5vbGQsIGluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4gW3tpbmRleCAqIHBhZ2VTaXplfSAuLi57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge2luZGV4ICogcGFnZVNpemUgKyBwYWdlU2l6ZSAtIDF9XVxuICAgICAgICAgICAgICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkUGFnZXMuaW5jbHVkZXMoaW5kZXgpID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtlbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L0VudHJ5PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApIDogdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgIHJlbmRlcmVyPXtyZW5kZXJlcn1cbiAgICAgICAgICAgIGxhYmVsPXtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtyZWZyZXNoVmFsdWVTbmFwc2hvdH0+XG4gICAgICAgICAgICAgICAgPExhYmVsPntsYWJlbH08L0xhYmVsPiDwn5SEeycgJ31cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVTbmFwc2hvdH1cbiAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17e319XG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIDxMYWJlbD57bGFiZWx9OjwvTGFiZWw+eycgJ31cbiAgICAgICAgICA8VmFsdWU+XG4gICAgICAgICAgICB7SlNPTi5zdHJpbmdpZnkodmFsdWUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdCh2YWx1ZSkpKX1cbiAgICAgICAgICA8L1ZhbHVlPlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9FbnRyeT5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFeHBsb3Jlcih7XG4gIHZhbHVlLFxuICBkZWZhdWx0RXhwYW5kZWQsXG4gIHJlbmRlcmVyID0gRGVmYXVsdFJlbmRlcmVyLFxuICBwYWdlU2l6ZSA9IDEwMCxcbiAgZGVwdGggPSAwLFxuICAuLi5yZXN0XG59KSB7XG4gIGNvbnN0IFtleHBhbmRlZCwgc2V0RXhwYW5kZWRdID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdEV4cGFuZGVkKVxuXG4gIGNvbnN0IHRvZ2dsZSA9IHNldCA9PiB7XG4gICAgc2V0RXhwYW5kZWQob2xkID0+ICh0eXBlb2Ygc2V0ICE9PSAndW5kZWZpbmVkJyA/IHNldCA6ICFvbGQpKVxuICB9XG5cbiAgY29uc3QgcGF0aCA9IFtdXG5cbiAgbGV0IHR5cGUgPSB0eXBlb2YgdmFsdWVcbiAgbGV0IHN1YkVudHJpZXNcbiAgY29uc3Qgc3ViRW50cnlQYWdlcyA9IFtdXG5cbiAgY29uc3QgbWFrZVByb3BlcnR5ID0gc3ViID0+IHtcbiAgICBjb25zdCBuZXdQYXRoID0gcGF0aC5jb25jYXQoc3ViLmxhYmVsKVxuICAgIGNvbnN0IHN1YkRlZmF1bHRFeHBhbmRlZCA9XG4gICAgICBkZWZhdWx0RXhwYW5kZWQgPT09IHRydWVcbiAgICAgICAgPyB7IFtzdWIubGFiZWxdOiB0cnVlIH1cbiAgICAgICAgOiBkZWZhdWx0RXhwYW5kZWQ/LltzdWIubGFiZWxdXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1YixcbiAgICAgIHN1YlBhdGg6IHN1YixcbiAgICAgIHBhdGg6IG5ld1BhdGgsXG4gICAgICBkZXB0aDogZGVwdGggKyAxLFxuICAgICAgZGVmYXVsdEV4cGFuZGVkOiBzdWJEZWZhdWx0RXhwYW5kZWQsXG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdHlwZSA9ICdhcnJheSdcbiAgICBzdWJFbnRyaWVzID0gdmFsdWUubWFwKChkLCBpKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWw6IGksXG4gICAgICAgIHZhbHVlOiBkLFxuICAgICAgfSlcbiAgICApXG4gIH0gZWxzZSBpZiAoXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdHlwZW9mIHZhbHVlW1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgdHlwZSA9ICdJdGVyYWJsZSdcbiAgICBzdWJFbnRyaWVzID0gQXJyYXkuZnJvbSh2YWx1ZSwgKHZhbCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgfSlcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHlwZSA9ICdmdW5jdGlvbidcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgdHlwZSA9ICdvYmplY3QnXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvd1xuICAgIHN1YkVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSkubWFwKChbbGFiZWwsIHZhbHVlXSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsLFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgaWYgKHN1YkVudHJpZXMpIHtcbiAgICBsZXQgaSA9IDBcblxuICAgIHdoaWxlIChpIDwgc3ViRW50cmllcy5sZW5ndGgpIHtcbiAgICAgIHN1YkVudHJ5UGFnZXMucHVzaChzdWJFbnRyaWVzLnNsaWNlKGksIGkgKyBwYWdlU2l6ZSkpXG4gICAgICBpID0gaSArIHBhZ2VTaXplXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbmRlcmVyKHtcbiAgICBoYW5kbGVFbnRyeTogZW50cnkgPT4gKFxuICAgICAgPEV4cGxvcmVyIGtleT17ZW50cnkubGFiZWx9IHJlbmRlcmVyPXtyZW5kZXJlcn0gey4uLnJlc3R9IHsuLi5lbnRyeX0gLz5cbiAgICApLFxuICAgIHR5cGUsXG4gICAgc3ViRW50cmllcyxcbiAgICBzdWJFbnRyeVBhZ2VzLFxuICAgIGRlcHRoLFxuICAgIHZhbHVlLFxuICAgIHBhdGgsXG4gICAgZXhwYW5kZWQsXG4gICAgdG9nZ2xlLFxuICAgIHBhZ2VTaXplLFxuICAgIC4uLnJlc3QsXG4gIH0pXG59XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExvZ28ocHJvcHM6IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHdpZHRoPVwiNDBweFwiXG4gICAgICBoZWlnaHQ9XCI0MHB4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTkwIDE5MFwiXG4gICAgICB2ZXJzaW9uPVwiMS4xXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8ZyBzdHJva2U9XCJub25lXCIgc3Ryb2tlV2lkdGg9XCIxXCIgZmlsbD1cIm5vbmVcIiBmaWxsUnVsZT1cImV2ZW5vZGRcIj5cbiAgICAgICAgPGcgaWQ9XCJvZy13aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMjguMDAwMDAwLCAtMjEuMDAwMDAwKVwiPlxuICAgICAgICAgIDxnIGlkPVwiR3JvdXAtMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyOC4wMDAwMDAsIDMxLjAwMDAwMClcIj5cbiAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEwLjAwMDAwMClcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTM5LjcyMzk3MTIsNTEuMzQzNjIzNyBDMzYuNjMxMjI0LDM2LjM2Mjg3NyAzNS45Njc1MTEyLDI0Ljg3Mjc3MjIgMzcuOTY2NjMzMSwxNi41MjkzNTUxIEMzOS4xNTU1OTY1LDExLjU2NzE2NzggNDEuMzI5MzA4OCw3LjUxOTA4NDYyIDQ0LjYzNDYwNjQsNC41OTg0NjMwNSBDNDguMTI0MTM5NCwxLjUxNTA0Nzc3IDUyLjUzNjAzMjcsMC4wMDIwMTIxNjYwNiA1Ny40OTMyNTcsMC4wMDIwMTIxNjYwNiBDNjUuNjcxMjAxMywwLjAwMjAxMjE2NjA2IDc0LjI2ODI2MDIsMy43MjczMjE0MyA4My40NTU3MjQ2LDEwLjgwNDQyNjQgQzg3LjIwMzEyMDMsMTMuNjkxMDQ1OCA5MS4wOTI0MzY2LDE3LjE3MDQxMSA5NS4xMzE2NTE1LDIxLjI0NDQ3NDYgQzk1LjQ1MzE0MDQsMjAuODMxMDI2NSA5NS44MTY1NDE2LDIwLjQ0MTA0NTMgOTYuMjIxNDMwMSwyMC4wODA2MTUyIEMxMDcuNjQwOTgsOS45MTQ5NzE1OCAxMTcuMjU1MjQ1LDMuNTk4OTI3MTYgMTI1LjQ3ODQwOCwxLjE2MzY1MDY4IEMxMzAuMzY3ODk5LC0wLjI4NDM2NDAwNSAxMzQuOTU4NTI2LC0wLjQyMjMxNzk3OCAxMzkuMTM4OTM2LDAuOTgzMDMxMDIxIEMxNDMuNTUxNjMxLDIuNDY2NDY4NDQgMTQ3LjA2NzY2LDUuNTMyOTQ4ODggMTQ5LjU0ODMxNCw5LjgyODEwOTEyIEMxNTMuNjQyMjg4LDE2LjkxNjY3MzUgMTU0LjcyMTkxOCwyNi4yMzEwOTgzIDE1My4xOTU1OTUsMzcuNzMyMDI0MyBDMTUyLjU3MzQ1MSw0Mi40MTk5MTEyIDE1MS41MDk4NSw0Ny41MjYzODMxIDE1MC4wMDcwOTQsNTMuMDU5MzE1MyBDMTUwLjU3NDA0NSw1My4xMjc3MDg2IDE1MS4xNDI0MTYsNTMuMjUzMjgwOCAxNTEuNzA1MDQxLDUzLjQzOTUyOTcgQzE2Ni4xOTM5MzIsNTguMjM1ODY3OCAxNzYuNDUzNTgyLDYzLjM5Mzc0NjIgMTgyLjY2NTAyMSw2OS4yODgyODM5IEMxODYuMzYwNjY5LDcyLjc5NTM4MzEgMTg4Ljc3Mzk3Miw3Ni42OTk4NDM0IDE4OS42NDYzNjUsODEuMDIxODIwNCBDMTkwLjU2NzE3Niw4NS41ODM2NzQ2IDE4OS42NjkzMTMsOTAuMTU5MzMxNiAxODcuMTkxNTQ4LDk0LjQ1MTI5NjcgQzE4My4xMDUyMTEsMTAxLjUyOTYxNCAxNzUuNTkxNjQzLDEwNy4xMTIyMSAxNjQuODg3NTg3LDExMS41MzQwMzEgQzE2MC41ODk1NTIsMTEzLjMwOTUzOSAxNTUuNzI2NTc5LDExNC45MTc1NTkgMTUwLjI5MzI1OSwxMTYuMzYzNzQ4IEMxNTAuNTQxMTc2LDExNi45MjI5MiAxNTAuNzMzNTIxLDExNy41MTY3NTkgMTUwLjg2MjEzOCwxMTguMTM5NzU4IEMxNTMuOTU0ODg2LDEzMy4xMjA1MDUgMTU0LjYxODU5OCwxNDQuNjEwNjEgMTUyLjYxOTQ3NywxNTIuOTU0MDI3IEMxNTEuNDMwNTEzLDE1Ny45MTYyMTQgMTQ5LjI1NjgwMSwxNjEuOTY0Mjk3IDE0NS45NTE1MDMsMTY0Ljg4NDkxOSBDMTQyLjQ2MTk3LDE2Ny45NjgzMzQgMTM4LjA1MDA3NywxNjkuNDgxMzcgMTMzLjA5Mjg1MywxNjkuNDgxMzcgQzEyNC45MTQ5MDgsMTY5LjQ4MTM3IDExNi4zMTc4NSwxNjUuNzU2MDYxIDEwNy4xMzAzODUsMTU4LjY3ODk1NiBDMTAzLjM0MzEwNCwxNTUuNzYxNjEzIDk5LjQxMDg2NTUsMTUyLjIzODgzOSA5NS4zMjU0MzM3LDE0OC4xMDg2MTkgQzk0LjkwNTA3NTMsMTQ4Ljc2NTQ3NCA5NC4zODg5NjgxLDE0OS4zNzYwMTEgOTMuNzc4NTY5OSwxNDkuOTE5Mzg1IEM4Mi4zNTkwMTk4LDE2MC4wODUwMjggNzIuNzQ0NzU1LDE2Ni40MDEwNzMgNjQuNTIxNTkxNSwxNjguODM2MzQ5IEM1OS42MzIxMDA5LDE3MC4yODQzNjQgNTUuMDQxNDczNiwxNzAuNDIyMzE4IDUwLjg2MTA2MzYsMTY5LjAxNjk2OSBDNDYuNDQ4MzY4NiwxNjcuNTMzNTMyIDQyLjkzMjM0MDQsMTY0LjQ2NzA1MSA0MC40NTE2ODYyLDE2MC4xNzE4OTEgQzM2LjM1NzcxMTYsMTUzLjA4MzMyNyAzNS4yNzgwODIzLDE0My43Njg5MDIgMzYuODA0NDA1MywxMzIuMjY3OTc2IEMzNy40NDkwMzgsMTI3LjQxMDYzNCAzOC41Njc2MiwxMjIuMTAzODk4IDQwLjE1NzU4OTEsMTE2LjMzOTAwOSBDMzkuNTM2MTA0MSwxMTYuMjc2MTA0IDM4LjkxMjA3NTQsMTE2LjE0NDgxNiAzOC4yOTQ5NTkxLDExNS45NDA1MjkgQzIzLjgwNjA2ODQsMTExLjE0NDE5MSAxMy41NDY0MTg0LDEwNS45ODYzMTIgNy4zMzQ5Nzg5MiwxMDAuMDkxNzc1IEMzLjYzOTMzMTIxLDk2LjU4NDY3NTQgMS4yMjYwMjc1Miw5Mi42ODAyMTUxIDAuMzUzNjM1MjM1LDg4LjM1ODIzODEgQy0wLjU2NzE3NjMzMyw4My43OTYzODM5IDAuMzMwNjg2NTgxLDc5LjIyMDcyNjkgMi44MDg0NTIzNiw3NC45Mjg3NjE4IEM2Ljg5NDc4ODYzLDY3Ljg1MDQ0NDMgMTQuNDA4MzU2NSw2Mi4yNjc4NDgxIDI1LjExMjQxMzMsNTcuODQ2MDI3MyBDMjkuNTM4NTE0Myw1Ni4wMTc2MTU0IDM0LjU2MzcyMDgsNTQuMzY2ODIyIDQwLjE5MzkzOTQsNTIuODg3NDY3NCBDMzkuOTkzMzM5Myw1Mi4zOTY5MTcxIDM5LjgzNDkzNzQsNTEuODgxMTIzNSAzOS43MjM5NzEyLDUxLjM0MzYyMzcgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQYXRoXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiIzAwMkM0QlwiXG4gICAgICAgICAgICAgICAgZmlsbFJ1bGU9XCJub256ZXJvXCJcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoOTUuMDAwMDAwLCA4NS4wMDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTk1LjAwMDAwMCwgLTg1LjAwMDAwMCkgXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTkxLjczNSwxMTAgTDkxLjczNSwxMTYgTDgwLjYzMjIwNTEsMTE2IEM3OC44NDExMjg2LDExNiA3Ny4xODY4NjE0LDExNS4wNDE5NzUgNzYuMjk1NDQ4OSwxMTMuNDg4NDgzIEw3NC4yOTQsMTEwIEw5MS43MzUsMTEwIFogTTExNi4xODEsMTEwIEwxMTQuMTgwMjU2LDExMy40ODg0ODMgQzExMy4yODg4NDQsMTE1LjA0MTk3NSAxMTEuNjM0NTc2LDExNiAxMDkuODQzNSwxMTYgTDk4LjczNSwxMTYgTDk4LjczNSwxMTAgTDExNi4xODEsMTEwIFogTTkxLjczNSw5NiBMOTEuNzM1LDEwMyBMNzAuMjc3LDEwMyBMNjYuMjYsOTYgTDkxLjczNSw5NiBaIE0xMjQuMjE1LDk2IEwxMjAuMTk4LDEwMyBMOTguNzM1LDEwMyBMOTguNzM1LDk2IEwxMjQuMjE1LDk2IFogTTkxLjczNSw4MiBMOTEuNzM1LDg5IEw2Mi4yNDQsODkgTDYxLjY2MzI0MzgsODcuOTg4NDgyNiBDNjAuNzc4OTE4Nyw4Ni40NDczNDE3IDYwLjc3ODkxODcsODQuNTUyNjU4MyA2MS42NjMyNDM4LDgzLjAxMTUxNzQgTDYyLjI0Myw4MiBMOTEuNzM1LDgyIFogTTEyOC4yMzIsODIgTDEyOC44MTI0NjEsODMuMDExNTE3NCBDMTI5LjY5Njc4Niw4NC41NTI2NTgzIDEyOS42OTY3ODYsODYuNDQ3MzQxNyAxMjguODEyNDYxLDg3Ljk4ODQ4MjYgTDEyOC4yMzEsODkgTDk4LjczNSw4OSBMOTguNzM1LDgyIEwxMjguMjMyLDgyIFogTTkxLjczNSw2OCBMOTEuNzM1LDc1IEw2Ni4yNiw3NSBMNzAuMjc3LDY4IEw5MS43MzUsNjggWiBNMTIwLjE5OCw2OCBMMTI0LjIxNSw3NSBMOTguNzM1LDc1IEw5OC43MzUsNjggTDEyMC4xOTgsNjggWiBNOTEuNzM1LDU1IEw5MS43MzUsNjEgTDc0LjI5Myw2MSBMNzYuMjk1NDQ4OSw1Ny41MTE1MTc0IEM3Ny4xODY4NjE0LDU1Ljk1ODAyNSA3OC44NDExMjg2LDU1IDgwLjYzMjIwNTEsNTUgTDkxLjczNSw1NSBaIE0xMDkuODQzNSw1NSBDMTExLjYzNDU3Niw1NSAxMTMuMjg4ODQ0LDU1Ljk1ODAyNSAxMTQuMTgwMjU2LDU3LjUxMTUxNzQgTDExNi4xODIsNjEgTDk4LjczNSw2MSBMOTguNzM1LDU1IEwxMDkuODQzNSw1NSBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIlBvbHlnb24tMlwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNGRkQ5NENcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNNTQuODYwMTcyOSw5OC4zNTc3NTc4IEM1Ni4xNzE1MjI0LDk3LjYwODI4NTYgNTcuODM2MDI0Niw5OC4wNzQ2MDE0IDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTguNTc3OTQyNCw5OS4zOTkzMDM0IEw1OS4wNTI1ODQzLDEwMC4yNDM1MiBDNjIuODU2MzM5MiwxMDYuOTgyOTkzIDY2LjgxOTAxMTYsMTEzLjM4MDE3NiA3MC45NDA2MDE2LDExOS40MzUwNjggQzc1LjgwNzg4MDgsMTI2LjU4NTQyNyA4MS4yODE4NCwxMzMuODI0MTEgODcuMzYyNDc5MiwxNDEuMTUxMTE1IEM4OC4zMTY4Nzc4LDE0Mi4zMDExNCA4OC4xODQ5NDM3LDE0NC4wMTExNzYgODcuMDY1Njg2LDE0NC45OTc5MzcgTDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ni40NTQyMDg1LDE0NS41MzQ2MjUgQzY2LjM0NjUzODksMTYzLjEwMzMxNCA1My4yNzc4MTg4LDE2Ni42MTI1NTIgNDcuMjQ4MDQ4MiwxNTYuMDYyMzQxIEM0MS4zNTAwNjUyLDE0NS43NDI3MTcgNDMuNDg0NDkxNSwxMjYuOTgyODg4IDUzLjY1MTMyNzQsOTkuNzgyODUyNiBDNTMuODc2ODE4LDk5LjE3OTU4MjEgNTQuMzA0NTg2MSw5OC42NzUyOTEgNTQuODYwMTcyOSw5OC4zNTc3NTc4IFogTTE0MC41MzQxNzcsMTE5LjA0MTUwNCBDMTQxLjk4NjEzMSwxMTguNzg1MTc3IDE0My4zNzU0OTYsMTE5Ljc0MjEzOCAxNDMuNjU5NjMsMTIxLjE5NDI0MiBMMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My44MTI4MTUsMTIxLjk4NjM3NiBDMTQ4Ljc4MjM2NSwxNDcuOTk1NDU5IDE0NS4yODMzNDgsMTYxIDEzMy4zMTU3NjQsMTYxIEMxMjEuNjA5NzQ1LDE2MSAxMDYuNzA4NzI0LDE0OS45MDkwMDcgODguNjEyNzAxOCwxMjcuNzI3MDIyIEM4OC4yMTEzNDk1LDEyNy4yMzUwNDcgODcuOTk0NTcyMywxMjYuNjE3MzcxIDg4LDEyNS45ODE1MDkgQzg4LjAxMzE1OCwxMjQuNDgwNjg2IDg5LjIzNTc4NTQsMTIzLjI3NDY1MSA5MC43MzA5MTgsMTIzLjI4Nzc1NiBMOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkxLjY4NDY1NDQsMTIzLjI5NDUzMSBDOTkuMzA1Njk3OSwxMjMuMzM1OTk0IDEwNi43MTQzODcsMTIzLjA3MTU5MSAxMTMuOTEwNzIzLDEyMi41MDEzMjMgQzEyMi40MDkwMzksMTIxLjgyNzg4IDEzMS4yODM1MjMsMTIwLjY3NDYwNyAxNDAuNTM0MTc3LDExOS4wNDE1MDQgWiBNMTQ3LjQwODcyNiw2My44MTE5NjYzIEMxNDcuOTMyMTM5LDYyLjQwMjY5MDMgMTQ5LjUwODM4Niw2MS42NjM0NTM3IDE1MC45NTQ1ODEsNjIuMTQ5MDEyIEwxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUxLjc0MjU1Miw2Mi40MTU0ODU0IEMxNzcuNTgzNzYzLDcxLjIxNzkyMiAxODcuNDAyMzU2LDgwLjg5MTY4MDUgMTgxLjE5ODMzMiw5MS40MzY3NjA5IEMxNzUuMTI5OTA0LDEwMS43NTEzNjYgMTU3LjQ4NDM0NywxMDkuMjYwMzM5IDEyOC4yNjE2NiwxMTMuOTYzNjc4IEMxMjcuNjEzNTI5LDExNC4wNjc5OTQgMTI2Ljk0ODY0MywxMTMuOTQ1OTY5IDEyNi4zODI3MzUsMTEzLjYxODg0MyBDMTI1LjA0NzAyNSwxMTIuODQ2NzI5IDEyNC42MDIwNDYsMTExLjE1ODIxNCAxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS4zODg4NDgsMTA5Ljg0NzQzOCBMMTI1Ljg4OTMyOCwxMDkuMDEwNSBDMTI5Ljg3NzE4MywxMDIuMzE2MzMgMTMzLjQ4MTM1OCw5NS42NTQyNjIxIDEzNi43MDE4NTQsODkuMDI0Mjk1NyBDMTQwLjUwNTAxLDgxLjE5NDgxNzkgMTQ0LjA3Mzk2Nyw3Mi43OTA3MDgxIDE0Ny40MDg3MjYsNjMuODExOTY2MyBaIE02MS43MzgzMzk4LDU2LjAzNjMyMTggQzYyLjM4NjQ3MDgsNTUuOTMyMDA2MyA2My4wNTEzNTY1LDU2LjA1NDAzMTUgNjMuNjE3MjY0Niw1Ni4zODExNTczIEM2NC45NTI5NzU0LDU3LjE1MzI3MSA2NS4zOTc5NTM4LDU4Ljg0MTc4NjIgNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC42MTExNTE3LDYwLjE1MjU2MTUgTDY0LjExMDY3MTgsNjAuOTg5NTAwMSBDNjAuMTIyODE2OCw2Ny42ODM2Njk5IDU2LjUxODY0MTYsNzQuMzQ1NzM3OSA1My4yOTgxNDYyLDgwLjk3NTcwNDMgQzQ5LjQ5NDk5LDg4LjgwNTE4MjEgNDUuOTI2MDMyOCw5Ny4yMDkyOTE5IDQyLjU5MTI3NDQsMTA2LjE4ODAzNCBDNDIuMDY3ODYwOCwxMDcuNTk3MzEgNDAuNDkxNjE0MiwxMDguMzM2NTQ2IDM5LjA0NTQxOSwxMDcuODUwOTg4IEwzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzguMjU3NDQ3NSwxMDcuNTg0NTE1IEMxMi40MTYyMzcyLDk4Ljc4MjA3OCAyLjU5NzY0Mzk4LDg5LjEwODMxOTUgOC44MDE2Njc4Niw3OC41NjMyMzkxIEMxNC44NzAwOTU3LDY4LjI0ODYzMzUgMzIuNTE1NjUzLDYwLjczOTY2MTEgNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IFogTTEwMy41NDU3OTIsMjQuNDY1Mzc0NiBDMTIzLjY1MzQ2MSw2Ljg5NjY4NjQxIDEzNi43MjIxODEsMy4zODc0NDc3OCAxNDIuNzUxOTUyLDEzLjkzNzY1ODcgQzE0OC42NDk5MzUsMjQuMjU3MjgyNiAxNDYuNTE1NTA4LDQzLjAxNzExMjIgMTM2LjM0ODY3Myw3MC4yMTcxNDc0IEMxMzYuMTIzMTgyLDcwLjgyMDQxNzkgMTM1LjY5NTQxNCw3MS4zMjQ3MDkgMTM1LjEzOTgyNyw3MS42NDIyNDIyIEMxMzMuODI4NDc4LDcyLjM5MTcxNDQgMTMyLjE2Mzk3NSw3MS45MjUzOTg2IDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMxLjQyMjA1OCw3MC42MDA2OTY2IEwxMzAuOTQ3NDE2LDY5Ljc1NjQ3OTggQzEyNy4xNDM2NjEsNjMuMDE3MDA2NSAxMjMuMTgwOTg4LDU2LjYxOTgyMzkgMTE5LjA1OTM5OCw1MC41NjQ5MzIgQzExNC4xOTIxMTksNDMuNDE0NTcyNyAxMDguNzE4MTYsMzYuMTc1ODkwMyAxMDIuNjM3NTIxLDI4Ljg0ODg4NDcgQzEwMS42ODMxMjIsMjcuNjk4ODYwMiAxMDEuODE1MDU2LDI1Ljk4ODgyNDMgMTAyLjkzNDMxNCwyNS4wMDIwNjI5IEwxMDIuOTM0MzE0LDI1LjAwMjA2MjkgWiBNNTcuNjg0MjM2MSw4IEM2OS4zOTAyNTUxLDggODQuMjkxMjc1OCwxOS4wOTA5OTI2IDEwMi4zODcyOTgsNDEuMjcyOTc3NyBDMTAyLjc4ODY1MSw0MS43NjQ5NTI3IDEwMy4wMDU0MjgsNDIuMzgyNjI4OCAxMDMsNDMuMDE4NDkxMSBDMTAyLjk4Njg0Miw0NC41MTkzMTQ0IDEwMS43NjQyMTUsNDUuNzI1MzQ4OSAxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDEwMC4yNjkwODIsNDUuNzEyMjQ0NSBMOTkuMzE1MzQ1Niw0NS43MDU0Njg5IEM5MS42OTQzMDIxLDQ1LjY2NDAwNjMgODQuMjg1NjEyNiw0NS45Mjg0MDkxIDc3LjA4OTI3NzIsNDYuNDk4Njc3MyBDNjguNTkwOTYxMiw0Ny4xNzIxMiA1OS43MTY0NzY3LDQ4LjMyNTM5MyA1MC40NjU4MjM1LDQ5Ljk1ODQ5NjIgQzQ5LjAxMzg2OTEsNTAuMjE0ODIzMSA0Ny42MjQ1MDQ0LDQ5LjI1Nzg2MTggNDcuMzQwMzY5Nyw0Ny44MDU3NTggTDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4xODcxODQ2LDQ3LjAxMzYyMzUgQzQyLjIxNzYzNDcsMjEuMDA0NTQxMiA0NS43MTY2NTE5LDggNTcuNjg0MjM2MSw4IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiQ29tYmluZWQtU2hhcGVcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkY0MTU0XCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L2c+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cbiAgKVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXRhYmxlJ1xuXG5pbXBvcnQgdXNlTG9jYWxTdG9yYWdlIGZyb20gJy4vdXNlTG9jYWxTdG9yYWdlJ1xuaW1wb3J0IHsgdXNlSXNNb3VudGVkIH0gZnJvbSAnLi91dGlscydcblxuaW1wb3J0IHsgUGFuZWwsIEJ1dHRvbiB9IGZyb20gJy4vc3R5bGVkQ29tcG9uZW50cydcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIsIGRlZmF1bHRUaGVtZSBhcyB0aGVtZSB9IGZyb20gJy4vdGhlbWUnXG4vLyBpbXBvcnQgeyBnZXRRdWVyeVN0YXR1c0xhYmVsLCBnZXRRdWVyeVN0YXR1c0NvbG9yIH0gZnJvbSAnLi91dGlscydcbmltcG9ydCBFeHBsb3JlciBmcm9tICcuL0V4cGxvcmVyJ1xuaW1wb3J0IExvZ28gZnJvbSAnLi9Mb2dvJ1xuXG5pbnRlcmZhY2UgRGV2dG9vbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWFjdCB0YWJsZSB0byBhdHRhY2ggdGhlIGRldnRvb2xzIHRvLlxuICAgKi9cbiAgdGFibGU6IGFueVxuICAvKipcbiAgICogU2V0IHRoaXMgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgZGV2IHRvb2xzIHRvIGRlZmF1bHQgdG8gYmVpbmcgb3BlblxuICAgKi9cbiAgaW5pdGlhbElzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgcGFuZWwuIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIGV0Yy5cbiAgICovXG4gIHBhbmVsUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sXG4gICAgSFRNTERpdkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSBjbG9zZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICBjbG9zZUJ1dHRvblByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIEhUTUxCdXR0b25FbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgdG9nZ2xlIGJ1dHRvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgb25DbGljayAoZXh0ZW5kIGRlZmF1bHQgaGFuZGxlciksIGV0Yy5cbiAgICovXG4gIHRvZ2dsZUJ1dHRvblByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIEhUTUxCdXR0b25FbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHJlbmRlciB0aGUgZGV2dG9vbHMgaW5zaWRlIGEgZGlmZmVyZW50IHR5cGUgb2YgY29udGFpbmVyIGVsZW1lbnQgZm9yIGExMXkgcHVycG9zZXMuXG4gICAqIEFueSBzdHJpbmcgd2hpY2ggY29ycmVzcG9uZHMgdG8gYSB2YWxpZCBpbnRyaW5zaWMgSlNYIGVsZW1lbnQgaXMgYWxsb3dlZC5cbiAgICogRGVmYXVsdHMgdG8gJ2Zvb3RlcicuXG4gICAqL1xuICBjb250YWluZXJFbGVtZW50Pzogc3RyaW5nIHwgYW55XG59XG5cbmludGVyZmFjZSBEZXZ0b29sc1BhbmVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBzdHlsZSBvYmplY3QgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGlubGluZSBzdHlsZXNcbiAgICovXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIFJlYWN0IGNsYXNzTmFtZSBwcm9wZXJ0eSB1c2VkIHRvIHN0eWxlIGEgY29tcG9uZW50IHdpdGggY2xhc3Nlc1xuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwYW5lbCBpcyBvcGVuIG9yIGNsb3NlZFxuICAgKi9cbiAgaXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHRvZ2dsZXMgdGhlIG9wZW4gYW5kIGNsb3NlIHN0YXRlIG9mIHRoZSBwYW5lbFxuICAgKi9cbiAgc2V0SXNPcGVuOiAoaXNPcGVuOiBib29sZWFuKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHMoe1xuICBpbml0aWFsSXNPcGVuLFxuICB0YWJsZSxcbiAgcGFuZWxQcm9wcyA9IHt9LFxuICB0b2dnbGVCdXR0b25Qcm9wcyA9IHt9LFxuICBjb250YWluZXJFbGVtZW50OiBDb250YWluZXIgPSAnZm9vdGVyJyxcbn06IERldnRvb2xzT3B0aW9ucyk6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCByb290UmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBwYW5lbFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZUxvY2FsU3RvcmFnZShcbiAgICAncmVhY3RUYWJsZURldnRvb2xzT3BlbicsXG4gICAgaW5pdGlhbElzT3BlblxuICApXG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZUlzTW91bnRlZCgpXG5cbiAgY29uc3QgeyBzdHlsZTogcGFuZWxTdHlsZSA9IHt9LCAuLi5vdGhlclBhbmVsUHJvcHMgfSA9IHBhbmVsUHJvcHNcblxuICBjb25zdCB7XG4gICAgc3R5bGU6IHRvZ2dsZUJ1dHRvblN0eWxlID0ge30sXG4gICAgb25DbGljazogb25Ub2dnbGVDbGljayxcbiAgICAuLi5vdGhlclRvZ2dsZUJ1dHRvblByb3BzXG4gIH0gPSB0b2dnbGVCdXR0b25Qcm9wc1xuXG4gIC8vIERvIG5vdCByZW5kZXIgb24gdGhlIHNlcnZlclxuICBpZiAoIWlzTW91bnRlZCgpKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciByZWY9e3Jvb3RSZWZ9IGNsYXNzTmFtZT1cIlJlYWN0VGFibGVEZXZ0b29sc1wiPlxuICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgeyFpc09wZW4gPyAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB7Li4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc31cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICBzZXRJc09wZW4odHJ1ZSlcbiAgICAgICAgICAgICAgb25Ub2dnbGVDbGljayAmJiBvblRvZ2dsZUNsaWNrKGUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgICAgICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgIG1hcmdpbjogJy41cmVtJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICAgICAgICAgICAgZm9udFNpemU6ICcxLjVlbScsXG4gICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICB3aWR0aDogJ2ZpdC1jb250ZW50JyxcbiAgICAgICAgICAgICAgLi4udG9nZ2xlQnV0dG9uU3R5bGUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMb2dvIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFJlYWN0VGFibGVEZXZ0b29sc1BhbmVsXG4gICAgICAgICAgICByZWY9e3BhbmVsUmVmIGFzIGFueX1cbiAgICAgICAgICAgIHsuLi5vdGhlclBhbmVsUHJvcHN9XG4gICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICBpc09wZW49e2lzT3Blbn1cbiAgICAgICAgICAgIHNldElzT3Blbj17c2V0SXNPcGVufVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnODB2aCcsXG4gICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgIC4uLnBhbmVsU3R5bGUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgPC9Db250YWluZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFJlYWN0VGFibGVEZXZ0b29sc1BhbmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIERldnRvb2xzUGFuZWxPcHRpb25zXG4+KGZ1bmN0aW9uIFJlYWN0VGFibGVEZXZ0b29sc1BhbmVsKHByb3BzLCByZWYpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCB7XG4gICAgdGFibGUsXG4gICAgaXNPcGVuID0gdHJ1ZSxcbiAgICBzZXRJc09wZW4sXG4gICAgLi4ucGFuZWxQcm9wc1xuICB9ID0gcHJvcHMgYXMgRGV2dG9vbHNQYW5lbE9wdGlvbnMgJiB7XG4gICAgdGFibGU6IFRhYmxlPGFueT5cbiAgfVxuXG4gIC8vIGNvbnN0IFthY3RpdmVNYXRjaElkLCBzZXRBY3RpdmVSb3V0ZUlkXSA9IHVzZUxvY2FsU3RvcmFnZShcbiAgLy8gICAncmVhY3RUYWJsZURldnRvb2xzQWN0aXZlUm91dGVJZCcsXG4gIC8vICAgJycsXG4gIC8vIClcblxuICByZXR1cm4gKFxuICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICA8UGFuZWwgcmVmPXtyZWZ9IGNsYXNzTmFtZT1cIlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsXCIgey4uLnBhbmVsUHJvcHN9PlxuICAgICAgICA8c3R5bGVcbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgX19odG1sOiBgXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKiB7XG4gICAgICAgICAgICAgIHNjcm9sbGJhci1jb2xvcjogJHt0aGVtZS5iYWNrZ3JvdW5kQWx0fSAke3RoZW1lLmdyYXl9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXIsIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXIge1xuICAgICAgICAgICAgICB3aWR0aDogMWVtO1xuICAgICAgICAgICAgICBoZWlnaHQ6IDFlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHt0aGVtZS5iYWNrZ3JvdW5kQWx0fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogLjVlbTtcbiAgICAgICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgJHt0aGVtZS5iYWNrZ3JvdW5kQWx0fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBgLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgZmxleDogJzEgMSA1MDBweCcsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6ICc0MCUnLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHt0aGVtZS5ncmF5QWx0fWAsXG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0aGVtZS5iYWNrZ3JvdW5kQWx0LFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nb1xuICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzT3BlbihmYWxzZSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnYXV0bycsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6ICdjbGFtcCguOHJlbSwgMnZ3LCAxLjNyZW0pJyxcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJlYWN0IFRhYmxleycgJ31cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogMTAwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBEZXZ0b29sc1xuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtpc09wZW4gPyAoXG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgUmVhY3QgVGFibGUgRGV2dG9vbHNcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgICAgICAgICAgZmxleDogJzEnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiSW5zdGFuY2VcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJy41cmVtJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlN0YXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0U3RhdGUoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJy41cmVtJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkNvbHVtbnNcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRBbGxDb2x1bW5zKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkNvcmUgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRDb3JlUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkZpbHRlcmVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0RmlsdGVyZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU29ydGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0U29ydGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkdyb3VwZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRHcm91cGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkV4cGFuZGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0RXhwYW5kZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHsvKiA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiUm93IE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Um93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+ICovfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvUGFuZWw+XG4gICAgPC9UaGVtZVByb3ZpZGVyPlxuICApXG59KVxuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmZ1bmN0aW9uIFNrZWxldG9uKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWFuaW1hdGUtcHVsc2UgcHMtcm91bmRlZC1tZCBwcy1iZy1mb3JlZ3JvdW5kLzEwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59XG5cbmV4cG9ydCB7IFNrZWxldG9uIH07XG4iLCAiaW1wb3J0IHsgZmxleFJlbmRlciwgdHlwZSBIZWFkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd0Rvd25XaWRlTmFycm93LCBBcnJvd1VwV2lkZU5hcnJvdywgQ2hldnJvbkRvd24sIE1vdmVEb3duLCBNb3ZlVXAsIFBpbiwgUGluT2ZmLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxufSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJQcm9wczxURGF0YT4ge1xuICBoZWFkZXI6IEhlYWRlcjxURGF0YSwgdW5rbm93bj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkSGVhZGVyPFREYXRhPihwcm9wczogSGVhZGVyUHJvcHM8VERhdGE+KSB7XG4gIGNvbnN0IHsgaGVhZGVyLCBjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuXCIsIGNsYXNzTmFtZSl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXMgcHMtZm9udC1tb25vIHBzLXRleHQteHNcIj5cbiAgICAgICAgICB7aGVhZGVyLmlzUGxhY2Vob2xkZXIgPyBudWxsIDogKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1taW4tdy0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLW1pbi13LTAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXMgcHMtdGV4dC1mb3JlZ3JvdW5kLzkwXCI+XG4gICAgICAgICAgICAgICAge2ZsZXhSZW5kZXIoaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLCBoZWFkZXIuZ2V0Q29udGV4dCgpKX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtc2hyaW5rLTAgcHMtZ2FwLTFcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1tbC0xXCI+XG4gICAgICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9XCJkZXNjXCJcbiAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiAtNCB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1vdmVEb3duIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJhc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiYXNjXCJcbiAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeTogNCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlVXAgc2l6ZT17MTR9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5QaW4oKSAmJiBoZWFkZXIuY29sdW1uLmlkICE9PSBcInNlbGVjdFwiICYmIChcbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1weC0wIHBzLWgtNiBwcy13LTZcIj5cbiAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG93biBzaXplPXsxMn0gLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5Tb3J0KCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi50b2dnbGVTb3J0aW5nKCl9PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldE5leHRTb3J0aW5nT3JkZXIoKSA9PT0gXCJkZXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyb3dEb3duV2lkZU5hcnJvdyBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBkZXNjZW5kaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogaGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyb3dVcFdpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgYXNjZW5kaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFggc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbCBzb3J0aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBoZWFkZXIuY29sdW1uLnBpbihoZWFkZXIuY29sdW1uLmdldElzUGlubmVkKCkgPyBmYWxzZSA6IFwibGVmdFwiKX0+XG4gICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW5PZmYgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgVW5waW4gY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBpbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICBQaW4gY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICApfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblJlc2l6ZSgpICYmIChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9eyhlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiIHx8IGUua2V5ID09PSBcIiBcIikge1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJwcy1hYnNvbHV0ZSBwcy1yaWdodC0wIHBzLXRvcC0wIHBzLWgtZnVsbCBwcy13LXB4IHBzLWN1cnNvci1jb2wtcmVzaXplIHBzLWJvcmRlciBwcy1ib3JkZXItdHJhbnNwYXJlbnQgaG92ZXI6cHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgICAgICl9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlJlc2l6ZSBjb2x1bW5cIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkTG9hZGluZ0JhclByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRMb2FkaW5nQmFyKHsgY2xhc3NOYW1lIH06IERhdGFHcmlkTG9hZGluZ0JhclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1sb2FkaW5nLWJhclxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtWzJweF0gcHMtdy1mdWxsIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1iZy10YWJsZS1ib3JkZXIgcHMtei01MFwiLCBjbGFzc05hbWUpfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYW5pbWF0ZS1pbmRldGVybWluYXRlLWJhciBwcy1oLWZ1bGwgcHMtdy0xLzMgcHMtcm91bmRlZC1yLWZ1bGwgcHMtYmctcHJpbWFyeVwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBDaGV2cm9uTGVmdCwgQ2hldnJvblJpZ2h0LCBDaGV2cm9uc0xlZnQsIENoZXZyb25zUmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZFBhZ2luYXRpb25Qcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgdmFyaWFudD86IFwiYmFzaWNcIiB8IFwibnVtZXJpY1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRQYWdpbmF0aW9uKHByb3BzOiBEYXRhR3JpZFBhZ2luYXRpb25Qcm9wcykge1xuICBjb25zdCB7IHRhYmxlLCB2YXJpYW50ID0gXCJiYXNpY1wiIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHBhZ2VJbmRleCB9ID0gdGFibGUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uO1xuICBjb25zdCBwYWdlQ291bnQgPSB0YWJsZS5nZXRQYWdlQ291bnQoKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcm91bmRlZC1iLWxnIHBzLW92ZXJmbG93LWNsaXAgcHMtc3RpY2t5IHBzLWJvdHRvbS0wIHBzLWxlZnQtMCBwcy1ib3JkZXItdC0wIHctZnVsbCBwcy16LTIwIHBzLXAtMFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtc3BhY2UteC0yIHBzLXB5LTIgcHMtcHgtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLWJhY2tkcm9wLWJsdXItc20gcHMtYmctdGFibGUtaGVhZC85MFwiPlxuICAgICAgICB7dmFyaWFudCA9PT0gXCJiYXNpY1wiID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFByZXZpb3VzXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5uZXh0UGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIE5leHRcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KDApfSBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbnNMZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfSBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbkxlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXRleHQteHMgcHMtZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICBQYWdlXG4gICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIG1pbj17MX1cbiAgICAgICAgICAgICAgICAgIG1heD17cGFnZUNvdW50fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhZ2VJbmRleCArIDF9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTE2XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlSW5kZXggPSBlLnRhcmdldC52YWx1ZSA/IE51bWJlcihlLnRhcmdldC52YWx1ZSkgLSAxIDogMDtcbiAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VJbmRleCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtc2hyaW5rLTAgcHMtdy1tYXhcIj5vZiB7cGFnZUNvdW50fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5uZXh0UGFnZSgpfSBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleChwYWdlQ291bnQgLSAxKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbnNSaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjb2x1bW46IENvbHVtbjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGtpbmQ6IFwiaGVhZGVyXCIgfCBcImNlbGxcIikge1xuICBjb25zdCBpc1Bpbm5lZCA9IGNvbHVtbi5nZXRJc1Bpbm5lZCgpO1xuICBjb25zdCBpc0xlZnRQaW5uZWQgPSBpc1Bpbm5lZCA9PT0gXCJsZWZ0XCI7XG4gIGNvbnN0IGlzUmlnaHRQaW5uZWQgPSBpc1Bpbm5lZCA9PT0gXCJyaWdodFwiO1xuICBjb25zdCBpc1NlbGVjdENvbHVtbiA9IGNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiO1xuXG4gIHJldHVybiB7XG4gICAgY2xhc3NOYW1lOiBjbihcbiAgICAgIFwicHMtZ3JvdXAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgXCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtdGV4dC1lbGxpcHNpc1wiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBcInBzLXN0aWNreVwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImhlYWRlclwiICYmIChpc1NlbGVjdENvbHVtbiA/IFwicHMtei0zMFwiIDogXCJwcy16LTIwXCIpLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImNlbGxcIiAmJiAoaXNTZWxlY3RDb2x1bW4gPyBcInBzLXotMTBcIiA6IFwicHMtei0wXCIpLFxuICAgICAgaXNMZWZ0UGlubmVkICYmIFwicHMtc2hhZG93LVsycHhfMF81cHhfLTJweF9yZ2JhKDAsMCwwLDAuMSldXCIsXG4gICAgICBpc1JpZ2h0UGlubmVkICYmIFwicHMtc2hhZG93LVstMnB4XzBfNXB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpXVwiLFxuICAgICksXG4gICAgc3R5bGU6IHtcbiAgICAgIG1pbldpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIGxlZnQ6IGlzTGVmdFBpbm5lZCA/IGAke2NvbHVtbi5nZXRTdGFydChcImxlZnRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IGlzUmlnaHRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0QWZ0ZXIoXCJyaWdodFwiKX1weGAgOiB1bmRlZmluZWQsXG4gICAgICBwb3NpdGlvbjogaXNQaW5uZWQgPyAoXCJzdGlja3lcIiBhcyBjb25zdCkgOiB1bmRlZmluZWQsXG4gICAgfSBhcyBDU1NQcm9wZXJ0aWVzLFxuICB9O1xufVxuIiwgImltcG9ydCAqIGFzIFRvb2x0aXBQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10b29sdGlwXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVG9vbHRpcFByb3ZpZGVyID0gVG9vbHRpcFByaW1pdGl2ZS5Qcm92aWRlcjtcblxuY29uc3QgVG9vbHRpcCA9IFRvb2x0aXBQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgVG9vbHRpcFRyaWdnZXIgPSBUb29sdGlwUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFRvb2x0aXBDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8VG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFRvb2x0aXBQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJnLXByaW1hcnkgcHMtcHgtMyBwcy1weS0xLjUgcHMtdGV4dC14cyBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1hbmltYXRlLWluIHBzLWZhZGUtaW4tMCBwcy16b29tLWluLTk1IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvVG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblRvb2x0aXBDb250ZW50LmRpc3BsYXlOYW1lID0gVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBUb29sdGlwLCBUb29sdGlwVHJpZ2dlciwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciB9O1xuIiwgImltcG9ydCB7IEtleVJvdW5kIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyLCBUb29sdGlwVHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3Rvb2x0aXBcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkSGVhZGVyQ2VsbCh7IGNvbHVtbiB9OiB7IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICB7Y29sdW1uLmlzSW5QcmltYXJ5S2V5ICYmIChcbiAgICAgICAgPFRvb2x0aXBQcm92aWRlciBkZWxheUR1cmF0aW9uPXsxMjB9PlxuICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgIDxLZXlSb3VuZCBzaXplPXsxMn0gY2xhc3NOYW1lPVwicHMtdGV4dC1wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcFRyaWdnZXI+XG4gICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInRleHQteHNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+UHJpbWFyeSBLZXk8L3NwYW4+XG4gICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICAgICApfVxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1tZWRpdW0gcHMtdHJ1bmNhdGVcIj57Y29sdW1uLm5hbWV9PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzcwIHBzLWxvd2VyY2FzZSBwcy10cnVuY2F0ZVwiPlxuICAgICAgICB7Y29sdW1uLmRhdGF0eXBlLm5hbWV9XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gXCIuL0Jvb2xlYW5JbnB1dFwiO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSBcIi4vRGF0ZUlucHV0XCI7XG5pbXBvcnQgeyBFbnVtSW5wdXQgfSBmcm9tIFwiLi9FbnVtSW5wdXRcIjtcbmltcG9ydCB7IEpzb25JbnB1dCB9IGZyb20gXCIuL0pzb25JbnB1dFwiO1xuaW1wb3J0IHsgTnVtZXJpY0lucHV0IH0gZnJvbSBcIi4vTnVtZXJpY0lucHV0XCI7XG5pbXBvcnQgeyBSYXdJbnB1dCB9IGZyb20gXCIuL1Jhd0lucHV0XCI7XG5pbXBvcnQgeyBUaW1lSW5wdXQgfSBmcm9tIFwiLi9UaW1lSW5wdXRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0KHByb3BzOiB7XG4gIGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQ6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZDtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IHsgY2VsbCwgY29sdW1uLCBvblN1Ym1pdCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgZ3JvdXAsIG9wdGlvbnMsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcbiAgY29uc3QgcmVhZG9ubHkgPSBjb2x1bW4uaXNDb21wdXRlZCB8fCBwcm9wcy5yZWFkb25seTtcblxuICBjb25zdCBjZWxsVmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgLy8gb24gcm93IGluc2VydGlvbnMsIHdlIHRyZWF0IHVuZGVmaW5lZCBhcyBlbXB0eSBpbnB1dFxuICBjb25zdCB2YWx1ZSA9IGNlbGxWYWx1ZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGNlbGxWYWx1ZTtcblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJ0aW1lXCIpIHtcbiAgICByZXR1cm4gPFRpbWVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpzb25JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImVudW1cIikge1xuICAgIHJldHVybiA8RW51bUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBvcHRpb25zPXtvcHRpb25zfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gPE51bWVyaWNJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxSYXdJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXtpc09iamVjdFR5cGUodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWV9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbklucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCb29sZWFuSW5wdXQocHJvcHM6IEJvb2xlYW5JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbikpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdmFsdWVUb1N1Ym1pdCA9IHNldFRvTnVsbCA/IG51bGwgOiBjdXJyZW50VmFsdWU7XG4gICAgaWYgKHZhbHVlVG9TdWJtaXQgIT09IHZhbHVlKSB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZVRvU3VibWl0KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1nYXAtNCBwcy1weS0wIHBzLXB4LTJcIj5cbiAgICAgICAgPExhYmVsIGh0bWxGb3I9XCJib29sZWFuLWlucHV0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPlxuICAgICAgICAgIEJvb2xlYW5cbiAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yNCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgaWQ9XCJib29sZWFuLWlucHV0XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgZGF0YS12YWx1ZVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1mb250LW1vbm9cIlxuICAgICAgICAgIGluaXRpYWw9e3sgeDogLTQwLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyB4OiAwLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xMiwgZGVsYXk6IDAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtzZXRUb051bGwgPyBcIk5VTExcIiA6IFN0cmluZyhjdXJyZW50VmFsdWUpfVxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBMYWJlbFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWxhYmVsXCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGxhYmVsVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy1sZWFkaW5nLW5vbmUgcGVlci1kaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgcGVlci1kaXNhYmxlZDpwcy1vcGFjaXR5LTcwXCIsXG4pO1xuXG5jb25zdCBMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+ICYgVmFyaWFudFByb3BzPHR5cGVvZiBsYWJlbFZhcmlhbnRzPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8TGFiZWxQcmltaXRpdmUuUm9vdCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihsYWJlbFZhcmlhbnRzKCksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuTGFiZWwuZGlzcGxheU5hbWUgPSBMYWJlbFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBMYWJlbCB9O1xuIiwgImltcG9ydCAqIGFzIFN3aXRjaFByaW1pdGl2ZXMgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zd2l0Y2hcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTd2l0Y2ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFN3aXRjaFByaW1pdGl2ZXMuUm9vdFxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaW5saW5lLWZsZXggcHMtaC01IHBzLXctOSBwcy1zaHJpbmstMCBwcy1jdXJzb3ItcG9pbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1mdWxsIHBzLWJvcmRlci0yIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtYmFja2dyb3VuZCBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtYmctaW5wdXRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgPlxuICAgIDxTd2l0Y2hQcmltaXRpdmVzLlRodW1iXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXBvaW50ZXItZXZlbnRzLW5vbmUgcHMtYmxvY2sgcHMtaC00IHBzLXctNCBwcy1yb3VuZGVkLWZ1bGwgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctbGcgcHMtcmluZy0wIHBzLXRyYW5zaXRpb24tdHJhbnNmb3JtIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTQgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy10cmFuc2xhdGUteC0wXCIsXG4gICAgICApfVxuICAgIC8+XG4gIDwvU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuKSk7XG5Td2l0Y2guZGlzcGxheU5hbWUgPSBTd2l0Y2hQcmltaXRpdmVzLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFN3aXRjaCB9O1xuIiwgImltcG9ydCB7IENvcm5lckRvd25MZWZ0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dEFjdGlvbnNQcm9wcyB7XG4gIG9uU2F2ZT86ICgpID0+IHZvaWQ7XG4gIG9uQ2FuY2VsPzogKCkgPT4gdm9pZDtcbiAgb25DbG9zZT86ICgpID0+IHZvaWQ7XG4gIG9uTnVsbENoYW5nZT86IChjaGVja2VkOiBib29sZWFuKSA9PiB2b2lkO1xuICBpc051bGw/OiBib29sZWFuO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IElucHV0QWN0aW9ucyA9ICh7XG4gIG9uU2F2ZSxcbiAgb25DYW5jZWwsXG4gIG9uQ2xvc2UsXG4gIG9uTnVsbENoYW5nZSxcbiAgaXNOdWxsID0gZmFsc2UsXG4gIHJlYWRvbmx5LFxufTogSW5wdXRBY3Rpb25zUHJvcHMpID0+IHtcbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKG9uTnVsbENoYW5nZSkgb25OdWxsQ2hhbmdlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSAoKSA9PiB7XG4gICAgaWYgKG9uU2F2ZSkgb25TYXZlKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgaWYgKG9uQ2FuY2VsKSBvbkNhbmNlbCgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy10ZXh0LXhzIHBzLVwiPlxuICAgICAgeyFyZWFkb25seSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXAtMiBwcy1tci1hdXRvXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyXCIgb25DbGljaz17aGFuZGxlU2F2ZX0+XG4gICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICA8Q29ybmVyRG93bkxlZnQgc2l6ZT17MTJ9IHN0cm9rZVdpZHRoPXsyfSAvPlxuICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgIFNhdmUgY2hhbmdlc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyXCIgb25DbGljaz17aGFuZGxlQ2FuY2VsfT5cbiAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1qdXN0aWZ5LWNlbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtaC02IHBzLXctNiBwcy1yb3VuZGVkLW1kIHBzLWJnLW11dGVkIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy10ZXh0LVs4cHhdIHBzLWxlYWRpbmctbm9uZSBwcy1mb250LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgRXNjXG4gICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgQ2FuY2VsIGNoYW5nZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHtvbk51bGxDaGFuZ2UgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXAtMlwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXJcIiBodG1sRm9yPVwic2V0LW51bGxhYmxlXCI+XG4gICAgICAgICAgICAgICAgPFN3aXRjaCBpZD1cInNldC1udWxsYWJsZVwiIGNoZWNrZWQ9e2lzTnVsbH0gb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVOdWxsQ2hhbmdlfSAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPlNldCB0byBOVUxMPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcbiIsICJpbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgbG9jYWxpemVkRm9ybWF0IGZyb20gXCJkYXlqcy9wbHVnaW4vbG9jYWxpemVkRm9ybWF0XCI7XG5pbXBvcnQgeyB0eXBlIEZvcm1FdmVudCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2NhbGVuZGFyXCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuaW1wb3J0IHsgdXNlSW5wdXQgfSBmcm9tIFwiLi91c2UtaW5wdXRcIjtcblxuLy8gSW5pdGlhbGl6ZSBkYXlqcyBwbHVnaW5zXG5kYXlqcy5leHRlbmQobG9jYWxpemVkRm9ybWF0KTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlSW5wdXRQcm9wcyB7XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZUlucHV0KHByb3BzOiBEYXRlSW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCB2YWx1ZSwgcmVhZG9ubHksIGNvbHVtbiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICAvLyBQYXJzZSB0aGUgaW5pdGlhbCBkYXRlIGRpcmVjdGx5XG4gIGNvbnN0IHBhcnNlZEluaXRpYWxEYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0gZGF5anMoaW5pdGlhbFZhbHVlKTtcbiAgICByZXR1cm4gcGFyc2VkLmlzVmFsaWQoKSA/IHBhcnNlZC50b0RhdGUoKSA6IG5ldyBEYXRlKCk7XG4gIH0sIFtpbml0aWFsVmFsdWVdKTtcblxuICAvLyBJbml0aWFsaXplIHN0YXRlcyB3aXRoIHRoZSBwYXJzZWQgZGF0ZVxuICBjb25zdCBbc2VsZWN0ZWREYXRlLCBzZXRTZWxlY3RlZERhdGVdID0gdXNlU3RhdGU8RGF0ZSB8IHVuZGVmaW5lZD4ocGFyc2VkSW5pdGlhbERhdGUpO1xuICBjb25zdCBbY3VycmVudE1vbnRoLCBzZXRDdXJyZW50TW9udGhdID0gdXNlU3RhdGU8RGF0ZT4ocGFyc2VkSW5pdGlhbERhdGUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2U6IGJhc2VIYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUsIHNldFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBDdXN0b20gb25DaGFuZ2UgaGFuZGxlclxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBiYXNlSGFuZGxlT25DaGFuZ2UoZXZlbnQpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgY29uc3QgcGFyc2VkID0gZGF5anMobmV3VmFsdWUpO1xuICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgY29uc3QgbmV3RGF0ZSA9IHBhcnNlZC50b0RhdGUoKTtcbiAgICAgICAgc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUpO1xuICAgICAgICBzZXRDdXJyZW50TW9udGgobmV3RGF0ZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICAvLyBJbnZhbGlkIGRhdGUgZm9ybWF0XG4gICAgfVxuICB9O1xuXG4gIC8vIFVwZGF0ZSBpbnB1dFZhbHVlIHdoZW4gY2FsZW5kYXIgc2VsZWN0aW9uIGNoYW5nZXNcbiAgY29uc3QgaGFuZGxlQ2FsZW5kYXJTZWxlY3QgPSAoZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuO1xuXG4gICAgc2V0U2VsZWN0ZWREYXRlKGRhdGUpO1xuICAgIHNldEN1cnJlbnRNb250aChkYXRlKTtcblxuICAgIGNvbnN0IGNvbHVtblR5cGUgPSBjb2x1bW4/LmRhdGF0eXBlPy5uYW1lIHx8IChjb2x1bW4/LmRhdGF0eXBlIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICBjb25zdCBkYkZvcm1hdCA9IGdldEZvcm1hdEZvclR5cGUoY29sdW1uVHlwZSk7XG5cbiAgICBpZiAoZGJGb3JtYXQpIHtcbiAgICAgIHNldFZhbHVlKGRheWpzKGRhdGUpLmZvcm1hdChkYkZvcm1hdCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRWYWx1ZShkYXlqcyhkYXRlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0Rm9ybWF0Rm9yVHlwZSA9ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgIHJldHVybiBcIllZWVktTU0tRERcIjtcbiAgICAgIGNhc2UgXCJ0aW1lXCI6XG4gICAgICAgIHJldHVybiBcIkhIOm1tOnNzLlNTU1NTXCI7XG4gICAgICBjYXNlIFwidGltZXN0YW1wXCI6XG4gICAgICAgIHJldHVybiBcIllZWVktTU0tREQgSEg6bW06c3MuU1NTU1NTXCI7XG4gICAgICBjYXNlIFwidGltZXN0YW1wdHpcIjpcbiAgICAgICAgcmV0dXJuIFwiWVlZWS1NTS1ERCBISDptbTpzcy5TU1NTU1NaXCI7XG4gICAgICBjYXNlIFwidGltZXR6XCI6XG4gICAgICAgIHJldHVybiBcIkhIOm1tOnNzLlNTU1NTU1pcIjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuXG4gIC8vIEZvcm1hdCB0aGUgZGF0ZSB1c2luZyBkYXlqcyBiYXNlZCBvbiBkZXRlY3RlZCBmb3JtYXRcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRlID0gZGF5anMoaW5wdXRWYWx1ZSk7XG4gICAgICBpZiAoIWRhdGUuaXNWYWxpZCgpKSByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICAgIGNvbnN0IGhhc1RpbWUgPSBpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKTtcblxuICAgICAgLy8gSHVtYW4tcmVhZGFibGUgZm9ybWF0IChsb2NhbGl6ZWQpXG4gICAgICBpZiAoaGFzVGltZSkge1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoXCJMTCBMVFNcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoXCJMTFwiKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH1cbiAgfSwgW2lucHV0VmFsdWVdKTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVNldE5vdyA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAvLyBDcmVhdGUgYSBmcmVzaCBuZXcgRGF0ZSBvYmplY3RcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gICAgLy8gVXBkYXRlIHN0YXRlc1xuICAgIHNldFNlbGVjdGVkRGF0ZShub3cpO1xuICAgIHNldEN1cnJlbnRNb250aChub3cpO1xuXG4gICAgLy8gRm9ybWF0IGZvciBpbnB1dFxuICAgIGNvbnN0IGNvbHVtblR5cGUgPSBjb2x1bW4/LmRhdGF0eXBlPy5uYW1lIHx8IChjb2x1bW4/LmRhdGF0eXBlIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICBjb25zdCBkYkZvcm1hdCA9IGdldEZvcm1hdEZvclR5cGUoY29sdW1uVHlwZSk7XG4gICAgc2V0VmFsdWUoZGJGb3JtYXQgPyBkYXlqcyhub3cpLmZvcm1hdChkYkZvcm1hdCkgOiBkYXlqcyhub3cpLnRvSVNPU3RyaW5nKCkpO1xuICB9O1xuXG4gIC8vIEdlbmVyYXRlIG1vbnRoIG9wdGlvbnMgZm9yIHRoZSBzZWxlY3RcbiAgY29uc3QgbW9udGhzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBbXG4gICAgICB7IHZhbHVlOiBcIjBcIiwgbGFiZWw6IFwiSmFudWFyeVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjFcIiwgbGFiZWw6IFwiRmVicnVhcnlcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIyXCIsIGxhYmVsOiBcIk1hcmNoXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiM1wiLCBsYWJlbDogXCJBcHJpbFwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjRcIiwgbGFiZWw6IFwiTWF5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNVwiLCBsYWJlbDogXCJKdW5lXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNlwiLCBsYWJlbDogXCJKdWx5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiN1wiLCBsYWJlbDogXCJBdWd1c3RcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI4XCIsIGxhYmVsOiBcIlNlcHRlbWJlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjlcIiwgbGFiZWw6IFwiT2N0b2JlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjEwXCIsIGxhYmVsOiBcIk5vdmVtYmVyXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiMTFcIiwgbGFiZWw6IFwiRGVjZW1iZXJcIiB9LFxuICAgIF0sXG4gICAgW10sXG4gICk7XG5cbiAgLy8gR2V0IHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIHZhbHVlc1xuICBjb25zdCBjdXJyZW50TW9udGhWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBjdXJyZW50TW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpO1xuICB9LCBbY3VycmVudE1vbnRoXSk7XG5cbiAgY29uc3QgW3llYXJWYWx1ZSwgc2V0WWVhclZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudE1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIG1vbnRoIHNlbGVjdGlvbiBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlTW9udGhDaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5ld01vbnRoID0gbmV3IERhdGUoY3VycmVudE1vbnRoKTtcbiAgICBuZXdNb250aC5zZXRNb250aChwYXJzZUludCh2YWx1ZSkpO1xuICAgIHNldEN1cnJlbnRNb250aChuZXdNb250aCk7XG5cbiAgICAvLyBJZiB3ZSBhbHNvIGhhdmUgYSBzZWxlY3RlZCBkYXRlLCB1cGRhdGUgaXRzIG1vbnRoXG4gICAgaWYgKHNlbGVjdGVkRGF0ZSkge1xuICAgICAgY29uc3QgbmV3U2VsZWN0ZWREYXRlID0gbmV3IERhdGUoc2VsZWN0ZWREYXRlKTtcbiAgICAgIG5ld1NlbGVjdGVkRGF0ZS5zZXRNb250aChwYXJzZUludCh2YWx1ZSkpO1xuICAgICAgc2V0U2VsZWN0ZWREYXRlKG5ld1NlbGVjdGVkRGF0ZSk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgaW5wdXQgdmFsdWUgdG8gcmVmbGVjdCB0aGUgbmV3IGRhdGVcbiAgICAgIGNvbnN0IGNvbHVtblR5cGUgPSBjb2x1bW4/LmRhdGF0eXBlPy5uYW1lIHx8IChjb2x1bW4/LmRhdGF0eXBlIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICAgIGNvbnN0IGRiRm9ybWF0ID0gZ2V0Rm9ybWF0Rm9yVHlwZShjb2x1bW5UeXBlKTtcbiAgICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gZGF5anMobmV3U2VsZWN0ZWREYXRlKS5mb3JtYXQoZGJGb3JtYXQpIDogZGF5anMobmV3U2VsZWN0ZWREYXRlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gSGFuZGxlIHllYXIgaW5wdXQgY2hhbmdlXG4gIGNvbnN0IGhhbmRsZVllYXJDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBuZXdZZWFyID0gZS50YXJnZXQudmFsdWU7XG4gICAgc2V0WWVhclZhbHVlKG5ld1llYXIpO1xuXG4gICAgLy8gT25seSB1cGRhdGUgZGF0ZXMgaWYgd2UgaGF2ZSBhIHZhbGlkIHllYXJcbiAgICBpZiAoL15cXGR7NH0kLy50ZXN0KG5ld1llYXIpKSB7XG4gICAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQobmV3WWVhcik7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgbW9udGggZGlzcGxheVxuICAgICAgY29uc3QgbmV3TW9udGggPSBuZXcgRGF0ZShjdXJyZW50TW9udGgpO1xuICAgICAgbmV3TW9udGguc2V0RnVsbFllYXIoeWVhcik7XG4gICAgICBzZXRDdXJyZW50TW9udGgobmV3TW9udGgpO1xuXG4gICAgICAvLyBBbHdheXMgdXBkYXRlIGlucHV0IHZhbHVlIGV2ZW4gaWYgbm8gZGF0ZSBpcyBzZWxlY3RlZCB5ZXRcbiAgICAgIC8vIElmIG5vIGRhdGUgc2VsZWN0ZWQsIGNyZWF0ZSBvbmUgdXNpbmcgY3VycmVudCBtb250aCB3aXRoIHRoZSBuZXcgeWVhclxuICAgICAgY29uc3QgbmV3U2VsZWN0ZWREYXRlID0gc2VsZWN0ZWREYXRlID8gbmV3IERhdGUoc2VsZWN0ZWREYXRlKSA6IG5ldyBEYXRlKG5ld01vbnRoKTsgLy8gQ3JlYXRlIG5ldyBkYXRlIGZyb20gbW9udGggdmlldyBpZiBubyBzZWxlY3Rpb25cblxuICAgICAgbmV3U2VsZWN0ZWREYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xuICAgICAgc2V0U2VsZWN0ZWREYXRlKG5ld1NlbGVjdGVkRGF0ZSk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgaW5wdXQgdmFsdWVcbiAgICAgIGNvbnN0IGNvbHVtblR5cGUgPSBjb2x1bW4/LmRhdGF0eXBlPy5uYW1lIHx8IChjb2x1bW4/LmRhdGF0eXBlIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICAgIGNvbnN0IGRiRm9ybWF0ID0gZ2V0Rm9ybWF0Rm9yVHlwZShjb2x1bW5UeXBlKTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZGJGb3JtYXQgPyBkYXlqcyhuZXdTZWxlY3RlZERhdGUpLmZvcm1hdChkYkZvcm1hdCkgOiBkYXlqcyhuZXdTZWxlY3RlZERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG5cbiAgICAgIC8vIERlYnVnIGxvZ2dpbmdcbiAgICAgIGNvbnNvbGUubG9nKFwiWWVhciB1cGRhdGVkOlwiLCB7XG4gICAgICAgIHllYXIsXG4gICAgICAgIG5ld1NlbGVjdGVkRGF0ZSxcbiAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgIGRiRm9ybWF0LFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIFVwZGF0ZSB5ZWFyIHZhbHVlIHdoZW4gc2VsZWN0ZWREYXRlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWREYXRlKSB7XG4gICAgICBzZXRZZWFyVmFsdWUoc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9LCBbc2VsZWN0ZWREYXRlXSk7XG5cbiAgLy8gVXBkYXRlIG1vbnRoIGFuZCB5ZWFyIHdoZW4gY2FsZW5kYXIgbW9udGggY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50TW9udGgpIHtcbiAgICAgIHNldFllYXJWYWx1ZShjdXJyZW50TW9udGguZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKTtcbiAgICB9XG4gIH0sIFtjdXJyZW50TW9udGhdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXByLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIj5cbiAgICAgICAgICB7LyogQHRzLWV4cGVjdC1lcnJvciAtIFRPRE86IGZpeCB0aGlzICovfVxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2V0Tm93fVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcHgtMiBwcy1weS0xIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtc20gcHMtYmctbmV1dHJhbC0xMDAgcHMtYm9yZGVyIHBzLWJvcmRlci1uZXV0cmFsLTIwMCBob3Zlcjpwcy1ib3JkZXItcHJpbWFyeSBob3Zlcjpwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgTk9XXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTAgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtbWItMiBwcy1nYXAtMlwiPlxuICAgICAgICAgIHsvKiBAdHMtZXhwZWN0LWVycm9yIC0gVE9ETzogZml4IHRoaXMgKi99XG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17Y3VycmVudE1vbnRoVmFsdWV9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZU1vbnRoQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJNb250aFwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge21vbnRocy5tYXAoKG1vbnRoKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXttb250aC52YWx1ZX0gdmFsdWU9e21vbnRoLnZhbHVlfT5cbiAgICAgICAgICAgICAgICAgIHttb250aC5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgey8qIEB0cy1leHBlY3QtZXJyb3IgLSBUT0RPOiBmaXggdGhpcyAqL31cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOCBwcy13LTIwIHBzLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHZhbHVlPXt5ZWFyVmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlWWVhckNoYW5nZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiWWVhclwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxEYXlQaWNrZXJXcmFwcGVyXG4gICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0ZX1cbiAgICAgICAgICBtb250aD17Y3VycmVudE1vbnRofVxuICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVDYWxlbmRhclNlbGVjdH1cbiAgICAgICAgICBvbk1vbnRoQ2hhbmdlPXtzZXRDdXJyZW50TW9udGh9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LWZvcmVncm91bmRcIj57Zm9ybWF0dGVkRGF0ZX08L2NvZGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnMgb25TYXZlPXtoYW5kbGVTYXZlfSBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgPC8+XG4gICk7XG59XG5cbi8vIEEgd3JhcHBlciBjb21wb25lbnQgdG8gZW5zdXJlIHByb3BlciBwcm9wcyBhcmUgcGFzc2VkIHRvIERheVBpY2tlclxuZnVuY3Rpb24gRGF5UGlja2VyV3JhcHBlcih7XG4gIHNlbGVjdGVkLFxuICBtb250aCxcbiAgb25TZWxlY3QsXG4gIG9uTW9udGhDaGFuZ2UsXG4gIGRpc2FibGVkLFxufToge1xuICBzZWxlY3RlZD86IERhdGU7XG4gIG1vbnRoOiBEYXRlO1xuICBvblNlbGVjdDogKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIG9uTW9udGhDaGFuZ2U6IChkYXRlOiBEYXRlKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59KSB7XG4gIHJldHVybiAoXG4gICAgPENhbGVuZGFyXG4gICAgICBtb2RlPVwic2luZ2xlXCJcbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG1vbnRoPXttb250aH1cbiAgICAgIG9uTW9udGhDaGFuZ2U9e29uTW9udGhDaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIlxuICAgICAgY2FwdGlvbkxheW91dD1cImRyb3Bkb3duXCJcbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRGF5UGlja2VyIH0gZnJvbSBcInJlYWN0LWRheS1waWNrZXJcIjtcblxuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IHR5cGUgQ2FsZW5kYXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEYXlQaWNrZXI+O1xuXG5mdW5jdGlvbiBDYWxlbmRhcih7IGNsYXNzTmFtZSwgY2xhc3NOYW1lcywgc2hvd091dHNpZGVEYXlzID0gdHJ1ZSwgLi4ucHJvcHMgfTogQ2FsZW5kYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxEYXlQaWNrZXJcbiAgICAgIG1vZGU9XCJzaW5nbGVcIlxuICAgICAgYW5pbWF0ZT17dHJ1ZX1cbiAgICAgIGNhcHRpb25MYXlvdXQ9XCJkcm9wZG93blwiXG4gICAgICBzaG93T3V0c2lkZURheXM9e3Nob3dPdXRzaWRlRGF5c31cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1wLTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgIGNsYXNzTmFtZXM9e3tcbiAgICAgICAgbW9udGhzOiBcInBzLWZsZXggcHMtZmxleC1jb2wgc206cHMtZmxleC1yb3cgcHMtc3BhY2UteS00IHNtOnBzLXNwYWNlLXgtNCBzbTpwcy1zcGFjZS15LTBcIixcbiAgICAgICAgbW9udGg6IFwiXCIsXG4gICAgICAgIGNhcHRpb246IFwicHMtc3Itb25seVwiLFxuICAgICAgICBjYXB0aW9uX2xhYmVsOiBcInBzLXRleHQteHMgcHMtZm9udC1tZWRpdW0gcHMtc3Itb25seVwiLFxuICAgICAgICBuYXY6IFwicHMtc3BhY2UteC0xIHBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCIsXG4gICAgICAgIG5hdl9idXR0b246IGNuKFxuICAgICAgICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudDogXCJvdXRsaW5lXCIgfSksXG4gICAgICAgICAgXCJwcy1oLTcgcHMtdy03IHBzLWJnLXRyYW5zcGFyZW50IHBzLXAtMCBwcy1vcGFjaXR5LTUwIGhvdmVyOnBzLW9wYWNpdHktMTAwXCIsXG4gICAgICAgICksXG4gICAgICAgIG5hdl9idXR0b25fcHJldmlvdXM6IFwicHMtYWJzb2x1dGUgcHMtbGVmdC0xXCIsXG4gICAgICAgIG5hdl9idXR0b25fbmV4dDogXCJwcy1hYnNvbHV0ZSBwcy1yaWdodC0xXCIsXG4gICAgICAgIHRhYmxlOiBcInBzLXctZnVsbCBwcy1ib3JkZXItY29sbGFwc2UgcHMtc3BhY2UteS0xXCIsXG4gICAgICAgIGhlYWRfcm93OiBcInBzLWZsZXhcIixcbiAgICAgICAgaGVhZF9jZWxsOiBcInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1yb3VuZGVkLW1kIHBzLWZvbnQtbm9ybWFsIHBzLXRleHQtWzAuOHJlbV0gcHMtZmxleCBwcy1mbGV4LTFcIixcbiAgICAgICAgcm93OiBcInBzLWZsZXggcHMtdy1mdWxsIHBzLW10LTJcIixcbiAgICAgICAgY2VsbDogY24oXG4gICAgICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1wLTAgcHMtdGV4dC1jZW50ZXIgZm9jdXMtd2l0aGluOnBzLXJlbGF0aXZlIGZvY3VzLXdpdGhpbjpwcy16LTIwIFsmOmhhcyhbYXJpYS1zZWxlY3RlZF0uZGF5LW91dHNpZGUpXTpwcy1iZy1hY2NlbnQvNTAgWyY6aGFzKFthcmlhLXNlbGVjdGVkXS5kYXktcmFuZ2UtZW5kKV06cHMtcm91bmRlZC1yLW1kXCIsXG4gICAgICAgICAgcHJvcHMubW9kZSA9PT0gXCJyYW5nZVwiXG4gICAgICAgICAgICA/IFwiWyY6aGFzKD4uZGF5LXJhbmdlLWVuZCldOnBzLXJvdW5kZWQtci1tZCBbJjpoYXMoPi5kYXktcmFuZ2Utc3RhcnQpXTpwcy1yb3VuZGVkLWwtbWQgZmlyc3Q6WyY6aGFzKFthcmlhLXNlbGVjdGVkXSldOnBzLXJvdW5kZWQtbC1tZCBsYXN0OlsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpwcy1yb3VuZGVkLXItbWRcIlxuICAgICAgICAgICAgOiBcIlsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpwcy1yb3VuZGVkLW1kXCIsXG4gICAgICAgICksXG4gICAgICAgIGRheTogY24oXG4gICAgICAgICAgYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50OiBcImdob3N0XCIgfSksXG4gICAgICAgICAgXCJwcy1oLTggcHMtdy04IHBzLXAtMCBwcy1mb250LW5vcm1hbCBhcmlhLXNlbGVjdGVkOnBzLW9wYWNpdHktMTAwXCIsXG4gICAgICAgICksXG4gICAgICAgIGRheV9yYW5nZV9zdGFydDogXCJwcy1kYXktcmFuZ2Utc3RhcnRcIixcbiAgICAgICAgZGF5X3JhbmdlX2VuZDogXCJwcy1kYXktcmFuZ2UtZW5kXCIsXG4gICAgICAgIGRheV9zZWxlY3RlZDpcbiAgICAgICAgICBcIiFwcy1iZy1wcmltYXJ5ICFwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBob3Zlcjpwcy1iZy1wcmltYXJ5IGhvdmVyOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGZvY3VzOnBzLWJnLXByaW1hcnkgZm9jdXM6cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgZGF5X3RvZGF5OiBcInBzLWJnLWFjY2VudCBwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGRheV9vdXRzaWRlOlxuICAgICAgICAgIFwicHMtZGF5LW91dHNpZGUgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGFyaWEtc2VsZWN0ZWQ6cHMtYmctYWNjZW50LzUwIGFyaWEtc2VsZWN0ZWQ6cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGRheV9kaXNhYmxlZDogXCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtb3BhY2l0eS01MFwiLFxuICAgICAgICBkYXlfcmFuZ2VfbWlkZGxlOiBcImFyaWEtc2VsZWN0ZWQ6cHMtYmctYWNjZW50IGFyaWEtc2VsZWN0ZWQ6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBkYXlfaGlkZGVuOiBcInBzLWludmlzaWJsZVwiLFxuICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuQ2FsZW5kYXIuZGlzcGxheU5hbWUgPSBcIkNhbGVuZGFyXCI7XG5cbmV4cG9ydCB7IENhbGVuZGFyIH07XG4iLCAiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VJbnB1dFByb3BzIHtcbiAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5wdXQocHJvcHM6IFVzZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBpbml0aWFsVmFsdWUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPihpbml0aWFsVmFsdWUgPz8gXCJcIik7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4geyBoYW5kbGVPbkNoYW5nZSwgdmFsdWUsIHNldFZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtZ2FwLTQgcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgey8qIFRPRE86IHNjaGVtYSBzZWxlY3Rvci4gKi99XG4gICAgICA8TmF2aWdhdGlvbi5CbG9jayBsYWJlbD1cIlRhYmxlc1wiPlxuICAgICAgICB7dGFibGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgdGFibGVzLm1hcCgodGFibGUpID0+IChcbiAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHt0YWJsZS5zY2hlbWF9LSR7dGFibGUubmFtZX1gfVxuICAgICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVUYWJsZSA9PT0gdGFibGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogY2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcblxuTmF2aWdhdGlvbi5CbG9jayA9IEJsb2NrO1xuTmF2aWdhdGlvbi5JdGVtID0gSXRlbTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IFRhYmxlIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBrZXlNYXAsIHVzZVF1ZXJ5U3RhdGUsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuaW1wb3J0IHsgSU5JVElBTF9EQVRBX1VQREFURURfQVQsIHVzZUludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi91c2UtaW50cm9zcGVjdGlvblwiO1xuXG4vKipcbiAqIEhvb2sgdG8gZW5jYXBzdWxhdGUgYWxsIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGUgYWN0aXZlIHRhYmxlIHNlbGVjdGlvbi5cbiAqIEhhbmRsZXMgc3luY2luZyB3aXRoIFVSTCBwYXJhbXMsIGRlZmF1bHQgc2VsZWN0aW9uLCBhbmQgZXhwb3NlcyBhIHNpbXBsZSBBUEkgZm9yIGNvbnN1bWVycy5cbiAqIFNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aGluIFN0dWRpbyBjb250ZXh0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYVxuICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl0/LnRhYmxlcyB8fCB7fSk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXMsIGFkYXB0ZXIuZGVmYXVsdFNjaGVtYV0pO1xuXG4gIC8vIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgdGFibGVzIGFjcm9zcyBhbGwgc2NoZW1hc1xuICBjb25zdCB0b3RhbFRhYmxlQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMpLnJlZHVjZSgoc3VtLCBzY2hlbWEpID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBPYmplY3Qua2V5cyhzY2hlbWEudGFibGVzKS5sZW5ndGg7XG4gICAgfSwgMCk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXNdKTtcblxuICBjb25zdCBbZmlyc3RUYWJsZV0gPSB0YWJsZXM7XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIEVmZmVjdCB0byBzeW5jIGFjdGl2ZSB0YWJsZSB3aXRoIFVSTCBwYXJhbSBhbmQgZGVmYXVsdHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nKSByZXR1cm47XG4gICAgLy8gSWYgc2NoZW1hIGFuZCB0YWJsZSBwYXJhbXMgaW4gVVJMLCB0cnkgdG8gc2V0IHRoYXQgdGFibGVcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlKTtcblxuICAgICAgaWYgKHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBubyBzY2hlbWEvdGFibGUgcGFyYW1zIG9yIG5vdCBmb3VuZCwgc2V0IGZpcnN0IHRhYmxlIGFzIGRlZmF1bHRcbiAgICBpZiAodGFibGVzLmxlbmd0aCA+IDAgJiYgIWFjdGl2ZVRhYmxlKSB7XG4gICAgICBzZXRBY3RpdmVUYWJsZShmaXJzdFRhYmxlIHx8IG51bGwpO1xuICAgICAgaWYgKGZpcnN0VGFibGUpIHtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBmaXJzdFRhYmxlLm5hbWUsIHNjaGVtYTogZmlyc3RUYWJsZS5zY2hlbWEgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNMb2FkaW5nLCB0YWJsZUFuZFNjaGVtYSwgdGFibGVzLCBmaXJzdFRhYmxlLCBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBuZXdUYWJsZS5uYW1lLCBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSB9KTtcbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzXG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUT0RPOiByZXBsYWNlIHdpdGggaXNMb2FkaW5nXG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGlzTG9hZGluZyxcbiAgICBoYW5kbGVUYWJsZUNoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA9IC0xO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW50cm9zcGVjdGlvbigpIHtcbiAgY29uc3QgeyBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGluaXRpYWxEYXRhOiB7XG4gICAgICBzY2hlbWFzOiB7XG4gICAgICAgIFthZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXToge1xuICAgICAgICAgIHRhYmxlczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZXpvbmU6IFwiVVRDXCIsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnM6IFtdLFxuICAgIH0gc2F0aXNmaWVzIEludHJvc3BlY3Rpb24sXG4gICAgaW5pdGlhbERhdGFVcGRhdGVkQXQ6IElOSVRJQUxfREFUQV9VUERBVEVEX0FULFxuICAgIHF1ZXJ5Rm46IGFzeW5jICh7IHNpZ25hbCB9KSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIGludHJvc3BlY3Rpb25dID0gYXdhaXQgYWRhcHRlci5pbnRyb3NwZWN0KHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW50cm9zcGVjdGlvbjtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXCJpbnRyb3NwZWN0aW9uXCJdLFxuICAgIC8vIGlmIGlzIGluaXRpYWwgZGF0YSwgcmVmZXRjaCBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlLCBuZXZlciByZWZldGNoIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGJhY2tncm91bmQuXG4gICAgLy8gd2UgY2FuIHN0aWxsIHJlZmV0Y2ggbWFudWFsbHkgdXNpbmcgdGhlIHF1ZXJ5IGNsaWVudCAtIHByb2JhYmx5IHRyaWdnZXJlZCBieSBhIGJ1dHRvbi5cbiAgICBzdGFsZVRpbWU6IChjdHgpID0+IChjdHguc3RhdGUuZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQgPyAwIDogSW5maW5pdHkpLFxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI0TUFBQSxPQUFTLG1CQUFBQSxHQUFpQixVQUFBQyxPQUFjLGVDQ3hDLE9BQTBCLFFBQUFDLE9BQVksT0NxQnRDLElBQU1DLEdBQXVCLElBRWhCQyxHQUF5QkMsR0FBeUIsQ0FDM0QsSUFBTUMsRUFBV0MsR0FBZUYsQ0FBTSxFQUNoQyxDQUFFRyx1QkFBQUEsRUFBd0JDLCtCQUFBQSxDQUFnQyxFQUFHSixFQTBCbkUsTUFBTyxDQUNISyxnQkF6QnFCQyxHQUFxQixDQUMxQyxJQUFNQyxFQUFhRCxFQUFVRSxNQUFNVixFQUFvQixFQUd2RCxPQUFJUyxFQUFXLENBQUMsSUFBTSxJQUFNQSxFQUFXRSxTQUFXLEdBQzlDRixFQUFXRyxNQUFLLEVBR2JDLEdBQWtCSixFQUFZTixDQUFRLEdBQUtXLEdBQStCTixDQUFTLENBQzlGLEVBaUJJTyw0QkFmZ0NBLENBQ2hDQyxFQUNBQyxJQUNBLENBQ0EsSUFBTUMsRUFBWWIsRUFBdUJXLENBQVksR0FBSyxDQUFBLEVBRTFELE9BQUlDLEdBQXNCWCxFQUErQlUsQ0FBWSxFQUMxRCxDQUFDLEdBQUdFLEVBQVcsR0FBR1osRUFBK0JVLENBQVksQ0FBRSxFQUduRUUsQ0FDWCxFQU1KLEVBRU1MLEdBQW9CQSxDQUN0QkosRUFDQVUsSUFDa0MsQ0FDbEMsR0FBSVYsRUFBV0UsU0FBVyxFQUN0QixPQUFPUSxFQUFnQkgsYUFHM0IsSUFBTUksRUFBbUJYLEVBQVcsQ0FBQyxFQUMvQlksRUFBc0JGLEVBQWdCRyxTQUFTQyxJQUFJSCxDQUFnQixFQUNuRUksRUFBOEJILEVBQzlCUixHQUFrQkosRUFBV2dCLE1BQU0sQ0FBQyxFQUFHSixDQUFtQixFQUMxREssT0FFTixHQUFJRixFQUNBLE9BQU9BLEVBR1gsR0FBSUwsRUFBZ0JRLFdBQVdoQixTQUFXLEVBQ3RDLE9BR0osSUFBTWlCLEVBQVluQixFQUFXb0IsS0FBSzdCLEVBQW9CLEVBRXRELE9BQU9tQixFQUFnQlEsV0FBV0csS0FBSyxDQUFDLENBQUVDLFVBQUFBLENBQVcsSUFBS0EsRUFBVUgsQ0FBUyxDQUFDLEdBQUdaLFlBQ3JGLEVBRU1nQixHQUF5QixhQUV6QmxCLEdBQWtDTixHQUFxQixDQUN6RCxHQUFJd0IsR0FBdUJDLEtBQUt6QixDQUFTLEVBQUcsQ0FDeEMsSUFBTTBCLEVBQTZCRixHQUF1QkcsS0FBSzNCLENBQVMsRUFBRyxDQUFDLEVBQ3RFNEIsRUFBV0YsR0FBNEJHLFVBQ3pDLEVBQ0FILEVBQTJCSSxRQUFRLEdBQUcsQ0FBQyxFQUczQyxHQUFJRixFQUVBLE1BQU8sY0FBZ0JBLENBRTlCLENBQ0wsRUFLYWhDLEdBQWtCRixHQUE4RCxDQUN6RixHQUFNLENBQUVxQyxNQUFBQSxFQUFPQyxPQUFBQSxDQUFRLEVBQUd0QyxFQUNwQkMsRUFBNEIsQ0FDOUJtQixTQUFVLElBQUltQixJQUNkZCxXQUFZLENBQUEsR0FRaEJlLE9BTGtDQyxHQUM5QkMsT0FBT0MsUUFBUTNDLEVBQU80QyxXQUFXLEVBQ2pDTixDQUFNLEVBR2dCTyxRQUFRLENBQUMsQ0FBQy9CLEVBQWNnQyxDQUFVLElBQUssQ0FDN0RDLEdBQTBCRCxFQUFZN0MsRUFBVWEsRUFBY3VCLENBQUssQ0FDdkUsQ0FBQyxFQUVNcEMsQ0FDWCxFQUVNOEMsR0FBNEJBLENBQzlCRCxFQUNBN0IsRUFDQUgsRUFDQXVCLElBQ0EsQ0FDQVMsRUFBV0QsUUFBU0csR0FBbUIsQ0FDbkMsR0FBSSxPQUFPQSxHQUFvQixTQUFVLENBQ3JDLElBQU1DLEVBQ0ZELElBQW9CLEdBQUsvQixFQUFrQmlDLEdBQVFqQyxFQUFpQitCLENBQWUsRUFDdkZDLEVBQXNCbkMsYUFBZUEsRUFDckMsTUFDSCxDQUVELEdBQUksT0FBT2tDLEdBQW9CLFdBQVksQ0FDdkMsR0FBSUcsR0FBY0gsQ0FBZSxFQUFHLENBQ2hDRCxHQUNJQyxFQUFnQlgsQ0FBSyxFQUNyQnBCLEVBQ0FILEVBQ0F1QixDQUFLLEVBRVQsTUFDSCxDQUVEcEIsRUFBZ0JRLFdBQVcyQixLQUFLLENBQzVCdkIsVUFBV21CLEVBQ1hsQyxhQUFBQSxDQUNILENBQUEsRUFFRCxNQUNILENBRUQ0QixPQUFPQyxRQUFRSyxDQUFlLEVBQUVILFFBQVEsQ0FBQyxDQUFDUSxFQUFLUCxDQUFVLElBQUssQ0FDMURDLEdBQ0lELEVBQ0FJLEdBQVFqQyxFQUFpQm9DLENBQUcsRUFDNUJ2QyxFQUNBdUIsQ0FBSyxDQUViLENBQUMsQ0FDTCxDQUFDLENBQ0wsRUFFTWEsR0FBVUEsQ0FBQ2pDLEVBQWtDcUMsSUFBZ0IsQ0FDL0QsSUFBSUMsRUFBeUJ0QyxFQUU3QnFDLE9BQUFBLEVBQUs5QyxNQUFNVixFQUFvQixFQUFFK0MsUUFBU1csR0FBWSxDQUM3Q0QsRUFBdUJuQyxTQUFTcUMsSUFBSUQsQ0FBUSxHQUM3Q0QsRUFBdUJuQyxTQUFTc0MsSUFBSUYsRUFBVSxDQUMxQ3BDLFNBQVUsSUFBSW1CLElBQ2RkLFdBQVksQ0FBQSxDQUNmLENBQUEsRUFHTDhCLEVBQXlCQSxFQUF1Qm5DLFNBQVNDLElBQUltQyxDQUFRLENBQ3pFLENBQUMsRUFFTUQsQ0FDWCxFQUVNSixHQUFpQlEsR0FDbEJBLEVBQXFCUixjQUVwQlYsR0FBK0JBLENBQ2pDbUIsRUFDQXRCLElBRUtBLEVBSUVzQixFQUFrQkMsSUFBSSxDQUFDLENBQUMvQyxFQUFjZ0MsQ0FBVSxJQUFLLENBQ3hELElBQU1nQixFQUFxQmhCLEVBQVdlLElBQUtiLEdBQ25DLE9BQU9BLEdBQW9CLFNBQ3BCVixFQUFTVSxFQUdoQixPQUFPQSxHQUFvQixTQUNwQk4sT0FBT3FCLFlBQ1ZyQixPQUFPQyxRQUFRSyxDQUFlLEVBQUVhLElBQUksQ0FBQyxDQUFDUixFQUFLVyxDQUFLLElBQU0sQ0FBQzFCLEVBQVNlLEVBQUtXLENBQUssQ0FBQyxDQUFDLEVBSTdFaEIsQ0FDVixFQUVELE1BQU8sQ0FBQ2xDLEVBQWNnRCxDQUFrQixDQUM1QyxDQUFDLEVBbkJVRixFQ3pMRkssR0FBOEJDLEdBQThDLENBQ3JGLEdBQUlBLEVBQWUsRUFDZixNQUFPLENBQ0g3QyxJQUFLQSxJQUFBLEdBQ0xxQyxJQUFLQSxJQUFLLENBQUcsR0FJckIsSUFBSVMsRUFBWSxFQUNaQyxFQUFRLElBQUk3QixJQUNaOEIsRUFBZ0IsSUFBSTlCLElBRWxCK0IsRUFBU0EsQ0FBQ2pCLEVBQVVXLElBQWdCLENBQ3RDSSxFQUFNVixJQUFJTCxFQUFLVyxDQUFLLEVBQ3BCRyxJQUVJQSxFQUFZRCxJQUNaQyxFQUFZLEVBQ1pFLEVBQWdCRCxFQUNoQkEsRUFBUSxJQUFJN0IsSUFFcEIsRUFFQSxNQUFPLENBQ0hsQixJQUFJZ0MsRUFBRyxDQUNILElBQUlXLEVBQVFJLEVBQU0vQyxJQUFJZ0MsQ0FBRyxFQUV6QixHQUFJVyxJQUFVeEMsT0FDVixPQUFPd0MsRUFFWCxJQUFLQSxFQUFRSyxFQUFjaEQsSUFBSWdDLENBQUcsS0FBTzdCLE9BQ3JDOEMsT0FBQUEsRUFBT2pCLEVBQUtXLENBQUssRUFDVkEsQ0FFZCxFQUNETixJQUFJTCxFQUFLVyxFQUFLLENBQ05JLEVBQU1YLElBQUlKLENBQUcsRUFDYmUsRUFBTVYsSUFBSUwsRUFBS1csQ0FBSyxFQUVwQk0sRUFBT2pCLEVBQUtXLENBQUssQ0FFeEIsRUFFVCxFQ2pEYU8sR0FBcUIsSUFFckJDLEdBQXdCeEUsR0FBeUIsQ0FDMUQsR0FBTSxDQUFFeUUsVUFBQUEsRUFBV0MsMkJBQUFBLENBQTRCLEVBQUcxRSxFQUM1QzJFLEVBQTZCRixFQUFVaEUsU0FBVyxFQUNsRG1FLEVBQTBCSCxFQUFVLENBQUMsRUFDckNJLEVBQWtCSixFQUFVaEUsT0FHNUJxRSxFQUFrQnhFLEdBQXFCLENBQ3pDLElBQU15RSxFQUFZLENBQUEsRUFFZEMsRUFBZSxFQUNmQyxFQUFnQixFQUNoQkMsRUFFSixRQUFTQyxFQUFRLEVBQUdBLEVBQVE3RSxFQUFVRyxPQUFRMEUsSUFBUyxDQUNuRCxJQUFJQyxFQUFtQjlFLEVBQVU2RSxDQUFLLEVBRXRDLEdBQUlILElBQWlCLEVBQUcsQ0FDcEIsR0FDSUksSUFBcUJSLElBQ3BCRCxHQUNHckUsRUFBVWlCLE1BQU00RCxFQUFPQSxFQUFRTixDQUFlLElBQU1KLEdBQzFELENBQ0VNLEVBQVUzQixLQUFLOUMsRUFBVWlCLE1BQU0wRCxFQUFlRSxDQUFLLENBQUMsRUFDcERGLEVBQWdCRSxFQUFRTixFQUN4QixRQUNILENBRUQsR0FBSU8sSUFBcUIsSUFBSyxDQUMxQkYsRUFBMEJDLEVBQzFCLFFBQ0gsQ0FDSixDQUVHQyxJQUFxQixJQUNyQkosSUFDT0ksSUFBcUIsS0FDNUJKLEdBRVAsQ0FFRCxJQUFNSyxFQUNGTixFQUFVdEUsU0FBVyxFQUFJSCxFQUFZQSxFQUFVNkIsVUFBVThDLENBQWEsRUFDcEVLLEVBQ0ZELEVBQW1DRSxXQUFXaEIsRUFBa0IsRUFDOURpQixFQUFnQkYsRUFDaEJELEVBQW1DbEQsVUFBVSxDQUFDLEVBQzlDa0QsRUFFQUksRUFDRlAsR0FBMkJBLEVBQTBCRCxFQUMvQ0MsRUFBMEJELEVBQzFCekQsT0FFVixNQUFPLENBQ0h1RCxVQUFBQSxFQUNBTyxxQkFBQUEsRUFDQUUsY0FBQUEsRUFDQUMsNkJBQUFBLEVBRVIsRUFFQSxPQUFJZixFQUNRcEUsR0FBc0JvRSxFQUEyQixDQUFFcEUsVUFBQUEsRUFBV3dFLGVBQUFBLENBQWdCLENBQUEsRUFHbkZBLENBQ1gsRUFPYVksR0FBaUJYLEdBQXVCLENBQ2pELEdBQUlBLEVBQVV0RSxRQUFVLEVBQ3BCLE9BQU9zRSxFQUdYLElBQU1ZLEVBQTRCLENBQUEsRUFDOUJDLEVBQThCLENBQUEsRUFFbENiLE9BQUFBLEVBQVVsQyxRQUFTZ0QsR0FBWSxDQUNBQSxFQUFTLENBQUMsSUFBTSxLQUd2Q0YsRUFBZ0J2QyxLQUFLLEdBQUd3QyxFQUFrQkUsS0FBTSxFQUFFRCxDQUFRLEVBQzFERCxFQUFvQixDQUFBLEdBRXBCQSxFQUFrQnhDLEtBQUt5QyxDQUFRLENBRXZDLENBQUMsRUFFREYsRUFBZ0J2QyxLQUFLLEdBQUd3QyxFQUFrQkUsS0FBTSxDQUFBLEVBRXpDSCxDQUNYLEVDN0ZhSSxHQUFxQi9GLElBQTJCLENBQ3pEb0UsTUFBT0gsR0FBK0JqRSxFQUFPbUUsU0FBUyxFQUN0RFcsZUFBZ0JOLEdBQXFCeEUsQ0FBTSxFQUMzQyxHQUFHRCxHQUFzQkMsQ0FBTSxDQUNsQyxHQ1JLZ0csR0FBc0IsTUFFZkMsR0FBaUJBLENBQUNDLEVBQW1CQyxJQUE0QixDQUMxRSxHQUFNLENBQUVyQixlQUFBQSxFQUFnQnpFLGdCQUFBQSxFQUFpQlEsNEJBQUFBLENBQTJCLEVBQUtzRixFQVNuRUMsRUFBa0MsQ0FBQSxFQUNsQ0MsRUFBYUgsRUFBVUksS0FBTSxFQUFDOUYsTUFBTXdGLEVBQW1CLEVBRXpETyxFQUFTLEdBRWIsUUFBU3BCLEVBQVFrQixFQUFXNUYsT0FBUyxFQUFHMEUsR0FBUyxFQUFHQSxHQUFTLEVBQUcsQ0FDNUQsSUFBTXFCLEVBQW9CSCxFQUFXbEIsQ0FBSyxFQUVwQyxDQUFFSixVQUFBQSxFQUFXTyxxQkFBQUEsRUFBc0JFLGNBQUFBLEVBQWVDLDZCQUFBQSxHQUNwRFgsRUFBZTBCLENBQWlCLEVBRWhDekYsRUFBcUIwRixFQUFRaEIsRUFDN0IzRSxFQUFlVCxFQUNmVSxFQUNNeUUsRUFBY3JELFVBQVUsRUFBR3NELENBQTRCLEVBQ3ZERCxDQUFhLEVBR3ZCLEdBQUksQ0FBQzFFLEVBQWMsQ0FDZixHQUFJLENBQUNDLEVBQW9CLENBRXJCd0YsRUFBU0MsR0FBcUJELEVBQU85RixPQUFTLEVBQUksSUFBTThGLEVBQVNBLEdBQ2pFLFFBQ0gsQ0FJRCxHQUZBekYsRUFBZVQsRUFBZ0JtRixDQUFhLEVBRXhDLENBQUMxRSxFQUFjLENBRWZ5RixFQUFTQyxHQUFxQkQsRUFBTzlGLE9BQVMsRUFBSSxJQUFNOEYsRUFBU0EsR0FDakUsUUFDSCxDQUVEeEYsRUFBcUIsRUFDeEIsQ0FFRCxJQUFNMkYsRUFBa0JoQixHQUFjWCxDQUFTLEVBQUVwRCxLQUFLLEdBQUcsRUFFbkRnRixFQUFhckIsRUFDYm9CLEVBQWtCbkMsR0FDbEJtQyxFQUVBRSxFQUFVRCxFQUFhN0YsRUFFN0IsR0FBSXNGLEVBQXNCUyxTQUFTRCxDQUFPLEVBRXRDLFNBR0pSLEVBQXNCaEQsS0FBS3dELENBQU8sRUFFbEMsSUFBTUUsRUFBaUJqRyxFQUE0QkMsRUFBY0MsQ0FBa0IsRUFDbkYsUUFBU2dHLEVBQUksRUFBR0EsRUFBSUQsRUFBZXJHLE9BQVEsRUFBRXNHLEVBQUcsQ0FDNUMsSUFBTUMsR0FBUUYsRUFBZUMsQ0FBQyxFQUM5QlgsRUFBc0JoRCxLQUFLdUQsRUFBYUssRUFBSyxDQUNoRCxDQUdEVCxFQUFTQyxHQUFxQkQsRUFBTzlGLE9BQVMsRUFBSSxJQUFNOEYsRUFBU0EsRUFDcEUsQ0FFRCxPQUFPQSxDQUNYLFdDL0RnQlUsSUFBTSxDQUNsQixJQUFJOUIsRUFBUSxFQUNSK0IsRUFDQUMsRUFDQUMsRUFBUyxHQUViLEtBQU9qQyxFQUFRa0MsVUFBVTVHLFNBQ2hCeUcsRUFBV0csVUFBVWxDLEdBQU8sS0FDeEJnQyxFQUFnQkcsR0FBUUosQ0FBUSxLQUNqQ0UsSUFBV0EsR0FBVSxLQUNyQkEsR0FBVUQsR0FJdEIsT0FBT0MsQ0FDWCxDQUVBLElBQU1FLEdBQVdDLEdBQWdDLENBQzdDLEdBQUksT0FBT0EsR0FBUSxTQUNmLE9BQU9BLEVBR1gsSUFBSUosRUFDQUMsRUFBUyxHQUViLFFBQVNJLEVBQUksRUFBR0EsRUFBSUQsRUFBSTlHLE9BQVErRyxJQUN4QkQsRUFBSUMsQ0FBQyxJQUNBTCxFQUFnQkcsR0FBUUMsRUFBSUMsQ0FBQyxDQUE0QixLQUMxREosSUFBV0EsR0FBVSxLQUNyQkEsR0FBVUQsR0FLdEIsT0FBT0MsQ0FDWCxXQ3ZDZ0JLLEdBQ1pDLEtBQ0dDLEVBQTBDLENBRTdDLElBQUl4QixFQUNBeUIsRUFDQUMsRUFDQUMsRUFBaUJDLEVBRXJCLFNBQVNBLEVBQWtCN0IsRUFBaUIsQ0FDeEMsSUFBTWxHLEVBQVMySCxFQUFpQkssT0FDNUIsQ0FBQ0MsRUFBZ0JDLElBQXdCQSxFQUFvQkQsQ0FBYyxFQUMzRVAsRUFBaUIsQ0FBbUIsRUFHeEN2QixPQUFBQSxFQUFjSixHQUFrQi9GLENBQU0sRUFDdEM0SCxFQUFXekIsRUFBWS9CLE1BQU0vQyxJQUM3QndHLEVBQVcxQixFQUFZL0IsTUFBTVYsSUFDN0JvRSxFQUFpQkssRUFFVkEsRUFBY2pDLENBQVMsQ0FDakMsQ0FFRCxTQUFTaUMsRUFBY2pDLEVBQWlCLENBQ3BDLElBQU1rQyxFQUFlUixFQUFTMUIsQ0FBUyxFQUV2QyxHQUFJa0MsRUFDQSxPQUFPQSxFQUdYLElBQU03QixFQUFTTixHQUFlQyxFQUFXQyxDQUFXLEVBQ3BEMEIsT0FBQUEsRUFBUzNCLEVBQVdLLENBQU0sRUFFbkJBLENBQ1YsQ0FFRCxPQUFPLFVBQTBCLENBQzdCLE9BQU91QixFQUFlYixHQUFPb0IsTUFBTSxLQUFNaEIsU0FBZ0IsQ0FBQyxDQUM5RCxDQUNKLENDL0NhLElBQUFpQixFQUdYakYsR0FBa0YsQ0FDaEYsSUFBTWtGLEVBQWVsRyxHQUNqQkEsRUFBTWdCLENBQUcsR0FBSyxDQUFBLEVBRWxCa0YsT0FBQUEsRUFBWXBGLGNBQWdCLEdBRXJCb0YsQ0FDWCxFQ1pNQyxHQUFzQiw2QkFDdEJDLEdBQWdCLGFBQ2hCQyxHQUFnQixJQUFJQyxJQUFJLENBQUMsS0FBTSxPQUFRLFFBQVEsQ0FBQyxFQUNoREMsR0FBa0IsbUNBQ2xCQyxHQUNGLDRIQUNFQyxHQUFxQiwyQ0FFckJDLEdBQWMsa0VBQ2RDLEdBQ0YsK0ZBRVNDLEdBQVlqRixHQUNyQmtGLEdBQVNsRixDQUFLLEdBQUswRSxHQUFjakYsSUFBSU8sQ0FBSyxHQUFLeUUsR0FBYzFHLEtBQUtpQyxDQUFLLEVBRTlEbUYsR0FBcUJuRixHQUM5Qm9GLEdBQW9CcEYsRUFBTyxTQUFVcUYsRUFBWSxFQUV4Q0gsR0FBWWxGLEdBQWtCeUMsRUFBUXpDLEdBQVUsQ0FBQ3NGLE9BQU9DLE1BQU1ELE9BQU90RixDQUFLLENBQUMsRUFFM0V3RixHQUFxQnhGLEdBQWtCb0YsR0FBb0JwRixFQUFPLFNBQVVrRixFQUFRLEVBRXBGTyxHQUFhekYsR0FBa0J5QyxFQUFRekMsR0FBVXNGLE9BQU9HLFVBQVVILE9BQU90RixDQUFLLENBQUMsRUFFL0UwRixHQUFhMUYsR0FBa0JBLEVBQU0yRixTQUFTLEdBQUcsR0FBS1QsR0FBU2xGLEVBQU16QyxNQUFNLEVBQUcsRUFBRSxDQUFDLEVBRWpGcUksRUFBb0I1RixHQUFrQndFLEdBQW9CekcsS0FBS2lDLENBQUssRUFFcEU2RixHQUFnQjdGLEdBQWtCNEUsR0FBZ0I3RyxLQUFLaUMsQ0FBSyxFQUVuRThGLEdBQWEsSUFBSW5CLElBQUksQ0FBQyxTQUFVLE9BQVEsWUFBWSxDQUFDLEVBRTlDb0IsR0FBbUIvRixHQUFrQm9GLEdBQW9CcEYsRUFBTzhGLEdBQVlFLEVBQU8sRUFFbkZDLEdBQXVCakcsR0FDaENvRixHQUFvQnBGLEVBQU8sV0FBWWdHLEVBQU8sRUFFNUNFLEdBQWMsSUFBSXZCLElBQUksQ0FBQyxRQUFTLEtBQUssQ0FBQyxFQUUvQndCLEdBQW9CbkcsR0FBa0JvRixHQUFvQnBGLEVBQU9rRyxHQUFhRSxFQUFPLEVBRXJGQyxHQUFxQnJHLEdBQWtCb0YsR0FBb0JwRixFQUFPLEdBQUlzRyxFQUFRLEVBRTlFQyxHQUFRQSxJQUFNLEdBRXJCbkIsR0FBc0JBLENBQ3hCcEYsRUFDQXdHLEVBQ0FDLElBQ0EsQ0FDQSxJQUFNbEUsRUFBU2lDLEdBQW9CdkcsS0FBSytCLENBQUssRUFFN0MsT0FBSXVDLEVBQ0lBLEVBQU8sQ0FBQyxFQUNELE9BQU9pRSxHQUFVLFNBQVdqRSxFQUFPLENBQUMsSUFBTWlFLEVBQVFBLEVBQU0vRyxJQUFJOEMsRUFBTyxDQUFDLENBQUMsRUFHekVrRSxFQUFVbEUsRUFBTyxDQUFDLENBQUUsRUFHeEIsRUFDWCxFQUVNOEMsR0FBZ0JyRixHQUlsQjZFLEdBQWdCOUcsS0FBS2lDLENBQUssR0FBSyxDQUFDOEUsR0FBbUIvRyxLQUFLaUMsQ0FBSyxFQUUzRGdHLEdBQVVBLElBQU0sR0FFaEJNLEdBQVl0RyxHQUFrQitFLEdBQVloSCxLQUFLaUMsQ0FBSyxFQUVwRG9HLEdBQVdwRyxHQUFrQmdGLEdBQVdqSCxLQUFLaUMsQ0FBSyxFQ3ZEakQsSUFBTTBHLEdBQW1CQSxJQUFLLENBQ2pDLElBQU1DLEVBQVNDLEVBQVUsUUFBUSxFQUMzQkMsRUFBVUQsRUFBVSxTQUFTLEVBQzdCRSxFQUFPRixFQUFVLE1BQU0sRUFDdkJHLEVBQWFILEVBQVUsWUFBWSxFQUNuQ0ksRUFBY0osRUFBVSxhQUFhLEVBQ3JDSyxFQUFlTCxFQUFVLGNBQWMsRUFDdkNNLEVBQWdCTixFQUFVLGVBQWUsRUFDekNPLEVBQWNQLEVBQVUsYUFBYSxFQUNyQ1EsRUFBV1IsRUFBVSxVQUFVLEVBQy9CUyxFQUFZVCxFQUFVLFdBQVcsRUFDakNVLEVBQVlWLEVBQVUsV0FBVyxFQUNqQ1csRUFBU1gsRUFBVSxRQUFRLEVBQzNCWSxFQUFNWixFQUFVLEtBQUssRUFDckJhLEVBQXFCYixFQUFVLG9CQUFvQixFQUNuRGMsRUFBNkJkLEVBQVUsNEJBQTRCLEVBQ25FZSxFQUFRZixFQUFVLE9BQU8sRUFDekJnQixFQUFTaEIsRUFBVSxRQUFRLEVBQzNCaUIsRUFBVWpCLEVBQVUsU0FBUyxFQUM3QmtCLEVBQVVsQixFQUFVLFNBQVMsRUFDN0JtQixFQUFXbkIsRUFBVSxVQUFVLEVBQy9Cb0IsRUFBUXBCLEVBQVUsT0FBTyxFQUN6QnFCLEdBQVFyQixFQUFVLE9BQU8sRUFDekJzQixFQUFPdEIsRUFBVSxNQUFNLEVBQ3ZCdUIsRUFBUXZCLEVBQVUsT0FBTyxFQUN6QndCLEVBQVl4QixFQUFVLFdBQVcsRUFFakN5QixFQUFnQkEsSUFBTSxDQUFDLE9BQVEsVUFBVyxNQUFNLEVBQ2hEQyxFQUFjQSxJQUFNLENBQUMsT0FBUSxTQUFVLE9BQVEsVUFBVyxRQUFRLEVBQ2xFQyxFQUFpQ0EsSUFBTSxDQUFDLE9BQVFDLEVBQWtCM0IsQ0FBTyxFQUN6RTRCLEVBQTBCQSxJQUFNLENBQUNELEVBQWtCM0IsQ0FBTyxFQUMxRDZCLEdBQWlDQSxJQUFNLENBQUMsR0FBSUMsR0FBVUMsRUFBaUIsRUFDdkVDLEVBQWdDQSxJQUFNLENBQUMsT0FBUUMsR0FBVU4sQ0FBZ0IsRUFDekVPLEVBQWVBLElBQ2pCLENBQ0ksU0FDQSxTQUNBLE9BQ0EsY0FDQSxXQUNBLFFBQ0EsZUFDQSxZQUNBLEtBQUssRUFFUEMsRUFBZ0JBLElBQU0sQ0FBQyxRQUFTLFNBQVUsU0FBVSxTQUFVLE1BQU0sRUFDcEVDLEVBQWdCQSxJQUNsQixDQUNJLFNBQ0EsV0FDQSxTQUNBLFVBQ0EsU0FDQSxVQUNBLGNBQ0EsYUFDQSxhQUNBLGFBQ0EsYUFDQSxZQUNBLE1BQ0EsYUFDQSxRQUNBLFlBQVksRUFFZEMsR0FBV0EsSUFDYixDQUFDLFFBQVMsTUFBTyxTQUFVLFVBQVcsU0FBVSxTQUFVLFNBQVMsRUFDakVDLEdBQWtCQSxJQUFNLENBQUMsR0FBSSxJQUFLWCxDQUFnQixFQUNsRFksR0FBWUEsSUFDZCxDQUFDLE9BQVEsUUFBUyxNQUFPLGFBQWMsT0FBUSxPQUFRLFFBQVMsUUFBUSxFQUN0RUMsRUFBd0JBLElBQU0sQ0FBQ1AsR0FBVU4sQ0FBZ0IsRUFFL0QsTUFBTyxDQUNIYyxVQUFXLElBQ1hDLFVBQVcsSUFDWEMsTUFBTyxDQUNIN0MsT0FBUSxDQUFDOEMsRUFBSyxFQUNkNUMsUUFBUyxDQUFDOEIsR0FBVUMsRUFBaUIsRUFDckM5QixLQUFNLENBQUMsT0FBUSxHQUFJNEMsR0FBY2xCLENBQWdCLEVBQ2pEekIsV0FBWXNDLEVBQXVCLEVBQ25DckMsWUFBYSxDQUFDTCxDQUFNLEVBQ3BCTSxhQUFjLENBQUMsT0FBUSxHQUFJLE9BQVF5QyxHQUFjbEIsQ0FBZ0IsRUFDakV0QixjQUFldUIsRUFBeUIsRUFDeEN0QixZQUFhdUIsR0FBZ0MsRUFDN0N0QixTQUFVaUMsRUFBdUIsRUFDakNoQyxVQUFXOEIsR0FBaUIsRUFDNUI3QixVQUFXK0IsRUFBdUIsRUFDbEM5QixPQUFRNEIsR0FBaUIsRUFDekIzQixJQUFLaUIsRUFBeUIsRUFDOUJoQixtQkFBb0IsQ0FBQ2QsQ0FBTSxFQUMzQmUsMkJBQTRCLENBQUNpQyxHQUFXZixFQUFpQixFQUN6RGpCLE1BQU9ZLEVBQWdDLEVBQ3ZDWCxPQUFRVyxFQUFnQyxFQUN4Q1YsUUFBU3dCLEVBQXVCLEVBQ2hDdkIsUUFBU1csRUFBeUIsRUFDbENWLFNBQVVzQixFQUF1QixFQUNqQ3JCLE1BQU9xQixFQUF1QixFQUM5QnBCLE1BQU9rQixHQUFpQixFQUN4QmpCLEtBQU1tQixFQUF1QixFQUM3QmxCLE1BQU9NLEVBQXlCLEVBQ2hDTCxVQUFXSyxFQUF5QixDQUN2QyxFQUNEbUIsWUFBYSxDQU1UQyxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLE9BQVEsU0FBVSxRQUFTckIsQ0FBZ0IsRUFBRyxFQUtsRXNCLFVBQVcsQ0FBQyxXQUFXLEVBS3ZCQyxRQUFTLENBQUMsQ0FBRUEsUUFBUyxDQUFDTCxFQUFZLENBQUMsQ0FBRSxFQUtyQyxjQUFlLENBQUMsQ0FBRSxjQUFlTixHQUFXLENBQUEsQ0FBRSxFQUs5QyxlQUFnQixDQUFDLENBQUUsZUFBZ0JBLEdBQVcsQ0FBQSxDQUFFLEVBS2hELGVBQWdCLENBQUMsQ0FBRSxlQUFnQixDQUFDLE9BQVEsUUFBUyxhQUFjLGNBQWMsRUFBRyxFQUtwRixpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDLFFBQVMsT0FBTyxDQUFDLENBQUUsRUFLM0RZLElBQUssQ0FBQyxDQUFFQSxJQUFLLENBQUMsU0FBVSxTQUFTLENBQUMsQ0FBRSxFQUtwQ0MsUUFBUyxDQUNMLFFBQ0EsZUFDQSxTQUNBLE9BQ0EsY0FDQSxRQUNBLGVBQ0EsZ0JBQ0EsYUFDQSxlQUNBLHFCQUNBLHFCQUNBLHFCQUNBLGtCQUNBLFlBQ0EsWUFDQSxPQUNBLGNBQ0EsV0FDQSxZQUNBLFFBQVEsRUFNWkMsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQyxRQUFTLE9BQVEsT0FBUSxRQUFTLEtBQUssRUFBRyxFQUs1REMsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQyxPQUFRLFFBQVMsT0FBUSxPQUFRLFFBQVMsS0FBSyxFQUFHLEVBS3BFQyxVQUFXLENBQUMsVUFBVyxnQkFBZ0IsRUFLdkMsYUFBYyxDQUFDLENBQUVDLE9BQVEsQ0FBQyxVQUFXLFFBQVMsT0FBUSxPQUFRLFlBQVksRUFBRyxFQUs3RSxrQkFBbUIsQ0FBQyxDQUFFQSxPQUFRLENBQUMsR0FBR3RCLEVBQWMsRUFBRVAsQ0FBZ0IsRUFBRyxFQUtyRThCLFNBQVUsQ0FBQyxDQUFFQSxTQUFVaEMsRUFBYSxDQUFBLENBQUUsRUFLdEMsYUFBYyxDQUFDLENBQUUsYUFBY0EsRUFBYSxDQUFBLENBQUUsRUFLOUMsYUFBYyxDQUFDLENBQUUsYUFBY0EsRUFBYSxDQUFBLENBQUUsRUFLOUNpQyxXQUFZLENBQUMsQ0FBRUEsV0FBWWxDLEVBQWUsQ0FBQSxDQUFFLEVBSzVDLGVBQWdCLENBQUMsQ0FBRSxlQUFnQkEsRUFBZSxDQUFBLENBQUUsRUFLcEQsZUFBZ0IsQ0FBQyxDQUFFLGVBQWdCQSxFQUFlLENBQUEsQ0FBRSxFQUtwRG1DLFNBQVUsQ0FBQyxTQUFVLFFBQVMsV0FBWSxXQUFZLFFBQVEsRUFLOUQ3QyxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUsxQixVQUFXLENBQUMsQ0FBRSxVQUFXLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBS2xDLFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLbEM4QyxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDOUMsQ0FBSyxDQUFDLENBQUUsRUFLMUIrQyxJQUFLLENBQUMsQ0FBRUEsSUFBSyxDQUFDL0MsQ0FBSyxDQUFDLENBQUUsRUFLdEJnRCxJQUFLLENBQUMsQ0FBRUEsSUFBSyxDQUFDaEQsQ0FBSyxDQUFDLENBQUUsRUFLdEJpRCxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDakQsQ0FBSyxDQUFDLENBQUUsRUFLMUJrRCxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDbEQsQ0FBSyxDQUFDLENBQUUsRUFLNUJtRCxLQUFNLENBQUMsQ0FBRUEsS0FBTSxDQUFDbkQsQ0FBSyxDQUFDLENBQUUsRUFLeEJvRCxXQUFZLENBQUMsVUFBVyxZQUFhLFVBQVUsRUFLL0NDLEVBQUcsQ0FBQyxDQUFFQSxFQUFHLENBQUMsT0FBUUMsR0FBV3pDLENBQWdCLEVBQUcsRUFNaEQwQyxNQUFPLENBQUMsQ0FBRUEsTUFBTzNDLEVBQWdDLENBQUEsQ0FBRSxFQUtuRCxpQkFBa0IsQ0FBQyxDQUFFNEMsS0FBTSxDQUFDLE1BQU8sY0FBZSxNQUFPLGFBQWEsRUFBRyxFQUt6RSxZQUFhLENBQUMsQ0FBRUEsS0FBTSxDQUFDLE9BQVEsZUFBZ0IsUUFBUSxFQUFHLEVBSzFEQSxLQUFNLENBQUMsQ0FBRUEsS0FBTSxDQUFDLElBQUssT0FBUSxVQUFXLE9BQVEzQyxDQUFnQixFQUFHLEVBS25FNEMsS0FBTSxDQUFDLENBQUVBLEtBQU1qQyxHQUFpQixDQUFBLENBQUUsRUFLbENrQyxPQUFRLENBQUMsQ0FBRUEsT0FBUWxDLEdBQWlCLENBQUEsQ0FBRSxFQUt0Q21DLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUMsUUFBUyxPQUFRLE9BQVFMLEdBQVd6QyxDQUFnQixFQUFHLEVBS3pFLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ2lCLEVBQUssQ0FBQyxDQUFFLEVBS3RDLGdCQUFpQixDQUNiLENBQ0k4QixJQUFLLENBQ0QsT0FDQSxDQUFFQyxLQUFNLENBQUMsT0FBUVAsR0FBV3pDLENBQWdCLENBQUcsRUFDL0NBLENBQWdCLENBRXZCLENBQUEsRUFNTCxZQUFhLENBQUMsQ0FBRSxZQUFhSyxFQUErQixDQUFBLENBQUUsRUFLOUQsVUFBVyxDQUFDLENBQUUsVUFBV0EsRUFBK0IsQ0FBQSxDQUFFLEVBSzFELFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ1ksRUFBSyxDQUFDLENBQUUsRUFLdEMsZ0JBQWlCLENBQ2IsQ0FBRWdDLElBQUssQ0FBQyxPQUFRLENBQUVELEtBQU0sQ0FBQ1AsR0FBV3pDLENBQWdCLEdBQUtBLENBQWdCLENBQUcsQ0FBQSxFQU1oRixZQUFhLENBQUMsQ0FBRSxZQUFhSyxFQUErQixDQUFBLENBQUUsRUFLOUQsVUFBVyxDQUFDLENBQUUsVUFBV0EsRUFBK0IsQ0FBQSxDQUFFLEVBSzFELFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQyxNQUFPLE1BQU8sUUFBUyxZQUFhLFdBQVcsRUFBRyxFQUtoRixZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUMsT0FBUSxNQUFPLE1BQU8sS0FBTUwsQ0FBZ0IsRUFBRyxFQUs3RSxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUMsT0FBUSxNQUFPLE1BQU8sS0FBTUEsQ0FBZ0IsRUFBRyxFQUs3RWhCLElBQUssQ0FBQyxDQUFFQSxJQUFLLENBQUNBLENBQUcsQ0FBQyxDQUFFLEVBS3BCLFFBQVMsQ0FBQyxDQUFFLFFBQVMsQ0FBQ0EsQ0FBRyxDQUFDLENBQUUsRUFLNUIsUUFBUyxDQUFDLENBQUUsUUFBUyxDQUFDQSxDQUFHLENBQUMsQ0FBRSxFQUs1QixrQkFBbUIsQ0FBQyxDQUFFa0UsUUFBUyxDQUFDLFNBQVUsR0FBR3hDLEdBQVUsQ0FBQSxFQUFHLEVBSzFELGdCQUFpQixDQUFDLENBQUUsZ0JBQWlCLENBQUMsUUFBUyxNQUFPLFNBQVUsU0FBUyxFQUFHLEVBSzVFLGVBQWdCLENBQUMsQ0FBRSxlQUFnQixDQUFDLE9BQVEsUUFBUyxNQUFPLFNBQVUsU0FBUyxFQUFHLEVBS2xGLGdCQUFpQixDQUFDLENBQUV5QyxRQUFTLENBQUMsU0FBVSxHQUFHekMsR0FBVSxFQUFFLFVBQVUsRUFBRyxFQUtwRSxjQUFlLENBQUMsQ0FBRTBDLE1BQU8sQ0FBQyxRQUFTLE1BQU8sU0FBVSxXQUFZLFNBQVMsRUFBRyxFQUs1RSxhQUFjLENBQUMsQ0FBRUMsS0FBTSxDQUFDLE9BQVEsUUFBUyxNQUFPLFNBQVUsVUFBVyxVQUFVLEVBQUcsRUFLbEYsZ0JBQWlCLENBQUMsQ0FBRSxnQkFBaUIsQ0FBQyxHQUFHM0MsR0FBVSxFQUFFLFVBQVUsRUFBRyxFQUtsRSxjQUFlLENBQUMsQ0FBRSxjQUFlLENBQUMsUUFBUyxNQUFPLFNBQVUsV0FBWSxTQUFTLEVBQUcsRUFLcEYsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDLE9BQVEsUUFBUyxNQUFPLFNBQVUsU0FBUyxFQUFHLEVBTTlFNEMsRUFBRyxDQUFDLENBQUVBLEVBQUcsQ0FBQ2hFLENBQU8sQ0FBQyxDQUFFLEVBS3BCaUUsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ2pFLENBQU8sQ0FBQyxDQUFFLEVBS3RCa0UsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ2xFLENBQU8sQ0FBQyxDQUFFLEVBS3RCbUUsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ25FLENBQU8sQ0FBQyxDQUFFLEVBS3RCb0UsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ3BFLENBQU8sQ0FBQyxDQUFFLEVBS3RCcUUsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ3JFLENBQU8sQ0FBQyxDQUFFLEVBS3RCc0UsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ3RFLENBQU8sQ0FBQyxDQUFFLEVBS3RCdUUsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ3ZFLENBQU8sQ0FBQyxDQUFFLEVBS3RCd0UsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ3hFLENBQU8sQ0FBQyxDQUFFLEVBS3RCeUUsRUFBRyxDQUFDLENBQUVBLEVBQUcsQ0FBQzNFLENBQU0sQ0FBQyxDQUFFLEVBS25CNEUsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQzVFLENBQU0sQ0FBQyxDQUFFLEVBS3JCNkUsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQzdFLENBQU0sQ0FBQyxDQUFFLEVBS3JCOEUsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQzlFLENBQU0sQ0FBQyxDQUFFLEVBS3JCK0UsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQy9FLENBQU0sQ0FBQyxDQUFFLEVBS3JCZ0YsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ2hGLENBQU0sQ0FBQyxDQUFFLEVBS3JCaUYsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ2pGLENBQU0sQ0FBQyxDQUFFLEVBS3JCa0YsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ2xGLENBQU0sQ0FBQyxDQUFFLEVBS3JCbUYsR0FBSSxDQUFDLENBQUVBLEdBQUksQ0FBQ25GLENBQU0sQ0FBQyxDQUFFLEVBS3JCLFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQ08sQ0FBSyxDQUFDLENBQUUsRUFLbEMsa0JBQW1CLENBQUMsaUJBQWlCLEVBS3JDLFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLbEMsa0JBQW1CLENBQUMsaUJBQWlCLEVBTXJDNkUsRUFBRyxDQUNDLENBQ0lBLEVBQUcsQ0FDQyxPQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBeEUsRUFDQTNCLENBQU8sQ0FFZCxDQUFBLEVBTUwsUUFBUyxDQUFDLENBQUUsUUFBUyxDQUFDMkIsRUFBa0IzQixFQUFTLE1BQU8sTUFBTyxLQUFLLEVBQUcsRUFLdkUsUUFBUyxDQUNMLENBQ0ksUUFBUyxDQUNMMkIsRUFDQTNCLEVBQ0EsT0FDQSxPQUNBLE1BQ0EsTUFDQSxNQUNBLFFBQ0EsQ0FBRW9HLE9BQVEsQ0FBQ3ZELEVBQVksQ0FBRyxFQUMxQkEsRUFBWSxDQUVuQixDQUFBLEVBTUx3RCxFQUFHLENBQ0MsQ0FDSUEsRUFBRyxDQUNDMUUsRUFDQTNCLEVBQ0EsT0FDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsS0FBSyxDQUVaLENBQUEsRUFNTCxRQUFTLENBQ0wsQ0FBRSxRQUFTLENBQUMyQixFQUFrQjNCLEVBQVMsTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLEtBQUssQ0FBRyxDQUFBLEVBTXRGLFFBQVMsQ0FDTCxDQUFFLFFBQVMsQ0FBQzJCLEVBQWtCM0IsRUFBUyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sS0FBSyxDQUFHLENBQUEsRUFNdEZzRyxLQUFNLENBQUMsQ0FBRUEsS0FBTSxDQUFDM0UsRUFBa0IzQixFQUFTLE9BQVEsTUFBTyxNQUFPLEtBQUssRUFBRyxFQU16RSxZQUFhLENBQUMsQ0FBRXVHLEtBQU0sQ0FBQyxPQUFRMUQsR0FBY2QsRUFBaUIsRUFBRyxFQUtqRSxpQkFBa0IsQ0FBQyxjQUFlLHNCQUFzQixFQUt4RCxhQUFjLENBQUMsU0FBVSxZQUFZLEVBS3JDLGNBQWUsQ0FDWCxDQUNJeUUsS0FBTSxDQUNGLE9BQ0EsYUFDQSxRQUNBLFNBQ0EsU0FDQSxXQUNBLE9BQ0EsWUFDQSxRQUNBQyxFQUFpQixDQUV4QixDQUFBLEVBTUwsY0FBZSxDQUFDLENBQUVELEtBQU0sQ0FBQzVELEVBQUssQ0FBQyxDQUFFLEVBS2pDLGFBQWMsQ0FBQyxhQUFhLEVBSzVCLGNBQWUsQ0FBQyxTQUFTLEVBS3pCLG1CQUFvQixDQUFDLGNBQWMsRUFLbkMsYUFBYyxDQUFDLGNBQWUsZUFBZSxFQUs3QyxjQUFlLENBQUMsb0JBQXFCLGNBQWMsRUFLbkQsZUFBZ0IsQ0FBQyxxQkFBc0Isa0JBQWtCLEVBS3pEOEQsU0FBVSxDQUNOLENBQ0lBLFNBQVUsQ0FDTixVQUNBLFFBQ0EsU0FDQSxPQUNBLFFBQ0EsU0FDQS9FLENBQWdCLENBRXZCLENBQUEsRUFNTCxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUMsT0FBUU0sR0FBVXdFLEVBQWlCLEVBQUcsRUFLdEVFLFFBQVMsQ0FDTCxDQUNJQSxRQUFTLENBQ0wsT0FDQSxRQUNBLE9BQ0EsU0FDQSxVQUNBLFFBQ0E3RSxHQUNBSCxDQUFnQixDQUV2QixDQUFBLEVBTUwsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDLE9BQVFBLENBQWdCLENBQUMsQ0FBRSxFQUszRCxrQkFBbUIsQ0FBQyxDQUFFaUYsS0FBTSxDQUFDLE9BQVEsT0FBUSxVQUFXakYsQ0FBZ0IsRUFBRyxFQUszRSxzQkFBdUIsQ0FBQyxDQUFFaUYsS0FBTSxDQUFDLFNBQVUsU0FBUyxDQUFDLENBQUUsRUFNdkQsb0JBQXFCLENBQUMsQ0FBRUMsWUFBYSxDQUFDL0csQ0FBTSxDQUFDLENBQUUsRUFLL0Msc0JBQXVCLENBQUMsQ0FBRSxzQkFBdUIsQ0FBQ2tCLENBQU8sQ0FBQyxDQUFFLEVBSzVELGlCQUFrQixDQUFDLENBQUV1RixLQUFNLENBQUMsT0FBUSxTQUFVLFFBQVMsVUFBVyxRQUFTLEtBQUssRUFBRyxFQUtuRixhQUFjLENBQUMsQ0FBRUEsS0FBTSxDQUFDekcsQ0FBTSxDQUFDLENBQUUsRUFLakMsZUFBZ0IsQ0FBQyxDQUFFLGVBQWdCLENBQUNrQixDQUFPLENBQUMsQ0FBRSxFQUs5QyxrQkFBbUIsQ0FBQyxZQUFhLFdBQVksZUFBZ0IsY0FBYyxFQUszRSx3QkFBeUIsQ0FBQyxDQUFFOEYsV0FBWSxDQUFDLEdBQUczRSxFQUFlLEVBQUUsTUFBTSxFQUFHLEVBS3RFLDRCQUE2QixDQUN6QixDQUFFMkUsV0FBWSxDQUFDLE9BQVEsWUFBYWhGLEdBQVVDLEVBQWlCLENBQUcsQ0FBQSxFQU10RSxtQkFBb0IsQ0FBQyxDQUFFLG1CQUFvQixDQUFDLE9BQVFELEdBQVVILENBQWdCLEVBQUcsRUFLakYsd0JBQXlCLENBQUMsQ0FBRW1GLFdBQVksQ0FBQ2hILENBQU0sQ0FBQyxDQUFFLEVBS2xELGlCQUFrQixDQUFDLFlBQWEsWUFBYSxhQUFjLGFBQWEsRUFLeEUsZ0JBQWlCLENBQUMsV0FBWSxnQkFBaUIsV0FBVyxFQUsxRCxZQUFhLENBQUMsQ0FBRXlHLEtBQU0sQ0FBQyxPQUFRLFNBQVUsVUFBVyxRQUFRLEVBQUcsRUFLL0RRLE9BQVEsQ0FBQyxDQUFFQSxPQUFRbkYsRUFBeUIsQ0FBQSxDQUFFLEVBSzlDLGlCQUFrQixDQUNkLENBQ0lvRixNQUFPLENBQ0gsV0FDQSxNQUNBLFNBQ0EsU0FDQSxXQUNBLGNBQ0EsTUFDQSxRQUNBckYsQ0FBZ0IsQ0FFdkIsQ0FBQSxFQU1Mc0YsV0FBWSxDQUNSLENBQUVBLFdBQVksQ0FBQyxTQUFVLFNBQVUsTUFBTyxXQUFZLFdBQVksY0FBYyxDQUFHLENBQUEsRUFNdkZDLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUMsU0FBVSxRQUFTLE1BQU8sTUFBTSxFQUFHLEVBS3JEQyxRQUFTLENBQUMsQ0FBRUEsUUFBUyxDQUFDLE9BQVEsU0FBVSxNQUFNLEVBQUcsRUFLakRyQyxRQUFTLENBQUMsQ0FBRUEsUUFBUyxDQUFDLE9BQVFuRCxDQUFnQixDQUFDLENBQUUsRUFNakQsZ0JBQWlCLENBQUMsQ0FBRXlGLEdBQUksQ0FBQyxRQUFTLFFBQVMsUUFBUSxFQUFHLEVBS3RELFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQyxTQUFVLFVBQVcsVUFBVyxNQUFNLEVBQUcsRUFNbkUsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDcEcsQ0FBTyxDQUFDLENBQUUsRUFLMUMsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDLFNBQVUsVUFBVyxTQUFTLEVBQUcsRUFLL0QsY0FBZSxDQUFDLENBQUVvRyxHQUFJLENBQUMsR0FBR2xGLEVBQWMsRUFBRW1GLEVBQW1CLEVBQUcsRUFLaEUsWUFBYSxDQUFDLENBQUVELEdBQUksQ0FBQyxZQUFhLENBQUVFLE9BQVEsQ0FBQyxHQUFJLElBQUssSUFBSyxRQUFTLE9BQU8sQ0FBQyxDQUFFLENBQUMsQ0FBRSxFQUtqRixVQUFXLENBQUMsQ0FBRUYsR0FBSSxDQUFDLE9BQVEsUUFBUyxVQUFXRyxFQUFlLEVBQUcsRUFLakUsV0FBWSxDQUNSLENBQ0lILEdBQUksQ0FDQSxPQUNBLENBQUUsY0FBZSxDQUFDLElBQUssS0FBTSxJQUFLLEtBQU0sSUFBSyxLQUFNLElBQUssSUFBSSxDQUFHLEVBQy9ESSxFQUFnQixDQUV2QixDQUFBLEVBTUwsV0FBWSxDQUFDLENBQUVKLEdBQUksQ0FBQ3RILENBQU0sQ0FBQyxDQUFFLEVBSzdCLG9CQUFxQixDQUFDLENBQUUySCxLQUFNLENBQUM1RyxDQUEwQixDQUFDLENBQUUsRUFLNUQsbUJBQW9CLENBQUMsQ0FBRTZHLElBQUssQ0FBQzdHLENBQTBCLENBQUMsQ0FBRSxFQUsxRCxrQkFBbUIsQ0FBQyxDQUFFOEcsR0FBSSxDQUFDOUcsQ0FBMEIsQ0FBQyxDQUFFLEVBS3hELGdCQUFpQixDQUFDLENBQUU0RyxLQUFNLENBQUM3RyxDQUFrQixDQUFDLENBQUUsRUFLaEQsZUFBZ0IsQ0FBQyxDQUFFOEcsSUFBSyxDQUFDOUcsQ0FBa0IsQ0FBQyxDQUFFLEVBSzlDLGNBQWUsQ0FBQyxDQUFFK0csR0FBSSxDQUFDL0csQ0FBa0IsQ0FBQyxDQUFFLEVBTTVDZ0gsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQ3hILENBQVksQ0FBQyxDQUFFLEVBS3JDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxXQUFZLENBQUMsQ0FBRXlILE9BQVEsQ0FBQ3ZILENBQVcsQ0FBQyxDQUFFLEVBS3RDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDVSxDQUFPLENBQUMsQ0FBRSxFQUtsRCxlQUFnQixDQUFDLENBQUU2RyxPQUFRLENBQUMsR0FBRzFGLEVBQWUsRUFBRSxRQUFRLEVBQUcsRUFLM0QsV0FBWSxDQUFDLENBQUUsV0FBWSxDQUFDN0IsQ0FBVyxDQUFDLENBQUUsRUFLMUMsbUJBQW9CLENBQUMsa0JBQWtCLEVBS3ZDLFdBQVksQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLMUMsbUJBQW9CLENBQUMsa0JBQWtCLEVBS3ZDLGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUNVLENBQU8sQ0FBQyxDQUFFLEVBS2xELGVBQWdCLENBQUMsQ0FBRThHLE9BQVEzRixFQUFlLENBQUEsQ0FBRSxFQUs1QyxlQUFnQixDQUFDLENBQUUwRixPQUFRLENBQUMxSCxDQUFXLENBQUMsQ0FBRSxFQUsxQyxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxlQUFnQixDQUFDLENBQUUySCxPQUFRLENBQUMzSCxDQUFXLENBQUMsQ0FBRSxFQUsxQyxnQkFBaUIsQ0FBQyxDQUFFNEgsUUFBUyxDQUFDLEdBQUksR0FBRzVGLEVBQWUsQ0FBQSxFQUFHLEVBS3ZELGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUNMLEdBQVVILENBQWdCLENBQUMsQ0FBRSxFQUtyRSxZQUFhLENBQUMsQ0FBRW9HLFFBQVMsQ0FBQ2pHLEdBQVVDLEVBQWlCLENBQUMsQ0FBRSxFQUt4RCxnQkFBaUIsQ0FBQyxDQUFFZ0csUUFBUyxDQUFDakksQ0FBTSxDQUFDLENBQUUsRUFLdkMsU0FBVSxDQUFDLENBQUVrSSxLQUFNbkcsR0FBZ0MsQ0FBQSxDQUFFLEVBS3JELGVBQWdCLENBQUMsWUFBWSxFQUs3QixhQUFjLENBQUMsQ0FBRW1HLEtBQU0sQ0FBQ2xJLENBQU0sQ0FBQyxDQUFFLEVBS2pDLGVBQWdCLENBQUMsQ0FBRSxlQUFnQixDQUFDa0IsQ0FBTyxDQUFDLENBQUUsRUFLOUMsZ0JBQWlCLENBQUMsQ0FBRSxjQUFlLENBQUNjLEdBQVVDLEVBQWlCLENBQUMsQ0FBRSxFQUtsRSxvQkFBcUIsQ0FBQyxDQUFFLGNBQWUsQ0FBQ2pDLENBQU0sQ0FBQyxDQUFFLEVBTWpEbUksT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQyxHQUFJLFFBQVMsT0FBUXBGLEdBQWNxRixFQUFpQixFQUFHLEVBSzNFLGVBQWdCLENBQUMsQ0FBRUQsT0FBUSxDQUFDckYsRUFBSyxDQUFDLENBQUUsRUFLcEM1QixRQUFTLENBQUMsQ0FBRUEsUUFBUyxDQUFDQSxDQUFPLENBQUMsQ0FBRSxFQUtoQyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUMsR0FBR29CLEVBQWEsRUFBSSxlQUFnQixhQUFhLEVBQUcsRUFLbEYsV0FBWSxDQUFDLENBQUUsV0FBWUEsRUFBZSxDQUFBLENBQUUsRUFPNUMrRixPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLEdBQUksTUFBTSxDQUFDLENBQUUsRUFLakNsSSxLQUFNLENBQUMsQ0FBRUEsS0FBTSxDQUFDQSxDQUFJLENBQUMsQ0FBRSxFQUt2QkMsV0FBWSxDQUFDLENBQUVBLFdBQVksQ0FBQ0EsQ0FBVSxDQUFDLENBQUUsRUFLekNLLFNBQVUsQ0FBQyxDQUFFQSxTQUFVLENBQUNBLENBQVEsQ0FBQyxDQUFFLEVBS25DLGNBQWUsQ0FBQyxDQUFFLGNBQWUsQ0FBQyxHQUFJLE9BQVFzQyxHQUFjbEIsQ0FBZ0IsRUFBRyxFQUsvRW5CLFVBQVcsQ0FBQyxDQUFFQSxVQUFXLENBQUNBLENBQVMsQ0FBQyxDQUFFLEVBS3RDLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0MsQ0FBUyxDQUFDLENBQUUsRUFLNUNDLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUNBLENBQU0sQ0FBQyxDQUFFLEVBSzdCUSxTQUFVLENBQUMsQ0FBRUEsU0FBVSxDQUFDQSxDQUFRLENBQUMsQ0FBRSxFQUtuQ0UsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQ0EsRUFBSyxDQUFDLENBQUUsRUFNMUIsa0JBQW1CLENBQUMsQ0FBRSxrQkFBbUIsQ0FBQyxHQUFJLE1BQU0sQ0FBQyxDQUFFLEVBS3ZELGdCQUFpQixDQUFDLENBQUUsZ0JBQWlCLENBQUNuQixDQUFJLENBQUMsQ0FBRSxFQUs3QyxzQkFBdUIsQ0FBQyxDQUFFLHNCQUF1QixDQUFDQyxDQUFVLENBQUMsQ0FBRSxFQUsvRCxvQkFBcUIsQ0FBQyxDQUFFLG9CQUFxQixDQUFDSyxDQUFRLENBQUMsQ0FBRSxFQUt6RCxxQkFBc0IsQ0FBQyxDQUFFLHFCQUFzQixDQUFDQyxDQUFTLENBQUMsQ0FBRSxFQUs1RCxzQkFBdUIsQ0FBQyxDQUFFLHNCQUF1QixDQUFDQyxDQUFTLENBQUMsQ0FBRSxFQUs5RCxrQkFBbUIsQ0FBQyxDQUFFLGtCQUFtQixDQUFDQyxDQUFNLENBQUMsQ0FBRSxFQUtuRCxtQkFBb0IsQ0FBQyxDQUFFLG1CQUFvQixDQUFDTSxDQUFPLENBQUMsQ0FBRSxFQUt0RCxvQkFBcUIsQ0FBQyxDQUFFLG9CQUFxQixDQUFDRSxDQUFRLENBQUMsQ0FBRSxFQUt6RCxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDRSxFQUFLLENBQUMsQ0FBRSxFQU1oRCxrQkFBbUIsQ0FBQyxDQUFFeUcsT0FBUSxDQUFDLFdBQVksVUFBVSxDQUFDLENBQUUsRUFLeEQsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQ3hILENBQWEsQ0FBQyxDQUFFLEVBS3hELG1CQUFvQixDQUFDLENBQUUsbUJBQW9CLENBQUNBLENBQWEsQ0FBQyxDQUFFLEVBSzVELG1CQUFvQixDQUFDLENBQUUsbUJBQW9CLENBQUNBLENBQWEsQ0FBQyxDQUFFLEVBSzVELGVBQWdCLENBQUMsQ0FBRStILE1BQU8sQ0FBQyxPQUFRLE9BQU8sQ0FBQyxDQUFFLEVBSzdDQyxRQUFTLENBQUMsQ0FBRUEsUUFBUyxDQUFDLE1BQU8sUUFBUSxDQUFDLENBQUUsRUFNeENDLFdBQVksQ0FDUixDQUNJQSxXQUFZLENBQ1IsT0FDQSxNQUNBLEdBQ0EsU0FDQSxVQUNBLFNBQ0EsWUFDQTNHLENBQWdCLENBRXZCLENBQUEsRUFNTDRHLFNBQVUsQ0FBQyxDQUFFQSxTQUFVL0YsRUFBdUIsQ0FBQSxDQUFFLEVBS2hEZ0csS0FBTSxDQUFDLENBQUVBLEtBQU0sQ0FBQyxTQUFVLEtBQU0sTUFBTyxTQUFVN0csQ0FBZ0IsRUFBRyxFQUtwRThHLE1BQU8sQ0FBQyxDQUFFQSxNQUFPakcsRUFBdUIsQ0FBQSxDQUFFLEVBSzFDa0csUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQyxPQUFRLE9BQVEsT0FBUSxRQUFTLFNBQVUvRyxDQUFnQixFQUFHLEVBTXBGZ0gsVUFBVyxDQUFDLENBQUVBLFVBQVcsQ0FBQyxHQUFJLE1BQU8sTUFBTSxFQUFHLEVBSzlDeEgsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLMUIsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUtsQyxVQUFXLENBQUMsQ0FBRSxVQUFXLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBS2xDeUgsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQ3hFLEdBQVd6QyxDQUFnQixDQUFDLENBQUUsRUFLbEQsY0FBZSxDQUFDLENBQUUsY0FBZSxDQUFDSixDQUFTLENBQUMsQ0FBRSxFQUs5QyxjQUFlLENBQUMsQ0FBRSxjQUFlLENBQUNBLENBQVMsQ0FBQyxDQUFFLEVBSzlDLFNBQVUsQ0FBQyxDQUFFLFNBQVUsQ0FBQ0YsQ0FBSSxDQUFDLENBQUUsRUFLL0IsU0FBVSxDQUFDLENBQUUsU0FBVSxDQUFDQSxDQUFJLENBQUMsQ0FBRSxFQUsvQixtQkFBb0IsQ0FDaEIsQ0FDSXdILE9BQVEsQ0FDSixTQUNBLE1BQ0EsWUFDQSxRQUNBLGVBQ0EsU0FDQSxjQUNBLE9BQ0EsV0FDQWxILENBQWdCLENBRXZCLENBQUEsRUFPTG1ILE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMsT0FBUWhKLENBQU0sQ0FBQyxDQUFFLEVBS3JDaUosV0FBWSxDQUFDLENBQUVBLFdBQVksQ0FBQyxPQUFRLE1BQU0sQ0FBQyxDQUFFLEVBSzdDQyxPQUFRLENBQ0osQ0FDSUEsT0FBUSxDQUNKLE9BQ0EsVUFDQSxVQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsY0FDQSxPQUNBLGVBQ0EsV0FDQSxPQUNBLFlBQ0EsZ0JBQ0EsUUFDQSxPQUNBLFVBQ0EsT0FDQSxXQUNBLGFBQ0EsYUFDQSxhQUNBLFdBQ0EsV0FDQSxXQUNBLFdBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsY0FDQSxjQUNBLFVBQ0EsV0FDQXJILENBQWdCLENBRXZCLENBQUEsRUFNTCxjQUFlLENBQUMsQ0FBRXNILE1BQU8sQ0FBQ25KLENBQU0sQ0FBQyxDQUFFLEVBS25DLGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUMsT0FBUSxNQUFNLENBQUMsQ0FBRSxFQUt6RG9KLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMsT0FBUSxJQUFLLElBQUssRUFBRSxFQUFHLEVBSzNDLGtCQUFtQixDQUFDLENBQUVDLE9BQVEsQ0FBQyxPQUFRLFFBQVEsQ0FBQyxDQUFFLEVBS2xELFdBQVksQ0FBQyxDQUFFLFdBQVl2SCxFQUF5QixDQUFBLENBQUUsRUFLdEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxXQUFZLENBQUMsQ0FBRSxXQUFZQSxFQUF5QixDQUFBLENBQUUsRUFLdEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxhQUFjLENBQUMsQ0FBRXdILEtBQU0sQ0FBQyxRQUFTLE1BQU8sU0FBVSxZQUFZLEVBQUcsRUFLakUsWUFBYSxDQUFDLENBQUVBLEtBQU0sQ0FBQyxTQUFVLFFBQVEsQ0FBQyxDQUFFLEVBSzVDLFlBQWEsQ0FBQyxDQUFFQSxLQUFNLENBQUMsT0FBUSxJQUFLLElBQUssTUFBTSxFQUFHLEVBS2xELGtCQUFtQixDQUFDLENBQUVBLEtBQU0sQ0FBQyxZQUFhLFdBQVcsQ0FBQyxDQUFFLEVBS3hEQyxNQUFPLENBQ0gsQ0FDSUEsTUFBTyxDQUFDLE9BQVEsT0FBUSxjQUFjLENBQ3pDLENBQUEsRUFNTCxVQUFXLENBQ1AsQ0FDSSxZQUFhLENBQUMsSUFBSyxPQUFRLE9BQU8sQ0FDckMsQ0FBQSxFQU1MLFVBQVcsQ0FDUCxDQUNJLFlBQWEsQ0FBQyxJQUFLLEtBQU0sTUFBTSxDQUNsQyxDQUFBLEVBTUwsV0FBWSxDQUFDLGtCQUFrQixFQUsvQkMsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQyxPQUFRLE9BQVEsTUFBTyxNQUFNLEVBQUcsRUFLcEQsY0FBZSxDQUNYLENBQUUsY0FBZSxDQUFDLE9BQVEsU0FBVSxXQUFZLFlBQWEzSCxDQUFnQixDQUFHLENBQUEsRUFPcEY0SCxLQUFNLENBQUMsQ0FBRUEsS0FBTSxDQUFDekosRUFBUSxNQUFNLENBQUMsQ0FBRSxFQUtqQyxXQUFZLENBQUMsQ0FBRTBKLE9BQVEsQ0FBQzFILEdBQVVDLEdBQW1CMEUsRUFBaUIsRUFBRyxFQUt6RStDLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMxSixFQUFRLE1BQU0sQ0FBQyxDQUFFLEVBTXJDMkosR0FBSSxDQUFDLFVBQVcsYUFBYSxFQUs3QixzQkFBdUIsQ0FBQyxDQUFFLHNCQUF1QixDQUFDLE9BQVEsTUFBTSxDQUFDLENBQUUsQ0FDdEUsRUFDREMsdUJBQXdCLENBQ3BCakcsU0FBVSxDQUFDLGFBQWMsWUFBWSxFQUNyQ0MsV0FBWSxDQUFDLGVBQWdCLGNBQWMsRUFDM0M1QyxNQUFPLENBQUMsVUFBVyxVQUFXLFFBQVMsTUFBTyxNQUFPLFFBQVMsU0FBVSxNQUFNLEVBQzlFLFVBQVcsQ0FBQyxRQUFTLE1BQU0sRUFDM0IsVUFBVyxDQUFDLE1BQU8sUUFBUSxFQUMzQndELEtBQU0sQ0FBQyxRQUFTLE9BQVEsUUFBUSxFQUNoQzNELElBQUssQ0FBQyxRQUFTLE9BQU8sRUFDdEJzRSxFQUFHLENBQUMsS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxJQUFJLEVBQ2xEQyxHQUFJLENBQUMsS0FBTSxJQUFJLEVBQ2ZDLEdBQUksQ0FBQyxLQUFNLElBQUksRUFDZk8sRUFBRyxDQUFDLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sSUFBSSxFQUNsREMsR0FBSSxDQUFDLEtBQU0sSUFBSSxFQUNmQyxHQUFJLENBQUMsS0FBTSxJQUFJLEVBQ2ZVLEtBQU0sQ0FBQyxJQUFLLEdBQUcsRUFDZixZQUFhLENBQUMsU0FBUyxFQUN2QixhQUFjLENBQ1YsY0FDQSxtQkFDQSxhQUNBLGNBQ0EsY0FBYyxFQUVsQixjQUFlLENBQUMsWUFBWSxFQUM1QixtQkFBb0IsQ0FBQyxZQUFZLEVBQ2pDLGFBQWMsQ0FBQyxZQUFZLEVBQzNCLGNBQWUsQ0FBQyxZQUFZLEVBQzVCLGVBQWdCLENBQUMsWUFBWSxFQUM3QixhQUFjLENBQUMsVUFBVyxVQUFVLEVBQ3BDc0IsUUFBUyxDQUNMLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLGFBQ0EsYUFDQSxhQUNBLGFBQ0EsYUFDQSxhQUNBLGFBQ0EsWUFBWSxFQUVoQixZQUFhLENBQUMsYUFBYyxZQUFZLEVBQ3hDLFlBQWEsQ0FBQyxhQUFjLFlBQVksRUFDeEMsWUFBYSxDQUFDLGFBQWMsWUFBWSxFQUN4QyxZQUFhLENBQUMsYUFBYyxZQUFZLEVBQ3hDLFlBQWEsQ0FBQyxhQUFjLFlBQVksRUFDeEMsWUFBYSxDQUFDLGFBQWMsWUFBWSxFQUN4QyxpQkFBa0IsQ0FBQyxtQkFBb0Isa0JBQWtCLEVBQ3pELFdBQVksQ0FDUixhQUNBLGFBQ0EsYUFDQSxhQUNBLGFBQ0EsWUFBWSxFQUVoQixhQUFjLENBQUMsYUFBYyxZQUFZLEVBQ3pDLGFBQWMsQ0FBQyxhQUFjLFlBQVksRUFDekMsZUFBZ0IsQ0FDWixpQkFDQSxpQkFDQSxpQkFDQSxnQkFBZ0IsRUFFcEIsaUJBQWtCLENBQUMsaUJBQWtCLGdCQUFnQixFQUNyRCxpQkFBa0IsQ0FBQyxpQkFBa0IsZ0JBQWdCLEVBQ3JELFdBQVksQ0FDUixZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFdBQVcsRUFFZixZQUFhLENBQUMsWUFBYSxXQUFXLEVBQ3RDLFlBQWEsQ0FBQyxZQUFhLFdBQVcsRUFDdEMsV0FBWSxDQUNSLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsV0FBVyxFQUVmLFlBQWEsQ0FBQyxZQUFhLFdBQVcsRUFDdEMsWUFBYSxDQUFDLFlBQWEsV0FBVyxFQUN0Q3lCLE1BQU8sQ0FBQyxVQUFXLFVBQVcsVUFBVSxFQUN4QyxVQUFXLENBQUMsT0FBTyxFQUNuQixVQUFXLENBQUMsT0FBTyxFQUNuQixXQUFZLENBQUMsT0FBTyxDQUN2QixFQUNETSwrQkFBZ0MsQ0FDNUIsWUFBYSxDQUFDLFNBQVMsQ0FDMUIsRUFFVCxFQ2owRGFDLEdBQWVBLENBQ3hCQyxFQUNBLENBQ0lwSCxVQUFBQSxFQUNBcUgsT0FBQUEsRUFDQXBILFVBQUFBLEVBQ0FxSCwyQkFBQUEsRUFDQUMsT0FBQUEsRUFBUyxDQUFBLEVBQ1RDLFNBQUFBLEVBQVcsQ0FBRSxDQUFBLElBRWpCLENBQ0FDLEdBQWlCTCxFQUFZLFlBQWFwSCxDQUFTLEVBQ25EeUgsR0FBaUJMLEVBQVksU0FBVUMsQ0FBTSxFQUM3Q0ksR0FBaUJMLEVBQVksWUFBYW5ILENBQVMsRUFDbkR3SCxHQUFpQkwsRUFBWSw2QkFBOEJFLENBQTBCLEVBRXJGLFFBQVdJLEtBQWFGLEVBQ3BCRyxHQUNJUCxFQUFXTSxDQUFrQyxFQUM3Q0YsRUFBU0UsQ0FBa0MsQ0FBQyxFQUlwRCxRQUFXRSxLQUFPTCxFQUNkTSxHQUNJVCxFQUFXUSxDQUEwQixFQUNyQ0wsRUFBT0ssQ0FBMEIsQ0FBQyxFQUkxQyxPQUFPUixDQUNYLEVBRU1LLEdBQW1CQSxDQUNyQkssRUFDQUMsRUFDQUMsSUFDQSxDQUNJQSxJQUFrQkMsU0FDbEJILEVBQVdDLENBQVcsRUFBSUMsRUFFbEMsRUFFTUwsR0FBMkJBLENBQzdCRyxFQUNBSSxJQUNBLENBQ0EsR0FBSUEsRUFDQSxRQUFXTixLQUFPTSxFQUNkVCxHQUFpQkssRUFBWUYsRUFBS00sRUFBZU4sQ0FBRyxDQUFDLENBR2pFLEVBRU1DLEdBQXdCQSxDQUMxQkMsRUFDQUssSUFDQSxDQUNBLEdBQUlBLEVBQ0EsUUFBV1AsS0FBT08sRUFBYSxDQUMzQixJQUFNQyxFQUFhRCxFQUFZUCxDQUFHLEVBRTlCUSxJQUFlSCxTQUNmSCxFQUFXRixDQUFHLEdBQUtFLEVBQVdGLENBQUcsR0FBSyxDQUFBLEdBQUlTLE9BQU9ELENBQVUsRUFFbEUsQ0FFVCxFQ2xFYUUsR0FBc0JBLENBSS9CQyxLQU1HQyxJQUVILE9BQU9ELEdBQW9CLFdBQ3JCRSxHQUFvQnJMLEdBQWtCbUwsRUFBaUIsR0FBR0MsQ0FBWSxFQUN0RUMsR0FDSSxJQUFNdEIsR0FBYS9KLEdBQWtCLEVBQUVtTCxDQUFlLEVBQ3RELEdBQUdDLENBQVksRVpuQnRCLElBQU1FLEdBQVVDLEdBQW9CLENBQ3pDLE9BQVEsS0FDVixDQUFDLEVBRU0sU0FBU0MsS0FBTUMsRUFBc0IsQ0FDMUMsT0FBT0gsR0FBUUksR0FBS0QsQ0FBTSxDQUFDLENBQzdCLENjVkEsT0FBUyxpQkFBQUUsT0FBcUIsZ0ZDUWpCLElBQUFDLEdBQWVDLEdBQzFCQSxFQUFPLFFBQVEscUJBQXNCLE9BQU8sRUFBRSxZQUFZLEVBK0IvQ0MsR0FBZSxJQUEyQ0MsSUFDckVBLEVBQ0csT0FBTyxDQUFDQyxFQUFXQyxFQUFPQyxJQUV2QixFQUFRRixHQUNQQSxFQUFxQixLQUFBLElBQVcsSUFDakNFLEVBQU0sUUFBUUYsQ0FBUyxJQUFNQyxDQUVoQyxFQUNBLEtBQUssR0FBRyxFQUNSLEtBQUssMERDbERWLElBQWVFLEdBQUEsQ0FDYixNQUFPLDZCQUNQLE1BQU8sR0FDUCxPQUFRLEdBQ1IsUUFBUyxZQUNULEtBQU0sT0FDTixPQUFRLGVBQ1IsWUFBYSxFQUNiLGNBQWUsUUFDZixlQUFnQixPQUNsQixFQ2NBLElBQU1DLEdBQU9DLEdBQ1gsQ0FDRSxDQUNFLE1BQUFDLEVBQVEsZUFDUixLQUFBQyxFQUFPLEdBQ1AsWUFBQUMsRUFBYyxFQUNkLG9CQUFBQyxFQUNBLFVBQUFDLEVBQVksR0FDWixTQUFBQyxFQUNBLFNBQUFDLEVBQ0EsR0FBR0MsQ0FBQSxFQUVMQyxJQUVPQyxHQUNMLE1BQ0EsQ0FDRSxJQUFBRCxFQUNBLEdBQUdFLEdBQ0gsTUFBT1QsRUFDUCxPQUFRQSxFQUNSLE9BQVFELEVBQ1IsWUFBYUcsRUFBdUIsT0FBT0QsQ0FBVyxFQUFJLEdBQU0sT0FBT0QsQ0FBSSxFQUFJQyxFQUMvRSxVQUFXUyxHQUFhLFNBQVVQLENBQVMsRUFDM0MsR0FBR0csQ0FDTCxFQUNBLENBQ0UsR0FBR0QsRUFBUyxJQUFJLENBQUMsQ0FBQ00sRUFBS0MsQ0FBSyxJQUFNSixHQUFjRyxFQUFLQyxDQUFLLENBQUMsRUFDM0QsR0FBSSxNQUFNLFFBQVFSLENBQVEsRUFBSUEsRUFBVyxDQUFDQSxDQUFRLENBQ3BELENBQUEsQ0FHTixFQzdDTSxJQUFBUyxFQUFtQixDQUFDQyxFQUFrQkMsSUFBdUIsQ0FDakUsSUFBTUMsRUFBWUMsR0FBdUMsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsR0FBR0MsQ0FBUyxFQUFBQyxJQUNqRkMsR0FBY0MsR0FBTSxDQUNsQixJQUFBRixFQUNBLFNBQUFMLEVBQ0EsVUFBV1EsR0FBYSxVQUFVQyxHQUFZVixDQUFRLENBQUMsR0FBSUksQ0FBUyxFQUNwRSxHQUFHQyxDQUFBLENBQ0osQ0FBQSxFQUdPLE9BQUFILEVBQUEsWUFBYyxHQUFHRixDQUFRLEdBRTVCRSxDQUNULEVDWE0sSUFBQVMsR0FBc0JDLEVBQWlCLHNCQUF1QixDQUNsRSxDQUFDLE9BQVEsQ0FBRSxFQUFHLGdCQUFpQixJQUFLLFFBQUEsQ0FBVSxFQUM5QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFVBQVcsSUFBSyxRQUFBLENBQVUsRUFDeEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLEVBQ3pDLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsQ0FDM0MsQ0FBQyxFQ05LLElBQUFDLEdBQW9CQyxFQUFpQixvQkFBcUIsQ0FDOUQsQ0FBQyxPQUFRLENBQUUsRUFBRyxlQUFnQixJQUFLLFFBQUEsQ0FBVSxFQUM3QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFVBQVcsSUFBSyxRQUFBLENBQVUsRUFDeEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxZQUFhLElBQUssUUFBQSxDQUFVLEVBQzFDLENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxFQUN6QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsQ0FDM0MsQ0FBQyxFQ05ELElBQU1DLEdBQVFDLEVBQWlCLFFBQVMsQ0FBQyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGtCQUFtQixJQUFLLFFBQVMsQ0FBQyxDQUFDLENBQUMsRUNBckYsSUFBQUMsR0FBY0MsRUFBaUIsY0FBZSxDQUNsRCxDQUFDLE9BQVEsQ0FBRSxFQUFHLGVBQWdCLElBQUssUUFBQSxDQUFVLENBQy9DLENBQUMsRUNGSyxJQUFBQyxHQUFjQyxFQUFpQixjQUFlLENBQ2xELENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLENBQ2pELENBQUMsRUNGSyxJQUFBQyxHQUFlQyxFQUFpQixlQUFnQixDQUNwRCxDQUFDLE9BQVEsQ0FBRSxFQUFHLGdCQUFpQixJQUFLLFFBQUEsQ0FBVSxDQUNoRCxDQUFDLEVDRkQsSUFBTUMsR0FBWUMsRUFBaUIsWUFBYSxDQUFDLENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBUyxDQUFDLENBQUMsQ0FBQyxFQ0E1RixJQUFBQyxHQUFlQyxFQUFpQixlQUFnQixDQUNwRCxDQUFDLE9BQVEsQ0FBRSxFQUFHLGlCQUFrQixJQUFLLFFBQUEsQ0FBVSxFQUMvQyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGlCQUFrQixJQUFLLFFBQUEsQ0FBVSxDQUNqRCxDQUFDLEVDSEssSUFBQUMsR0FBZ0JDLEVBQWlCLGdCQUFpQixDQUN0RCxDQUFDLE9BQVEsQ0FBRSxFQUFHLGdCQUFpQixJQUFLLE9BQUEsQ0FBUyxFQUM3QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGlCQUFrQixJQUFLLFFBQUEsQ0FBVSxDQUNqRCxDQUFDLEVDSEssSUFBQUMsR0FBYUMsRUFBaUIsYUFBYyxDQUNoRCxDQUFDLFNBQVUsQ0FBRSxHQUFJLEtBQU0sR0FBSSxLQUFNLEVBQUcsS0FBTSxJQUFLLFFBQUEsQ0FBVSxFQUN6RCxDQUFDLE9BQVEsQ0FBRSxFQUFHLHVDQUF3QyxJQUFLLFFBQUEsQ0FBVSxFQUNyRSxDQUFDLE9BQVEsQ0FBRSxFQUFHLGFBQWMsSUFBSyxRQUFBLENBQVUsQ0FDN0MsQ0FBQyxFQ0pLLElBQUFDLEdBQVNDLEVBQWlCLFNBQVUsQ0FDeEMsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksS0FBTSxFQUFHLEtBQU0sSUFBSyxRQUFBLENBQVUsQ0FDM0QsQ0FBQyxFQ0ZLLElBQUFDLEdBQU9DLEVBQWlCLE9BQVEsQ0FDcEMsQ0FBQyxPQUFRLENBQUUsTUFBTyxLQUFNLE9BQVEsS0FBTSxFQUFHLElBQUssRUFBRyxJQUFLLEdBQUksSUFBSyxHQUFJLElBQUssSUFBSyxRQUFBLENBQVUsRUFDdkYsQ0FBQyxPQUFRLENBQUUsRUFBRywwREFBMkQsSUFBSyxRQUFBLENBQVUsQ0FDMUYsQ0FBQyxFQ0hLLElBQUFDLEdBQWlCQyxFQUFpQixpQkFBa0IsQ0FDeEQsQ0FBQyxXQUFZLENBQUUsT0FBUSxpQkFBa0IsSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxPQUFRLENBQUUsRUFBRywwQkFBMkIsSUFBSyxRQUFBLENBQVUsQ0FDMUQsQ0FBQyxFQ0hLLElBQUFDLEdBQVNDLEVBQWlCLFNBQVUsQ0FDeEMsQ0FBQyxVQUFXLENBQUUsT0FBUSw4Q0FBK0MsSUFBSyxRQUFBLENBQVUsQ0FDdEYsQ0FBQyxFQ0ZLLElBQUFDLEdBQWVDLEVBQWlCLGVBQWdCLENBQ3BELENBQUMsU0FBVSxDQUFFLEdBQUksSUFBSyxHQUFJLEtBQU0sRUFBRyxJQUFLLElBQUssUUFBQSxDQUFVLEVBQ3ZELENBQUMsU0FBVSxDQUFFLEdBQUksSUFBSyxHQUFJLElBQUssRUFBRyxJQUFLLElBQUssUUFBQSxDQUFVLEVBQ3RELENBQUMsU0FBVSxDQUFFLEdBQUksSUFBSyxHQUFJLEtBQU0sRUFBRyxJQUFLLElBQUssUUFBQSxDQUFVLEVBQ3ZELENBQUMsU0FBVSxDQUFFLEdBQUksS0FBTSxHQUFJLEtBQU0sRUFBRyxJQUFLLElBQUssUUFBQSxDQUFVLEVBQ3hELENBQUMsU0FBVSxDQUFFLEdBQUksS0FBTSxHQUFJLElBQUssRUFBRyxJQUFLLElBQUssUUFBQSxDQUFVLEVBQ3ZELENBQUMsU0FBVSxDQUFFLEdBQUksS0FBTSxHQUFJLEtBQU0sRUFBRyxJQUFLLElBQUssUUFBQSxDQUFVLENBQzFELENBQUMsRUNQSyxJQUFBQyxHQUFXQyxFQUFpQixXQUFZLENBQzVDLENBQ0UsT0FDQSxDQUNFLEVBQUcsNktBQ0gsSUFBSyxRQUNQLENBQ0YsRUFDQSxDQUFDLFNBQVUsQ0FBRSxHQUFJLE9BQVEsR0FBSSxNQUFPLEVBQUcsS0FBTSxLQUFNLGVBQWdCLElBQUssUUFBQSxDQUFVLENBQ3BGLENBQUMsRUNUSyxJQUFBQyxHQUFXQyxFQUFpQixXQUFZLENBQzVDLENBQUMsT0FBUSxDQUFFLEVBQUcseUJBQTBCLElBQUssUUFBQSxDQUFVLEVBQ3ZELENBQUMsT0FBUSxDQUFFLEVBQUcsMkJBQTRCLElBQUssUUFBQSxDQUFVLEVBQ3pELENBQUMsT0FBUSxDQUFFLEVBQUcsMEJBQTJCLElBQUssUUFBQSxDQUFVLEVBQ3hELENBQUMsT0FBUSxDQUFFLEVBQUcsNEJBQTZCLElBQUssUUFBQSxDQUFVLENBQzVELENBQUMsRUNMSyxJQUFBQyxHQUFXQyxFQUFpQixXQUFZLENBQzVDLENBQUMsT0FBUSxDQUFFLEVBQUcseUJBQTBCLElBQUssUUFBQSxDQUFVLEVBQ3ZELENBQUMsT0FBUSxDQUFFLEVBQUcsMkJBQTRCLElBQUssUUFBQSxDQUFVLEVBQ3pELENBQUMsT0FBUSxDQUFFLEVBQUcsMEJBQTJCLElBQUssUUFBQSxDQUFVLEVBQ3hELENBQUMsT0FBUSxDQUFFLEVBQUcsNEJBQTZCLElBQUssUUFBQSxDQUFVLENBQzVELENBQUMsRUNMSyxJQUFBQyxHQUFXQyxFQUFpQixXQUFZLENBQzVDLENBQUMsT0FBUSxDQUFFLEVBQUcsb0JBQXFCLElBQUssUUFBQSxDQUFVLEVBQ2xELENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxDQUMzQyxDQUFDLEVDSEssSUFBQUMsR0FBU0MsRUFBaUIsU0FBVSxDQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGlCQUFrQixJQUFLLFFBQUEsQ0FBVSxFQUMvQyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsQ0FDM0MsQ0FBQyxFQ0hLLElBQUFDLEdBQWlCQyxFQUFpQixpQkFBa0IsQ0FDeEQsQ0FBQyxPQUFRLENBQUUsTUFBTyxLQUFNLE9BQVEsS0FBTSxFQUFHLElBQUssRUFBRyxJQUFLLEdBQUksSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUM5RSxDQUFDLE9BQVEsQ0FBRSxFQUFHLFVBQVcsSUFBSyxRQUFBLENBQVUsRUFDeEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxpQkFBa0IsSUFBSyxRQUFBLENBQVUsQ0FDakQsQ0FBQyxFQ0pLLElBQUFDLEdBQWdCQyxFQUFpQixnQkFBaUIsQ0FDdEQsQ0FBQyxPQUFRLENBQUUsTUFBTyxLQUFNLE9BQVEsS0FBTSxFQUFHLElBQUssRUFBRyxJQUFLLEdBQUksSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUM5RSxDQUFDLE9BQVEsQ0FBRSxFQUFHLFVBQVcsSUFBSyxRQUFBLENBQVUsRUFDeEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxnQkFBaUIsSUFBSyxRQUFBLENBQVUsQ0FDaEQsQ0FBQyxFQ0pLLElBQUFDLEdBQVNDLEVBQWlCLFNBQVUsQ0FDeEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLEVBQ3pDLENBQUMsT0FBUSxDQUFFLEVBQUcsOENBQStDLElBQUssUUFBQSxDQUFVLEVBQzVFLENBQUMsT0FBUSxDQUFFLEVBQUcsYUFBYyxJQUFLLFFBQUEsQ0FBVSxFQUMzQyxDQUNFLE9BQ0EsQ0FDRSxFQUFHLDhFQUNILElBQUssUUFDUCxDQUNGLENBQ0YsQ0FBQyxFQ1hLLElBQUFDLEdBQU1DLEVBQWlCLE1BQU8sQ0FDbEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLEVBQ3pDLENBQ0UsT0FDQSxDQUNFLEVBQUcsNk1BQ0gsSUFBSyxRQUNQLENBQ0YsQ0FDRixDQUFDLEVDVEssSUFBQUMsR0FBU0MsRUFBaUIsU0FBVSxDQUN4QyxDQUNFLE9BQ0EsQ0FDRSxFQUFHLDRHQUNILElBQUssUUFDUCxDQUNGLENBQ0YsQ0FBQyxFQ1JLLElBQUFDLEdBQUlDLEVBQWlCLElBQUssQ0FDOUIsQ0FBQyxPQUFRLENBQUUsRUFBRyxhQUFjLElBQUssUUFBQSxDQUFVLEVBQzNDLENBQUMsT0FBUSxDQUFFLEVBQUcsYUFBYyxJQUFLLFFBQUEsQ0FBVSxDQUM3QyxDQUFDLEU5QmJELE9BQVMsaUJBQUFDLE9BQXFCLG9CQUM5QixPQUFTLGFBQUFDLEdBQVcsWUFBQUMsT0FBZ0IsUUFDcEMsT0FBUyxTQUFBQyxPQUFhLFMrQkx0QixPQUFTLE9BQUFDLE9BQThCLDJCQTBCOUIsY0FBQUMsT0FBQSxvQkFyQlQsSUFBTUMsR0FBZ0JDLEdBQ3BCLDhNQUNBLENBQ0UsU0FBVSxDQUNSLFFBQVMsQ0FDUCxRQUFTLGtHQUNULFVBQVcsOEZBQ1gsWUFDRSw4R0FDRixRQUFTLG9CQUNYLENBQ0YsRUFDQSxnQkFBaUIsQ0FDZixRQUFTLFNBQ1gsQ0FDRixDQUNGLEVBSUEsU0FBU0MsR0FBTSxDQUFFLFVBQUFDLEVBQVcsUUFBQUMsRUFBUyxHQUFHQyxDQUFNLEVBQWUsQ0FDM0QsT0FBT04sR0FBQyxPQUFJLFVBQVdPLEVBQUdOLEdBQWMsQ0FBRSxRQUFBSSxDQUFRLENBQUMsRUFBR0QsQ0FBUyxFQUFJLEdBQUdFLEVBQU8sQ0FDL0UsQ0MzQkEsT0FBUyxRQUFBRSxPQUFZLHVCQUNyQixPQUFTLE9BQUFDLE9BQThCLDJCQUN2QyxVQUFZQyxPQUFXLFFBeUNaLGNBQUFDLE9BQUEsb0JBckNYLElBQU1DLEdBQWlCQyxHQUNyQiwyVkFDQSxDQUNFLFNBQVUsQ0FDUixRQUFTLENBQ1AsUUFBUyw0RUFDVCxZQUFhLDJGQUNiLFFBQ0UsNkdBQ0YsVUFBVyxxRkFDWCxNQUFPLHFEQUNQLEtBQU0sMERBQ1IsRUFDQSxLQUFNLENBQ0osUUFBUyx5QkFDVCxHQUFJLDBDQUNKLEdBQUksMENBQ0osR0FBSSxnQ0FDSixLQUFNLGVBQ1IsQ0FDRixFQUNBLGdCQUFpQixDQUNmLFFBQVMsVUFDVCxLQUFNLFNBQ1IsQ0FDRixDQUNGLEVBUU1DLEVBQWUsY0FDbkIsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsUUFBQUMsRUFBUyxLQUFBQyxFQUFNLFFBQUFDLEVBQVUsR0FBTyxHQUFHQyxDQUFNLEVBQUdDLElBRWpEVCxHQURNTyxFQUFVRyxHQUFPLFNBQ3RCLENBQUssVUFBV0MsRUFBR1YsR0FBZSxDQUFFLFFBQUFJLEVBQVMsS0FBQUMsRUFBTSxVQUFBRixDQUFVLENBQUMsQ0FBQyxFQUFHLElBQUtLLEVBQU0sR0FBR0QsRUFBTyxDQUVuRyxFQUNBTCxFQUFPLFlBQWMsU0M5Q3JCLFVBQVlTLE9BQXNCLDBCQUNsQyxVQUFZQyxPQUFXLFFBZW5CLGNBQUFDLE9BQUEsb0JBWEosSUFBTUMsR0FBMkIsUUFFM0JDLEdBQWtDLFdBSXhDLElBQU1DLEdBQXVCLGNBRzNCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLE1BQUFDLEVBQVEsU0FBVSxXQUFBQyxFQUFhLEVBQUcsR0FBR0MsQ0FBTSxFQUFHQyxJQUM1REMsR0FBa0IsVUFBakIsQ0FDQyxTQUFBQSxHQUFrQixXQUFqQixDQUNDLElBQUtELEVBQ0wsTUFBT0gsRUFDUCxXQUFZQyxFQUNaLFVBQVdJLEVBQ1QsMmhCQUNBTixDQUNGLEVBQ0MsR0FBR0csRUFDTixFQUNGLENBQ0QsRUFDREosR0FBZSxZQUErQixXQUFRLFlDNUJ0RCxPQUFtQixlQUFBUSxHQUFhLGtCQUFBQyxPQUFzQix3QkNBdEQsT0FBUyxlQUFBQyxHQUFhLHVCQUFBQyxPQUEyQix3QkNDakQsVUFBWUMsT0FBVyxRQUN2QixPQUFTLGlCQUFBQyxHQUFlLGtCQUFBQyxPQUFzQix3QkNDOUMsSUFBSUMsR0FBd0IsS0FBTSxDQUNoQ0MsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FBYSxHQUNiQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBLFlBQVlDLEVBQVEsQ0FDbEIsR0FBTSxDQUNKLE9BQUFDLEVBQ0EsWUFBQUMsRUFDQSxRQUFBQyxFQUNBLGNBQUFDLEVBQ0EsZUFBQUMsRUFDQSxTQUFBQyxFQUNBLGNBQUFDLEVBQ0EsV0FBQUMsRUFDQSxXQUFBQyxFQUNBLGdCQUFBQyxDQUNGLEVBQUlWLEVBQ0osS0FBS2IsR0FBVXdCLEdBQWFWLENBQU0sRUFDbEMsS0FBS1osR0FBZWEsRUFDcEIsS0FBS1osR0FBV2EsRUFDaEIsS0FBS2YsR0FBaUJnQixFQUN0QixLQUFLWixHQUFjaUIsRUFDbkIsS0FBS2hCLEdBQW1CaUIsRUFDeEIsS0FBS2hCLEdBQWtCaUIsR0FBYU4sQ0FBYyxFQUNsRCxLQUFLVixHQUFZZ0IsR0FBYUwsQ0FBUSxFQUN0QyxLQUFLVixHQUFpQmUsR0FBYUosQ0FBYSxFQUNoRCxLQUFLVixHQUFjYyxHQUFhSCxDQUFVLENBQzVDLENBQ0Esa0JBQWtCRixFQUFVLENBQzFCLEtBQUtaLEdBQWdCLENBQUMsRUFBRVksQ0FBUSxDQUNsQyxDQUNBLFlBQVlBLEVBQVUsQ0FDcEIsS0FBS1gsR0FBVSxDQUFDLEVBQUVXLENBQVEsQ0FDNUIsQ0FDQSxpQkFBaUJNLEVBQVEsQ0FDdkIsS0FBS2hCLEdBQWUsQ0FBQyxFQUFFZ0IsQ0FBTSxDQUMvQixDQUNBLGNBQWNKLEVBQVksQ0FDeEIsS0FBS1gsR0FBWSxDQUFDLEVBQUVXLENBQVUsQ0FDaEMsQ0FDQSxVQUFVUCxFQUFRLENBQ2hCLEtBQUtkLEdBQVEsQ0FBQyxFQUFFYyxDQUFNLENBQ3hCLENBQ0EsTUFBTVksRUFBSSxDQUNSLEdBQUksS0FBS3RCLEdBQ1AsTUFBTSxJQUFJLE1BQU0sNkJBQTZCLEVBRS9DLElBQU11QixFQUFVQyxHQUFPLElBQU0sQ0FDM0IsSUFBTUMsRUFBUyxLQUNULENBQUNDLENBQVcsRUFBSSxLQUFLdkIsR0FDckIsQ0FBQ3dCLENBQUcsRUFBSSxLQUFLdkIsR0FDYixDQUFDaUIsQ0FBTSxFQUFJLEtBQUtoQixHQUNoQixDQUFDdUIsQ0FBTSxFQUFJLEtBQUt0QixHQUNoQixDQUFDdUIsQ0FBVyxFQUFJLEtBQUtqQyxHQUN2QmtDLEVBQ0osT0FBSSxLQUFLdkIsR0FDUHVCLEVBQVcsS0FBS3ZCLElBRWhCdUIsRUFBV0MsR0FBSyxJQUFNLE9BQU8seUJBQWlDLENBQUMsRUFDL0QsS0FBS3hCLEdBQWF1QixHQUVwQkUsR0FBZ0IsS0FBSy9CLEdBQWEsS0FBS0MsRUFBZ0IsRUFDaEQrQixHQUFnQkgsRUFBVUksR0FBVyxDQUMxQyxJQUFJLGFBQWMsQ0FDaEIsT0FBT1QsRUFBTzNCLEVBQ2hCLEVBQ0EsSUFBSSxTQUFVLENBQ1osT0FBTzJCLEVBQU8xQixFQUNoQixFQUNBLElBQUksZUFBZ0IsQ0FDbEIsT0FBTzBCLEVBQU81QixFQUNoQixFQUNBLElBQUksaUJBQWtCLENBQ3BCLE9BQU80QixFQUFPdkIsRUFDaEIsQ0FDRixFQUFHLENBQ0QsSUFBSSxRQUFTLENBQ1gsT0FBTzJCLEVBQVksQ0FDckIsRUFDQSxJQUFJLGdCQUFpQixDQUNuQixPQUFPSCxFQUFZLENBQ3JCLEVBQ0EsSUFBSSxVQUFXLENBQ2IsT0FBT0MsRUFBSSxDQUNiLEVBQ0EsSUFBSSxlQUFnQixDQUNsQixPQUFPTixFQUFPLENBQ2hCLEVBQ0EsSUFBSSxZQUFhLENBQ2YsT0FBT08sRUFBTyxDQUNoQixDQUNGLENBQUMsQ0FBQyxDQUNKLEVBQUdOLENBQUUsRUFDTCxLQUFLdEIsR0FBYSxHQUNsQixLQUFLUSxHQUFXZSxDQUNsQixDQUNBLFNBQVUsQ0FDUixHQUFJLENBQUMsS0FBS3ZCLEdBQ1IsTUFBTSxJQUFJLE1BQU0seUJBQXlCLEVBRTNDLEtBQUtRLEtBQVcsRUFDaEIsS0FBS1IsR0FBYSxFQUNwQixDQUNGLEVBR0ltQyxHQUE2QixLQUFNLENBQ3JDdkMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FBYSxHQUNiQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBOEIsR0FDQTdCLEdBQ0FDLEdBQ0EsWUFBWUMsRUFBUSxDQUNsQixHQUFNLENBQ0osT0FBQUMsRUFDQSxZQUFBQyxFQUNBLFFBQUFDLEVBQ0EsY0FBQUMsRUFDQSxlQUFBQyxFQUNBLFNBQUFDLEVBQ0EsY0FBQUMsRUFDQSxXQUFBQyxFQUNBLFdBQUFDLEVBQ0EsZ0JBQUFDLEVBQ0EsUUFBQWtCLENBQ0YsRUFBSTVCLEVBQ0osS0FBS2IsR0FBVXdCLEdBQWFWLENBQU0sRUFDbEMsS0FBS1osR0FBZWEsRUFDcEIsS0FBS1osR0FBV2EsRUFDaEIsS0FBS2YsR0FBaUJnQixFQUN0QixLQUFLWixHQUFjaUIsRUFDbkIsS0FBS2hCLEdBQW1CaUIsRUFDeEIsS0FBS2hCLEdBQWtCaUIsR0FBYU4sQ0FBYyxFQUNsRCxLQUFLVixHQUFZZ0IsR0FBYUwsQ0FBUSxFQUN0QyxLQUFLVixHQUFpQmUsR0FBYUosQ0FBYSxFQUNoRCxLQUFLVixHQUFjYyxHQUFhSCxDQUFVLEVBQzFDLEtBQUttQixHQUFXaEIsR0FBYWlCLENBQU8sQ0FDdEMsQ0FDQSxrQkFBa0J0QixFQUFVLENBQzFCLEtBQUtaLEdBQWdCLENBQUMsRUFBRVksQ0FBUSxDQUNsQyxDQUNBLFlBQVlBLEVBQVUsQ0FDcEIsS0FBS1gsR0FBVSxDQUFDLEVBQUVXLENBQVEsQ0FDNUIsQ0FDQSxpQkFBaUJNLEVBQVEsQ0FDdkIsS0FBS2hCLEdBQWUsQ0FBQyxFQUFFZ0IsQ0FBTSxDQUMvQixDQUNBLGNBQWNKLEVBQVksQ0FDeEIsS0FBS1gsR0FBWSxDQUFDLEVBQUVXLENBQVUsQ0FDaEMsQ0FDQSxVQUFVUCxFQUFRLENBQ2hCLEtBQUtkLEdBQVEsQ0FBQyxFQUFFYyxDQUFNLENBQ3hCLENBQ0EsV0FBVzJCLEVBQVMsQ0FDbEIsS0FBS0QsR0FBUyxDQUFDLEVBQUUsSUFBTUMsQ0FBTyxDQUNoQyxDQUNBLE1BQU1mLEVBQUksQ0FDUixHQUFJLEtBQUt0QixHQUNQLE1BQU0sSUFBSSxNQUFNLDZCQUE2QixFQUUvQyxJQUFNdUIsRUFBVUMsR0FBTyxJQUFNLENBQzNCLElBQU1DLEVBQVMsS0FDVCxDQUFDQyxDQUFXLEVBQUksS0FBS3ZCLEdBQ3JCLENBQUN3QixDQUFHLEVBQUksS0FBS3ZCLEdBQ2IsQ0FBQ2lCLENBQU0sRUFBSSxLQUFLaEIsR0FDaEIsQ0FBQ3VCLENBQU0sRUFBSSxLQUFLdEIsR0FDaEIsQ0FBQ3VCLENBQVcsRUFBSSxLQUFLakMsR0FDckIsQ0FBQ3lDLENBQU8sRUFBSSxLQUFLRCxHQUNuQk4sRUFDSixPQUFJLEtBQUt2QixHQUNQdUIsRUFBVyxLQUFLdkIsSUFFaEJ1QixFQUFXQyxHQUFLLElBQU0sT0FBTyx5QkFBc0MsQ0FBQyxFQUNwRSxLQUFLeEIsR0FBYXVCLEdBRXBCRSxHQUFnQixLQUFLL0IsR0FBYSxLQUFLQyxFQUFnQixFQUNoRCtCLEdBQWdCSCxFQUFVSSxHQUFXLENBQzFDLElBQUksYUFBYyxDQUNoQixPQUFPVCxFQUFPM0IsRUFDaEIsRUFDQSxJQUFJLFNBQVUsQ0FDWixPQUFPMkIsRUFBTzFCLEVBQ2hCLEVBQ0EsSUFBSSxlQUFnQixDQUNsQixPQUFPMEIsRUFBTzVCLEVBQ2hCLEVBQ0EsSUFBSSxpQkFBa0IsQ0FDcEIsT0FBTzRCLEVBQU92QixFQUNoQixDQUNGLEVBQUcsQ0FDRCxJQUFJLFFBQVMsQ0FDWCxPQUFPMkIsRUFBWSxDQUNyQixFQUNBLElBQUksZ0JBQWlCLENBQ25CLE9BQU9ILEVBQVksQ0FDckIsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPQyxFQUFJLENBQ2IsRUFDQSxJQUFJLGVBQWdCLENBQ2xCLE9BQU9OLEVBQU8sQ0FDaEIsRUFDQSxJQUFJLFlBQWEsQ0FDZixPQUFPTyxFQUFPLENBQ2hCLEVBQ0EsSUFBSSxTQUFVLENBQ1osT0FBT1MsRUFBUSxDQUNqQixDQUNGLENBQUMsQ0FBQyxDQUNKLEVBQUdmLENBQUUsRUFDTCxLQUFLdEIsR0FBYSxHQUNsQixLQUFLUSxHQUFXZSxDQUNsQixDQUNBLFNBQVUsQ0FDUixHQUFJLENBQUMsS0FBS3ZCLEdBQ1IsTUFBTSxJQUFJLE1BQU0seUJBQXlCLEVBRTNDLEtBQUtRLEtBQVcsRUFDaEIsS0FBS1IsR0FBYSxFQUNwQixDQUNGLEVEdElTLE9BQUEsT0FBQXNDLE9BQUEsb0JBOURGLFNBQVNDLEdBQ2RDLEVBQzJCLENBQzNCLElBQU1DLEVBQWNDLEdBQWVGLEVBQU0sTUFBTSxFQUN6Q0csRUFBWSxVQUF1QixJQUFJLEVBQ3ZDLENBQ0osZUFBQUMsRUFDQSxTQUFBQyxFQUNBLGNBQUFDLEVBQ0EsV0FBQUMsRUFDQSxXQUFBQyxFQUNBLGdCQUFBQyxDQUNGLEVBQUlULEVBQ0UsQ0FBQ1UsQ0FBUSxFQUFVLFlBQ3ZCLElBQUlDLEdBQXNCLENBQ3hCLE9BQVFWLEVBQ1IsWUFBYSxjQUNiLFFBQVMsSUFDVCxjQUFBVyxHQUNBLGVBQUFSLEVBQ0EsU0FBQUMsRUFDQSxjQUFBQyxFQUNBLFdBQUFDLEVBQ0EsV0FBQUMsRUFDQSxnQkFBQUMsQ0FDRixDQUFDLENBQ0gsRUFFTSxPQUFBLGFBQVUsSUFBTSxDQUNwQkMsRUFBUyxVQUFVVCxDQUFXLENBQ2hDLEVBQUcsQ0FBQ0EsRUFBYVMsQ0FBUSxDQUFDLEVBRXBCLGFBQVUsSUFBTSxDQUNoQk4sR0FDRk0sRUFBUyxrQkFBa0JOLENBQWMsQ0FFN0MsRUFBRyxDQUFDQSxFQUFnQk0sQ0FBUSxDQUFDLEVBRXZCLGFBQVUsSUFBTSxDQUNoQkwsR0FDRkssRUFBUyxZQUFZTCxDQUFRLENBRWpDLEVBQUcsQ0FBQ0EsRUFBVUssQ0FBUSxDQUFDLEVBRWpCLGFBQVUsSUFBTSxDQUNwQkEsRUFBUyxpQkFBaUJKLEdBQWlCLEVBQUssQ0FDbEQsRUFBRyxDQUFDQSxFQUFlSSxDQUFRLENBQUMsRUFFdEIsYUFBVSxJQUFNLENBQ3BCQSxFQUFTLGNBQWNILEdBQWMsQ0FBQyxDQUFDLENBQ3pDLEVBQUcsQ0FBQ0EsRUFBWUcsQ0FBUSxDQUFDLEVBRW5CLGFBQVUsS0FDVlAsRUFBSSxTQUNOTyxFQUFTLE1BQU1QLEVBQUksT0FBTyxFQUdyQixJQUFNLENBQ1hPLEVBQVMsUUFBUSxDQUNuQixHQUNDLENBQUNBLENBQVEsQ0FBQyxFQUVOWixHQUFDLE1BQUEsQ0FBSSxJQUFJLE1BQU0sVUFBVSx3QkFBd0IsSUFBQUssQ0FBQSxDQUFVLENBQ3BFLENFNUdBLFVBQVlVLE9BQVcsUUFDdkIsT0FBUyxpQkFBQUMsR0FBZSxrQkFBQUMsT0FBc0Isd0JBa0YxQyxPQUFBLE9BQUFDLE9BQUEsb0JBN0NHLFNBQVNDLEdBQ2RDLEVBQzJCLENBQzNCLElBQU1DLEVBQWNDLEdBQWVGLEVBQU0sTUFBTSxFQUN6Q0csRUFBWSxVQUF1QixJQUFJLEVBQ3ZDLENBQUUsV0FBQUMsRUFBWSxXQUFBQyxFQUFZLGdCQUFBQyxDQUFnQixFQUFJTixFQUM5QyxDQUFDTyxDQUFRLEVBQVUsWUFDdkIsSUFBSUMsR0FBMkIsQ0FDN0IsT0FBUVAsRUFDUixZQUFhLGNBQ2IsUUFBUyxJQUNULGNBQUFRLEdBQ0EsZUFBZ0IsY0FDaEIsU0FBVSxTQUNWLGNBQWUsR0FDZixXQUFBTCxFQUNBLFdBQUFDLEVBQ0EsZ0JBQUFDLEVBQ0EsUUFBU04sRUFBTSxPQUNqQixDQUFDLENBQ0gsRUFFTSxPQUFBLGFBQVUsSUFBTSxDQUNwQk8sRUFBUyxVQUFVTixDQUFXLENBQ2hDLEVBQUcsQ0FBQ0EsRUFBYU0sQ0FBUSxDQUFDLEVBRXBCLGFBQVUsSUFBTSxDQUNwQkEsRUFBUyxXQUFXUCxFQUFNLFVBQVksSUFBTSxDQUFDLEVBQUUsQ0FDakQsRUFBRyxDQUFDQSxFQUFNLFFBQVNPLENBQVEsQ0FBQyxFQUV0QixhQUFVLElBQU0sQ0FDcEJBLEVBQVMsY0FBY0gsR0FBYyxDQUFDLENBQUMsQ0FDekMsRUFBRyxDQUFDQSxFQUFZRyxDQUFRLENBQUMsRUFFbkIsYUFBVSxLQUNWSixFQUFJLFNBQ05JLEVBQVMsTUFBTUosRUFBSSxPQUFPLEVBR3JCLElBQU0sQ0FDWEksRUFBUyxRQUFRLENBQ25CLEdBQ0MsQ0FBQ0EsQ0FBUSxDQUFDLEVBR1hULEdBQUMsTUFBQSxDQUNDLE1BQU8sQ0FBRSxPQUFRLFFBQVMsR0FBR0UsRUFBTSxLQUFNLEVBQ3pDLFVBQVUsd0JBQ1YsSUFBQUcsQ0FBQSxDQUNELENBRUwsQ0NyRk8sSUFBTU8sR0FDWCxRQUFRLElBQUksV0FBYSxjQUNyQixVQUFZLENBQ1YsT0FBTyxJQUNULEVBQ1NBLEdBRUZDLEdBQ1gsUUFBUSxJQUFJLFdBQWEsY0FDckIsVUFBWSxDQUNWLE9BQU8sSUFDVCxFQUNjQSxHSmZwQixPQUFTLGlCQUFBQyxHQUF1QyxjQUFBQyxHQUFZLFdBQUFDLEdBQVMsWUFBQUMsT0FBZ0IsUUFDckYsT0FBUyxTQUFBQyxPQUFhLFNLSHRCLE9BQVMsV0FBV0MsT0FBYyxTQVU5QixjQUFBQyxPQUFBLG9CQUpKLElBQU1DLEdBQVUsQ0FBQyxDQUFFLEdBQUdDLENBQU0sSUFJeEJGLEdBQUNELEdBQUEsQ0FFQyxVQUFVLHNCQUNWLGFBQWMsQ0FDWixXQUFZLENBQ1YsTUFDRSx3SUFDRixZQUFhLHVDQUNiLGFBQWMsbUVBQ2QsYUFBYyw4REFDaEIsQ0FDRixFQUNDLEdBQUdHLEVBQ04sRUN2QkosT0FFRSxrQ0FBa0NDLE9BQzdCLHVCQUNQLE9BQXFDLGFBQUFDLEdBQVcsWUFBQUMsT0FBZ0IsUUFNaEUsU0FBU0MsSUFBaUIsQ0FFeEIsSUFBTUMsRUFBVSxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFDdEMsQ0FBQ0MsRUFBWUMsQ0FBYSxFQUFJSixHQUFTLElBQUksZ0JBQWdCRSxDQUFPLENBQUMsRUFHekUsU0FBU0csRUFBVUMsRUFBMEIsQ0FBRSxRQUFBQyxDQUFRLEVBQW1CLENBQ3hFLEdBQU0sQ0FBRSxTQUFBQyxFQUFVLE9BQUFDLENBQU8sRUFBSSxPQUFPLFNBQzlCQyxFQUFPSixFQUFRLFNBQVMsRUFDeEJLLEVBQU0sR0FBR0gsQ0FBUSxHQUFHQyxDQUFNLElBQUlDLENBQUksR0FFcENILElBQVksT0FDZCxPQUFPLFFBQVEsVUFBVSxLQUFNLEdBQUlJLENBQUcsRUFFdEMsT0FBTyxRQUFRLGFBQWEsS0FBTSxHQUFJQSxDQUFHLEVBRzNDUCxFQUFjRSxDQUFPLENBQ3ZCLENBR0EsU0FBU00sR0FBMEIsQ0FDakMsSUFBTUMsRUFBTSxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFFeEMsT0FBTyxJQUFJLGdCQUFnQkEsQ0FBRyxDQUNoQyxDQUdBLE9BQUFkLEdBQVUsSUFBTSxDQUNkLFNBQVNlLEdBQW1CLENBQzFCLElBQU1aLEVBQVUsT0FBTyxTQUFTLEtBQUssTUFBTSxDQUFDLEVBQzVDRSxFQUFjLElBQUksZ0JBQWdCRixDQUFPLENBQUMsQ0FDNUMsQ0FFQSxjQUFPLGlCQUFpQixhQUFjWSxDQUFnQixFQUUvQyxJQUFNLE9BQU8sb0JBQW9CLGFBQWNBLENBQWdCLENBQ3hFLEVBQUcsQ0FBQyxDQUFDLEVBRUUsQ0FBRSxhQUFjWCxFQUFZLFVBQUFFLEVBQVcsd0JBQUFPLENBQXdCLENBQ3hFLENBS08sSUFBTUcsR0FBa0JqQixHQUFzQkcsRUFBYyxFTkMvRCxPQUNFLE9BQUFlLEdBREYsUUFBQUMsT0FBQSxvQkE3QkosSUFBTUMsR0FBYyxJQUFJQyxHQUtsQkMsR0FBZ0JDLEdBQThDLE1BQVMsRUFRdEUsU0FBU0MsR0FBc0JDLEVBQW1DLENBQ3ZFLEdBQU0sQ0FBRSxTQUFBQyxFQUFVLEdBQUdDLENBQVcsRUFBSUYsRUFDOUIsQ0FBQ0csRUFBYUMsQ0FBYyxFQUFJQyxHQUF1QixJQUFJLEVBQzNELENBQUNDLEVBQWNDLENBQWUsRUFBSUYsR0FBUyxFQUFLLEVBQ2hELENBQUNHLEVBQWtCQyxDQUFtQixFQUFJSixHQUFTLEVBQUksRUFFekRLLEVBQVVWLEVBQU0sUUFDcEJVLElBQWFDLEdBQWlCQyxHQUFNLE1BQU1ELEVBQU0sT0FBTyxFQUV2RCxJQUFNRSxFQUFxQkMsR0FBUSxJQUMxQmQsRUFBTSxtQkFBcUIsSUFBTSxDQUFDLEdBQ3hDLENBQUNBLEVBQU0sZ0JBQWdCLENBQUMsRUFFckJlLEVBQW1CLElBQU1SLEVBQWlCUyxHQUFTLENBQUNBLENBQUksRUFDeERDLEVBQW1CLElBQU1SLEVBQXFCTyxHQUFTLENBQUNBLENBQUksRUFDbEUsT0FDRXRCLEdBQUN3QixHQUFBLENBQW9CLE9BQVF2QixHQUMzQixVQUFBRixHQUFDMEIsR0FBQSxFQUFtQixFQUNwQjFCLEdBQUMyQixHQUFBLEVBQVEsRUFDVDNCLEdBQUM0QixHQUFBLENBQ0MsU0FBQTVCLEdBQUNJLEdBQWMsU0FBZCxDQUNDLE1BQU8sQ0FDTCxHQUFHSyxFQUNILFlBQUFDLEVBQ0EsYUFBQUcsRUFDQSxlQUFBRixFQUNBLFFBQUFNLEVBQ0EsbUJBQUFHLEVBQ0EsaUJBQUFFLEVBQ0EsaUJBQUFQLEVBQ0EsaUJBQUFTLENBQ0YsRUFFQyxTQUFBaEIsRUFDSCxFQUNGLEdBQ0YsQ0FFSixDQU1PLFNBQVNxQixHQUFnQyxDQUM5QyxJQUFNQyxFQUFVQyxHQUFXM0IsRUFBYSxFQUV4QyxHQUFJLENBQUMwQixFQUNILE1BQU0sSUFBSSxNQUFNLDREQUE0RCxFQUc5RSxPQUFPQSxDQUNULENPMUZBLFNBQVNFLEdBQVNDLEVBQThCQyxFQUFjLENBQzVELElBQU1DLEVBQUssQ0FDVCxPQUFRQyxHQUFlSCxFQUFLQyxFQUFNLE9BQU8sRUFDekMsTUFBTyxHQUFHQSxFQUFNLE1BQU0sSUFBSUEsRUFBTSxJQUFJLEVBQ3RDLEVBRUEsT0FBTyxLQUFLLFVBQVVDLENBQUUsQ0FDMUIsQ0FFQSxTQUFTRSxHQUFjSixFQUE4QkMsRUFBYyxDQUNqRSxNQUFPLENBQUUsR0FBR0QsRUFBSyxXQUFZRCxHQUFTQyxFQUFLQyxDQUFLLENBQUUsQ0FDcEQsQ0FPTyxTQUFTSSxHQUEwQ0MsRUFBV0wsRUFBYyxDQUNqRixHQUFNLENBQUUsSUFBQUQsRUFBSyxLQUFBTyxDQUFLLEVBQUlELEVBRXRCLE9BQUlOLElBQVEsT0FDSCxDQUFFLEdBQUdNLEVBQVEsSUFBS0YsR0FBY0osRUFBS0MsQ0FBSyxDQUFFLEVBRWpETSxJQUFTLE9BQ0osQ0FBRSxHQUFHRCxFQUFRLEtBQU1DLEVBQUssSUFBS1AsR0FBUUksR0FBY0osRUFBS0MsQ0FBSyxDQUFDLENBQUUsRUFHbEVLLENBQ1QsQ1J6Qk8sU0FBU0UsSUFBdUIsQ0FDckMsR0FBTSxDQUFFLFlBQUFDLEVBQWEsUUFBQUMsQ0FBUSxFQUFJQyxFQUFVLEVBQ3JDQyxFQUFjQyxHQUFlLEVBQzdCLENBQUUsT0FBQUMsRUFBUyxLQUFNLEtBQU1DLEVBQVEsSUFBSyxFQUFJTixHQUFlLENBQUMsRUFFOUQsT0FBT08sR0FBWSxDQUNqQixZQUFhLENBQUMsU0FBVUYsRUFBUSxRQUFTQyxFQUFPLFFBQVEsRUFDeEQsTUFBTSxXQUFXRSxFQUFpQyxDQUNoRCxHQUFNLENBQUNDLEVBQU9DLENBQU0sRUFBSSxNQUFNVCxFQUFRLE9BQU8sQ0FBRSxLQUFBTyxFQUFNLE1BQU9SLENBQWEsRUFBRyxDQUFDLENBQUMsRUFFOUUsR0FBSVMsRUFDRixNQUFNQSxFQUdSLE9BQU9FLEdBQWlCRCxFQUFRVixDQUFZLENBQzlDLEVBQ0EsVUFBVVksRUFBUyxDQUNqQlQsRUFBWSxlQUNWLENBQ0UsTUFBTyxHQUVQLFNBQVUsQ0FBQyxTQUFVRSxFQUFRLFFBQVNDLEVBQU8sT0FBTyxDQUN0RCxFQUNDTyxHQUNLQSxHQUFXLEtBQ05BLEVBR0YsQ0FDTCxHQUFHQSxFQUNILEtBQU0sQ0FBQyxHQUFHRCxFQUFRLEtBQU0sR0FBR0MsRUFBUSxJQUFJLENBQ3pDLENBRUosQ0FDRixFQUNBLE1BQU8sRUFDVCxDQUFDLENBQ0gsQ1MzQ0EsT0FBUyxZQUFBQyxPQUFnQix3QkFhbEIsU0FBU0MsR0FBb0JDLEVBQWlDLENBQ25FLEdBQU0sQ0FBRSxVQUFBQyxFQUFXLFNBQUFDLEVBQVUsVUFBQUMsRUFBVyxPQUFBQyxDQUFPLEVBQUlKLEVBRTdDLENBQUUsWUFBQUssRUFBYSxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFFM0MsT0FBT0MsR0FBUyxDQUNkLFFBQVMsRUFBUUgsRUFDakIsT0FBUSxFQUNSLGdCQUFnQkksRUFBOENDLEVBQWUsQ0FDM0UsR0FBTSxDQUFDLENBQUVDLEVBQVEsQ0FBRUMsQ0FBSyxFQUFJRixHQUFlLFVBQVksQ0FBQyxFQUV4RCxHQUFJLEVBQUFDLElBQVdOLEdBQWEsUUFBVU8sSUFBVVAsR0FBYSxNQUk3RCxPQUFPSSxDQUNULEVBQ0EsTUFBTSxRQUFRLENBQUUsT0FBQUksQ0FBTyxFQUFHLENBQ3hCLEdBQU0sQ0FBQ0MsRUFBT0MsQ0FBTyxFQUFJLE1BQU1ULEVBQVEsTUFDckMsQ0FBRSxVQUFBTCxFQUFXLFNBQUFDLEVBQVUsVUFBQUMsRUFBVyxNQUFPRSxFQUFjLE9BQUFELENBQU8sRUFDOUQsQ0FBRSxZQUFhUyxDQUFPLENBQ3hCLEVBRUEsR0FBSUMsRUFDRixNQUFNQSxFQUdSLE9BQU9FLEdBQWlCRCxFQUFTVixDQUFZLENBQy9DLEVBQ0EsU0FBVSxDQUNSLFNBQ0FBLEdBQWEsUUFBVSxLQUN2QixRQUNBQSxHQUFhLE1BQVEsS0FDckIsUUFDQSxZQUNBRixFQUFVLElBQUtjLEdBQVMsR0FBR0EsRUFBSyxNQUFNLElBQUlBLEVBQUssU0FBUyxFQUFFLEVBQUUsS0FBSyxHQUFHLEdBQUssVUFDekUsWUFDQWhCLEVBQ0EsV0FDQUMsRUFDQSxTQUNBLEtBQUssVUFBVUUsQ0FBTSxDQUN2QixFQUNBLFVBQVcsR0FDYixDQUFDLENBQ0gsQ0MzREEsT0FBMkIsZUFBQWMsR0FBYSxrQkFBQUMsT0FBc0Isd0JBV3ZELFNBQVNDLElBQXVCLENBQ3JDLEdBQU0sQ0FBRSxZQUFBQyxFQUFhLFFBQUFDLEVBQVMsUUFBQUMsQ0FBUSxFQUFJQyxFQUFVLEVBQzlDQyxFQUFjQyxHQUFlLEVBRTdCQyxFQUFpQixDQUFDLFNBQVVOLEdBQWEsUUFBVSxLQUFNLFFBQVNBLEdBQWEsTUFBUSxJQUFJLEVBRWpHLE9BQU9PLEdBQVksQ0FDakIsV0FBWSxNQUFPQyxHQUF1QyxDQUN4RCxHQUFNLENBQUNDLEVBQU9DLENBQU0sRUFBSSxNQUFNVCxFQUFRLE9BQU9PLEVBQU8sUUFBU0EsRUFBTyxPQUFPLEVBRTNFLEdBQUlDLEVBQ0YsTUFBTUEsRUFHUixPQUFPQyxDQUNULEVBQ0EsWUFBYSxDQUFDLEdBQUdKLEVBQWdCLFFBQVEsRUFDekMsUUFBUUcsRUFBT0QsRUFBUSxDQUNyQixHQUFNLENBQUUsUUFBQUcsRUFBUyxJQUFBQyxDQUFJLEVBQUlKLEVBQU8sUUFFaENOLEVBQVFPLENBQUssRUFFYkksR0FBbUIsQ0FDakIsYUFBYyxDQUNaLElBQU1DLEVBQWEsQ0FBRSxHQUFHRixFQUFLLEdBQUdELENBQVEsRUFFbENJLEVBQVlDLEdBQWVGLEVBQVlkLEVBQWEsT0FBTyxFQUVqRSxPQUFRaUIsR0FBY0YsRUFBVSxNQUFNLENBQUMsQ0FBQ0csRUFBWUMsQ0FBSyxJQUFNRixFQUFVQyxDQUFVLElBQU1DLENBQUssQ0FDaEcsRUFDQSxZQUFBZixFQUNBLE1BQU9KLEVBQ1AsVUFBVyxTQUF1QmlCLEVBQVcsQ0FDM0MsTUFBTyxDQUNMLEdBQUdBLEVBQ0gsR0FBRyxPQUFPLEtBQUtOLENBQU8sRUFBRSxPQUN0QixDQUFDUyxFQUFnQkYsS0FBZ0IsQ0FBRSxHQUFHRSxFQUFnQixDQUFDRixDQUFVLEVBQUdOLEVBQUlNLENBQVUsQ0FBRSxHQUNwRixDQUFDLENBQ0gsQ0FDRixDQUNGLENBQ0YsQ0FBQyxDQUNILEVBQ0EsU0FBU1YsRUFBUSxDQUNmLEdBQU0sQ0FBRSxRQUFBYSxDQUFRLEVBQUliLEVBRXBCSyxHQUFtQixDQUNqQixhQUFjLENBQ1osR0FBTSxDQUFFLElBQUtTLENBQWEsRUFBSUQsRUFFeEJOLEVBQVlDLEdBQWVNLEVBQWN0QixFQUFhLE9BQU8sRUFFbkUsT0FBUWlCLEdBQWNGLEVBQVUsTUFBTSxDQUFDLENBQUNHLEVBQVlDLENBQUssSUFBTUYsRUFBVUMsQ0FBVSxJQUFNQyxDQUFLLENBQ2hHLEVBQ0EsWUFBQWYsRUFDQSxNQUFPSixFQUNQLFVBQVcsU0FBc0JpQixFQUFXLENBQzFDLE1BQU8sQ0FBRSxHQUFHQSxFQUFXLEdBQUdJLEVBQVEsT0FBUSxDQUM1QyxDQUNGLENBQUMsQ0FDSCxFQUNBLFVBQVVYLEVBQVFGLEVBQVEsQ0FDeEJLLEdBQW1CLENBQ2pCLGFBQWMsQ0FDWixHQUFNLENBQUUsUUFBQUYsRUFBUyxJQUFBQyxDQUFJLEVBQUlKLEVBQU8sUUFFMUJNLEVBQWEsQ0FBRSxHQUFHRixFQUFLLEdBQUdELENBQVEsRUFFbENJLEVBQVlDLEdBQWVGLEVBQVlkLEVBQWEsT0FBTyxFQUVqRSxPQUFRaUIsR0FBY0YsRUFBVSxNQUFNLENBQUMsQ0FBQ0csRUFBWUMsQ0FBSyxJQUFNRixFQUFVQyxDQUFVLElBQU1DLENBQUssQ0FDaEcsRUFDQSxZQUFBZixFQUNBLE1BQU9KLEVBQ1AsVUFBVyxTQUFrQ2lCLEVBQVcsQ0FDdEQsR0FBTSxDQUFFLGtCQUFBTSxDQUFrQixFQUFJTixFQUN4QixDQUFFLElBQUFMLENBQUksRUFBSUYsRUFHaEIsT0FBSWEsR0FBcUIsTUFBUVgsRUFBSSxtQkFBcUJXLEVBQ2pETixFQUdGLENBQUUsR0FBR0EsRUFBVyxHQUFHTCxDQUFJLENBQ2hDLENBQ0YsQ0FBQyxDQUNILEVBQ0EsTUFBTyxFQUNULENBQUMsQ0FDSCxDQUVBLFNBQVNDLEdBQW1CTCxFQUt6QixDQUNELEdBQU0sQ0FBRSxZQUFBZ0IsRUFBYSxZQUFBcEIsRUFBYSxNQUFBcUIsRUFBTyxVQUFBQyxDQUFVLEVBQUlsQixFQUVuRG1CLEVBRUp2QixFQUFZLGVBQ1YsQ0FBRSxNQUFPLEdBQU8sU0FBVSxDQUFDLFNBQVVxQixFQUFNLE9BQVEsUUFBU0EsRUFBTSxLQUFNLE9BQU8sQ0FBRSxFQUNoRkcsR0FBaUYsQ0FDaEYsR0FBTSxDQUFFLEtBQU1DLEVBQWEsQ0FBQyxDQUFFLEVBQUlELEdBQWdCLENBQUMsRUFFbkQsR0FBSUMsRUFBVyxTQUFXLEVBQ3hCLE9BQU9ELEVBR1QsSUFBTUUsRUFBaUJELEVBQVcsVUFBV0YsSUFBV0gsRUFBWSxDQUFFLEVBRXRFLEdBQUlNLElBQW1CLEdBQ3JCLE9BQU9GLEVBR1QsSUFBTUcsRUFBU0wsRUFBVUcsRUFBV0MsQ0FBYyxDQUFFLEVBRXBELE1BQU8sQ0FDTCxHQUFHRixFQUNILEtBQU0sQ0FBQyxHQUFHQyxFQUFXLE1BQU0sRUFBR0MsQ0FBYyxFQUFHQyxFQUFRLEdBQUdGLEVBQVcsTUFBTUMsRUFBaUIsQ0FBQyxDQUFDLENBQ2hHLENBQ0YsQ0FDRixDQUNGLENDdklBLE9BQVMsYUFBQUUsR0FBVyxXQUFBQyxHQUFTLFlBQUFDLE9BQWdCLFFBQzdDLE9BQU9DLE9BQVcsYUNEbEIsSUFBQUMsRUFBQSxHQUFBQyxHQUFBRCxFQUFBLFlBQUFFLEdBQUEsWUFBQUMsR0FBQSxrQkFBQUMsR0FBQSxtQkFBQUMsS0FnQkFDLEdBQUFDLEVBQUFDLElBWkEsT0FHRSxpQkFBaUJDLEdBR2pCLGtCQUFrQkMsT0FHYixPQUdQLFVBQUFGLE9BQWMsT0FnQlAsU0FBU0csR0FFZEEsRUFDb0IsQ0FDcEIsT0FBT0EsQ0FDVCxDQUdPLFNBQVNDLEdBRWRBLEVBQ29CLENBQ3BCLE9BQU9BLENBQ1QsQ0FFQSxJQUFNQyxHQUFnQixPQUFPLGNBQWMsRUErQnBDLFNBQVNDLEdBQWNDLEVBQWVDLEVBQW9CLENBRS9ELE9BQU9QLEdBQXNCTSxFQUFLQyxDQUFPLENBQzNDLENBaUJPLFNBQVNDLEdBQ2ROLEVBQ0FLLEVBQzhCLENBQzlCLE9BQU9OLEdBQXVCQyxFQUFpQkssQ0FBTyxDQUN4RCxDRGpHTyxJQUFNRSxHQUE2QixDQUN4QyxLQUFNLGNBQ04sUUFBUyxDQUFDLEVBQ1YsTUFBTyxNQUNQLEdBQUlDLEdBQU0sU0FBUyxDQUNyQixFQUVNQyxHQUF5QkMsR0FBcUMsQ0FDbEUsSUFBSUMsRUFBUSxFQUNaLFFBQVdDLEtBQVVGLEVBQVksUUFDM0JFLEVBQU8sT0FBUyxlQUVkQSxFQUFPLE9BQU8sS0FBSyxHQUNyQkQsSUFFT0MsRUFBTyxPQUFTLGdCQUN6QkQsR0FBU0YsR0FBc0JHLENBQU0sR0FHekMsT0FBT0QsQ0FDVCxFQUVPLFNBQVNFLElBQWUsQ0FDN0IsR0FBTSxDQUFDQyxFQUFhQyxDQUFjLEVBQUlDLEdBQWMsU0FBVSxDQUM1RCxhQUFjLEtBQUssVUFBVVQsRUFBYSxDQUM1QyxDQUFDLEVBRUtVLEVBQWdCQyxHQUFRLElBQU0sS0FBSyxNQUFNSixDQUFXLEVBQWtCLENBQUNBLENBQVcsQ0FBQyxFQUNuRkssRUFBb0JQLEdBQXdCLEtBQUtHLEVBQWUsS0FBSyxVQUFVSCxDQUFNLENBQUMsRUFFdEYsQ0FBQ1EsRUFBZUMsQ0FBZ0IsRUFBSUMsR0FBc0JMLENBQWEsRUFFN0VNLEdBQVUsSUFBTSxDQUNkRixFQUFpQkosQ0FBYSxDQUNoQyxFQUFHLENBQUNBLENBQWEsQ0FBQyxFQUVsQixJQUFNTyxFQUFzQk4sR0FBUSxJQUFNVCxHQUFzQlcsQ0FBYSxFQUFHLENBQUNBLENBQWEsQ0FBQyxFQUUvRixNQUFPLENBQ0wsY0FBQUgsRUFDQSxpQkFBQUUsRUFDQSxjQUFBQyxFQUNBLGlCQUFBQyxFQUNBLG9CQUFBRyxDQUNGLENBQ0YsQ0VuREEsT0FBUyxpQkFBQUMsT0FBcUIsd0JBS3ZCLFNBQVNDLElBQWlCLENBQy9CLE9BQU9ELEdBQWMsQ0FDbkIsVUFBVSxDQUFFLFFBQVMsQ0FBRSxZQUFBRSxDQUFZLENBQUUsRUFBRyxDQUN0QyxPQUFPQSxJQUFjLENBQUMsSUFBTSxRQUM5QixDQUNGLENBQUMsQ0FDSCxDQ1ZBLE9BQVMsZUFBQUMsT0FBbUIsUUFLNUIsSUFBTUMsR0FBb0IsR0FFcEJDLEdBQTJCLENBQy9CLFVBQVcsZUFBYSxZQUFZLENBQUMsRUFDckMsU0FBVSxpQkFBZSxZQUFZRCxFQUFpQixDQUN4RCxFQUVPLFNBQVNFLElBQWdCLENBQzlCLEdBQU0sQ0FBQyxDQUFFLFVBQUFDLEVBQVcsU0FBQUMsQ0FBUyxFQUFHQyxDQUFhLEVBQUlDLEdBQWVMLEVBQWlCLEVBRzNFTSxFQUFrREMsR0FDckRDLEdBQW1CLENBRVhKLEVBREgsT0FBT0ksR0FBbUIsV0FDUkMsR0FBUSxDQUMxQixJQUFNQyxFQUFXRixFQUFlQyxDQUFHLEVBQ25DLE1BQU8sQ0FDTCxVQUFXQyxFQUFTLFVBQ3BCLFNBQVVBLEVBQVMsUUFDckIsQ0FDRixFQUVtQixDQUNqQixVQUFXRixFQUFlLFVBQzFCLFNBQVVBLEVBQWUsUUFDM0IsQ0FMQyxDQU9MLEVBQ0EsQ0FBQ0osQ0FBYSxDQUNoQixFQUVBLE1BQU8sQ0FDTCxnQkFBaUIsQ0FBRSxVQUFBRixFQUFXLFNBQUFDLENBQVMsRUFDdkMsbUJBQUFHLENBQ0YsQ0FDRixDQ3pDQSxPQUFTLGFBQUFLLEdBQVcsWUFBQUMsT0FBZ0IsUUNBcEMsT0FBbUIsZUFBQUMsR0FBYSxrQkFBQUMsT0FBc0Isd0JBSS9DLFNBQVNDLElBQXVCLENBQ3JDLEdBQU0sQ0FBRSxZQUFBQyxFQUFhLFFBQUFDLENBQVEsRUFBSUMsRUFBVSxFQUNyQ0MsRUFBY0MsR0FBZSxFQUM3QixDQUFFLE9BQUFDLEVBQVMsS0FBTSxLQUFNQyxFQUFRLElBQUssRUFBSU4sR0FBZSxDQUFDLEVBRTlELE9BQU9PLEdBQVksQ0FDakIsWUFBYSxDQUFDLFNBQVVGLEVBQVEsUUFBU0MsRUFBTyxRQUFRLEVBQ3hELE1BQU0sV0FBV0UsRUFBaUMsQ0FDaEQsR0FBTSxDQUFDQyxFQUFPQyxDQUFNLEVBQUksTUFBTVQsRUFBUSxPQUFPLENBQUUsS0FBQU8sRUFBTSxNQUFPUixDQUFhLEVBQUcsQ0FBQyxDQUFDLEVBRTlFLEdBQUlTLEVBQ0YsTUFBTUEsRUFHUixPQUFPQyxDQUNULEVBQ0EsTUFBTSxXQUFZLENBQ2hCLE1BQU1QLEVBQVksa0JBQWtCLENBQ2xDLE1BQU8sR0FDUCxTQUFVLENBQUMsU0FBVUUsRUFBUSxRQUFTQyxFQUFPLE9BQU8sQ0FDdEQsQ0FBQyxDQUNILEVBQ0EsTUFBTyxFQUNULENBQUMsQ0FDSCxDRHBCTyxTQUFTSyxHQUFhQyxFQUFzQyxDQUNqRSxHQUFNLENBQUUsWUFBQUMsRUFBYSxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFDckMsQ0FBRSxnQkFBQUMsQ0FBZ0IsRUFBSUMsR0FBYyxFQUNwQyxDQUFDQyxFQUFtQkMsQ0FBb0IsRUFBSUMsR0FBa0MsQ0FBQyxDQUFDLEVBQ2hGQyxFQUFjLE9BQU8sS0FBS0gsQ0FBaUIsRUFBRSxTQUFXLEVBQ3hELENBQUUsT0FBQUksQ0FBTyxFQUFJQyxHQUFxQixFQUV4Q0MsR0FBVSxJQUFNTCxFQUFxQixDQUFDLENBQUMsRUFBRyxDQUFDTixFQUFhRyxFQUFnQixTQUFTLENBQUMsRUFFbEYsU0FBU1MsR0FBa0IsQ0FDekIsSUFBTUMsRUFBT2QsR0FBTSxLQUFLLE9BQVFlLEdBQ3ZCVCxFQUFrQlMsRUFBSSxVQUFvQixDQUNsRCxFQUVETCxFQUFPSSxHQUFRLENBQUMsRUFBRyxDQUNqQixXQUFZLENBQ1ZQLEVBQXFCLENBQUMsQ0FBQyxDQUN6QixFQUNBLFFBQUFMLENBQ0YsQ0FBQyxDQUNILENBRUEsTUFBTyxDQUNMLGdCQUFBVyxFQUNBLHFCQUFBTixFQUNBLGtCQUFBRCxFQUNBLFlBQUFHLENBQ0YsQ0FDRixDRXBDQSxPQUFTLGFBQUFPLEdBQVcsWUFBQUMsT0FBZ0IsUUFLN0IsU0FBU0MsSUFBYSxDQUUzQixHQUFNLENBQUNDLEVBQVdDLENBQVksRUFBSUMsR0FBYyxPQUFRLENBQ3RELGFBQWMsRUFDaEIsQ0FBQyxFQUdLQyxFQUFnQkgsR0FBOEMsQ0FDbEUsR0FBSSxDQUFDQSxFQUFXLE1BQU8sQ0FBQyxFQUV4QixHQUFJLENBRUYsT0FBT0EsRUFDSixNQUFNLEdBQUcsRUFDVCxJQUFLSSxHQUFTLENBQ2IsR0FBTSxDQUFDQyxFQUFRQyxDQUFTLEVBQUlGLEVBQUssTUFBTSxHQUFHLEVBQzFDLE1BQUksQ0FBQ0MsR0FBVSxDQUFDQyxHQUFhLENBQUMsQ0FBQyxNQUFPLE1BQU0sRUFBRSxTQUFTQSxDQUFTLEVBQ3ZELEtBRUYsQ0FBRSxPQUFBRCxFQUFRLFVBQVdDLENBQTRCLENBQzFELENBQUMsRUFDQSxPQUFPLE9BQU8sQ0FDbkIsT0FBU0MsRUFBRyxDQUNWLGVBQVEsTUFBTSxxQ0FBc0NBLENBQUMsRUFDOUMsQ0FBQyxDQUNWLENBQ0YsRUFHTSxDQUFDQyxFQUFjQyxDQUFlLEVBQUlDLEdBQVMsSUFBTVAsRUFBYUgsQ0FBUyxDQUFDLEVBRzlFLE9BQUFXLEdBQVUsSUFBTSxDQUNkLElBQU1DLEVBQWtCVCxFQUFhSCxDQUFTLEVBQzlDUyxFQUFnQkcsQ0FBZSxDQUNqQyxFQUFHLENBQUNaLENBQVMsQ0FBQyxFQWNQLENBQ0wsYUFBQVEsRUFDQSxnQkFiMkJLLEdBQTRFLENBQ3ZHLElBQU1DLEVBQWdCLE9BQU9ELEdBQWEsV0FBYUEsRUFBU0wsQ0FBWSxFQUFJSyxFQUNoRkosRUFBZ0JLLENBQWEsRUFHN0IsSUFBTUMsRUFDSkQsRUFBYyxPQUFTLEVBQUlBLEVBQWMsSUFBS1YsR0FBUyxHQUFHQSxFQUFLLE1BQU0sSUFBSUEsRUFBSyxTQUFTLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBSSxLQUVwR0gsRUFBYWMsQ0FBVSxDQUM5QixDQUtBLENBQ0YsQ0N6REEsT0FBUyxnQkFBQUMsT0FBb0IsU0NEN0IsT0FBUyxjQUFBQyxPQUFrQixRQ0EzQixVQUFZQyxPQUFXLFFBT2pCLGNBQUFDLE9BQUEsb0JBSE4sSUFBTUMsR0FBYyxjQUNsQixDQUFDLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLE9BQUksVUFBVSwwRUFDYixTQUFBQSxHQUFDLFNBQU0sSUFBS0ksRUFBSyxVQUFXQyxFQUFHLHlDQUEwQ0gsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sRUFDbEcsQ0FFSixFQUNBRixHQUFNLFlBQWMsUUFFcEIsSUFBTUssR0FBb0IsY0FDeEIsQ0FBQyxDQUFFLFVBQUFKLEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUFRSixHQUFDLFNBQU0sSUFBS0ksRUFBSyxVQUFXQyxFQUFHSCxDQUFTLEVBQUksR0FBR0MsRUFBTyxDQUMxRixFQUNBRyxHQUFZLFlBQWMsY0FFMUIsSUFBTUMsR0FBa0IsY0FDdEIsQ0FBQyxDQUFFLFVBQUFMLEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUN4QkosR0FBQyxTQUFNLElBQUtJLEVBQUssVUFBV0MsRUFBRyxnQ0FBaUNILENBQVMsRUFBSSxHQUFHQyxFQUFPLENBRTNGLEVBQ0FJLEdBQVUsWUFBYyxZQUV4QixJQUFNQyxHQUFvQixjQUN4QixDQUFDLENBQUUsVUFBQU4sRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLFNBQ0MsSUFBS0ksRUFDTCxVQUFXQyxFQUFHLHNFQUF1RUgsQ0FBUyxFQUM3RixHQUFHQyxFQUNOLENBRUosRUFDQUssR0FBWSxZQUFjLGNBRTFCLElBQU1DLEdBQWlCLGNBQ3JCLENBQUMsQ0FBRSxVQUFBUCxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDeEJKLEdBQUMsTUFDQyxJQUFLSSxFQUNMLFVBQVdDLEVBQ1QsMEZBQ0FILENBQ0YsRUFDQyxHQUFHQyxFQUNOLENBRUosRUFDQU0sR0FBUyxZQUFjLFdBRXZCLElBQU1DLEdBQWtCLGNBQ3RCLENBQUMsQ0FBRSxVQUFBUixFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDeEJKLEdBQUMsTUFDQyxJQUFLSSxFQUNMLFVBQVdDLEVBQUcsdUZBQXdGSCxDQUFTLEVBQzlHLEdBQUdDLEVBQ04sQ0FFSixFQUNBTyxHQUFVLFlBQWMsWUFFeEIsSUFBTUMsR0FBa0IsY0FDdEIsQ0FBQyxDQUFFLFVBQUFULEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUFRSixHQUFDLE1BQUcsSUFBS0ksRUFBSyxVQUFXQyxFQUFHLGtCQUFtQkgsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sQ0FDMUcsRUFDQVEsR0FBVSxZQUFjLFlBRXhCLElBQU1DLEdBQXFCLGNBQ3pCLENBQUMsQ0FBRSxVQUFBVixFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDeEJKLEdBQUMsV0FBUSxJQUFLSSxFQUFLLFVBQVdDLEVBQUcsOENBQStDSCxDQUFTLEVBQUksR0FBR0MsRUFBTyxDQUUzRyxFQUNBUyxHQUFhLFlBQWMsZUN0RTNCLE9BQVMsa0JBQUFDLE9BQThELFFDRHZFLFVBQVlDLE1BQTBCLCtCQUV0QyxVQUFZQyxPQUFXLFFBc0JyQixPQVVFLE9BQUFDLEdBVkYsUUFBQUMsT0FBQSxvQkFsQkYsSUFBTUMsR0FBbUMsT0FFbkNDLEdBQTBDLFVBVWhELElBQU1DLEdBQThCLGNBS2xDLENBQUMsQ0FBRSxVQUFBQyxFQUFXLE1BQUFDLEVBQU8sU0FBQUMsRUFBVSxHQUFHQyxDQUFNLEVBQUdDLElBQzNDQyxHQUFzQixhQUFyQixDQUNDLElBQUtELEVBQ0wsVUFBV0UsRUFDVCxvUEFDQUwsR0FBUyxVQUNURCxDQUNGLEVBQ0MsR0FBR0csRUFFSCxVQUFBRCxFQUNESyxHQUFDQyxHQUFBLENBQWEsVUFBVSwyQkFBMkIsR0FDckQsQ0FDRCxFQUNEVCxHQUFzQixZQUFtQyxhQUFXLFlBRXBFLElBQU1VLEdBQThCLGNBR2xDLENBQUMsQ0FBRSxVQUFBVCxFQUFXLEdBQUdHLENBQU0sRUFBR0MsSUFDMUJHLEdBQXNCLGFBQXJCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUNULDJpQkFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBQ04sQ0FDRCxFQUNETSxHQUFzQixZQUFtQyxhQUFXLFlBRXBFLElBQU1DLEdBQTJCLGNBRy9CLENBQUMsQ0FBRSxVQUFBVixFQUFXLEdBQUdHLENBQU0sRUFBR0MsSUFDMUJHLEdBQXNCLFNBQXJCLENBQ0MsU0FBQUEsR0FBc0IsVUFBckIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQ1QseW5CQUNBTixDQUNGLEVBQ0MsR0FBR0csRUFDTixFQUNGLENBQ0QsRUFDRE8sR0FBbUIsWUFBbUMsVUFBUSxZQUU5RCxJQUFNQyxHQUF3QixjQUs1QixDQUFDLENBQUUsVUFBQVgsRUFBVyxNQUFBQyxFQUFPLEdBQUdFLENBQU0sRUFBR0MsSUFDakNHLEdBQXNCLE9BQXJCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUNULDBQQUNBTCxHQUFTLFVBQ1RELENBQ0YsRUFDQyxHQUFHRyxFQUNOLENBQ0QsRUFDRFEsR0FBZ0IsWUFBbUMsT0FBSyxZQUV4RCxJQUFNQyxHQUFnQyxjQUdwQyxDQUFDLENBQUUsVUFBQVosRUFBVyxTQUFBRSxFQUFVLFFBQUFXLEVBQVMsR0FBR1YsQ0FBTSxFQUFHQyxJQUM3Q0MsR0FBc0IsZUFBckIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsa1FBQ0FOLENBQ0YsRUFDQSxRQUFTYSxFQUNSLEdBQUdWLEVBRUosVUFBQUksR0FBQyxRQUFLLFVBQVUsb0ZBQ2QsU0FBQUEsR0FBc0IsZ0JBQXJCLENBQ0MsU0FBQUEsR0FBQ08sR0FBQSxDQUFNLFVBQVUsZ0JBQWdCLEVBQ25DLEVBQ0YsRUFDQ1osR0FDSCxDQUNELEVBQ0RVLEdBQXdCLFlBQW1DLGVBQWEsWUFFeEUsSUFBTUcsR0FBNkIsY0FHakMsQ0FBQyxDQUFFLFVBQUFmLEVBQVcsU0FBQUUsRUFBVSxHQUFHQyxDQUFNLEVBQUdDLElBQ3BDQyxHQUFzQixZQUFyQixDQUNDLElBQUtELEVBQ0wsVUFBV0UsRUFDVCxrUUFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBRUosVUFBQUksR0FBQyxRQUFLLFVBQVUsb0ZBQ2QsU0FBQUEsR0FBc0IsZ0JBQXJCLENBQ0MsU0FBQUEsR0FBQ1MsR0FBQSxDQUFPLFVBQVUsZ0NBQWdDLEVBQ3BELEVBQ0YsRUFDQ2QsR0FDSCxDQUNELEVBQ0RhLEdBQXFCLFlBQW1DLFlBQVUsWUFFbEUsSUFBTUUsR0FBeUIsY0FLN0IsQ0FBQyxDQUFFLFVBQUFqQixFQUFXLE1BQUFDLEVBQU8sR0FBR0UsQ0FBTSxFQUFHQyxJQUNqQ0csR0FBc0IsUUFBckIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQUcsbUVBQW9FTCxHQUFTLFVBQVdELENBQVMsRUFDOUcsR0FBR0csRUFDTixDQUNELEVBQ0RjLEdBQWlCLFlBQW1DLFFBQU0sWUFFMUQsSUFBTUMsR0FBNkIsY0FHakMsQ0FBQyxDQUFFLFVBQUFsQixFQUFXLEdBQUdHLENBQU0sRUFBR0MsSUFDMUJHLEdBQXNCLFlBQXJCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUFHLHdDQUF5Q04sQ0FBUyxFQUMvRCxHQUFHRyxFQUNOLENBQ0QsRUFDRGUsR0FBcUIsWUFBbUMsWUFBVSxZQUVsRSxJQUFNQyxHQUFzQixDQUFDLENBQUUsVUFBQW5CLEVBQVcsR0FBR0csQ0FBTSxJQUUvQ0ksR0FBQyxRQUFLLFVBQVdELEVBQUcsb0VBQXFFTixDQUFTLEVBQUksR0FBR0csRUFBTyxFQUdwSGdCLEdBQW9CLFlBQWMsc0JEeEo1QixjQUFBQyxHQUlFLFFBQUFDLE9BSkYsb0JBTEMsU0FBU0MsR0FBd0JDLEVBQXFDLENBQzNFLEdBQU0sQ0FBRSxTQUFBQyxDQUFTLEVBQUlELEVBRXJCLE9BQ0VGLEdBQUNJLEdBQUEsQ0FDQyxVQUFBTCxHQUFDTSxHQUFBLENBQW1CLFVBQVUsaU5BQzNCLFNBQUFGLEVBQ0gsRUFDQUosR0FBQ08sR0FBQSxDQUNDLFNBQUFOLEdBQUNPLEdBQUEsQ0FDQyxRQUFTLElBQU0sQ0FDYixJQUFNQyxFQUFVQyxHQUFtQk4sQ0FBUSxFQUN0QyxVQUFVLFVBQVUsVUFBVUssQ0FBTyxFQUFFLE1BQU9FLEdBQVUsQ0FDM0QsUUFBUSxNQUFNLCtCQUFnQ0EsQ0FBSyxDQUNyRCxDQUFDLENBQ0gsRUFDQSxVQUFVLG1DQUVWLFVBQUFYLEdBQUNZLEdBQUEsQ0FBSyxLQUFNLEdBQUksRUFBRSxRQUVwQixFQUNGLEdBQ0YsQ0FFSixDQUVBLFNBQVNGLEdBQW1CRyxFQUF5QixDQUNuRCxHQUFJLE9BQU9BLEdBQVMsVUFBWSxPQUFPQSxHQUFTLFVBQVksT0FBT0EsR0FBUyxVQUMxRSxPQUFPLE9BQU9BLENBQUksRUFHcEIsR0FBSUEsR0FBUyxLQUNYLE1BQU8sR0FHVCxHQUFJQyxHQUFlRCxDQUFJLEVBQUcsQ0FDeEIsSUFBTVYsRUFBUVUsRUFBSyxNQUduQixPQUFJQSxFQUFLLE1BQVEsT0FBT0EsRUFBSyxNQUFTLFlBQWNBLEVBQUssS0FBSyxPQUFTLGFBQzlEVixFQUFNLE1BQVEsR0FJbkJVLEVBQUssTUFBUSxPQUFPQSxFQUFLLE1BQVMsWUFBY0EsRUFBSyxLQUFLLE9BQVMsWUFDOUQsT0FJTFYsRUFBTSxTQUNETyxHQUFtQlAsRUFBTSxRQUFxQixFQUdoRCxFQUNULENBRUEsT0FBSSxNQUFNLFFBQVFVLENBQUksRUFDYkEsRUFBSyxJQUFJSCxFQUFrQixFQUFFLEtBQUssRUFBRSxFQUd0QyxFQUNULENFMUNNLGNBQUFLLE9BQUEsb0JBaEJDLFNBQVNDLEVBQUtDLEVBQWtCLENBQ3JDLEdBQU0sQ0FBRSxTQUFBQyxFQUFVLFVBQUFDLEVBQVcsSUFBQUMsRUFBSyxNQUFBQyxFQUFPLEdBQUdDLENBQWUsRUFBSUwsRUFFL0QsT0FDRUYsR0FBQ1EsR0FBQSxDQUNFLEdBQUdELEVBQ0osVUFBV0UsRUFDVCx3REFHQSxvQkFDQUwsQ0FDRixFQUNBLElBQUtDLEVBQ0wsTUFBT0MsRUFFUCxTQUFBTixHQUFDVSxHQUFBLENBQXlCLFNBQUFQLEVBQVMsRUFDckMsQ0FFSixDSmhCTSxjQUFBUSxPQUFBLG9CQUxOLElBQU1DLEdBQWNDLEdBQVcsQ0FBQ0MsRUFBeUJDLElBQVEsQ0FDL0QsR0FBTSxDQUFFLGVBQUFDLEVBQWdCLE1BQUFDLEVBQU8sR0FBR0MsQ0FBZSxFQUFJSixFQUVyRCxPQUNFSCxHQUFDUSxFQUFBLENBQU0sR0FBR0QsRUFBaUIsR0FBR0YsRUFBZ0IsSUFBS0QsRUFDakQsU0FBQUosR0FBQyxPQUFJLGlCQUFlLFVBQVcsZ0JBQU8sRUFBUU0sQ0FBTSxFQUFFLEVBQ3hELENBRUosQ0FBQyxFQUNETCxHQUFZLFlBQWMsY0tsQjFCLE9BQVMsY0FBQVEsT0FBa0IsUUFhdkIsY0FBQUMsT0FBQSxvQkFKSixJQUFNQyxHQUFXQyxHQUFXLENBQUNDLEVBQXNCQyxJQUFRLENBQ3pELEdBQU0sQ0FBRSxlQUFBQyxFQUFnQixNQUFBQyxFQUFPLEdBQUdDLENBQWUsRUFBSUosRUFFckQsT0FDRUgsR0FBQ1EsRUFBQSxDQUFNLEdBQUdELEVBQWlCLEdBQUdGLEVBQWdCLElBQUtELEVBQ2hELGdCQUFPRSxDQUFLLEVBQ2YsQ0FFSixDQUFDLEVBQ0RMLEdBQVMsWUFBYyxXQ2xCdkIsT0FBUyxjQUFBUSxPQUFrQixRQVdsQixjQUFBQyxPQUFBLG9CQUhULElBQU1DLEdBQVlDLEdBQVcsQ0FBQ0MsRUFBdUJDLElBQVEsQ0FDM0QsR0FBTSxDQUFFLGVBQUFDLEVBQWdCLEdBQUdDLENBQWUsRUFBSUgsRUFFOUMsT0FBT0gsR0FBQ08sRUFBQSxDQUFNLEdBQUdELEVBQWlCLEdBQUdELEVBQWdCLElBQUtELEVBQUssQ0FDakUsQ0FBQyxFQUNESCxHQUFVLFlBQWMsWUNieEIsT0FBUyxjQUFBTyxPQUFrQixRQWN2QixjQUFBQyxPQUFBLG9CQUpKLElBQU1DLEdBQVdDLEdBQVcsQ0FBQ0MsRUFBc0JDLElBQVEsQ0FDekQsR0FBTSxDQUFFLGVBQUFDLEVBQWdCLE1BQUFDLEVBQU8sUUFBQUMsRUFBUyxHQUFHQyxDQUFlLEVBQUlMLEVBRTlELE9BQ0VILEdBQUNTLEVBQUEsQ0FBTSxHQUFHRCxFQUFpQixHQUFHSCxFQUFnQixJQUFLRCxFQUNoRCxnQkFBT0UsQ0FBSyxFQUNmLENBRUosQ0FBQyxFQUNETCxHQUFTLFlBQWMsV0NuQnZCLE9BQVMsY0FBQVMsT0FBa0IsUUFhdkIsY0FBQUMsT0FBQSxvQkFKSixJQUFNQyxHQUFXQyxHQUFXLENBQUNDLEVBQXNCQyxJQUFRLENBQ3pELEdBQU0sQ0FBRSxlQUFBQyxFQUFnQixNQUFBQyxFQUFPLEdBQUdDLENBQWUsRUFBSUosRUFFckQsT0FDRUgsR0FBQ1EsRUFBQSxDQUFNLEdBQUdELEVBQWlCLEdBQUdGLEVBQWdCLElBQUtELEVBQ2hELGNBQUssVUFBVUUsRUFBTyxLQUFNLENBQUMsRUFDaEMsQ0FFSixDQUFDLEVBQ0RMLEdBQVMsWUFBYyxXQ2xCdkIsT0FBUyxjQUFBUSxPQUFrQixRQWFyQixjQUFBQyxPQUFBLG9CQUxOLElBQU1DLEdBQVdDLEdBQVcsQ0FBQ0MsRUFBc0JDLElBQVEsQ0FDekQsR0FBTSxDQUFFLGVBQUFDLEVBQWdCLEdBQUdDLENBQWUsRUFBSUgsRUFFOUMsT0FDRUgsR0FBQ08sRUFBQSxDQUFNLEdBQUdELEVBQWlCLEdBQUdELEVBQWdCLElBQUtELEVBQ2pELFNBQUFKLEdBQUMsUUFBSyxVQUFVLDhCQUE4QixnQkFBSSxFQUNwRCxDQUVKLENBQUMsRUFDREMsR0FBUyxZQUFjLFdDakJ2QixPQUFTLGNBQUFPLE9BQWtCLFFBY3JCLGNBQUFDLE9BQUEsb0JBTE4sSUFBTUMsR0FBY0MsR0FBVyxDQUFDQyxFQUF5QkMsSUFBUSxDQUMvRCxHQUFNLENBQUUsZUFBQUMsRUFBZ0IsTUFBQUMsRUFBTyxHQUFHQyxDQUFlLEVBQUlKLEVBRXJELE9BQ0VILEdBQUNRLEVBQUEsQ0FBTSxHQUFHRCxFQUFpQixHQUFHRixFQUFnQixJQUFLRCxFQUNqRCxTQUFBSixHQUFDLE9BQUksaUJBQWUsVUFBVyxTQUFBTSxJQUFVLEtBQU8sT0FBUyxPQUFPQSxDQUFLLEVBQUUsRUFDekUsQ0FFSixDQUFDLEVBQ0RMLEdBQVksWUFBYyxjQ2xCMUIsT0FBUyxjQUFBUSxPQUFrQixRQWF2QixjQUFBQyxPQUFBLG9CQUpKLElBQU1DLEdBQVVDLEdBQVcsQ0FBQ0MsRUFBcUJDLElBQVEsQ0FDdkQsR0FBTSxDQUFFLGVBQUFDLEVBQWdCLE1BQUFDLEVBQU8sR0FBR0MsQ0FBZSxFQUFJSixFQUVyRCxPQUNFSCxHQUFDUSxFQUFBLENBQU0sR0FBR0QsRUFBaUIsR0FBR0YsRUFBZ0IsSUFBS0QsRUFDaEQsZ0JBQU9FLENBQUssRUFDZixDQUVKLENBQUMsRUFDREwsR0FBUSxZQUFjLFVDbEJ0QixPQUFTLGNBQUFRLE9BQWtCLFFBYXZCLGNBQUFDLE9BQUEsb0JBSkosSUFBTUMsR0FBV0MsR0FBVyxDQUFDQyxFQUFzQkMsSUFBUSxDQUN6RCxHQUFNLENBQUUsZUFBQUMsRUFBZ0IsTUFBQUMsRUFBTyxHQUFHQyxDQUFlLEVBQUlKLEVBRXJELE9BQ0VILEdBQUNRLEVBQUEsQ0FBTSxHQUFHRCxFQUFpQixHQUFHRixFQUFnQixJQUFLRCxFQUNoRCxnQkFBT0UsQ0FBSyxFQUNmLENBRUosQ0FBQyxFQUNETCxHQUFTLFlBQWMsV2JTWixjQUFBUSxPQUFBLG9CQVpKLFNBQVNDLEdBQVEsQ0FDdEIsS0FBQUMsRUFDQSxPQUFBQyxFQUNBLE1BQUFDLENBQ0YsRUFJRyxDQUNELElBQU1DLEVBQVFILEVBQUssU0FBUyxFQUU1QixHQUFJRyxJQUFVLE9BQ1osT0FBT0wsR0FBQ00sR0FBQSxDQUFVLGVBQWdCRixFQUFPLEVBRzNDLEdBQUlDLElBQVUsS0FDWixPQUFPTCxHQUFDTyxHQUFBLENBQVMsZUFBZ0JILEVBQU8sRUFHMUMsR0FBTSxDQUFFLE1BQUFJLEVBQU8sUUFBQUMsRUFBUyxRQUFBQyxDQUFRLEVBQUlQLEVBQU8sU0FFM0MsR0FBSUssSUFBVSxRQUFVRSxFQUN0QixPQUFPVixHQUFDVyxHQUFBLENBQVMsZUFBZ0JQLEVBQU8sTUFBT0MsRUFBZ0IsRUFHakUsR0FBSUcsSUFBVSxTQUNaLE9BQU9SLEdBQUNZLEdBQUEsQ0FBUSxlQUFnQlIsRUFBTyxNQUFPQyxFQUFnQixFQUdoRSxHQUFJRyxJQUFVLE9BQ1osT0FBT1IsR0FBQ2EsR0FBQSxDQUFTLGVBQWdCVCxFQUFPLE1BQU9DLEVBQWdCLFFBQVNJLEVBQVMsRUFHbkYsR0FBSUQsSUFBVSxVQUNaLE9BQU9SLEdBQUNjLEdBQUEsQ0FBWSxlQUFnQlYsRUFBTyxNQUFPQyxFQUFnQixFQUdwRSxHQUFJRyxJQUFVLFdBQ1osT0FBT1IsR0FBQ2UsR0FBQSxDQUFTLGVBQWdCWCxFQUFPLE1BQU9DLEVBQWdCLEVBR2pFLEdBQUlHLElBQVUsT0FDWixPQUFPUixHQUFDZ0IsR0FBQSxDQUFTLGVBQWdCWixFQUFPLE1BQU9DLEVBQWdCLEVBR2pFLEdBQUlHLElBQVUsVUFDWixPQUFPUixHQUFDaUIsR0FBQSxDQUFZLGVBQWdCYixFQUFPLE1BQU9DLEVBQWdCLEVBR3BFLEdBQUlHLElBQVUsTUFDWixPQUFJVSxHQUFhYixDQUFLLEVBQ2JMLEdBQUNXLEdBQUEsQ0FBUyxlQUFnQlAsRUFBTyxNQUFPQyxFQUFnQixFQUcxREwsR0FBQ1ksR0FBQSxDQUFRLGVBQWdCUixFQUFPLE1BQU9DLEVBQU8sRUFJdkQsTUFBTSxJQUFJLE1BQU0sbUJBQW1CRyxDQUFlLDJDQUEyQyxDQUMvRixDY3pFQSxPQUFTLGNBQUFXLE9BQWtCLFFDRDNCLFVBQVlDLE9BQXVCLDJCQUVuQyxVQUFZQyxPQUFXLFFBaUJqQixjQUFBQyxPQUFBLG9CQWJOLElBQU1DLEdBQWlCLGNBR3JCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDMUJKLEdBQW1CLFFBQWxCLENBQ0MsSUFBS0ksRUFDTCxVQUFXQyxFQUNULGtUQUNBSCxDQUNGLEVBQ0MsR0FBR0MsRUFFSixTQUFBSCxHQUFtQixhQUFsQixDQUE0QixVQUFXSyxFQUFHLDJEQUEyRCxFQUNwRyxTQUFBTCxHQUFDTSxHQUFBLENBQU0sVUFBVSxnQkFBZ0IsRUFDbkMsRUFDRixDQUNELEVBQ0RMLEdBQVMsWUFBZ0MsUUFBSyxZREx0QyxjQUFBTSxPQUFBLG9CQU5SLElBQU1DLEdBQW1CQyxHQUFrRCxDQUFDQyxFQUFPQyxJQUFRLENBQ3pGLEdBQU0sQ0FBRSxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsVUFBQUMsRUFBVyxNQUFBQyxFQUFPLEdBQUdDLENBQUssRUFBSU4sRUFFdkQsT0FDRUgsR0FBQyxPQUFJLElBQUtJLEVBQUssVUFBV0csRUFBVyxNQUFPQyxFQUFRLEdBQUdDLEVBQ3JELFNBQUFULEdBQUMsT0FBSSxVQUFVLHNEQUNiLFNBQUFBLEdBQUNVLEdBQUEsQ0FDQyxRQUFTTCxFQUFNLHFCQUFxQixFQUNwQyxnQkFBa0JNLEdBQVVOLEVBQU0sc0JBQXNCLENBQUMsQ0FBQ00sQ0FBSyxFQUMvRCxTQUFVTCxFQUNaLEVBQ0YsRUFDRixDQUVKLENBQUMsRUFFREwsR0FBaUIsWUFBYyxtQkUzQi9CLE9BQVMsY0FBQVcsT0FBa0IsUUNrQnZCLG1CQUFBQyxHQUVJLE9BQUFDLE9BRkosb0JBUkcsU0FBU0MsR0FBV0MsRUFBd0IsQ0FDakQsR0FBTSxDQUFFLFNBQUFDLEVBQVUsVUFBQUMsRUFBVyxJQUFBQyxFQUFLLE1BQUFDLEVBQU8sU0FBQUMsRUFBVyxHQUFPLEdBQUdDLENBQWUsRUFBSU4sRUFFM0VPLEVBQWdCQyxFQUNwQixzTkFDRixFQUVBLE9BQ0VWLEdBQUFELEdBQUEsQ0FDRyxTQUFBUSxFQUNDUCxHQUFDVyxHQUFBLENBQ0UsR0FBR0gsRUFDSixVQUFXRSxFQUFHRCxFQUFlLGdFQUFpRUwsQ0FBUyxFQUN2RyxJQUFLQyxFQUVKLFNBQUFGLEVBQ0gsRUFFQUgsR0FBQ1ksR0FBQSxDQUNFLEdBQUdKLEVBQ0osVUFBV0UsRUFBR0QsRUFBZSxzQkFBdUJMLENBQVMsRUFDN0QsSUFBS0MsRUFDTCxNQUFPQyxFQUVOLFNBQUFILEVBQ0gsRUFFSixDQUVKLENEdEJNLGNBQUFVLE9BQUEsb0JBTE4sSUFBTUMsR0FBZ0JDLEdBQStDLENBQUNDLEVBQU9DLElBQVEsQ0FDbkYsR0FBTSxDQUFFLElBQUFDLEVBQUssU0FBQUMsRUFBVSxVQUFBQyxFQUFXLE1BQUFDLEVBQU8sR0FBR0MsQ0FBSyxFQUFJTixFQUVyRCxPQUNFSCxHQUFDVSxHQUFBLENBQVcsSUFBS04sRUFBSyxVQUFXRyxFQUFXLE1BQU9DLEVBQVEsR0FBR0MsRUFDNUQsU0FBQVQsR0FBQ1csR0FBQSxDQUNDLFFBQVNOLEVBQUksY0FBYyxFQUMzQixTQUFVLENBQUNBLEVBQUksYUFBYSxHQUFLQyxFQUNqQyxnQkFBaUJELEVBQUkseUJBQXlCLEVBQ2hELEVBQ0YsQ0FFSixDQUFDLEVBRURKLEdBQWMsWUFBYyxnQkUzQjVCLFVBQVlXLE9BQXNCLDBCQUNsQyxVQUFZQyxNQUFXLFFBZ0JqQixjQUFBQyxPQUFBLG9CQVBOLElBQU1DLEdBQTJCLGdCQUE4QyxJQUFJLEVBRTdFQyxHQUFjLENBQUMsQ0FBRSxTQUFBQyxFQUFVLEdBQUdDLENBQU0sSUFBcUMsQ0FDN0UsR0FBTSxDQUFDQyxFQUFNQyxDQUFPLEVBQVUsV0FBUyxFQUFLLEVBRTVDLE9BQ0VOLEdBQUNDLEdBQW1CLFNBQW5CLENBQTRCLE1BQU8sQ0FBRSxLQUFBSSxFQUFNLFFBQUFDLENBQVEsRUFDbEQsU0FBQU4sR0FBa0IsUUFBakIsQ0FBc0IsS0FBTUssRUFBTSxhQUFjQyxFQUFVLEdBQUdGLEVBQzNELFNBQUFELEVBQ0gsRUFDRixDQUVKLEVBQ0FELEdBQVksWUFBYyxjQU0xQixJQUFNSyxHQUEyQixhQUMvQixDQUFDLENBQUUsU0FBQUosRUFBVSxjQUFBSyxFQUFlLFVBQUFDLEVBQVcsR0FBR0wsQ0FBTSxFQUFHTSxJQUFRLENBR3pELElBQU1DLEVBQW1CLFNBQTBCLElBQUksRUEwQnZELE9BQ0VYLEdBQWtCLFdBQWpCLENBQ0MsSUFBTVksR0FBUyxDQUNULE9BQU9GLEdBQVEsV0FBWUEsRUFBSUUsQ0FBSSxFQUM5QkYsSUFBS0EsRUFBSSxRQUFVRSxHQUU1QkQsRUFBVyxRQUFVQyxDQUN2QixFQUdBLFVBQVdDLEVBQUcsK0JBQWdDSixDQUFTLEVBQ3RELEdBQUdMLEVBRUgsU0FBQUQsRUFDSCxDQUVKLENBQ0YsRUFDQUksR0FBbUIsWUFBYyxxQkFFakMsSUFBTU8sR0FBMkIsYUFHL0IsQ0FBQyxDQUFFLFVBQUFMLEVBQVcsTUFBQU0sRUFBUSxTQUFVLFdBQUFDLEVBQWEsRUFBRyxHQUFHWixDQUFNLEVBQUdNLElBQzVEVixHQUFrQixVQUFqQixDQUNDLFNBQUFBLEdBQWtCLFdBQWpCLENBQ0MsSUFBS1UsRUFDTCxNQUFPSyxFQUNQLFdBQVlDLEVBQ1osVUFBV0gsRUFDVCxzZEFDQUosQ0FDRixFQUVBLGdCQUFrQlEsR0FBVUEsRUFBTSxlQUFlLEVBQ2hELEdBQUdiLEVBQ04sRUFDRixDQUNELEVBQ0RVLEdBQW1CLFlBQStCLFdBQVEsWUFFbkQsU0FBU0ksR0FBa0JDLEVBSS9CLENBQ0QsSUFBTUMsRUFBZ0IsYUFBV25CLEVBQWtCLEVBRTdDb0IsRUFBbUIsY0FBWSxJQUFNLENBQ3JDRixFQUFRLFVBQ1ZDLEdBQVMsUUFBUSxFQUFLLEVBRXBCRCxFQUFRLFFBQ1ZBLEVBQVEsT0FBTyxFQUViQyxHQUNGQSxFQUFRLFFBQVEsRUFBSyxDQUV6QixFQUFHLENBQUNELEVBQVEsT0FBUUMsQ0FBTyxDQUFDLEVBRXRCRSxFQUFxQixjQUFZLElBQU0sQ0FDdkNILEVBQVEsVUFDVkMsR0FBUyxRQUFRLEVBQUssRUFFcEJELEVBQVEsVUFDVkEsRUFBUSxTQUFTLEVBRWZDLEdBQ0ZBLEVBQVEsUUFBUSxFQUFLLENBRXpCLEVBQUcsQ0FBQ0QsRUFBUSxTQUFVQyxDQUFPLENBQUMsRUFFOUIsT0FBTSxZQUFVLElBQU0sQ0FDcEIsSUFBTUcsRUFBaUJOLEdBQXlCLEVBRXpDQSxFQUFNLE1BQVEsU0FBV0EsRUFBTSxNQUFRLFdBQWEsQ0FBQ0EsRUFBTSxTQUM5REksRUFBVyxFQUNGSixFQUFNLE1BQVEsVUFDdkJLLEVBQWEsQ0FFakIsRUFFQSxjQUFPLGlCQUFpQixVQUFXQyxDQUFhLEVBQ3pDLElBQU0sT0FBTyxvQkFBb0IsVUFBV0EsQ0FBYSxDQUNsRSxFQUFHLENBQUNGLEVBQVlDLENBQVksQ0FBQyxFQUV0QixDQUFFLFdBQUFELEVBQVksYUFBQUMsQ0FBYSxDQUNwQyxDQ3BJSSxPQUNFLE9BQUFFLEdBREYsUUFBQUMsT0FBQSxvQkFKRyxTQUFTQyxHQUFjQyxFQUEyQixDQUN2RCxHQUFNLENBQUUsY0FBQUMsRUFBZSxlQUFBQyxDQUFlLEVBQUlGLEVBRTFDLE9BQ0VGLEdBQUNLLEdBQUEsQ0FDQyxVQUFBTixHQUFDTyxHQUFBLENBQW1CLFFBQU8sR0FBRSxTQUFBSCxFQUFjLEVBQzNDSixHQUFDUSxHQUFBLENBQ0MsTUFBTSxRQUNOLFlBQWEsR0FDYixVQUFXQyxFQUNULDhCQUNBLDRDQUNBLGdGQUNGLEVBQ0EsV0FBWSxJQUVYLFNBQUFKLEVBQ0gsR0FDRixDQUVKLENDOUJBLE9BQ0UsaUJBQUFLLEdBQ0EsY0FBQUMsR0FFQSxlQUFBQyxHQUVBLGtCQUFBQyxHQUNBLGlCQUFBQyxHQUVBLGFBQUFDLEdBQ0EsY0FBQUMsT0FDSyxnQkFDUCxPQUNFLGFBQUFDLEdBQ0EsbUJBQUFDLEdBQ0EsK0JBQUFDLEdBQ0EsZUFBQUMsR0FDQSwrQkFBQUMsT0FDSyxvQkFDUCxPQUFTLE9BQUFDLE9BQVcscUJBRXBCLE9BQVMsVUFBQUMsT0FBYyxlQUN2QixPQUFTLGlCQUFBQyxPQUFxQixvQkFFOUIsT0FBUyxXQUFBQyxHQUFTLFlBQUFDLE9BQWdCLFFBRWxDLE9BQVMsWUFBQUMsT0FBZ0Isb0JBQ3pCLE9BQVMsZ0JBQUFDLE9BQW9CLFlBQzdCLE9BQU9DLE9BQVcsYUMxQlgsU0FBU0MsR0FBY0MsRUFBNEJDLEVBQTBCQyxFQUF3QixDQUMxRyxJQUFNQyxFQUFnQkgsR0FBUSxTQUFTLE1BRXZDLEdBQUlHLElBQWtCLE9BQ3BCLE1BQU8sR0FHVCxHQUFJRixJQUFhLE1BQVFBLElBQWEsU0FDcEMsT0FBT0MsRUFBTSxZQUFZLElBQU0sT0FBUyxLQUFPQSxFQUdqRCxHQUFJQyxJQUFrQixVQUFXLE9BQU9ELElBQVUsT0FLbEQsR0FKSUMsSUFBa0IsWUFDbEJBLElBQWtCLFFBQ2xCQSxJQUFrQixPQUNsQkEsSUFBa0IsVUFDbEJBLElBQWtCLE9BQVEsT0FBT0QsRUFFckMsR0FBSUMsSUFBa0IsT0FDcEIsR0FBSSxDQUNGLE9BQU8sS0FBSyxNQUFNRCxDQUFLLENBQ3pCLE1BQVEsQ0FDTixPQUFPQSxDQUNULENBR0YsT0FBSUMsSUFBa0IsVUFDYkQsSUFBVSxHQUFLLEtBQU8sT0FBT0EsQ0FBSyxFQUdwQ0EsQ0FDVCxDQUVPLFNBQVNFLEdBQ2RKLEVBQ0FDLEVBQ0FDLEVBQ1EsQ0FDUixJQUFNQyxFQUFnQkgsR0FBUSxTQUFTLE1BRXZDLEdBQUlDLElBQWFBLElBQWEsTUFBUUEsSUFBYSxVQUNqRCxPQUFPQyxJQUFVLEtBQU8sT0FBUyxPQUFPQSxDQUFLLEVBRy9DLEdBQUlDLElBQWtCLFFBQWFELEdBQVMsS0FDMUMsTUFBTyxHQVNULEdBTklDLElBQWtCLFdBQ2xCQSxJQUFrQixZQUNsQkEsSUFBa0IsUUFDbEJBLElBQWtCLFdBQ2xCQSxJQUFrQixPQUNsQkEsSUFBa0IsVUFDbEJBLElBQWtCLE9BQVEsT0FBTyxPQUFPRCxDQUFLLEVBRWpELEdBQUlDLElBQWtCLE9BQVEsQ0FDNUIsR0FBSUQsSUFBVSxHQUFJLE1BQU8sR0FDekIsR0FBSSxDQUNGLE9BQU8sS0FBSyxVQUFVQSxDQUFLLENBQzdCLE1BQVEsQ0FDTixPQUFPLE9BQU9BLENBQUssQ0FDckIsQ0FDRixDQUVBLE9BQU8sT0FBT0EsQ0FBSyxDQUNyQixDQ3BFQSxVQUFZRyxNQUEyQixnQ0FFdkMsVUFBWUMsT0FBVyxRQXNCckIsT0FVRSxPQUFBQyxHQVZGLFFBQUFDLE9BQUEsb0JBbEJGLElBQU1DLEdBQXFDLE9BRXJDQyxHQUE0QyxVQVVsRCxJQUFNQyxHQUErQixjQUtuQyxDQUFDLENBQUUsVUFBQUMsRUFBVyxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUMzQ0MsR0FBdUIsYUFBdEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsc1BBQ0FMLEdBQVMsVUFDVEQsQ0FDRixFQUNDLEdBQUdHLEVBRUgsVUFBQUQsRUFDREssR0FBQ0MsR0FBQSxDQUFhLFVBQVUsYUFBYSxHQUN2QyxDQUNELEVBQ0RULEdBQXVCLFlBQW9DLGFBQVcsWUFFdEUsSUFBTVUsR0FBK0IsY0FHbkMsQ0FBQyxDQUFFLFVBQUFULEVBQVcsR0FBR0csQ0FBTSxFQUFHQyxJQUMxQkcsR0FBdUIsYUFBdEIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQ1QsNGlCQUNBTixDQUNGLEVBQ0MsR0FBR0csRUFDTixDQUNELEVBQ0RNLEdBQXVCLFlBQW9DLGFBQVcsWUFFdEUsSUFBTUMsR0FBNEIsY0FHaEMsQ0FBQyxDQUFFLFVBQUFWLEVBQVcsV0FBQVcsRUFBYSxFQUFHLEdBQUdSLENBQU0sRUFBR0MsSUFDMUNHLEdBQXVCLFNBQXRCLENBQ0MsU0FBQUEsR0FBdUIsVUFBdEIsQ0FDQyxJQUFLSCxFQUNMLFdBQVlPLEVBQ1osVUFBV0wsRUFDVCxzTkFDQSw0YUFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBQ04sRUFDRixDQUNELEVBQ0RPLEdBQW9CLFlBQW9DLFVBQVEsWUFFaEUsSUFBTUUsR0FBeUIsY0FLN0IsQ0FBQyxDQUFFLFVBQUFaLEVBQVcsTUFBQUMsRUFBTyxHQUFHRSxDQUFNLEVBQUdDLElBQ2pDRyxHQUF1QixPQUF0QixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFDVCw4VEFDQUwsR0FBUyxVQUNURCxDQUNGLEVBQ0MsR0FBR0csRUFDTixDQUNELEVBQ0RTLEdBQWlCLFlBQW9DLE9BQUssWUFFMUQsSUFBTUMsR0FBaUMsY0FHckMsQ0FBQyxDQUFFLFVBQUFiLEVBQVcsU0FBQUUsRUFBVSxRQUFBWSxFQUFTLEdBQUdYLENBQU0sRUFBR0MsSUFDN0NDLEdBQXVCLGVBQXRCLENBQ0MsSUFBS0QsRUFDTCxVQUFXRSxFQUNULHVSQUNBTixDQUNGLEVBQ0EsUUFBU2MsRUFDUixHQUFHWCxFQUVKLFVBQUFJLEdBQUMsUUFBSyxVQUFVLG9GQUNkLFNBQUFBLEdBQXVCLGdCQUF0QixDQUNDLFNBQUFBLEdBQUNRLEdBQUEsQ0FBTSxVQUFVLGdCQUFnQixFQUNuQyxFQUNGLEVBQ0NiLEdBQ0gsQ0FDRCxFQUNEVyxHQUF5QixZQUFvQyxlQUFhLFlBRTFFLElBQU1HLEdBQThCLGNBR2xDLENBQUMsQ0FBRSxVQUFBaEIsRUFBVyxTQUFBRSxFQUFVLEdBQUdDLENBQU0sRUFBR0MsSUFDcENDLEdBQXVCLFlBQXRCLENBQ0MsSUFBS0QsRUFDTCxVQUFXRSxFQUNULHVSQUNBTixDQUNGLEVBQ0MsR0FBR0csRUFFSixVQUFBSSxHQUFDLFFBQUssVUFBVSxvRkFDZCxTQUFBQSxHQUF1QixnQkFBdEIsQ0FDQyxTQUFBQSxHQUFDVSxHQUFBLENBQU8sVUFBVSxnQ0FBZ0MsRUFDcEQsRUFDRixFQUNDZixHQUNILENBQ0QsRUFDRGMsR0FBc0IsWUFBb0MsWUFBVSxZQUVwRSxJQUFNRSxHQUEwQixjQUs5QixDQUFDLENBQUUsVUFBQWxCLEVBQVcsTUFBQUMsRUFBTyxHQUFHRSxDQUFNLEVBQUdDLElBQ2pDRyxHQUF1QixRQUF0QixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyxnREFBaURMLEdBQVMsVUFBV0QsQ0FBUyxFQUMzRixHQUFHRyxFQUNOLENBQ0QsRUFDRGUsR0FBa0IsWUFBb0MsUUFBTSxZQUU1RCxJQUFNQyxHQUE4QixjQUdsQyxDQUFDLENBQUUsVUFBQW5CLEVBQVcsR0FBR0csQ0FBTSxFQUFHQyxJQUMxQkcsR0FBdUIsWUFBdEIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQUcsdUNBQXdDTixDQUFTLEVBQzlELEdBQUdHLEVBQ04sQ0FDRCxFQUNEZ0IsR0FBc0IsWUFBb0MsWUFBVSxZQUVwRSxJQUFNQyxHQUF1QixDQUFDLENBQUUsVUFBQXBCLEVBQVcsR0FBR0csQ0FBTSxJQUMzQ0ksR0FBQyxRQUFLLFVBQVdELEVBQUcseURBQTBETixDQUFTLEVBQUksR0FBR0csRUFBTyxFQUU5R2lCLEdBQXFCLFlBQWMsdUJDcktuQyxVQUFZQyxPQUFXLFFBT2pCLGNBQUFDLE9BQUEsb0JBSE4sSUFBTUMsR0FBYyxjQUNsQixDQUFDLENBQUUsVUFBQUMsRUFBVyxLQUFBQyxFQUFNLEdBQUdDLENBQU0sRUFBR0MsSUFFNUJMLEdBQUMsU0FDQyxLQUFNRyxFQUNOLFVBQVdHLEVBQ1QsdVpBQ0FKLENBQ0YsRUFDQSxJQUFLRyxFQUNKLEdBQUdELEVBQ04sQ0FHTixFQUNBSCxHQUFNLFlBQWMsUUNuQnBCLFVBQVlNLE1BQXFCLHlCQUVqQyxVQUFZQyxPQUFXLFFBY3JCLE9BVUksT0FBQUMsRUFWSixRQUFBQyxPQUFBLG9CQVZGLElBQU1DLEdBQXlCLE9BSS9CLElBQU1DLEdBQThCLFFBRTlCQyxHQUFzQixjQUcxQixDQUFDLENBQUUsVUFBQUMsRUFBVyxTQUFBQyxFQUFVLEdBQUdDLENBQU0sRUFBR0MsSUFDcENDLEdBQWlCLFVBQWhCLENBQ0MsSUFBS0QsRUFDTCxVQUFXRSxFQUNULG1ZQUNBTCxDQUNGLEVBQ0MsR0FBR0UsRUFFSCxVQUFBRCxFQUNESyxFQUFpQixPQUFoQixDQUFxQixRQUFPLEdBQzNCLFNBQUFBLEVBQUNDLEdBQUEsQ0FBWSxVQUFVLDhCQUE4QixFQUN2RCxHQUNGLENBQ0QsRUFDRFIsR0FBYyxZQUE4QixVQUFRLFlBRXBELElBQU1TLEdBQTZCLGNBR2pDLENBQUMsQ0FBRSxVQUFBUixFQUFXLEdBQUdFLENBQU0sRUFBR0MsSUFDMUJHLEVBQWlCLGlCQUFoQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyxzRUFBdUVMLENBQVMsRUFDN0YsR0FBR0UsRUFFSixTQUFBSSxFQUFDRyxHQUFBLENBQVUsVUFBVSxnQkFBZ0IsRUFDdkMsQ0FDRCxFQUNERCxHQUFxQixZQUE4QixpQkFBZSxZQUVsRSxJQUFNRSxHQUErQixjQUduQyxDQUFDLENBQUUsVUFBQVYsRUFBVyxHQUFHRSxDQUFNLEVBQUdDLElBQzFCRyxFQUFpQixtQkFBaEIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQUcsc0VBQXVFTCxDQUFTLEVBQzdGLEdBQUdFLEVBRUosU0FBQUksRUFBQ0MsR0FBQSxDQUFZLFVBQVUsZ0JBQWdCLEVBQ3pDLENBQ0QsRUFDREcsR0FBdUIsWUFBOEIsbUJBQWlCLFlBRXRFLElBQU1DLEdBQXNCLGNBRzFCLENBQUMsQ0FBRSxVQUFBWCxFQUFXLFNBQUFDLEVBQVUsU0FBQVcsRUFBVyxTQUFVLEdBQUdWLENBQU0sRUFBR0MsSUFDekRHLEVBQWlCLFNBQWhCLENBQ0MsU0FBQUYsR0FBaUIsVUFBaEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsa25CQUNBTyxJQUFhLFVBQ1gsOElBQ0ZaLENBQ0YsRUFDQSxTQUFVWSxFQUNULEdBQUdWLEVBRUosVUFBQUksRUFBQ0UsR0FBQSxFQUFxQixFQUN0QkYsRUFBaUIsV0FBaEIsQ0FDQyxVQUFXRCxFQUNULFNBQ0FPLElBQWEsVUFDWCxrR0FDSixFQUVDLFNBQUFYLEVBQ0gsRUFDQUssRUFBQ0ksR0FBQSxFQUF1QixHQUMxQixFQUNGLENBQ0QsRUFDREMsR0FBYyxZQUE4QixVQUFRLFlBRXBELElBQU1FLEdBQW9CLGNBR3hCLENBQUMsQ0FBRSxVQUFBYixFQUFXLEdBQUdFLENBQU0sRUFBR0MsSUFDMUJHLEVBQWlCLFFBQWhCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUFHLGdEQUFpREwsQ0FBUyxFQUN2RSxHQUFHRSxFQUNOLENBQ0QsRUFDRFcsR0FBWSxZQUE4QixRQUFNLFlBRWhELElBQU1DLEVBQW1CLGNBR3ZCLENBQUMsQ0FBRSxVQUFBZCxFQUFXLFNBQUFDLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUNwQ0MsR0FBaUIsT0FBaEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1QsNFFBQ0FMLENBQ0YsRUFDQyxHQUFHRSxFQUVKLFVBQUFJLEVBQUMsUUFBSyxVQUFVLHFGQUNkLFNBQUFBLEVBQWlCLGdCQUFoQixDQUNDLFNBQUFBLEVBQUNTLEdBQUEsQ0FBTSxVQUFVLGdCQUFnQixFQUNuQyxFQUNGLEVBQ0FULEVBQWlCLFdBQWhCLENBQTBCLFNBQUFMLEVBQVMsR0FDdEMsQ0FDRCxFQUNEYSxFQUFXLFlBQThCLE9BQUssWUFFOUMsSUFBTUUsR0FBd0IsY0FHNUIsQ0FBQyxDQUFFLFVBQUFoQixFQUFXLEdBQUdFLENBQU0sRUFBR0MsSUFDMUJHLEVBQWlCLFlBQWhCLENBQTBCLElBQUtILEVBQUssVUFBV0UsRUFBRyx1Q0FBd0NMLENBQVMsRUFBSSxHQUFHRSxFQUFPLENBQ25ILEVBQ0RjLEdBQWdCLFlBQThCLFlBQVUsWUo5RWhELE9BNmlCQSxZQUFBQyxHQTdpQkEsT0FBQUMsRUFFRixRQUFBQyxNQUZFLG9CQWRSLElBQU1DLEdBQXdCLENBQUMsQ0FDN0IsTUFBQUMsRUFDQSxjQUFBQyxFQUNBLFNBQUFDLEVBQ0EsaUJBQUFDLEVBQW1CLDJCQUNyQixJQU9JTCxFQUFDTSxHQUFBLENBQU8sTUFBT0osRUFBTyxjQUFlQyxFQUFlLFNBQVVDLEVBQzVELFVBQUFMLEVBQUNRLEdBQUEsQ0FBYyxVQUFXRixFQUN4QixTQUFBTixFQUFDUyxHQUFBLENBQVksWUFBWSxRQUFRLEVBQ25DLEVBQ0FSLEVBQUNTLEdBQUEsQ0FDQyxVQUFBVixFQUFDVyxFQUFBLENBQVcsTUFBTSxNQUNoQixTQUFBWCxFQUFDLE9BQUksVUFBVSxtQkFBbUIsZUFBRyxFQUN2QyxFQUNBQSxFQUFDVyxFQUFBLENBQVcsTUFBTSxLQUNoQixTQUFBWCxFQUFDLE9BQUksVUFBVSxtQkFBbUIsY0FBRSxFQUN0QyxHQUNGLEdBQ0YsRUFLRVksR0FBNkIsQ0FBQyxDQUNsQyxTQUFBQyxFQUNBLE1BQUFDLEVBQ0EsTUFBQUMsQ0FDRixJQUlNLENBQ0osSUFBTUMsRUFBYUYsRUFBTSxLQUFNRyxHQUFTQSxFQUFLLEtBQU9KLENBQVEsRUFDNUQsR0FBSSxDQUFDRyxFQUFZLE9BQU8sS0FFeEIsSUFBSUUsRUFBcUMsTUFDckNDLEVBQTBCLEdBQ3hCQyxFQUFrQk4sRUFBTSxVQUFXRyxHQUFTQSxFQUFLLEtBQU9KLENBQVEsRUFFdEUsR0FBSU8sRUFBa0IsRUFBRyxDQUN2QixJQUFNQyxFQUFlUCxFQUFNTSxFQUFrQixDQUFDLEVBQzFDQyxJQUVGSCxFQUF1QkcsRUFBYSxNQUNwQ0YsRUFBMEIsR0FFOUIsQ0FFQSxPQUFJSCxFQUFXLE9BQVMsZUFFcEJoQixFQUFDc0IsR0FBQSxDQUNDLE9BQVFOLEVBQ1IsU0FBVSxJQUFNLENBQUMsRUFDakIsU0FBVSxJQUFNLENBQUMsRUFDakIsTUFBT0QsRUFDUCxvQkFBcUJJLEVBQ3JCLHFCQUFzQkQsRUFDdEIsd0JBQXlCLElBQU0sQ0FBQyxFQUNsQyxFQUlBbEIsRUFBQ3VCLEdBQUEsQ0FDQyxNQUFPUCxFQUNQLFNBQVUsSUFBTSxDQUFDLEVBQ2pCLFNBQVUsSUFBTSxDQUFDLEVBQ2pCLE9BQVEsR0FDUixNQUFPRCxFQUNQLG9CQUFxQkksRUFDckIscUJBQXNCRCxFQUN0Qix3QkFBeUIsSUFBTSxDQUFDLEVBQ2hDLDRCQUE2QixHQUMvQixDQUdOLEVBR01NLEdBQWtCLENBQUMsQ0FDdkIsTUFBQVYsRUFDQSxjQUFBVyxFQUNBLE1BQUFWLEVBQ0EsYUFBQVcsRUFDQSxhQUFBQyxFQUNBLGVBQUFDLEVBQ0EsYUFBQUMsRUFDQSxZQUFBQyxFQUNBLGdCQUFBQyxDQUNGLElBVU0sQ0FDSixJQUFNQyxFQUFrQkMsR0FBUSxJQUFNbkIsRUFBTSxJQUFLRyxHQUFTQSxFQUFLLEVBQUUsRUFBRyxDQUFDSCxDQUFLLENBQUMsRUFDckVvQixFQUFVQyxHQUNkQyxHQUFVQyxHQUFlLENBQUUscUJBQXNCLENBQUUsU0FBVSxDQUFFLENBQUUsQ0FBQyxFQUNsRUQsR0FBVUUsR0FBZ0IsQ0FBRSxpQkFBa0JDLEVBQTRCLENBQUMsQ0FDN0UsRUFjQSxPQUNFdEMsRUFBQ3VDLEdBQUEsQ0FDQyxRQUFTTixFQUNULG1CQUFvQk8sR0FDcEIsWUFBYVgsRUFDYixVQWpCMkJZLEdBQXdCLENBQ3JELEdBQU0sQ0FBRSxPQUFBQyxFQUFRLEtBQUFDLENBQUssRUFBSUYsRUFDekIsR0FBSUUsR0FBUUQsRUFBTyxLQUFPQyxFQUFLLEdBQUksQ0FDakMsSUFBTUMsRUFBVy9CLEVBQU0sVUFBV0csR0FBU0EsRUFBSyxLQUFPMEIsRUFBTyxFQUFFLEVBQzFERyxFQUFXaEMsRUFBTSxVQUFXRyxHQUFTQSxFQUFLLEtBQU8yQixFQUFLLEVBQUUsRUFDMURDLElBQWEsSUFBTUMsSUFBYSxJQUNsQ2xCLEVBQWVpQixFQUFVQyxDQUFRLENBRXJDLENBQ0FmLEVBQWdCLENBQ2xCLEVBU0ksVUFBQS9CLEVBQUMrQyxHQUFBLENBQWdCLE1BQU9mLEVBQWlCLFNBQVVnQixHQUNoRCxTQUFBbEMsRUFBTSxJQUFJLENBQUNtQyxFQUFtQkMsSUFBVSxDQUN2QyxJQUFJQyxFQUFnQixHQUNoQkMsRUFDQUMsRUFDQUMsRUFBd0IsR0FFNUIsR0FBSUosRUFBUSxFQUFHLENBQ2JDLEVBQWdCLEdBQ2hCLElBQU1JLEVBQVd6QyxFQUFNb0MsRUFBUSxDQUFDLEVBQ2hDRSxFQUFlRyxFQUFTLE1BQ3hCRixFQUF1QkcsR0FBMkIsQ0FDaEQsSUFBTUMsRUFBa0IsQ0FBRSxHQUFHRixFQUFVLE1BQU9DLENBQVMsRUFDdkQ5QixFQUFhd0IsRUFBUSxFQUFHTyxDQUFlLENBQ3pDLEVBQ0FILEVBQXdCSixFQUFRLElBQU1wQyxFQUFNLE9BQVMsQ0FDdkQsQ0FFQSxPQUNFZCxFQUFDMEQsR0FBQSxDQUVDLE9BQVFULEVBQ1IsU0FBV1UsR0FBa0JqQyxFQUFhd0IsRUFBT1MsQ0FBYSxFQUM5RCxTQUFVLElBQU1oQyxFQUFhdUIsQ0FBSyxFQUNsQyxZQUFhekIsRUFDYixNQUFPVixFQUNQLG9CQUFxQm9DLEVBQ3JCLHFCQUFzQkMsRUFDdEIsd0JBQXlCQyxFQUN6Qiw0QkFBNkJDLEdBVHhCTCxFQUFrQixFQVV6QixDQUVKLENBQUMsRUFDSCxFQUNDVyxHQUNDNUQsRUFBQzZELEdBQUEsQ0FDRSxTQUFBaEMsRUFDQzdCLEVBQUMsT0FBSSxVQUFVLGdCQUNiLFNBQUFBLEVBQUNZLEdBQUEsQ0FBMkIsU0FBVWlCLEVBQWMsTUFBT2YsRUFBTyxNQUFPQyxFQUFPLEVBQ2xGLEVBQ0UsS0FDTixFQUNBLFNBQVMsSUFDWCxHQUNGLENBRUosRUFHTTJDLEdBQXFCLENBQUMsQ0FDMUIsT0FBQUksRUFDQSxTQUFBQyxFQUNBLFNBQUFDLEVBQ0EsWUFBQUMsRUFDQSxNQUFBbEQsRUFDQSxvQkFBQW1ELEVBQ0EscUJBQUFoRCxFQUNBLHdCQUFBaUQsRUFDQSw0QkFBQUMsQ0FDRixJQVVNLENBQ0osR0FBTSxDQUFFLFdBQUFDLEVBQVksVUFBQUMsRUFBVyxXQUFBQyxFQUFZLFVBQUFDLEVBQVcsV0FBQUMsRUFBWSxXQUFBQyxDQUFXLEVBQUlDLEdBQVksQ0FDM0YsR0FBSWIsRUFBTyxHQUNYLEtBQU0sQ0FDSixLQUFNQSxFQUFPLEtBQ2IsU0FBVUcsQ0FDWixDQUNGLENBQUMsRUFFS1csRUFBUSxDQUNaLFVBQVdDLEdBQUksVUFBVSxTQUFTTCxDQUFTLEVBQzNDLFdBQUFDLEVBQ0EsUUFBU0MsRUFBYSxHQUFNLENBQzlCLEVBRUEsT0FDRTFFLEVBQUMsT0FBSSxJQUFLdUUsRUFBWSxNQUFPSyxFQUFPLFVBQVUsa0RBQzNDLFNBQUFkLEVBQU8sT0FBUyxlQUNmOUQsRUFBQ3NCLEdBQUEsQ0FDQyxPQUFRd0MsRUFDUixTQUFVQyxFQUNWLFNBQVVDLEVBQ1YsZ0JBQWlCLENBQUUsR0FBR0ssRUFBWSxHQUFHQyxDQUFVLEVBQy9DLE1BQU92RCxFQUNQLG9CQUFxQm1ELEVBQ3JCLHFCQUFzQmhELEVBQ3RCLHdCQUF5QmlELEVBQ3pCLDRCQUE2QkMsRUFDL0IsRUFFQXBFLEVBQUN1QixHQUFBLENBQ0MsTUFBT3VDLEVBQ1AsU0FBVUMsRUFDVixTQUFVQyxFQUNWLGdCQUFpQixDQUFFLEdBQUdLLEVBQVksR0FBR0MsQ0FBVSxFQUMvQyxNQUFPdkQsRUFDUCxvQkFBcUJtRCxFQUNyQixxQkFBc0JoRCxFQUN0Qix3QkFBeUJpRCxFQUN6Qiw0QkFBNkJDLEVBQy9CLEVBRUosQ0FFSixFQUdNOUMsR0FBa0IsQ0FBQyxDQUN2QixPQUFBd0MsRUFDQSxTQUFBQyxFQUNBLFNBQUFDLEVBQ0EsZ0JBQUFjLEVBQ0EsTUFBQS9ELEVBQ0Esb0JBQUFtRCxFQUNBLHFCQUFBaEQsRUFDQSx3QkFBQWlELEVBQ0EsNEJBQUFDLENBQ0YsSUFVTSxDQUNKLElBQU1XLEVBQXNCNUUsR0FBa0IsQ0FDNUM0RCxFQUFTLENBQUUsR0FBR0QsRUFBUSxPQUFRM0QsQ0FBTSxDQUFDLENBQ3ZDLEVBRU02RSxFQUF3QjdFLEdBQTBCLENBQ3RENEQsRUFBUyxDQUFFLEdBQUdELEVBQVEsU0FBVTNELENBQU0sQ0FBQyxDQUN6QyxFQUVNOEUsRUFBcUJDLEdBQTJDLENBQ3BFLElBQU1DLEVBQVdELEVBQUUsT0FBTyxNQUNwQkUsRUFBYXJFLEVBQU0sUUFBUStDLEVBQU8sTUFBTSxFQUU5QyxHQUFJc0IsSUFBZSxPQUFXLENBQzVCLElBQU01QixFQUFXNkIsR0FBY0QsRUFBWXRCLEVBQU8sU0FBVXFCLENBQVEsRUFFcEVwQixFQUFTLENBQUUsR0FBR0QsRUFBUSxNQUFPTixDQUFTLENBQUMsQ0FDekMsQ0FDRixFQUVNLENBQUM4QixFQUFhQyxDQUFjLEVBQUlDLEdBQ3BDQyxHQUFlMUUsRUFBTSxRQUFRK0MsRUFBTyxNQUFNLEVBQUdBLEVBQU8sU0FBVUEsRUFBTyxLQUFLLENBQzVFLEVBRUEsT0FDRTdELEVBQUN5RixHQUFPLElBQVAsQ0FDQyxVQUFVLDZDQUNWLFFBQVMsQ0FBRSxRQUFTLENBQUUsRUFDdEIsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixLQUFNLENBQUUsUUFBUyxDQUFFLEVBQ25CLFdBQVksQ0FBRSxPQUFRLENBQUUsU0FBVSxHQUFLLENBQUUsRUFFekMsVUFBQXpGLEVBQUMsT0FBSSxVQUFVLDZDQUNiLFVBQUFELEVBQUMsT0FBSyxHQUFHOEUsRUFBaUIsVUFBVSxpQkFDbEMsU0FBQTlFLEVBQUMyRixHQUFBLENBQWEsVUFBVSxtQkFBbUIsS0FBTSxHQUFJLEVBQ3ZELEVBRUExRixFQUFDLE9BQUksVUFBVSxtQ0FDWixVQUFBaUUsR0FBdUJDLEVBQ3RCbkUsRUFBQ0UsR0FBQSxDQUNDLE1BQU9nQixFQUNQLGNBQWVpRCxFQUNmLFNBQVVDLEVBQ1osRUFDRSxLQUVKbkUsRUFBQ00sR0FBQSxDQUFPLE1BQU91RCxFQUFPLE9BQVEsY0FBZWlCLEVBQzNDLFVBQUEvRSxFQUFDUSxHQUFBLENBQWMsVUFBVSw0QkFDdkIsU0FBQVIsRUFBQ1MsR0FBQSxDQUFZLFlBQVksZ0JBQWdCLEVBQzNDLEVBQ0FULEVBQUNVLEdBQUEsQ0FDRSxnQkFBTyxLQUFLSyxFQUFNLE9BQU8sRUFBRSxJQUFLNkUsR0FDL0I1RixFQUFDVyxFQUFBLENBQXdCLE1BQU9pRixFQUM3QixTQUFBQSxHQURjQSxDQUVqQixDQUNELEVBQ0gsR0FDRixFQUVBM0YsRUFBQ00sR0FBQSxDQUFPLE1BQU91RCxFQUFPLFNBQVUsY0FBZ0IzRCxHQUFVNkUsRUFBcUI3RSxDQUF1QixFQUNwRyxVQUFBSCxFQUFDUSxHQUFBLENBQWMsVUFBVSw0QkFDdkIsU0FBQVIsRUFBQ1MsR0FBQSxDQUFZLFlBQVksV0FBVyxFQUN0QyxFQUNBUixFQUFDUyxHQUFBLENBQ0MsVUFBQVYsRUFBQ1csRUFBQSxDQUFXLE1BQU0sSUFBSSxhQUFDLEVBQ3ZCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxLQUFLLGNBQUUsRUFDekJYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLElBQUksYUFBSSxFQUMxQlgsRUFBQ1csRUFBQSxDQUFXLE1BQU0sS0FBSyxjQUFLLEVBQzVCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxJQUFJLGFBQUksRUFDMUJYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLEtBQUssY0FBSyxFQUM1QlgsRUFBQ1csRUFBQSxDQUFXLE1BQU0sS0FBSyxjQUFFLEVBQ3pCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxTQUFTLGtCQUFNLEVBQ2pDWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxPQUFPLGdCQUFJLEVBQzdCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxXQUFXLG9CQUFRLEVBQ3JDWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxRQUFRLGlCQUFLLEVBQy9CWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxZQUFZLHFCQUFTLEdBQ3pDLEdBQ0YsRUFFQVgsRUFBQzZGLEdBQUEsQ0FDQyxNQUFPUCxFQUNQLFNBQVdKLEdBQU0sQ0FDZkssRUFBZUwsRUFBRSxPQUFPLEtBQUssRUFDN0JELEVBQWtCQyxDQUFDLENBQ3JCLEVBQ0EsWUFBWSxRQUNaLFVBQVUsNEJBQ1osR0FDRixHQUNGLEVBRUFsRixFQUFDLE9BQUksVUFBVSxtQ0FDYixTQUFBQSxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQUssUUFBUzlCLEVBQ3pDLFNBQUFoRSxFQUFDK0YsR0FBQSxDQUFFLEtBQU0sR0FBSSxFQUNmLEVBQ0YsR0FDRixDQUVKLEVBR014RSxHQUF1QixDQUFDLENBQzVCLE1BQUF5RSxFQUNBLFNBQUFqQyxFQUNBLFNBQUFDLEVBQ0EsZ0JBQUFjLEVBQ0EsT0FBQW1CLEVBQVMsR0FDVCxNQUFBbEYsRUFDQSxvQkFBQW1ELEVBQ0EscUJBQUFoRCxFQUNBLHdCQUFBaUQsRUFDQSw0QkFBQUMsQ0FDRixJQVdNLENBQ0osR0FBTSxDQUFDOEIsRUFBWUMsQ0FBYSxFQUFJWCxHQUFTLEVBQUksRUFDM0MsQ0FBQzNELEVBQWN1RSxDQUFlLEVBQUlaLEdBQWtDLElBQUksRUFFeEVhLEVBQWtCLElBQU0sQ0FDNUIsSUFBTUMsRUFBMEIsQ0FDOUIsR0FBSUMsR0FBTSxTQUFTLEVBQ25CLEtBQU0sZUFDTixPQUFRLE9BQU8sS0FBS3hGLEVBQU0sT0FBTyxFQUFFLENBQUMsR0FBSyxHQUN6QyxTQUFVLElBQ1YsTUFBTyxPQUNQLE1BQU8sS0FDVCxFQUVBZ0QsRUFBUyxDQUFFLEdBQUdpQyxFQUFPLFFBQVMsQ0FBQyxHQUFHQSxFQUFNLFFBQVNNLENBQVMsQ0FBRSxDQUFDLENBQy9ELEVBRU1FLEVBQWlCLElBQU0sQ0FDM0IsSUFBTUMsRUFBd0IsQ0FDNUIsR0FBSUYsR0FBTSxTQUFTLEVBQ25CLEtBQU0sY0FDTixRQUFTLENBQUMsRUFDVixNQUFPLEtBQ1QsRUFFQXhDLEVBQVMsQ0FBRSxHQUFHaUMsRUFBTyxRQUFTLENBQUMsR0FBR0EsRUFBTSxRQUFTUyxDQUFRLENBQUUsQ0FBQyxDQUM5RCxFQUVNQyxFQUFvQixDQUFDeEQsRUFBZXlELElBQXFELENBQzdGLElBQU1DLEVBQWEsQ0FBQyxHQUFHWixFQUFNLE9BQU8sRUFDcENZLEVBQVcxRCxDQUFLLEVBQUl5RCxFQUNwQjVDLEVBQVMsQ0FBRSxHQUFHaUMsRUFBTyxRQUFTWSxDQUFXLENBQUMsQ0FDNUMsRUFFTUMsRUFBdUIzRCxHQUFrQixDQUM3QyxJQUFNMEQsRUFBYSxDQUFDLEdBQUdaLEVBQU0sT0FBTyxFQUNwQ1ksRUFBVyxPQUFPMUQsRUFBTyxDQUFDLEVBQzFCYSxFQUFTLENBQUUsR0FBR2lDLEVBQU8sUUFBU1ksQ0FBVyxDQUFDLENBQzVDLEVBRU1FLEVBQW1CcEUsR0FBMEIsQ0FDakQwRCxFQUFnQjFELEVBQU0sT0FBTyxFQUFFLENBQ2pDLEVBRU1xRSxFQUFzQixJQUFNLENBQ2hDWCxFQUFnQixJQUFJLENBQ3RCLEVBRU1ZLEVBQXFCLENBQUNuRSxFQUFrQkMsSUFBcUIsQ0FDakUsR0FBSUQsSUFBYUMsRUFBVSxPQUMzQixJQUFNbUUsRUFBbUJDLEdBQVVsQixFQUFNLFFBQVNuRCxFQUFVQyxDQUFRLEVBQ3BFaUIsRUFBUyxDQUFFLEdBQUdpQyxFQUFPLFFBQVNpQixDQUFpQixDQUFDLENBQ2xELEVBRU1FLEdBQXFCLElBQ3BCakIsRUFDRCxDQUFDRixFQUFNLFNBQVdBLEVBQU0sUUFBUSxTQUFXLEVBRTNDaEcsRUFBQyxPQUFJLFVBQVUsbURBQW1ELCtEQUVsRSxFQUtGQSxFQUFDMEYsR0FBTyxJQUFQLENBQVcsV0FBWSxDQUFFLE9BQVEsQ0FBRSxTQUFVLEdBQUssQ0FBRSxFQUNuRCxTQUFBMUYsRUFBQyxPQUFJLFVBQVdvSCxFQUFHLDJDQUE0Q25CLEVBQVMsR0FBSyxTQUFTLEVBQ3BGLFNBQUFqRyxFQUFDd0IsR0FBQSxDQUNDLE1BQU93RSxFQUFNLFFBQ2IsY0FBZUEsRUFBTSxHQUNyQixNQUFPakYsRUFDUCxhQUFjMkYsRUFDZCxhQUFjRyxFQUNkLGVBQWdCRyxFQUNoQixhQUFjbkYsRUFDZCxZQUFhaUYsRUFDYixnQkFBaUJDLEVBQ25CLEVBQ0YsRUFDRixFQXhCc0IsS0E0QjFCLE9BQ0UvRyxFQUFDMEYsR0FBTyxJQUFQLENBQVcsVUFBVSxZQUFZLFdBQVksQ0FBRSxPQUFRLENBQUUsU0FBVSxHQUFLLENBQUUsRUFDekUsU0FBQXpGLEVBQUMsT0FBSSxVQUFXbUgsRUFBRyxnQ0FBaUNsQixFQUFhLFdBQWEsRUFBRSxFQUM5RSxVQUFBakcsRUFBQyxPQUFJLFVBQVUsdURBQ2IsVUFBQUEsRUFBQyxPQUFJLFVBQVUsbUNBQ1osV0FBQ2dHLEdBRUFqRyxFQUFDLE9BQUssR0FBRzhFLEVBQWlCLFVBQVUsaUJBQWlCLFFBQVMsSUFBTXFCLEVBQWMsQ0FBQ0QsQ0FBVSxFQUMxRixTQUFBQSxFQUFhbEcsRUFBQ3FILEdBQUEsQ0FBWSxLQUFNLEdBQUksRUFBS3JILEVBQUNzSCxHQUFBLENBQWEsS0FBTSxHQUFJLEVBQ3BFLEVBR0RwRCxHQUF1QkMsR0FBMkIsQ0FBQzhCLEdBQ2xEakcsRUFBQyxPQUFJLFVBQVUsMEJBQ2IsU0FBQUEsRUFBQ0UsR0FBQSxDQUNDLE1BQU9nQixFQUNQLGNBQWVpRCxFQUNmLFNBQVVDLEVBQ1osRUFDRixFQUdGbkUsRUFBQzZGLEVBQUEsQ0FDQyxRQUFRLFVBQ1IsS0FBSyxLQUNMLFFBQVNPLEVBQ1QsVUFBV2UsRUFBRyxvRUFBb0UsRUFDbkYsdUJBRUVwQixFQUFNLFFBQVEsT0FBUyxHQUN0QmhHLEVBQUN1SCxHQUFBLENBQU0sVUFBVSxvQkFDZixTQUFBdkgsRUFBQ3dILEdBQUEsQ0FBYyxXQUFZLENBQUUsT0FBUSxDQUFFLFNBQVUsR0FBSyxDQUFFLEVBQUksU0FBQXhCLEVBQU0sUUFBUSxPQUFPLEVBQ25GLEdBRUosRUFFQWhHLEVBQUM4RixFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssS0FBSyxRQUFTVSxFQUFnQixVQUFVLG1DQUFtQyxxQkFFMUcsR0FDRixFQUNBdkcsRUFBQyxPQUFJLFVBQVUsbUNBQ1osVUFBQWdHLEdBQ0NoRyxFQUFDd0gsR0FBQSxDQUNDLFVBQUF6SCxFQUFDMEgsR0FBQSxDQUFvQixRQUFPLEdBQzFCLFNBQUExSCxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQzNCLFNBQUE5RixFQUFDMkgsR0FBQSxDQUFXLFVBQVUsWUFBWSxFQUNwQyxFQUNGLEVBQ0EzSCxFQUFDNEgsR0FBQSxDQUFvQixNQUFNLFNBQVMsVUFBVSxZQUMzQyxTQUFBNUIsRUFBTSxRQUFRLFNBQVcsRUFDeEJoRyxFQUFDLE9BQUksVUFBVSx1REFBdUQsc0VBRXRFLEVBRUFBLEVBQUMsT0FBSSxVQUFVLGdGQUNiLFNBQUFBLEVBQUM2SCxHQUFBLENBQWdCLE9BQVE3QixFQUFPLEVBQ2xDLEVBRUosR0FDRixFQUVELENBQUNDLEdBQ0FqRyxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQUssUUFBUzlCLEVBQ3pDLFNBQUFoRSxFQUFDK0YsR0FBQSxDQUFFLEtBQU0sR0FBSSxFQUNmLEdBRUosR0FDRixFQUNBL0YsRUFBQyxPQUFJLFVBQVdvSCxFQUFHbkIsRUFBUyxHQUFLLFNBQVMsRUFBSSxTQUFBa0IsR0FBbUIsRUFBRSxHQUNyRSxFQUNGLENBRUosRUFHTVUsR0FBa0IsQ0FBQyxDQUFFLE9BQUEvRCxDQUFPLElBQTBDLENBQzFFLElBQUlnRSxFQUFpQixFQUVyQixHQUFJaEUsRUFBTyxRQUFRLFNBQVcsRUFBRyxNQUFPLE1BRXhDLElBQU1rQyxFQUFRbEMsRUFBTyxRQUFRLElBQUksQ0FBQ2lFLEVBQUdDLElBQU0sQ0FDekMsSUFBSUMsRUFDRUMsRUFBU3BFLEVBQU8sUUFBUSxPQUFTLElBQU1rRSxFQWE3QyxHQVhJRixJQUFtQixLQUNyQkEsRUFBaUIsR0FHZkMsRUFBRSxRQUFVLE9BQVMsQ0FBQ0csSUFDeEJKLEdBQWtCLEdBRWhCQSxJQUFtQkksR0FBVUgsRUFBRSxRQUFVLFFBQzNDRCxFQUFpQixJQUdmQyxFQUFFLE9BQVMsZUFBZ0IsQ0FDN0IsR0FBTSxDQUFFLE9BQUFuQyxFQUFRLFNBQUF1QyxDQUFTLEVBQUlKLEVBRTdCRSxFQUNFaEksRUFBQUYsR0FBQSxDQUNFLFVBQUFFLEVBQUMsUUFBSyxjQUFFMkYsRUFBTyxLQUFDLEVBQ2hCM0YsRUFBQyxRQUFLLGNBQUVrSSxFQUFTLEtBQUMsRUFDbEJuSSxFQUFDLFFBQUssZUFBRyxHQUNYLENBRUosTUFDRWlJLEVBQVNqSSxFQUFDNkgsR0FBQSxDQUFnQixPQUFRRSxFQUFHLEVBR3ZDLE9BQ0U5SCxFQUFDRixHQUFBLENBQ0UsVUFBQStILElBQW1CLEVBQUk5SCxFQUFDLFFBQUssVUFBVSxtQkFBbUIsYUFBQyxFQUFVLEdBQ3JFaUksRUFDQUgsSUFBbUIsR0FBSzlILEVBQUMsUUFBSyxVQUFVLG1CQUFtQixhQUFDLEVBQVUsR0FDdEUsQ0FBQ2tJLEdBQVVqSSxFQUFDLFFBQUssVUFBVSxpREFBaUQsY0FBRThILEVBQUUsTUFBTSxLQUFDLElBSjNFQSxFQUFFLEVBS2pCLENBRUosQ0FBQyxFQUVELE9BQU8vSCxFQUFDLFFBQU0sU0FBQWdHLEVBQU0sQ0FDdEIsRUFHTyxTQUFTb0MsR0FBVyxDQUN6QixPQUFBdEUsRUFDQSxVQUFBdUUsRUFDQSxpQkFBQUMsRUFDQSxNQUFBdkgsQ0FDRixFQUtHLENBS0QsT0FDRWQsRUFBQyxPQUFJLFVBQVUsK0JBQ2IsVUFBQUQsRUFBQ3VCLEdBQUEsQ0FBcUIsTUFBT3VDLEVBQVEsU0FBVXVFLEVBQVcsU0FBVSxJQUFNLENBQUMsRUFBRyxPQUFRLEdBQU0sTUFBT3RILEVBQU8sRUFDMUdmLEVBQUM4RixFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssS0FBSyxVQUFVLGNBQWMsUUFQckMsSUFBTSxDQUMvQndDLEVBQWlCeEUsQ0FBTSxDQUN6QixFQUs2Rix5QkFFekYsR0FDRixDQUVKLENLbHBCQSxPQUFTLGNBQUF5RSxHQUErQixlQUFBQyxHQUFhLGFBQUFDLEdBQVcsY0FBQUMsT0FBa0IsZ0JBQ2xGLE9BQVMsYUFBQUMsR0FBVyxpQ0FBQUMsR0FBK0IsbUJBQUFDLEdBQWlCLGVBQUFDLE9BQW1CLG9CQUN2RixPQUFTLE9BQUFDLE9BQVcscUJBRXBCLE9BR0UsbUJBQUFDLEdBTUEsaUJBQUFDLE9BQ0ssaVNDWlAsSUFBTUMsR0FBV0MsR0FBeUIsQ0FDeEMsR0FBSSxDQUNGLElBQU1DLEVBQVlDLGFBQWFILFFBQVFDLENBQUcsRUFDMUMsT0FBSSxPQUFPQyxHQUFjLFNBQ2hCRSxLQUFLQyxNQUFNSCxDQUFTLEVBRTdCLE1BQ0YsTUFBUSxDQUNOLE1BQ0YsQ0FDRixFQUVlLFNBQVNJLEdBQ3RCTCxFQUNBTSxFQUM0RCxDQUM1RCxHQUFNLENBQUNDLEVBQU9DLENBQVEsRUFBSUMsRUFBTUMsU0FBUSxFQUV4Q0QsRUFBTUUsVUFBVSxJQUFNLENBQ3BCLElBQU1DLEVBQWViLEdBQVFDLENBQUcsRUFHOUJRLEVBREUsT0FBT0ksRUFBaUIsS0FBZUEsSUFBaUIsS0FFeEQsT0FBT04sR0FBaUIsV0FBYUEsRUFBWSxFQUFLQSxFQUcvQ00sQ0FGVCxDQUlKLEVBQUcsQ0FBQ04sRUFBY04sQ0FBRyxDQUFDLEVBRXRCLElBQU1hLEVBQVNKLEVBQU1LLFlBQ2xCQyxHQUFpQixDQUNoQlAsRUFBU1EsR0FBTyxDQUNkLElBQUlDLEVBQVNGLEVBRVQsT0FBT0EsR0FBVyxhQUNwQkUsRUFBU0YsRUFBUUMsQ0FBRyxHQUV0QixHQUFJLENBQ0ZkLGFBQWFnQixRQUFRbEIsRUFBS0csS0FBS2dCLFVBQVVGLENBQU0sQ0FBQyxPQUMxQyxDQUFBLENBRVIsT0FBT0EsQ0FDVCxDQUFDLENBQ0gsRUFDQSxDQUFDakIsQ0FBRyxDQUNOLEVBRUEsTUFBTyxDQUFDTyxFQUFPTSxDQUFNLENBQ3ZCLENDakRPLElBQU1PLEdBQWUsQ0FDMUJDLFdBQVksVUFDWkMsY0FBZSxVQUNmQyxXQUFZLFFBQ1pDLEtBQU0sVUFDTkMsUUFBUyxVQUNUQyxxQkFBc0IsT0FDdEJDLGVBQWdCLE9BQ2hCQyxRQUFTLFVBQ1RDLE9BQVEsVUFDUkMsT0FBUSxVQUNSQyxRQUFTLFNBQ1gsRUFRTUMsR0FBZXZCLEVBQU13QixjQUFjYixFQUFZLEVBRTlDLFNBQVNjLEdBQWFDLEVBQW9DLENBQUEsR0FBbkMsQ0FBRUMsTUFBQUEsRUFBTyxHQUFHQyxDQUFvQixFQUFDRixFQUM3RCxPQUFPMUIsRUFBQTZCLGNBQUNOLEdBQWFPLFNBQVFDLEdBQUEsQ0FBQ2pDLE1BQU82QixHQUFXQyxDQUFJLENBQUcsQ0FDekQsQ0FFTyxTQUFTSSxJQUFXLENBQ3pCLE9BQU9oQyxFQUFNaUMsV0FBV1YsRUFBWSxDQUN0QyxDQzVCZSxTQUFTVyxHQUFjQyxFQUFvQyxDQUV4RSxHQUFNLENBQUNDLEVBQVNDLENBQVUsRUFBSXJDLEVBQU1DLFNBQVMsSUFBTSxDQUNqRCxHQUFJLE9BQU9xQyxPQUFXLElBQ3BCLE9BQU9BLE9BQU9DLFlBQWNELE9BQU9DLFdBQVdKLENBQUssRUFBRUssT0FFekQsQ0FBQyxFQUdEeEMsT0FBQUEsRUFBTUUsVUFBVSxJQUFNLENBQ3BCLEdBQUksT0FBT29DLE9BQVcsSUFBYSxDQUNqQyxHQUFJLENBQUNBLE9BQU9DLFdBQ1YsT0FJRixJQUFNRSxFQUFVSCxPQUFPQyxXQUFXSixDQUFLLEVBR2pDTyxFQUFXaEIsR0FBQSxDQUFBLEdBQUMsQ0FBRWMsUUFBQUEsQ0FBOEIsRUFBQ2QsRUFBQSxPQUNqRFcsRUFBV0csQ0FBTyxDQUFDLEVBR3JCQyxPQUFBQSxFQUFRRSxZQUFZRCxDQUFRLEVBRXJCLElBQU0sQ0FFWEQsRUFBUUcsZUFBZUYsQ0FBUSxFQUVuQyxHQUNDLENBQUNOLEVBQVNELEVBQU9FLENBQVUsQ0FBQyxFQUV4QkQsQ0FDVCxDQzlCQSxJQUFNUyxHQUFXLE9BQU9QLE9BQVcsSUE2QzVCLFNBQVNRLEdBQ2RDLEVBQ0FDLEVBQ0FDLEVBQ0EsQ0FBQSxPQURBQSxJQUErQixTQUEvQkEsRUFBa0MsQ0FBQSxHQUUzQmpELEVBQU1rRCxXQUNYLENBQUF4QixFQUFxQnlCLElBQVEsQ0FBQSxHQUE1QixDQUFFQyxNQUFBQSxFQUFPLEdBQUd4QixDQUFLLEVBQUNGLEVBQ1hDLEVBQVFLLEdBQVEsRUFFaEJxQixFQUFjQyxPQUFPQyxRQUFRTixDQUFPLEVBQUVPLE9BQzFDLENBQUNDLEVBQU9DLElBQW1CLENBQUEsR0FBakIsQ0FBQ25FLEVBQUtPLENBQUssRUFBQzRELEVBRXBCLE9BQU94QixHQUFjM0MsQ0FBRyxFQUNwQixDQUNFLEdBQUdrRSxFQUNILEdBQUksT0FBTzNELEdBQVUsV0FBYUEsRUFBTThCLEVBQU1ELENBQUssRUFBSTdCLENBQ3pELEVBQ0EyRCxHQUVOLENBQUEsQ0FDRixFQUVBLE9BQU96RCxFQUFNNkIsY0FBY2tCLEVBQU0sQ0FDL0IsR0FBR25CLEVBQ0h3QixNQUFPLENBQ0wsR0FBSSxPQUFPSixHQUFjLFdBQ3JCQSxFQUFVcEIsRUFBTUQsQ0FBSyxFQUNyQnFCLEVBQ0osR0FBR0ksRUFDSCxHQUFHQyxHQUVMRixJQUFBQSxDQUNGLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FFTyxTQUFTUSxJQUFlLENBQzdCLElBQU1DLEVBQWE1RCxFQUFNNkQsT0FBTyxFQUFLLEVBQy9CQyxFQUFZOUQsRUFBTUssWUFBWSxJQUFNdUQsRUFBV0gsUUFBUyxDQUFBLENBQUUsRUFFaEV6RCxPQUFBQSxFQUFNNkMsR0FBVyxZQUFjLGlCQUFpQixFQUFFLEtBQ2hEZSxFQUFXSCxRQUFVLEdBQ2QsSUFBTSxDQUNYRyxFQUFXSCxRQUFVLEtBRXRCLENBQUEsQ0FBRSxFQUVFSyxDQUNULENDakdPLElBQU1DLEdBQVFqQixHQUNuQixNQUNBLENBQUNrQixFQUFRckMsS0FBVyxDQUNsQnNDLFNBQVUsMkJBQ1ZDLFdBQVksYUFDWkMsUUFBUyxPQUNUQyxnQkFBaUJ6QyxFQUFNZixXQUN2QnlELE1BQU8xQyxFQUFNYixVQUNmLEdBQ0EsQ0FDRSxxQkFBc0IsQ0FDcEJ3RCxjQUFlLFVBRWpCLHFCQUFzQixDQUNwQkwsU0FBVSxNQUVaLENBQ0YsQ0FDRixFQUVvQm5CLEdBQ2xCLE1BQ0EsS0FBTyxDQUNMeUIsS0FBTSxZQUNOSixRQUFTLE9BQ1RHLGNBQWUsU0FDZkUsU0FBVSxPQUNWQyxPQUFRLE1BQ1YsR0FDQSxDQUNFLHFCQUFzQkMsQ0FBQ1YsRUFBUXJDLEtBQVcsQ0FDeENnRCxVQUFXLGFBQWFoRCxFQUFNWixJQUFJLElBRXRDLENBQ0YsRUFFTyxJQUFNNkQsR0FBUzlCLEdBQU8sU0FBVSxDQUFDK0IsRUFBT2xELEtBQVcsQ0FDeERtRCxXQUFZLE9BQ1piLFNBQVUsT0FDVmMsV0FBWSxPQUNabkUsV0FBWWUsRUFBTVosS0FDbEJpRSxPQUFRLElBQ1JDLGFBQWMsT0FDZFosTUFBTyxRQUNQYSxRQUFTLE9BQ1RDLFFBQVNOLEVBQU1PLFNBQVcsS0FBT0MsT0FDakNDLE9BQVEsU0FDVixFQUFFLEVBZ0JXeEMsR0FBTyxPQUFRLENBQzFCbUIsU0FBVSxNQUNaLENBQUMsRUFFYW5CLEdBQU8sUUFBUyxDQUFDa0IsRUFBUXJDLEtBQVcsQ0FDaER5QyxnQkFBaUJ6QyxFQUFNVixxQkFDdkIrRCxPQUFRLEVBQ1JDLGFBQWMsT0FDZFosTUFBTzFDLEVBQU1ULGVBQ2IrQyxTQUFVLE9BQ1ZzQixXQUFZLE1BQ1pMLFFBQVMsV0FDWCxFQUFFLEVBRWFwQyxHQUNiLFNBQ0EsQ0FBQ2tCLEVBQVFyQyxLQUFXLENBQ2xCd0MsUUFBUyxlQUNURixTQUFVLE9BQ1ZDLFdBQVksYUFDWmEsV0FBWSxTQUNaUSxXQUFZLE1BQ1pMLFFBQVMsdUJBQ1RULE9BQVEsT0FDUk8sT0FBUSxFQUNSQyxhQUFjLE9BQ2RILFdBQVksT0FDWlUsaUJBQWtCLE9BQ2xCcEIsZ0JBQWlCekMsRUFBTVYscUJBQ3ZCd0UsZ0JBQWlCLCtKQUNqQkMsaUJBQWtCLFlBQ2xCQyxtQkFBb0IscUJBQ3BCQyxlQUFnQixtQkFDaEJ2QixNQUFPMUMsRUFBTVQsY0FDZixHQUNBLENBQ0UscUJBQXNCLENBQ3BCaUQsUUFBUyxNQUNYLENBQ0YsQ0FDRixFQ25HQSxJQUFNMEIsR0FBUS9DLEdBQU8sTUFBTyxDQUMxQm9CLFdBQVksbUJBQ1pELFNBQVUsU0FDVnNCLFdBQVksTUFDWk8sUUFBUyxPQUNUQyxVQUFXLFlBQ2IsQ0FBQyxFQUVLQyxHQUFRbEQsR0FBTyxPQUFRLENBQzNCd0MsT0FBUSxVQUNSakIsTUFBTyxPQUNULENBQUMsRUFFSzRCLEdBQVFuRCxHQUFPLE9BQVEsQ0FBQytCLEVBQU9sRCxLQUFXLENBQzlDMEMsTUFBTzFDLEVBQU1QLE1BQ2YsRUFBRSxFQUVJOEUsR0FBYXBELEdBQU8sTUFBTyxDQUMvQnFELFdBQVksUUFDWkMsWUFBYSxPQUNiQyxXQUFZLDJCQUNkLENBQUMsRUFFS0MsR0FBT3hELEdBQU8sT0FBUSxDQUMxQnVCLE1BQU8sT0FDUEosU0FBVSxPQUNaLENBQUMsRUFFS3NDLEdBQVc3RSxHQUFBLENBQUEsR0FBQyxDQUFFOEUsU0FBQUEsRUFBVXBELE1BQUFBLEVBQVEsQ0FBQSxFQUFJLEdBQUd4QixDQUFLLEVBQUNGLEVBQUEsT0FDakQxQixFQUFBNkIsY0FBQSxPQUFBLENBQ0V1QixNQUFPLENBQ0xlLFFBQVMsZUFDVHNDLFdBQVksZUFDWkMsVUFBVyxVQUFVRixFQUFXLEdBQUssQ0FBQyxRQUFRcEQsRUFBTXNELFdBQWEsRUFBRSxHQUNuRSxHQUFHdEQsQ0FDTCxDQUFFLEVBQ0gsUUFFSyxDQUFDLEVBR0h1RCxHQUFrQmpELEdBYWxCLENBQUEsR0FibUIsQ0FDdkJrRCxZQUFBQSxFQUNBQyxNQUFBQSxFQUNBL0csTUFBQUEsRUFFQWdILFdBQUFBLEVBQ0FDLGNBQUFBLEVBQ0FoRSxLQUFBQSxFQUVBeUQsU0FBQUEsRUFDQVEsT0FBQUEsRUFDQUMsU0FBQUEsRUFDQUMsU0FBQUEsQ0FDRixFQUFDeEQsRUFDTyxDQUFDeUQsRUFBZUMsQ0FBZ0IsRUFBSXBILEVBQU1DLFNBQVNvRixNQUFTLEVBQzVELENBQUNnQyxFQUFlQyxDQUFnQixFQUFJdEgsRUFBTUMsU0FBUyxDQUFBLENBQUUsRUFFckRzSCxFQUF1QkEsSUFBTSxDQUNqQ0gsRUFBaUJ0SCxFQUFLLENBQUUsR0FHMUIsT0FDRUUsRUFBQTZCLGNBQUNnRSxHQUFLLENBQUN0RyxJQUFLc0gsQ0FBTSxFQUNmRSxHQUFBQSxNQUFBQSxFQUFlUyxPQUNkeEgsRUFBQTZCLGNBQUE3QixFQUFBeUgsU0FBQSxLQUNFekgsRUFBQTZCLGNBQUNtRSxHQUFLLENBQUMwQixRQUFTQSxJQUFNVixFQUFNLENBQUcsRUFDN0JoSCxFQUFBNkIsY0FBQzBFLEdBQVEsQ0FBQ0MsU0FBVUEsQ0FBUyxDQUFFLEVBQUUsSUFBQ0ssRUFBTyxJQUN6QzdHLEVBQUE2QixjQUFDeUUsR0FBSSxLQUNGcUIsT0FBTzVFLENBQUksRUFBRTZFLFlBQVcsSUFBTyxXQUFhLGNBQWdCLEdBQzVEZCxFQUFXVSxPQUFPLElBQUVWLEVBQVdVLE9BQVMsRUFBSSxRQUFVLE1BQ25ELENBQ0QsRUFDTmhCLEVBQ0NPLEVBQWNTLFNBQVcsRUFDdkJ4SCxFQUFBNkIsY0FBQ3FFLEdBQVUsS0FDUlksRUFBV2UsSUFBSUMsR0FBU2xCLEVBQVlrQixDQUFLLENBQUMsQ0FDakMsRUFFWjlILEVBQUE2QixjQUFDcUUsR0FDRWEsS0FBQUEsRUFBY2MsSUFBSSxDQUFDdEUsRUFBU3dFLElBQzNCL0gsRUFBQTZCLGNBQUEsTUFBQSxDQUFLdEMsSUFBS3dJLEdBQ1IvSCxFQUFBNkIsY0FBQ2dFLEdBQUssS0FDSjdGLEVBQUE2QixjQUFDbUUsR0FBSyxDQUNKMEIsUUFBU0EsSUFDUEosRUFBaUIvRyxHQUNmQSxFQUFJeUgsU0FBU0QsQ0FBSyxFQUNkeEgsRUFBSTBILE9BQU9DLEdBQUtBLElBQU1ILENBQUssRUFDM0IsQ0FBQyxHQUFHeEgsRUFBS3dILENBQUssQ0FDcEIsQ0FDRCxFQUVEL0gsRUFBQTZCLGNBQUMwRSxHQUFRLENBQUNDLFNBQVVBLENBQVMsQ0FBRSxFQUFDLEtBQUd1QixFQUFRZCxFQUFTLE9BQUssSUFDeERjLEVBQVFkLEVBQVdBLEVBQVcsRUFBRSxHQUM1QixFQUNOSSxFQUFjVyxTQUFTRCxDQUFLLEVBQzNCL0gsRUFBQTZCLGNBQUNxRSxHQUNFM0MsS0FBQUEsRUFBUXNFLElBQUlDLEdBQVNsQixFQUFZa0IsQ0FBSyxDQUFDLENBQzlCLEVBQ1YsSUFDQyxDQUNKLENBQ04sQ0FDUyxFQUVaLElBQ0osRUFDQS9FLElBQVMsV0FDWC9DLEVBQUE2QixjQUFBN0IsRUFBQXlILFNBQ0V6SCxLQUFBQSxFQUFBNkIsY0FBQ3NHLEdBQVEsQ0FDUGpCLFNBQVVBLEVBQ1ZMLE1BQ0U3RyxFQUFBNkIsY0FBQSxTQUFBLENBQVE2RixRQUFTSCxHQUNmdkgsRUFBQTZCLGNBQUNtRSxHQUFPYSxLQUFBQSxDQUFhLEVBQUMsYUFBSSxHQUNwQixFQUVWL0csTUFBT3FILEVBQ1BpQixnQkFBaUIsQ0FBQSxFQUNsQixDQUNELEVBRUZwSSxFQUFBNkIsY0FBQTdCLEVBQUF5SCxTQUFBLEtBQ0V6SCxFQUFBNkIsY0FBQ21FLEdBQUssS0FBRWEsRUFBTSxHQUFRLEVBQUUsSUFDeEI3RyxFQUFBNkIsY0FBQ29FLEdBQUssS0FDSHZHLEtBQUtnQixVQUFVWixFQUFPd0QsT0FBTytFLG9CQUFvQi9FLE9BQU94RCxDQUFLLENBQUMsQ0FBQyxDQUMzRCxDQUNQLENBRUMsQ0FFWCxFQUVlLFNBQVNxSSxHQUFRRyxFQU83QixDQUFBLEdBUDhCLENBQy9CeEksTUFBQUEsRUFDQXNJLGdCQUFBQSxFQUNBbEIsU0FBQUEsRUFBV1AsR0FDWE0sU0FBQUEsRUFBVyxJQUNYc0IsTUFBQUEsRUFBUSxFQUNSLEdBQUczRyxDQUNMLEVBQUMwRyxFQUNPLENBQUM5QixFQUFVZ0MsQ0FBVyxFQUFJeEksRUFBTUMsU0FBU21JLENBQWUsRUFFeERwQixFQUFTeUIsR0FBTyxDQUNwQkQsRUFBWWpJLEdBQVEsT0FBT2tJLEVBQVEsSUFBY0EsRUFBTSxDQUFDbEksQ0FBSSxHQUd4RG1JLEVBQU8sQ0FBQSxFQUVUM0YsRUFBTyxPQUFPakQsRUFDZGdILEVBQ0VDLEVBQWdCLENBQUEsRUFFaEI0QixFQUFlQyxHQUFPLENBQzFCLElBQU1DLEVBQVVILEVBQUtJLE9BQU9GLEVBQUkvQixLQUFLLEVBQy9Ca0MsRUFDSlgsSUFBb0IsR0FDaEIsQ0FBRSxDQUFDUSxFQUFJL0IsS0FBSyxFQUFHLElBQ2Z1QixJQUFrQlEsRUFBSS9CLEtBQUssRUFDakMsTUFBTyxDQUNMLEdBQUcrQixFQUNISSxRQUFTSixFQUNURixLQUFNRyxFQUNOTixNQUFPQSxFQUFRLEVBQ2ZILGdCQUFpQlcsSUFxQ3JCLEdBakNJRSxNQUFNQyxRQUFRcEosQ0FBSyxHQUNyQmlELEVBQU8sUUFDUCtELEVBQWFoSCxFQUFNK0gsSUFBSSxDQUFDSyxFQUFHaUIsSUFDekJSLEVBQWEsQ0FDWDlCLE1BQU9zQyxFQUNQckosTUFBT29JLENBQ1QsQ0FBQyxDQUNILEdBRUFwSSxJQUFVLE1BQ1YsT0FBT0EsR0FBVSxVQUNqQixPQUFPQSxFQUFNc0osT0FBT0MsUUFBUSxHQUFNLFlBRWxDdEcsRUFBTyxXQUNQK0QsRUFBYW1DLE1BQU1LLEtBQUt4SixFQUFPLENBQUN5SixFQUFLSixJQUNuQ1IsRUFBYSxDQUNYOUIsTUFBT3NDLEVBQ1BySixNQUFPeUosQ0FDVCxDQUFDLENBQ0gsR0FDUyxPQUFPekosR0FBVSxXQUMxQmlELEVBQU8sV0FDRSxPQUFPakQsR0FBVSxVQUFZQSxJQUFVLE9BQ2hEaUQsRUFBTyxTQUVQK0QsRUFBYXhELE9BQU9DLFFBQVF6RCxDQUFLLEVBQUUrSCxJQUFJMkIsR0FBQSxDQUFBLEdBQUMsQ0FBQzNDLEVBQU8vRyxDQUFLLEVBQUMwSixFQUFBLE9BQ3BEYixFQUFhLENBQ1g5QixNQUFBQSxFQUNBL0csTUFBQUEsQ0FDRixDQUFDLENBQUMsQ0FDSixHQUdFZ0gsRUFBWSxDQUNkLElBQUlxQyxFQUFJLEVBRVIsS0FBT0EsRUFBSXJDLEVBQVdVLFFBQ3BCVCxFQUFjMEMsS0FBSzNDLEVBQVc0QyxNQUFNUCxFQUFHQSxFQUFJbEMsQ0FBUSxDQUFDLEVBQ3BEa0MsRUFBSUEsRUFBSWxDLENBRVosQ0FFQSxPQUFPQyxFQUFTLENBQ2ROLFlBQWFrQixHQUNYOUgsRUFBQTZCLGNBQUNzRyxHQUFRcEcsR0FBQSxDQUFDeEMsSUFBS3VJLEVBQU1qQixNQUFPSyxTQUFVQSxDQUFTLEVBQUt0RixFQUFVa0csQ0FBSyxDQUFHLEVBRXhFL0UsS0FBQUEsRUFDQStELFdBQUFBLEVBQ0FDLGNBQUFBLEVBQ0F3QixNQUFBQSxFQUNBekksTUFBQUEsRUFDQTRJLEtBQUFBLEVBQ0FsQyxTQUFBQSxFQUNBUSxPQUFBQSxFQUNBQyxTQUFBQSxFQUNBLEdBQUdyRixDQUNMLENBQUMsQ0FDSCxDQ3BPZSxTQUFTK0gsR0FBSzlFLEVBQVksQ0FDdkMsT0FDRWhELGlCQUFBLE1BQUFFLEdBQUEsQ0FDRTZILE1BQU0sT0FDTm5GLE9BQU8sT0FDUG9GLFFBQVEsY0FDUkMsUUFBUSxLQUFLLEVBQ1RqRixDQUFLLEVBRVRoRCxpQkFBQSxJQUFBLENBQUdrSSxPQUFPLE9BQU9DLFlBQVksSUFBSUMsS0FBSyxPQUFPQyxTQUFTLFdBQ3BEckksaUJBQUEsSUFBQSxDQUFHc0ksR0FBRyxXQUFXekQsVUFBVSxxQ0FDekI3RSxpQkFBQSxJQUFBLENBQUdzSSxHQUFHLFVBQVV6RCxVQUFVLG1DQUN4QjdFLGlCQUFBLElBQUEsQ0FBR3NJLEdBQUcsUUFBUXpELFVBQVUsa0NBQ3RCN0UsaUJBQUEsT0FBQSxDQUNFcUcsRUFBRSxxNEVBQ0ZpQyxHQUFHLE9BQ0hGLEtBQUssVUFDTEMsU0FBUyxVQUNUeEQsVUFBVSxpRkFBaUYsQ0FDdEYsRUFDUDdFLGlCQUFBLE9BQUEsQ0FDRXFHLEVBQUUsa2dDQUNGaUMsR0FBRyxZQUNIRixLQUFLLFNBQVMsQ0FDVCxFQUNQcEksaUJBQUEsT0FBQSxDQUNFcUcsRUFBRSx3ekdBQ0ZpQyxHQUFHLGlCQUNIRixLQUFLLFNBQVMsQ0FDVCxDQUNOLENBQ0YsQ0FDRixDQUNGLENBQ0EsQ0FFVCxDQ21DTyxTQUFTRyxHQUFrQjFJLEVBTWEsQ0FBQSxHQU5aLENBQ2pDMkksY0FBQUEsRUFDQUMsTUFBQUEsRUFDQUMsV0FBQUEsRUFBYSxDQUFBLEVBQ2JDLGtCQUFBQSxFQUFvQixDQUFBLEVBQ3BCQyxpQkFBa0JDLEVBQVksUUFDZixFQUFDaEosRUFDVmlKLEVBQVUzSyxFQUFNNkQsT0FBdUIsSUFBSSxFQUMzQytHLEVBQVc1SyxFQUFNNkQsT0FBdUIsSUFBSSxFQUM1QyxDQUFDZ0gsRUFBUUMsQ0FBUyxFQUFJbEwsR0FDMUIseUJBQ0F5SyxDQUNGLEVBQ012RyxFQUFZSCxHQUFZLEVBRXhCLENBQUVQLE1BQU8ySCxFQUFhLENBQUEsRUFBSSxHQUFHQyxDQUFnQixFQUFJVCxFQUVqRCxDQUNKbkgsTUFBTzZILEVBQW9CLENBQUEsRUFDM0J2RCxRQUFTd0QsRUFDVCxHQUFHQyxDQUNMLEVBQUlYLEVBR0osT0FBSzFHLEVBQVMsRUFHWjlELEVBQUE2QixjQUFDNkksRUFBUyxDQUFDdkgsSUFBS3dILEVBQVNTLFVBQVUsb0JBQW9CLEVBQ3JEcEwsRUFBQTZCLGNBQUNKLEdBQWEsQ0FBQ0UsTUFBT0EsRUFBTSxFQUN4QmtKLEVBd0JBN0ssRUFBQTZCLGNBQUN3SixHQUF1QnRKLEdBQUEsQ0FDdEJvQixJQUFLeUgsQ0FBZ0IsRUFDakJJLEVBQWUsQ0FDbkJWLE1BQU9BLEVBQ1BPLE9BQVFBLEVBQ1JDLFVBQVdBLEVBQ1gxSCxNQUFPLENBQ0xrSSxVQUFXLE9BQ1gxQixNQUFPLE9BQ1AsR0FBR21CLENBQ0wsRUFDRCxDQUFBLEVBbENEL0ssRUFBQTZCLGNBQUEsU0FBQUUsR0FBQSxDQUNFZ0IsS0FBSyxRQUFRLEVBQ1RvSSxFQUFzQixDQUMxQixhQUFXLDRCQUNYekQsUUFBUzZELEdBQUssQ0FDWlQsRUFBVSxFQUFJLEVBQ2RJLEdBQWlCQSxFQUFjSyxDQUFDLEdBRWxDbkksTUFBTyxDQUNMeEMsV0FBWSxPQUNab0UsT0FBUSxFQUNSRSxRQUFTLEVBQ1RzRyxPQUFRLFFBQ1JySCxRQUFTLGNBQ1RGLFNBQVUsUUFDVnFCLE9BQVEsVUFDUnNFLE1BQU8sY0FDUCxHQUFHcUIsQ0FDTCxDQUFFLENBQUEsRUFFRmpMLEVBQUE2QixjQUFDOEgsR0FBSSxDQUFDLGNBQUEsR0FBYSxDQUNiLENBZUcsQ0FDTixFQTNDWSxJQTZDM0IsQ0FFYTBCLElBQUFBLEdBQTBCckwsRUFBTWtELFdBRzNDLFNBQWlDMkIsRUFBTzFCLEVBQXlCLENBQ2pFLEdBQU0sQ0FDSm1ILE1BQUFBLEVBQ0FPLE9BQUFBLEVBQVMsR0FDVEMsVUFBQUEsRUFDQSxHQUFHUCxDQUNMLEVBQUkxRixFQVNKLE9BQ0U3RSxFQUFBNkIsY0FBQ0osR0FBYSxDQUFDRSxNQUFPQSxFQUFNLEVBQzFCM0IsRUFBQTZCLGNBQUNrQyxHQUFLaEMsR0FBQSxDQUFDb0IsSUFBS0EsRUFBS2lJLFVBQVUseUJBQXlCLEVBQUtiLENBQVUsRUFDakV2SyxFQUFBNkIsY0FBQSxRQUFBLENBQ0U0Six3QkFBeUIsQ0FDdkJDLE9BQVE7O2lDQUVhL0osR0FBTWQsYUFBYSxJQUFJYyxHQUFNWixJQUFJOzs7Ozs7Ozs7NEJBU3RDWSxHQUFNZCxhQUFhOzs7OzRCQUluQmMsR0FBTVosSUFBSTs7a0NBRUpZLEdBQU1kLGFBQWE7O1dBRzNDLENBQUUsQ0FDSCxFQUNEYixFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0xtQixLQUFNLFlBQ05vSCxVQUFXLE1BQ1hMLFVBQVcsT0FDWDlHLFNBQVUsT0FDVm9ILFlBQWEsYUFBYWpLLEdBQU1YLE9BQU8sR0FDdkNtRCxRQUFTLE9BQ1RHLGNBQWUsUUFDakIsR0FFQXRFLEVBQUE2QixjQUFBLE1BQUEsQ0FDRXVCLE1BQU8sQ0FDTDhCLFFBQVMsT0FDVHRFLFdBQVllLEdBQU1kLGNBQ2xCc0QsUUFBUyxPQUNUMEgsZUFBZ0IsZ0JBQ2hCQyxXQUFZLFFBQ2QsQ0FBRSxFQUVGOUwsRUFBQTZCLGNBQUM4SCxHQUFJLENBQ0gsY0FBVyxHQUNYdkcsTUFBTyxDQUNMMkksWUFBYSxRQUVmckUsUUFBU0EsSUFBTW9ELEVBQVUsRUFBSyxDQUFFLENBQ2pDLEVBQ0Q5SyxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0wySSxZQUFhLE9BQ2I5SCxTQUFVLDRCQUNWYyxXQUFZLE1BQ2QsQ0FBRSxFQUNILGNBQ2EsSUFDWi9FLEVBQUE2QixjQUFBLE9BQUEsQ0FDRXVCLE1BQU8sQ0FDTDJCLFdBQVksR0FDZCxDQUFFLEVBQ0gsVUFFSyxDQUNILEVBQ0wvRSxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0xlLFFBQVMsT0FDVEcsY0FBZSxRQUNqQixDQUFFLEVBRUR1RyxFQUNDN0ssRUFBQTZCLGNBQUMrQyxHQUFNLENBQ0w3QixLQUFLLFNBQ0wsYUFBVyw2QkFDWDJFLFFBQVNBLElBQU0sQ0FDYm9ELEVBQVUsRUFBSyxDQUNqQixHQUNELE9BRU8sRUFDTixJQUNELENBQ0YsRUFDTDlLLEVBQUE2QixjQUFBLE1BQUEsQ0FDRXVCLE1BQU8sQ0FDTGUsUUFBUyxPQUNUNkgsU0FBVSxPQUNWQyxVQUFXLE9BQ1gxSCxLQUFNLEdBQ1IsR0FFQXZFLEVBQUE2QixjQUFBLE1BQUEsQ0FDRXVCLE1BQU8sQ0FDTG1CLEtBQU0sV0FDTlcsUUFBUyxNQUNYLENBQUUsRUFFRmxGLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxXQUNOL0csTUFBT3dLLEVBQ1BsQyxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMcUIsT0FBUSxPQUNWLENBQUUsQ0FDSCxFQUNEekUsRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLFFBQ04vRyxNQUFPd0ssRUFBTTRCLFNBQVEsRUFDckI5RCxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMcUIsT0FBUSxPQUNWLENBQUUsQ0FDSCxFQUNEekUsRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLFVBQ04vRyxNQUFPd0ssRUFBTTZCLGNBQWEsRUFDMUIvRCxnQkFBaUIsRUFBTSxDQUN4QixDQUNFLEVBQ0xwSSxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0xtQixLQUFNLFdBQ05XLFFBQVMsTUFDWCxDQUFFLEVBRUZsRixFQUFBNkIsY0FBQ3NHLEdBQVEsQ0FDUHRCLE1BQU0sYUFDTi9HLE1BQU93SyxFQUFNOEIsZ0JBQWUsRUFDNUJoRSxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGlCQUNOL0csTUFBT3dLLEVBQU0rQixvQkFBbUIsRUFDaENqRSxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGVBQ04vRyxNQUFPd0ssRUFBTWdDLGtCQUFpQixFQUM5QmxFLGdCQUFpQixFQUFNLENBQ3hCLEVBQ0RwSSxFQUFBNkIsY0FBQ3NHLEdBQVEsQ0FDUHRCLE1BQU0sZ0JBQ04vRyxNQUFPd0ssRUFBTWlDLG1CQUFrQixFQUMvQm5FLGdCQUFpQixFQUFNLENBQ3hCLEVBQ0RwSSxFQUFBNkIsY0FBQ3NHLEdBQVEsQ0FDUHRCLE1BQU0saUJBQ04vRyxNQUFPd0ssRUFBTWtDLG9CQUFtQixFQUNoQ3BFLGdCQUFpQixFQUFNLENBQ3hCLENBQ0UsQ0FhRixDQUNGLENBQ0EsQ0FDTSxDQUVuQixDQUFDLEVScFVELE9BQVMsbUJBQUFxRSxHQUFpQixVQUFBQyxPQUFjLGVBQ3hDLE9BS0UsYUFBQUMsR0FDQSxXQUFBQyxHQUNBLFlBQUFDLE9BQ0ssUVN0QkUsY0FBQUMsT0FBQSxvQkFEVCxTQUFTQyxHQUFTLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFNLEVBQXlDLENBQy9FLE9BQU9ILEdBQUMsT0FBSSxVQUFXSSxFQUFHLHFEQUFzREYsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sQ0FDekcsQ0NKQSxPQUFTLGNBQUFFLE9BQStCLHdCQUV4QyxPQUFTLG1CQUFBQyxHQUFpQixVQUFBQyxPQUFjLGVBeUIxQixPQTZDVSxZQUFBQyxHQTdDVixPQUFBQyxFQTZDVSxRQUFBQyxPQTdDVixvQkFUUCxTQUFTQyxHQUFzQkMsRUFBMkIsQ0FDL0QsR0FBTSxDQUFFLE9BQUFDLEVBQVEsVUFBQUMsQ0FBVSxFQUFJRixFQUU5QixPQUNFRixHQUFDLE9BQUksVUFBV0ssRUFBRyw2Q0FBOENELENBQVMsRUFDeEUsVUFBQUosR0FBQyxPQUFJLFVBQVUsdURBQ2IsVUFBQUQsRUFBQyxPQUFJLFVBQVUsK0ZBQ1osU0FBQUksRUFBTyxjQUFnQixLQUN0QkosRUFBQyxRQUFLLFVBQVUscUJBQ2QsU0FBQUEsRUFBQyxRQUFLLFVBQVUsdUVBQ2IsU0FBQU8sR0FBV0gsRUFBTyxPQUFPLFVBQVUsT0FBUUEsRUFBTyxXQUFXLENBQUMsRUFDakUsRUFDRixFQUVKLEVBRUFILEdBQUMsUUFBSyxVQUFVLDJDQUNkLFVBQUFELEVBQUMsUUFBSyxVQUFVLGtDQUNkLFNBQUFBLEVBQUNRLEdBQUEsQ0FBZ0IsS0FBSyxPQUNuQixTQUFBSixFQUFPLE9BQU8sWUFBWSxJQUFNLE9BQy9CSixFQUFDUyxHQUFPLElBQVAsQ0FFQyxRQUFTLENBQUUsUUFBUyxFQUFHLEVBQUcsRUFBRyxFQUM3QixRQUFTLENBQUUsUUFBUyxFQUFHLEVBQUcsQ0FBRSxFQUM1QixLQUFNLENBQUUsUUFBUyxFQUFHLEVBQUcsRUFBRyxFQUMxQixXQUFZLENBQUUsU0FBVSxFQUFJLEVBRTVCLFNBQUFULEVBQUNVLEdBQUEsQ0FBUyxLQUFNLEdBQUksVUFBVSwyQkFBMkIsR0FOckQsTUFPTixFQUNFTixFQUFPLE9BQU8sWUFBWSxJQUFNLE1BQ2xDSixFQUFDUyxHQUFPLElBQVAsQ0FFQyxRQUFTLENBQUUsUUFBUyxFQUFHLEVBQUcsQ0FBRSxFQUM1QixRQUFTLENBQUUsUUFBUyxFQUFHLEVBQUcsQ0FBRSxFQUM1QixLQUFNLENBQUUsUUFBUyxFQUFHLEVBQUcsQ0FBRSxFQUN6QixXQUFZLENBQUUsU0FBVSxFQUFJLEVBRTVCLFNBQUFULEVBQUNXLEdBQUEsQ0FBTyxLQUFNLEdBQUksVUFBVSwyQkFBMkIsR0FObkQsS0FPTixFQUNFLEtBQ04sRUFDRixFQUNDUCxFQUFPLE9BQU8sVUFBVSxHQUFLQSxFQUFPLE9BQU8sS0FBTyxVQUNqREgsR0FBQ1csR0FBQSxDQUNDLFVBQUFaLEVBQUNhLEdBQUEsQ0FBb0IsUUFBTyxHQUMxQixTQUFBYixFQUFDYyxFQUFBLENBQU8sUUFBUSxRQUFRLEtBQUssS0FBSyxVQUFVLHdCQUMxQyxTQUFBZCxFQUFDZSxHQUFBLENBQVksS0FBTSxHQUFJLEVBQ3pCLEVBQ0YsRUFDQWQsR0FBQ2UsR0FBQSxDQUNFLFVBQUFaLEVBQU8sT0FBTyxXQUFXLEdBQ3hCSixFQUFDaUIsR0FBQSxDQUFpQixRQUFTLElBQU1iLEVBQU8sT0FBTyxjQUFjLEVBQzNELFNBQUFKLEVBQUMsUUFBSyxVQUFVLG1DQUNiLFNBQUFJLEVBQU8sT0FBTyxvQkFBb0IsSUFBTSxPQUN2Q0gsR0FBQUYsR0FBQSxDQUNFLFVBQUFDLEVBQUNrQixHQUFBLENBQW9CLEtBQU0sR0FBSSxFQUFFLG1CQUVuQyxFQUNFZCxFQUFPLE9BQU8sb0JBQW9CLElBQU0sTUFDMUNILEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxFQUFDbUIsR0FBQSxDQUFrQixLQUFNLEdBQUksRUFBRSxrQkFFakMsRUFFQWxCLEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxFQUFDb0IsR0FBQSxDQUFFLEtBQU0sR0FBSSxFQUFFLGtCQUVqQixFQUVKLEVBQ0YsRUFFRnBCLEVBQUNpQixHQUFBLENBQWlCLFFBQVMsSUFBTWIsRUFBTyxPQUFPLElBQUlBLEVBQU8sT0FBTyxZQUFZLEVBQUksR0FBUSxNQUFNLEVBQzVGLFNBQUFBLEVBQU8sT0FBTyxZQUFZLEVBQ3pCSCxHQUFDLFFBQUssVUFBVSxtQ0FDZCxVQUFBRCxFQUFDcUIsR0FBQSxDQUFPLEtBQU0sR0FBSSxFQUFFLGdCQUV0QixFQUVBcEIsR0FBQyxRQUFLLFVBQVUsbUNBQ2QsVUFBQUQsRUFBQ3NCLEdBQUEsQ0FBSSxLQUFNLEdBQUksRUFBRSxjQUVuQixFQUVKLEdBQ0YsR0FDRixHQUVKLEdBQ0YsRUFDQ2xCLEVBQU8sT0FBTyxhQUFhLEdBQzFCSixFQUFDLFVBQ0MsS0FBSyxTQUNMLFNBQVUsRUFDVixZQUFjdUIsR0FBTSxDQUNsQkEsRUFBRSxnQkFBZ0IsRUFDbEJuQixFQUFPLGlCQUFpQixFQUFFbUIsQ0FBQyxDQUM3QixFQUNBLGFBQWVBLEdBQU0sQ0FDbkJBLEVBQUUsZ0JBQWdCLEVBQ2xCbkIsRUFBTyxpQkFBaUIsRUFBRW1CLENBQUMsQ0FDN0IsRUFDQSxRQUFVQSxHQUFNQSxFQUFFLGdCQUFnQixFQUNsQyxVQUFZQSxHQUFNLEVBQ1pBLEVBQUUsTUFBUSxTQUFXQSxFQUFFLE1BQVEsT0FDakNBLEVBQUUsZUFBZSxFQUNqQkEsRUFBRSxnQkFBZ0IsRUFDbEJuQixFQUFPLGlCQUFpQixFQUFFbUIsQ0FBQyxFQUUvQixFQUNBLFVBQVdqQixFQUNULHFJQUNGLEVBQ0EsYUFBVyxnQkFDYixHQUVKLENBRUosQ0M1SE0sY0FBQWtCLE9BQUEsb0JBTkMsU0FBU0MsR0FBbUIsQ0FBRSxVQUFBQyxDQUFVLEVBQTRCLENBQ3pFLE9BQ0VGLEdBQUMsT0FDQyxtQkFBZ0IsR0FDaEIsVUFBV0csRUFBRyxxRUFBc0VELENBQVMsRUFFN0YsU0FBQUYsR0FBQyxPQUFJLFVBQVUsa0ZBQWtGLEVBQ25HLENBRUosQ0NPVSxPQUNFLE9BQUFJLEdBREYsUUFBQUMsT0FBQSxvQkFWSCxTQUFTQyxHQUFtQkMsRUFBZ0MsQ0FDakUsR0FBTSxDQUFFLE1BQUFDLEVBQU8sUUFBQUMsRUFBVSxPQUFRLEVBQUlGLEVBRS9CLENBQUUsVUFBQUcsQ0FBVSxFQUFJRixFQUFNLFNBQVMsRUFBRSxXQUNqQ0csRUFBWUgsRUFBTSxhQUFhLEVBRXJDLE9BQ0VKLEdBQUMsT0FBSSxVQUFVLHVHQUNiLFNBQUFBLEdBQUMsT0FBSSxVQUFVLHFKQUNaLFNBQUFLLElBQVksUUFDWEosR0FBQyxPQUFJLFVBQVUsdUNBQ2IsVUFBQUQsR0FBQ1EsRUFBQSxDQUNDLFFBQVEsVUFDUixLQUFLLEtBQ0wsVUFBVSxTQUNWLFFBQVMsSUFBTUosRUFBTSxhQUFhLEVBQ2xDLFNBQVUsQ0FBQ0EsRUFBTSxtQkFBbUIsRUFDckMsb0JBRUQsRUFDQUosR0FBQ1EsRUFBQSxDQUNDLFFBQVEsVUFDUixLQUFLLEtBQ0wsVUFBVSxTQUNWLFFBQVMsSUFBTUosRUFBTSxTQUFTLEVBQzlCLFNBQVUsQ0FBQ0EsRUFBTSxlQUFlLEVBQ2pDLGdCQUVELEdBQ0YsRUFFQUosR0FBQyxPQUFJLFVBQVUsdUNBQ2IsU0FBQUMsR0FBQyxPQUFJLFVBQVUsdUNBQ2IsVUFBQUQsR0FBQ1EsRUFBQSxDQUFPLFFBQVEsVUFBVSxRQUFTLElBQU1KLEVBQU0sYUFBYSxDQUFDLEVBQUcsU0FBVSxDQUFDQSxFQUFNLG1CQUFtQixFQUNsRyxTQUFBSixHQUFDUyxHQUFBLENBQWEsVUFBVSxnQkFBZ0IsRUFDMUMsRUFDQVQsR0FBQ1EsRUFBQSxDQUFPLFFBQVEsVUFBVSxRQUFTLElBQU1KLEVBQU0sYUFBYSxFQUFHLFNBQVUsQ0FBQ0EsRUFBTSxtQkFBbUIsRUFDakcsU0FBQUosR0FBQ1UsR0FBQSxDQUFZLFVBQVUsZ0JBQWdCLEVBQ3pDLEVBQ0FULEdBQUMsT0FBSSxVQUFVLDZEQUE2RCxpQkFFMUVELEdBQUNXLEdBQUEsQ0FDQyxLQUFLLFNBQ0wsSUFBSyxFQUNMLElBQUtKLEVBQ0wsTUFBT0QsRUFBWSxFQUNuQixVQUFVLFVBQ1YsU0FBV00sR0FBTSxDQUNmLElBQU1OLEVBQVlNLEVBQUUsT0FBTyxNQUFRLE9BQU9BLEVBQUUsT0FBTyxLQUFLLEVBQUksRUFBSSxFQUNoRVIsRUFBTSxhQUFhRSxDQUFTLENBQzlCLEVBQ0YsRUFDQUwsR0FBQyxRQUFLLFVBQVUsdUJBQXVCLGdCQUFJTSxHQUFVLEdBQ3ZELEVBQ0FQLEdBQUNRLEVBQUEsQ0FBTyxRQUFRLFVBQVUsUUFBUyxJQUFNSixFQUFNLFNBQVMsRUFBRyxTQUFVLENBQUNBLEVBQU0sZUFBZSxFQUN6RixTQUFBSixHQUFDYSxHQUFBLENBQWEsVUFBVSxnQkFBZ0IsRUFDMUMsRUFDQWIsR0FBQ1EsRUFBQSxDQUNDLFFBQVEsVUFDUixRQUFTLElBQU1KLEVBQU0sYUFBYUcsRUFBWSxDQUFDLEVBQy9DLFNBQVUsQ0FBQ0gsRUFBTSxlQUFlLEVBRWhDLFNBQUFKLEdBQUNjLEdBQUEsQ0FBYyxVQUFVLGdCQUFnQixFQUMzQyxHQUNGLEVBQ0YsRUFFSixFQUNGLENBRUosQ0M3RU8sU0FBU0MsR0FBdUJDLEVBQXlDQyxFQUF5QixDQUN2RyxJQUFNQyxFQUFXRixFQUFPLFlBQVksRUFDOUJHLEVBQWVELElBQWEsT0FDNUJFLEVBQWdCRixJQUFhLFFBQzdCRyxFQUFpQkwsRUFBTyxLQUFPLGNBRXJDLE1BQU8sQ0FDTCxVQUFXTSxFQUNULDBEQUNBLDREQUNDSCxHQUFnQkMsSUFBa0IsYUFDbENELEdBQWdCQyxJQUFrQkgsSUFBUyxXQUFhSSxFQUFpQixVQUFZLFlBQ3JGRixHQUFnQkMsSUFBa0JILElBQVMsU0FBV0ksRUFBaUIsVUFBWSxVQUNwRkYsR0FBZ0IsNkNBQ2hCQyxHQUFpQiw2Q0FDbkIsRUFDQSxNQUFPLENBQ0wsU0FBVSxHQUFHSixFQUFPLFFBQVEsQ0FBQyxLQUM3QixNQUFPLEdBQUdBLEVBQU8sUUFBUSxDQUFDLEtBQzFCLEtBQU1HLEVBQWUsR0FBR0gsRUFBTyxTQUFTLE1BQU0sQ0FBQyxLQUFPLE9BQ3RELE1BQU9JLEVBQWdCLEdBQUdKLEVBQU8sU0FBUyxPQUFPLENBQUMsS0FBTyxPQUN6RCxTQUFVRSxFQUFZLFNBQXFCLE1BQzdDLENBQ0YsQ0FDRixDYjJDTSxPQTJHRixZQUFBSyxHQTNHRSxPQUFBQyxFQXlOZ0IsUUFBQUMsT0F6TmhCLG9CQTNCTixJQUFNQyxHQUF1QkMsR0FBb0MsQ0FDL0QsR0FBTSxDQUFFLFNBQUFDLEVBQVUsVUFBQUMsRUFBVyxPQUFBQyxFQUFRLE1BQU9DLENBQVksRUFBSUosRUFDdERLLEVBQWtCLG9CQUFxQkYsRUFBTyxPQUFPLFVBRXJELENBQUUsV0FBQUcsRUFBWSxVQUFBQyxFQUFXLFVBQUFDLEVBQVcsV0FBQUMsRUFBWSxXQUFBQyxFQUFZLFdBQUFDLENBQVcsRUFBSUMsR0FBWSxDQUMzRixHQUFJVCxFQUFPLEVBQ2IsQ0FBQyxFQUVLVSxFQUFZLENBQ2hCLEdBQUdULEVBQ0gsT0FBUSxPQUNSLFlBQWEsT0FDYixVQUFXVSxHQUFJLFVBQVUsU0FBU04sQ0FBUyxFQUMzQyxXQUFBQyxDQUNGLEVBRU1NLEVBQWNDLEVBQUdkLEVBQVcsa0VBQWtFLEVBQzlGZSxFQUFZRCxFQUFHRCxFQUFhSixHQUFjLDJDQUEyQyxFQUUzRixPQUNFZCxFQUFDcUIsR0FBQSxDQUNDLElBQUtSLEVBQ0osR0FBR0osRUFDSCxHQUFHQyxFQUNKLE1BQU9GLEVBQWtCRCxFQUFjUyxFQUN2QyxVQUFXUixFQUFrQlUsRUFBY0UsRUFFM0MsU0FBQXBCLEVBQUMsT0FBSSxVQUFVLFlBQWEsU0FBQUksRUFBUyxFQUN2QyxDQUVKLEVBaUJPLFNBQVNrQixHQUFTbkIsRUFBc0IsQ0FDN0MsR0FBTSxDQUNKLFdBQUFvQixFQUNBLGNBQUFDLEVBQ0EsVUFBQUMsRUFDQSxhQUFBQyxFQUNBLG1CQUFBQyxFQUNBLHFCQUFBQyxFQUNBLGdCQUFBQyxFQUNBLFVBQUFDLEVBQ0EsZ0JBQUFDLEVBQ0EsS0FBQUMsRUFDQSxrQkFBQUMsRUFDQSxhQUFBQyxDQUNGLEVBQUkvQixFQUVFLENBQUNnQyxFQUFhQyxDQUFjLEVBQUlDLEdBQW1CLENBQUMsQ0FBQyxFQUNyRCxDQUFDQyxFQUFlQyxDQUFnQixFQUFJRixHQUE2QixDQUFFLEtBQU0sQ0FBQyxhQUFhLEVBQUcsTUFBTyxDQUFDLENBQUUsQ0FBQyxFQUNyRyxDQUFDRyxFQUFjQyxDQUFlLEVBQUlKLEdBQTRCLENBQUMsQ0FBQyxFQUNoRUssRUFBVUMsR0FBUSxJQUFNQyxHQUFlVixDQUFZLEVBQUcsQ0FBQ0EsQ0FBWSxDQUFDLEVBQ3BFVyxFQUFnQnBCLEdBQWFDLEVBR25Db0IsR0FBVSxJQUFNLENBQ2RWLEVBQWViLEVBQVcsSUFBSSxDQUFDLENBQUUsWUFBQXdCLENBQVksSUFBTUEsQ0FBVyxDQUFDLEVBQy9EUixFQUFpQixDQUFFLEtBQU0sQ0FBQyxhQUFhLEVBQUcsTUFBTyxDQUFDLENBQUUsQ0FBQyxFQUNyREUsRUFBZ0IsQ0FBQyxDQUFDLENBQ3BCLEVBQUcsQ0FBQ2xCLENBQVUsQ0FBQyxFQUdmLFNBQVN5QixHQUFjLENBQUUsT0FBQUMsRUFBUSxLQUFBQyxDQUFLLEVBQWlCLENBQ2pEQSxHQUFRRCxFQUFPLEtBQU9DLEVBQUssSUFDN0JkLEVBQWdCZSxHQUFVLENBQ3hCLElBQU1DLEVBQWNELEVBQU0sUUFBUUYsRUFBTyxFQUFZLEVBQy9DSSxHQUFZRixFQUFNLFFBQVFELEVBQUssRUFBWSxFQUNqRCxPQUFPSSxHQUFVSCxFQUFPQyxFQUFhQyxFQUFTLENBQ2hELENBQUMsQ0FFTCxDQUdBLElBQU1FLEVBQWNDLEdBQVVDLEdBQWEsQ0FFekMscUJBQXNCLENBQ3BCLFNBQVUsRUFDWixDQUNGLENBQUMsRUFDS0MsRUFBVUMsR0FBV0osQ0FBVyxFQUVoQ0ssRUFBUUMsR0FBYyxDQUMxQixpQkFBa0IsV0FDbEIsUUFBU3RDLEVBQ1QsS0FBTVMsRUFDTixjQUFlLENBQUUsS0FBTSxJQUFLLFFBQVMsR0FBSSxRQUFTLEdBQUksRUFDdEQsb0JBQXFCLEdBQ3JCLHFCQUFzQixHQUN0QixtQkFBb0IsR0FDcEIsY0FBZSxHQUFRSCxHQUFtQkssR0FDMUMsZ0JBQWlCNEIsR0FBZ0IsRUFDakMsU0FBVSxDQUFDLENBQUUsV0FBQUMsQ0FBVyxJQUFNQSxFQUM5QixpQkFBa0IsR0FDbEIsY0FBZSxHQUNmLG9CQUFxQjNCLEVBQ3JCLHNCQUF1QkcsRUFDdkIscUJBQXNCRSxFQUN0QixtQkFBQWQsRUFDQSxxQkFBQUMsRUFDQSxnQkFBa0JvQyxHQUNoQm5DLElBQW1Cb0MsSUFDYixPQUFPRCxHQUFtQixhQUM1QkEsRUFBaUJBLEVBQWVwQixHQUFlcUIsQ0FBRyxDQUFDLEdBRzlDQyxHQUFpQkYsQ0FBYyxFQUN2QyxFQUNILFVBQUFsQyxFQUNBLE1BQU8sQ0FDTCxZQUFBSyxFQUNBLGNBQUFHLEVBQ0EsYUFBQUUsRUFDQSxXQUFZVCxFQUNaLGFBQWNFLEVBQ2QsUUFBQVMsQ0FDRixDQUNGLENBQUMsRUFFRCxPQUNFekMsR0FBQUYsR0FBQSxDQUVHLGtCQUFRLElBQUksV0FBYSxhQUFlLEtBQU9DLEVBQUNtRSxHQUFBLENBQW1CLE1BQU9QLEVBQU8sRUFDbEYzRCxHQUFDLE9BQUksY0FBWSxVQUFVLFVBQVUsd0VBQ25DLFVBQUFELEVBQUMsT0FBSyxTQUFBNkMsR0FBaUI3QyxFQUFDb0UsR0FBQSxDQUFtQixVQUFVLGlEQUFpRCxFQUFHLEVBQ3pHcEUsRUFBQ3FFLEdBQUEsQ0FBVyxRQUFTWCxFQUFTLFVBQVdWLEdBQ3ZDLFNBQUEvQyxHQUFDcUUsR0FBQSxDQUFNLFVBQVUsZ0ZBQ2YsVUFBQXRFLEVBQUN1RSxHQUFBLENBQ0UsU0FBQVgsRUFBTSxnQkFBZ0IsRUFBRSxJQUFLWSxHQUM1QnhFLEVBQUN5RSxHQUFBLENBQ0MsU0FBQXpFLEVBQUMwRSxHQUFBLENBQ0MsTUFBT0YsRUFBWSxRQUNoQixPQUFRbEUsR0FBVyxFQUFFLG9CQUFxQkEsRUFBTyxPQUFPLFVBQVUsRUFDbEUsSUFBS0EsR0FBV0EsRUFBTyxFQUFFLEVBQzVCLFNBQVVxRSxHQUVULFNBQUFILEVBQVksUUFBUSxJQUFLbEUsR0FBVyxDQUVuQyxHQUFJQSxFQUFPLE9BQU8sS0FBTyxjQUFlLENBRXRDLElBQU1zRSxFQUFXdEUsRUFBTyxPQUFPLFVBQVUsT0FDekMsR0FBSSxPQUFPc0UsR0FBYSxXQUFZLENBQ2xDLElBQU1DLEVBQWtCRCxFQUFTdEUsRUFBTyxXQUFXLENBQUMsRUFFcEQsR0FBSSxPQUFPdUUsR0FBb0IsV0FBWSxDQUN6QyxJQUFNQyxHQUFnQkMsR0FBdUJ6RSxFQUFPLE9BQVEsUUFBUSxFQUNwRSxPQUNFTixFQUFDcUIsR0FBQSxDQUVDLFVBQVdGLEVBQ1QyRCxHQUFjLFVBQ2Qsa0VBQ0YsRUFDQSxNQUFPQSxHQUFjLE1BRXBCLFNBQUFELEVBQWdCLENBQUMsQ0FBQyxHQVBkdkUsRUFBTyxFQVFkLENBRUosQ0FFQSxPQUNFTixFQUFDcUIsR0FBQSxDQUVDLFVBQVdGLEVBQ1Q0RCxHQUF1QnpFLEVBQU8sT0FBUSxRQUFRLEVBQUUsVUFDaEQsa0VBQ0YsRUFDQSxNQUFPeUUsR0FBdUJ6RSxFQUFPLE9BQVEsUUFBUSxFQUFFLE1BRXRELFNBQUF1RSxHQVBJdkUsRUFBTyxFQVFkLENBRUosQ0FDQSxPQUFPLElBQ1QsQ0FHQSxPQUNFTixFQUFDRSxHQUFBLENBRUMsT0FBUUksRUFDUixNQUFPc0QsRUFDTixHQUFHbUIsR0FBdUJ6RSxFQUFPLE9BQVEsUUFBUSxFQUVsRCxTQUFBTixFQUFDZ0YsR0FBQSxDQUFlLE9BQVExRSxFQUFRLEdBTDNCQSxFQUFPLEVBTWQsQ0FFSixDQUFDLEVBQ0gsR0EzRGFrRSxFQUFZLEVBNEQzQixDQUNELEVBQ0gsRUFDQXZFLEdBQUNnRixHQUFBLENBQ0UsVUFBQXpELElBQWdCb0MsQ0FBSyxFQUNyQkEsRUFBTSxZQUFZLEVBQUUsTUFBTSxPQUN6QkEsRUFBTSxZQUFZLEVBQUUsS0FBSyxJQUFLc0IsR0FDNUJsRixFQUFDeUUsR0FBQSxDQUVDLFVBQVd0RCxFQUNULDZGQUNGLEVBRUMsU0FBQStELEVBQUksZ0JBQWdCLEVBQUUsSUFBSSxDQUFDQyxFQUFNQyxJQUFNLENBQ3RDLEdBQUksT0FBT0QsRUFBSyxPQUFPLFVBQVUsTUFBUyxXQUFZLENBRXBELElBQU1FLEVBQU9GLEVBQUssT0FBTyxVQUFVLEtBQUtBLEVBQUssV0FBVyxDQUFDLEVBQ3pELE9BQ0VuRixFQUFDcUYsRUFBQSxDQUVFLEdBQUdOLEdBQXVCSSxFQUFLLE9BQVEsTUFBTSxFQUM5QyxVQUFVLG1GQUZMQyxDQUdQLENBRUosS0FDRSxRQUNFcEYsRUFBQ3NGLEdBQUEsQ0FBeUIsR0FBR1AsR0FBdUJJLEVBQUssT0FBUSxNQUFNLEVBQ3BFLFNBQUFBLEVBQUssU0FBUyxHQUREQSxFQUFLLEVBRXJCLENBR04sQ0FBQyxHQXZCSUQsRUFBSSxFQXdCWCxDQUNELEVBRURsRixFQUFDeUUsR0FBQSxDQUNDLFNBQUF6RSxFQUFDc0YsR0FBQSxDQUNDLFFBQVMvRCxFQUFXLE9BQ3BCLFVBQVUseURBRVQsU0FBQUUsR0FDQ3hCLEdBQUMsT0FBSSxVQUFVLCtCQUNiLFVBQUFELEVBQUN1RixHQUFBLENBQVMsVUFBVSxtQkFBbUIsRUFDdkN2RixFQUFDdUYsR0FBQSxDQUFTLFVBQVUsa0JBQWtCLEVBQ3RDdkYsRUFBQ3VGLEdBQUEsQ0FBUyxVQUFVLGtCQUFrQixHQUN4QyxFQUVKLEVBQ0YsR0FFSixHQUNGLEVBQ0YsRUFDQyxDQUFDekQsR0FBYUEsRUFBWSxFQUFJLEtBQU85QixFQUFDd0YsR0FBQSxDQUFtQixNQUFPNUIsRUFBTyxRQUFRLFVBQVUsRUFFMUY1RCxFQUFDeUYsR0FBQSxDQUFnQixLQUFLLE9BQ25CLFNBQUE3QixFQUFNLFlBQVksRUFBRSxNQUFNLFNBQVcsR0FBSyxDQUFDbkMsR0FBYSxDQUFDQyxHQUN4RDFCLEVBQUMwRixHQUFPLElBQVAsQ0FDQyxVQUFVLDJGQUNWLFFBQVMsQ0FBRSxRQUFTLENBQUUsRUFDdEIsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixLQUFNLENBQUUsUUFBUyxDQUFFLEVBRW5CLFNBQUF6RixHQUFDLE9BQUksVUFBVSw4Q0FDYixVQUFBRCxFQUFDLE9BQUksVUFBVSxzQ0FBc0MsNEJBQWdCLEVBQ3JFQSxFQUFDLE9BQUksVUFBVSxzQ0FBc0MsaUVBRXJELEdBQ0YsRUFDRixFQUVKLEdBQ0YsR0FDRixDQUVKLENBRUEsU0FBUzRDLEdBQWUrQyxFQUFpRCxDQUN2RSxPQUFPQSxHQUFNLElBQUtDLElBQVUsQ0FBRSxHQUFJQSxFQUFLLE9BQVEsS0FBTUEsRUFBSyxZQUFjLE1BQU8sRUFBRSxHQUFLLENBQUMsQ0FDekYsQ0FFQSxTQUFTMUIsR0FBaUJ5QixFQUFxQyxDQUM3RCxPQUFPQSxFQUFLLElBQUtDLElBQVUsQ0FDekIsT0FBUUEsRUFBSyxHQUNiLFVBQVdBLEVBQUssS0FBTyxPQUFTLEtBQ2xDLEVBQUUsQ0FDSixDYzlVQSxVQUFZQyxPQUFzQiwwQkFDbEMsVUFBWUMsT0FBVyxRQWVuQixjQUFBQyxPQUFBLG9CQVhKLElBQU1DLEdBQW1DLFlBRW5DQyxHQUEyQixRQUUzQkMsR0FBa0MsV0FFbENDLEdBQXVCLGNBRzNCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLFdBQUFDLEVBQWEsRUFBRyxHQUFHQyxDQUFNLEVBQUdDLElBQzFDUixHQUFrQixVQUFqQixDQUNDLFNBQUFBLEdBQWtCLFdBQWpCLENBQ0MsSUFBS1EsRUFDTCxXQUFZRixFQUNaLFVBQVdHLEVBQ1QsK2RBQ0FKLENBQ0YsRUFDQyxHQUFHRSxFQUNOLEVBQ0YsQ0FDRCxFQUNESCxHQUFlLFlBQStCLFdBQVEsWUNqQjVDLE9BRUksT0FBQU0sR0FGSixRQUFBQyxPQUFBLG9CQUxILFNBQVNDLEdBQW1CLENBQUUsT0FBQUMsQ0FBTyxFQUF1QixDQUNqRSxPQUNFRixHQUFDLE9BQUksVUFBVSwrQ0FDWixVQUFBRSxFQUFPLGdCQUNOSCxHQUFDSSxHQUFBLENBQWdCLGNBQWUsSUFDOUIsU0FBQUgsR0FBQ0ksR0FBQSxDQUNDLFVBQUFMLEdBQUNNLEdBQUEsQ0FBZSxRQUFPLEdBQ3JCLFNBQUFOLEdBQUNPLEdBQUEsQ0FBUyxLQUFNLEdBQUksVUFBVSxrQkFBa0IsRUFDbEQsRUFDQVAsR0FBQ1EsR0FBQSxDQUFlLEtBQUssU0FBUyxVQUFVLFVBQ3RDLFNBQUFSLEdBQUMsUUFBSyx1QkFBVyxFQUNuQixHQUNGLEVBQ0YsRUFFRkEsR0FBQyxRQUFLLFVBQVUsNkJBQThCLFNBQUFHLEVBQU8sS0FBSyxFQUMxREgsR0FBQyxRQUFLLFVBQVUsMkZBQ2IsU0FBQUcsRUFBTyxTQUFTLEtBQ25CLEdBQ0YsQ0FFSixDQ3pCQSxPQUFTLGdCQUFBTSxPQUFvQixTQ0Q3QixPQUFTLFVBQUFDLE9BQWMsZUFDdkIsT0FBT0MsSUFBUyxZQUFBQyxPQUFnQixRQ0RoQyxVQUFZQyxPQUFvQix3QkFDaEMsT0FBUyxPQUFBQyxPQUE4QiwyQkFDdkMsVUFBWUMsT0FBVyxRQVlyQixjQUFBQyxPQUFBLG9CQVJGLElBQU1DLEdBQWdCQyxHQUNwQiwyR0FDRixFQUVNQyxHQUFjLGNBR2xCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDMUJOLEdBQWdCLFFBQWYsQ0FBb0IsSUFBS00sRUFBSyxVQUFXQyxFQUFHTixHQUFjLEVBQUdHLENBQVMsRUFBSSxHQUFHQyxFQUFPLENBQ3RGLEVBQ0RGLEdBQU0sWUFBNkIsUUFBSyxZQ2hCeEMsVUFBWUssT0FBc0IseUJBQ2xDLFVBQVlDLE9BQVcsUUFnQm5CLGNBQUFDLE9BQUEsb0JBWkosSUFBTUMsR0FBZSxjQUduQixDQUFDLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQzFCSixHQUFrQixRQUFqQixDQUNDLFVBQVdLLEVBQ1QsNmJBQ0FILENBQ0YsRUFDQyxHQUFHQyxFQUNKLElBQUtDLEVBRUwsU0FBQUosR0FBa0IsU0FBakIsQ0FDQyxVQUFXSyxFQUNULDZNQUNGLEVBQ0YsRUFDRixDQUNELEVBQ0RKLEdBQU8sWUFBK0IsUUFBSyxZQ2NuQyxtQkFBQUssR0FJUSxPQUFBQyxHQUZKLFFBQUFDLE9BRkosb0JBekJELElBQU1DLEdBQWUsQ0FBQyxDQUMzQixPQUFBQyxFQUNBLFNBQUFDLEVBQ0EsUUFBQUMsRUFDQSxhQUFBQyxFQUNBLE9BQUFDLEVBQVMsR0FDVCxTQUFBQyxDQUNGLElBZ0JJUixHQUFDLE9BQUksVUFBVSxpRkFDWixVQUFDUSxHQUNBUCxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxPQUFJLFVBQVUsaURBQ2IsVUFBQUEsR0FBQyxVQUFPLFVBQVUsaUVBQWlFLFFBZjFFLElBQU0sQ0FDbkJFLEdBQVFBLEVBQU8sRUFDZkUsR0FBU0EsRUFBUSxDQUN2QixFQWFZLFVBQUFMLEdBQUMsT0FBSSxVQUFVLG9IQUNiLFNBQUFBLEdBQUNTLEdBQUEsQ0FBZSxLQUFNLEdBQUksWUFBYSxFQUFHLEVBQzVDLEVBQU8sSUFBSSxnQkFFYixFQUNBUixHQUFDLFVBQU8sVUFBVSxpRUFBaUUsUUFoQnhFLElBQU0sQ0FDckJHLEdBQVVBLEVBQVMsRUFDbkJDLEdBQVNBLEVBQVEsQ0FDdkIsRUFjWSxVQUFBTCxHQUFDLE9BQUksVUFBVSxtS0FBbUssZUFFbEwsRUFBTyxJQUFJLGtCQUViLEdBQ0YsRUFDQ00sR0FDQ04sR0FBQyxPQUFJLFVBQVUsc0NBQ2IsU0FBQUMsR0FBQyxTQUFNLFVBQVUsK0NBQStDLFFBQVEsZUFDdEUsVUFBQUQsR0FBQ1UsR0FBQSxDQUFPLEdBQUcsZUFBZSxRQUFTSCxFQUFRLGdCQW5DL0JJLEdBQXFCLENBQ3pDTCxHQUFjQSxFQUFhSyxDQUFPLENBQ3hDLEVBaUM0RixFQUM5RVgsR0FBQyxRQUFLLHVCQUFXLEdBQ25CLEVBQ0YsR0FFSixFQUVKLEVIUkEsbUJBQUFZLEdBRUksT0FBQUMsR0FERixRQUFBQyxPQURGLG9CQXZDRyxTQUFTQyxHQUFhQyxFQUEwQixDQUNyRCxHQUFNLENBQUUsTUFBQUMsRUFBTyxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSixFQUN4Q0ssRUFBYUYsRUFBTyxXQUFhLEdBQ2pDLENBQUNHLEVBQWNDLENBQWUsRUFBSUMsR0FBa0JQLElBQVUsS0FBTyxHQUFTQSxDQUFpQixFQUMvRixDQUFDUSxFQUFXQyxDQUFZLEVBQUlGLEdBQWtCUCxJQUFVLElBQUksRUFDNURVLEVBQWVWLElBQVUsS0FBTyxHQUFTQSxFQUV6Q1csRUFBZ0JDLEdBQXFCLENBQ3pDTixFQUFnQk0sQ0FBTyxDQUN6QixFQUVNQyxFQUFvQkQsR0FBcUIsQ0FDN0NILEVBQWFHLENBQU8sQ0FDdEIsRUFHTUUsRUFBb0JDLEdBQU0sWUFBWSxJQUFNLENBQ2hELElBQU1DLEVBQWdCUixFQUFZLEtBQU9ILEVBQ3pDLE9BQUlXLElBQWtCaEIsR0FDcEJDLEVBQVNlLENBQWEsRUFDZixJQUVGLEVBQ1QsRUFBRyxDQUFDWCxFQUFjTCxFQUFPQyxFQUFVTyxDQUFTLENBQUMsRUFFdkNTLEVBQWUsSUFBTSxDQUV6QlgsRUFBZ0JJLENBQVksRUFDNUJELEVBQWFULElBQVUsSUFBSSxDQUM3QixFQUdNLENBQUUsV0FBQWtCLEVBQVksYUFBQUMsQ0FBYSxFQUFJQyxHQUFrQixDQUNyRCxPQUFRTixFQUNSLFNBQVVHLEVBQ1YsU0FBQWQsQ0FDRixDQUFDLEVBRUQsT0FDRU4sR0FBQUYsR0FBQSxDQUNFLFVBQUFFLEdBQUMsT0FBSSxVQUFVLGdHQUNiLFVBQUFELEdBQUN5QixHQUFBLENBQU0sUUFBUSxnQkFBZ0IsVUFBVSxhQUFhLG1CQUV0RCxFQUNBekIsR0FBQzBCLEdBQU8sSUFBUCxDQUNDLFVBQVUsMEJBQ1YsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixRQUFTLENBQUUsUUFBUyxDQUFFLEVBQ3RCLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQTFCLEdBQUMyQixHQUFBLENBQ0MsR0FBRyxnQkFDSCxRQUFTbEIsRUFDVCxnQkFBaUJNLEVBQ2pCLFNBQVVILEdBQWFMLEVBQ3pCLEVBQ0YsRUFDQVAsR0FBQzBCLEdBQU8sSUFBUCxDQUNDLGFBQVUsR0FDVixVQUFVLGtGQUNWLFFBQVMsQ0FBRSxFQUFHLElBQUssUUFBUyxDQUFFLEVBQzlCLFFBQVMsQ0FBRSxFQUFHLEVBQUcsUUFBUyxDQUFFLEVBQzVCLFdBQVksQ0FBRSxTQUFVLElBQU0sTUFBTyxDQUFFLEVBRXRDLFNBQUFkLEVBQVksT0FBUyxPQUFPSCxDQUFZLEVBQzNDLEdBQ0YsRUFDQVQsR0FBQzRCLEdBQUEsQ0FDQyxPQUFRTixFQUNSLFNBQVVDLEVBQ1YsYUFBY2YsRUFBYVMsRUFBbUIsT0FDOUMsT0FBUUwsRUFDUixTQUFVTCxFQUNaLEdBQ0YsQ0FFSixDSTVGQSxPQUFPc0IsT0FBVyxRQUNsQixPQUFPQyxPQUFxQiwrQkFDNUIsT0FBeUIsZUFBQUMsR0FBYSxhQUFBQyxHQUFXLFdBQUFDLEdBQVMsWUFBQUMsT0FBZ0IsUUNEMUUsT0FBUyxhQUFBQyxPQUFpQixtQkFTdEIsY0FBQUMsT0FBQSxvQkFGSixTQUFTQyxHQUFTLENBQUUsVUFBQUMsRUFBVyxXQUFBQyxFQUFZLGdCQUFBQyxFQUFrQixHQUFNLEdBQUdDLENBQU0sRUFBa0IsQ0FDNUYsT0FDRUwsR0FBQ00sR0FBQSxDQUNDLEtBQUssU0FDTCxRQUFTLEdBQ1QsY0FBYyxXQUNkLGdCQUFpQkYsRUFDakIsVUFBV0csRUFBRyxTQUFVTCxDQUFTLEVBQ2pDLFdBQVksQ0FDVixPQUFRLGtGQUNSLE1BQU8sR0FDUCxRQUFTLGFBQ1QsY0FBZSx1Q0FDZixJQUFLLHVDQUNMLFdBQVlLLEVBQ1ZDLEdBQWUsQ0FBRSxRQUFTLFNBQVUsQ0FBQyxFQUNyQywyRUFDRixFQUNBLG9CQUFxQix3QkFDckIsZ0JBQWlCLHlCQUNqQixNQUFPLDRDQUNQLFNBQVUsVUFDVixVQUFXLDJGQUNYLElBQUssNEJBQ0wsS0FBTUQsRUFDSiw4TEFDQUYsRUFBTSxPQUFTLFFBQ1gsbUxBQ0Esd0NBQ04sRUFDQSxJQUFLRSxFQUNIQyxHQUFlLENBQUUsUUFBUyxPQUFRLENBQUMsRUFDbkMsa0VBQ0YsRUFDQSxnQkFBaUIscUJBQ2pCLGNBQWUsbUJBQ2YsYUFDRSx1SkFDRixVQUFXLHlDQUNYLFlBQ0UsK0dBQ0YsYUFBYyx5Q0FDZCxpQkFBa0IscUVBQ2xCLFdBQVksZUFDWixHQUFHTCxDQUNMLEVBQ0MsR0FBR0UsRUFDTixDQUVKLENBQ0FKLEdBQVMsWUFBYyxXQzFEdkIsT0FBUyxZQUFBUSxPQUFnQixRQU1sQixTQUFTQyxHQUFTQyxFQUFzQixDQUM3QyxHQUFNLENBQUUsYUFBQUMsQ0FBYSxFQUFJRCxFQUVuQixDQUFDRSxFQUFPQyxDQUFRLEVBQUlMLEdBQWlCRyxHQUFnQixFQUFFLEVBTTdELE1BQU8sQ0FBRSxlQUplRyxHQUErQyxDQUNyRUQsRUFBU0MsRUFBTSxPQUFPLEtBQUssQ0FDN0IsRUFFeUIsTUFBQUYsRUFBTyxTQUFBQyxDQUFTLENBQzNDLENGd09JLG1CQUFBRSxHQUlNLE9BQUFDLEdBRkYsUUFBQUMsT0FGSixvQkExT0pDLEdBQU0sT0FBT0MsRUFBZSxFQVNyQixTQUFTQyxHQUFVQyxFQUF1QixDQUMvQyxHQUFNLENBQUUsU0FBQUMsRUFBVSxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsT0FBQUMsQ0FBTyxFQUFJSixFQUV4Q0ssRUFBZSxPQUFPSCxDQUFLLEVBRzNCSSxFQUFvQkMsR0FBUSxJQUFNLENBQ3RDLElBQU1DLEVBQVNYLEdBQU1RLENBQVksRUFDakMsT0FBT0csRUFBTyxRQUFRLEVBQUlBLEVBQU8sT0FBTyxFQUFJLElBQUksSUFDbEQsRUFBRyxDQUFDSCxDQUFZLENBQUMsRUFHWCxDQUFDSSxFQUFjQyxDQUFlLEVBQUlDLEdBQTJCTCxDQUFpQixFQUM5RSxDQUFDTSxFQUFjQyxDQUFlLEVBQUlGLEdBQWVMLENBQWlCLEVBRWxFLENBQUUsZUFBZ0JRLEVBQW9CLE1BQU9DLEVBQVksU0FBQUMsQ0FBUyxFQUFJQyxHQUFTLENBQUUsYUFBQVosQ0FBYSxDQUFDLEVBRy9GYSxFQUFrQkMsR0FBK0MsQ0FDckVMLEVBQW1CSyxDQUFLLEVBRXhCLEdBQUksQ0FDRixJQUFNQyxFQUFXRCxFQUFNLE9BQU8sTUFDeEJYLEVBQVNYLEdBQU11QixDQUFRLEVBQzdCLEdBQUlaLEVBQU8sUUFBUSxFQUFHLENBQ3BCLElBQU1hLEVBQVViLEVBQU8sT0FBTyxFQUM5QkUsRUFBZ0JXLENBQU8sRUFDdkJSLEVBQWdCUSxDQUFPLENBQ3pCLENBQ0YsTUFBaUIsQ0FFakIsQ0FDRixFQUdNQyxFQUF3QkMsR0FBMkIsQ0FDdkQsR0FBSSxDQUFDQSxFQUFNLE9BRVhiLEVBQWdCYSxDQUFJLEVBQ3BCVixFQUFnQlUsQ0FBSSxFQUVwQixJQUFNQyxFQUFhcEIsR0FBUSxVQUFVLE1BQVNBLEdBQVEsU0FDaERxQixFQUFXQyxFQUFpQkYsQ0FBVSxFQUcxQ1IsRUFERVMsRUFDTzVCLEdBQU0wQixDQUFJLEVBQUUsT0FBT0UsQ0FBUSxFQUUzQjVCLEdBQU0wQixDQUFJLEVBQUUsWUFBWSxDQUZJLENBSXpDLEVBRU1HLEVBQW9CQyxHQUFpQixDQUN6QyxPQUFRQSxFQUFNLENBQ1osSUFBSyxPQUNILE1BQU8sYUFDVCxJQUFLLE9BQ0gsTUFBTyxpQkFDVCxJQUFLLFlBQ0gsTUFBTyw2QkFDVCxJQUFLLGNBQ0gsTUFBTyw4QkFDVCxJQUFLLFNBQ0gsTUFBTyxtQkFDVCxRQUNFLE1BQ0osQ0FDRixFQUdNQyxFQUFnQnJCLEdBQVEsSUFBTSxDQUNsQyxHQUFJLENBQ0YsSUFBTWdCLEVBQU8xQixHQUFNa0IsQ0FBVSxFQUM3QixPQUFLUSxFQUFLLFFBQVEsRUFDRlIsRUFBVyxTQUFTLEdBQUcsRUFJOUJRLEVBQUssT0FBTyxRQUFRLEVBRXBCQSxFQUFLLE9BQU8sSUFBSSxFQVBHUixDQVM5QixNQUFpQixDQUNmLE9BQU9BLENBQ1QsQ0FDRixFQUFHLENBQUNBLENBQVUsQ0FBQyxFQUVmLFNBQVNjLEVBQWVWLEVBQWtCLENBQ3hDQSxFQUFNLGVBQWUsRUFDakJKLElBQWVWLEdBQ2pCSixFQUFTYyxDQUFVLENBRXZCLENBRUEsSUFBTWUsRUFBb0JDLEdBQVksSUFDaENoQixJQUFlVixHQUNqQkosRUFBU2MsQ0FBVSxFQUNaLElBRUYsR0FDTixDQUFDQSxFQUFZVixFQUFjSixDQUFRLENBQUMsRUFFakMrQixFQUFlLElBQU0sQ0FBQyxFQUV0QixDQUFFLFdBQUFDLEdBQVksYUFBQUMsQ0FBYSxFQUFJQyxHQUFrQixDQUNyRCxPQUFRTCxFQUNSLFNBQVVFLEVBQ1YsU0FBQTdCLENBQ0YsQ0FBQyxFQUVLaUMsRUFBZ0JDLEdBQXdCLENBQzVDQSxFQUFFLGVBQWUsRUFDakJBLEVBQUUsZ0JBQWdCLEVBR2xCLElBQU1DLEVBQU0sSUFBSSxLQUdoQjVCLEVBQWdCNEIsQ0FBRyxFQUNuQnpCLEVBQWdCeUIsQ0FBRyxFQUduQixJQUFNZCxFQUFhcEIsR0FBUSxVQUFVLE1BQVNBLEdBQVEsU0FDaERxQixFQUFXQyxFQUFpQkYsQ0FBVSxFQUM1Q1IsRUFBU1MsRUFBVzVCLEdBQU15QyxDQUFHLEVBQUUsT0FBT2IsQ0FBUSxFQUFJNUIsR0FBTXlDLENBQUcsRUFBRSxZQUFZLENBQUMsQ0FDNUUsRUFHTUMsRUFBU2hDLEdBQ2IsSUFBTSxDQUNKLENBQUUsTUFBTyxJQUFLLE1BQU8sU0FBVSxFQUMvQixDQUFFLE1BQU8sSUFBSyxNQUFPLFVBQVcsRUFDaEMsQ0FBRSxNQUFPLElBQUssTUFBTyxPQUFRLEVBQzdCLENBQUUsTUFBTyxJQUFLLE1BQU8sT0FBUSxFQUM3QixDQUFFLE1BQU8sSUFBSyxNQUFPLEtBQU0sRUFDM0IsQ0FBRSxNQUFPLElBQUssTUFBTyxNQUFPLEVBQzVCLENBQUUsTUFBTyxJQUFLLE1BQU8sTUFBTyxFQUM1QixDQUFFLE1BQU8sSUFBSyxNQUFPLFFBQVMsRUFDOUIsQ0FBRSxNQUFPLElBQUssTUFBTyxXQUFZLEVBQ2pDLENBQUUsTUFBTyxJQUFLLE1BQU8sU0FBVSxFQUMvQixDQUFFLE1BQU8sS0FBTSxNQUFPLFVBQVcsRUFDakMsQ0FBRSxNQUFPLEtBQU0sTUFBTyxVQUFXLENBQ25DLEVBQ0EsQ0FBQyxDQUNILEVBR01pQyxFQUFvQmpDLEdBQVEsSUFDekJLLEVBQWEsU0FBUyxFQUFFLFNBQVMsRUFDdkMsQ0FBQ0EsQ0FBWSxDQUFDLEVBRVgsQ0FBQzZCLEVBQVdDLENBQVksRUFBSS9CLEdBQVMsSUFDbENDLEVBQWEsWUFBWSxFQUFFLFNBQVMsQ0FDNUMsRUFHSytCLEVBQXFCekMsR0FBa0IsQ0FDM0MsSUFBTTBDLEVBQVcsSUFBSSxLQUFLaEMsQ0FBWSxFQUt0QyxHQUpBZ0MsRUFBUyxTQUFTLFNBQVMxQyxDQUFLLENBQUMsRUFDakNXLEVBQWdCK0IsQ0FBUSxFQUdwQm5DLEVBQWMsQ0FDaEIsSUFBTW9DLEVBQWtCLElBQUksS0FBS3BDLENBQVksRUFDN0NvQyxFQUFnQixTQUFTLFNBQVMzQyxDQUFLLENBQUMsRUFDeENRLEVBQWdCbUMsQ0FBZSxFQUcvQixJQUFNckIsRUFBYXBCLEdBQVEsVUFBVSxNQUFTQSxHQUFRLFNBQ2hEcUIsR0FBV0MsRUFBaUJGLENBQVUsRUFDNUNSLEVBQVNTLEdBQVc1QixHQUFNZ0QsQ0FBZSxFQUFFLE9BQU9wQixFQUFRLEVBQUk1QixHQUFNZ0QsQ0FBZSxFQUFFLFlBQVksQ0FBQyxDQUNwRyxDQUNGLEVBR01DLEdBQW9CVCxHQUEyQyxDQUNuRSxJQUFNVSxFQUFVVixFQUFFLE9BQU8sTUFJekIsR0FIQUssRUFBYUssQ0FBTyxFQUdoQixVQUFVLEtBQUtBLENBQU8sRUFBRyxDQUMzQixJQUFNQyxFQUFPLFNBQVNELENBQU8sRUFHdkJILEVBQVcsSUFBSSxLQUFLaEMsQ0FBWSxFQUN0Q2dDLEVBQVMsWUFBWUksQ0FBSSxFQUN6Qm5DLEVBQWdCK0IsQ0FBUSxFQUl4QixJQUFNQyxHQUFrQnBDLEVBQWUsSUFBSSxLQUFLQSxDQUFZLEVBQUksSUFBSSxLQUFLbUMsQ0FBUSxFQUVqRkMsR0FBZ0IsWUFBWUcsQ0FBSSxFQUNoQ3RDLEVBQWdCbUMsRUFBZSxFQUcvQixJQUFNckIsR0FBYXBCLEdBQVEsVUFBVSxNQUFTQSxHQUFRLFNBQ2hEcUIsR0FBV0MsRUFBaUJGLEVBQVUsRUFDdENKLEVBQVdLLEdBQVc1QixHQUFNZ0QsRUFBZSxFQUFFLE9BQU9wQixFQUFRLEVBQUk1QixHQUFNZ0QsRUFBZSxFQUFFLFlBQVksRUFDekc3QixFQUFTSSxDQUFRLEVBR2pCLFFBQVEsSUFBSSxnQkFBaUIsQ0FDM0IsS0FBQTRCLEVBQ0EsZ0JBQUFILEdBQ0EsU0FBQXpCLEVBQ0EsU0FBQUssRUFDRixDQUFDLENBQ0gsQ0FDRixFQUdBLE9BQUF3QixHQUFVLElBQU0sQ0FDVnhDLEdBQ0ZpQyxFQUFhakMsRUFBYSxZQUFZLEVBQUUsU0FBUyxDQUFDLENBRXRELEVBQUcsQ0FBQ0EsQ0FBWSxDQUFDLEVBR2pCd0MsR0FBVSxJQUFNLENBQ1ZyQyxHQUNGOEIsRUFBYTlCLEVBQWEsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUV0RCxFQUFHLENBQUNBLENBQVksQ0FBQyxFQUdmaEIsR0FBQUYsR0FBQSxDQUNFLFVBQUFDLEdBQUMsUUFBSyxTQUFVa0MsRUFDZCxTQUFBakMsR0FBQyxPQUFJLFVBQVUsNkRBRWIsVUFBQUQsR0FBQ3VELEdBQUEsQ0FDQyxVQUFVLDZJQUNWLFNBQVVoQyxFQUNWLEtBQUssT0FDTCxNQUFPSCxFQUNULEVBQ0FwQixHQUFDLFVBQ0MsUUFBU3lDLEVBQ1QsVUFBVSwyTEFDWCxlQUVELEVBQ0F6QyxHQUFDLFNBQU0sS0FBSyxTQUFTLFVBQVUsYUFBYSxHQUM5QyxFQUNGLEVBQ0FDLEdBQUMsT0FBSSxVQUFVLHlFQUNiLFVBQUFBLEdBQUMsT0FBSSxVQUFVLDhEQUViLFVBQUFBLEdBQUN1RCxHQUFBLENBQU8sTUFBT1gsRUFBbUIsY0FBZUcsRUFDL0MsVUFBQWhELEdBQUN5RCxHQUFBLENBQWMsVUFBVSxTQUN2QixTQUFBekQsR0FBQzBELEdBQUEsQ0FBWSxZQUFZLFFBQVEsRUFDbkMsRUFDQTFELEdBQUMyRCxHQUFBLENBQ0UsU0FBQWYsRUFBTyxJQUFLZ0IsR0FDWDVELEdBQUM2RCxFQUFBLENBQTZCLE1BQU9ELEVBQU0sTUFDeEMsU0FBQUEsRUFBTSxPQURRQSxFQUFNLEtBRXZCLENBQ0QsRUFDSCxHQUNGLEVBR0E1RCxHQUFDdUQsR0FBQSxDQUNDLFVBQVUsZ0NBQ1YsS0FBSyxPQUNMLE1BQU9ULEVBQ1AsU0FBVUssR0FDVixZQUFZLE9BQ2QsR0FDRixFQUNBbkQsR0FBQzhELEdBQUEsQ0FDQyxTQUFVaEQsRUFDVixNQUFPRyxFQUNQLFNBQVVVLEVBQ1YsY0FBZVQsRUFDZixTQUFVVixFQUNaLEVBQ0FSLEdBQUMsUUFBSyxVQUFVLDZDQUE4QyxTQUFBaUMsRUFBYyxHQUM5RSxFQUNBakMsR0FBQytELEdBQUEsQ0FBYSxPQUFRekIsR0FBWSxTQUFVQyxFQUFjLFNBQVUvQixFQUFVLEdBQ2hGLENBRUosQ0FHQSxTQUFTc0QsR0FBaUIsQ0FDeEIsU0FBQUUsRUFDQSxNQUFBSixFQUNBLFNBQUFLLEVBQ0EsY0FBQUMsRUFDQSxTQUFBQyxDQUNGLEVBTUcsQ0FDRCxPQUNFbkUsR0FBQ29FLEdBQUEsQ0FDQyxLQUFLLFNBQ0wsU0FBVUosRUFDVixTQUFVQyxFQUNWLFNBQVVFLEVBQ1YsTUFBT1AsRUFDUCxjQUFlTSxFQUNmLFVBQVUsWUFDVixjQUFjLFdBQ2hCLENBRUosQ0c1VUEsT0FBUyxlQUFBRyxHQUFhLFlBQUFDLE9BQWdCLFFBMkRsQyxtQkFBQUMsR0FDRSxPQUFBQyxHQURGLFFBQUFDLE9BQUEsb0JBM0NHLFNBQVNDLEdBQVVDLEVBQXVCLENBQy9DLEdBQU0sQ0FBRSxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsTUFBQUMsRUFBTyxRQUFBQyxFQUFVLENBQUMsRUFBRyxTQUFBQyxDQUFTLEVBQUlMLEVBQ3RETSxFQUFhSixFQUFPLFdBQWEsR0FDakNLLEVBQWUsT0FBT0osQ0FBSyxFQUMzQixDQUFDSyxFQUFjQyxDQUFlLEVBQUlDLEdBQVNILENBQVksRUFDdkQsQ0FBQ0ksRUFBV0MsQ0FBWSxFQUFJRixHQUFrQlAsSUFBVSxJQUFJLEVBRTVEVSxFQUFzQkMsR0FBbUIsQ0FDN0NMLEVBQWdCSyxDQUFNLENBQ3hCLEVBRU1DLEVBQW9CQyxHQUFxQixDQUM3Q0osRUFBYUksQ0FBTyxDQUN0QixFQUVNQyxFQUFvQkMsR0FBWSxJQUNoQ1AsRUFDRVIsSUFBVSxNQUNaRixFQUFTLElBQUksRUFDTixJQUVGLEdBR0xPLElBQWlCRCxHQUNuQk4sRUFBU08sQ0FBWSxFQUNkLElBRUYsR0FDTixDQUFDQSxFQUFjRCxFQUFjTixFQUFVVSxFQUFXUixDQUFLLENBQUMsRUFFckRnQixFQUFlLElBQU0sQ0FDekJWLEVBQWdCRixDQUFZLEVBQzVCSyxFQUFhVCxJQUFVLElBQUksQ0FDN0IsRUFFTSxDQUFFLFdBQUFpQixFQUFZLGFBQUFDLENBQWEsRUFBSUMsR0FBa0IsQ0FDckQsT0FBUUwsRUFDUixTQUFVRSxFQUNWLFNBQUFkLENBQ0YsQ0FBQyxFQUVELE9BQ0VQLEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxHQUFDLE9BQUksVUFBVSwrSUFDWixTQUFBVyxFQUNILEVBQ0FYLEdBQUMsT0FBSSxVQUFVLDZMQUNaLFNBQUFPLEVBQVEsSUFBS1UsR0FDWmpCLEdBQUMsVUFFQyxRQUFTLElBQU1nQixFQUFtQkMsQ0FBTSxFQUN4QyxVQUFXUyxHQUFjLENBQUUsUUFBU1QsSUFBV04sRUFBZSxVQUFZLFNBQVUsQ0FBQyxFQUNyRixTQUFVRyxHQUFhTixFQUV0QixTQUFBUyxHQUxJQSxDQU1QLENBQ0QsRUFDSCxFQUNBakIsR0FBQzJCLEdBQUEsQ0FDQyxPQUFRSixFQUNSLFNBQVVDLEVBQ1YsYUFBY2YsRUFBYVMsRUFBbUIsT0FDOUMsT0FBUUosRUFDUixTQUFVTixFQUNaLEdBQ0YsQ0FFSixDQ3BGQSxPQUFPb0IsSUFBUyxZQUFBQyxPQUFnQixRQThENUIsbUJBQUFDLEdBRUksT0FBQUMsR0FGSixRQUFBQyxPQUFBLG9CQWpERyxTQUFTQyxHQUFVQyxFQUF1QixDQUMvQyxHQUFNLENBQUUsTUFBQUMsRUFBTyxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSixFQUN4Q0ssRUFBYUYsRUFBTyxXQUFhLEdBQ2pDRyxFQUFlTCxJQUFVLEtBQU8sR0FBSyxLQUFLLFVBQVVBLEVBQU8sS0FBTSxDQUFDLEVBQ2xFLENBQUNNLEVBQWNDLENBQWUsRUFBSUMsR0FBaUJILENBQVksRUFDL0QsQ0FBQ0ksRUFBV0MsQ0FBWSxFQUFJRixHQUFrQlIsSUFBVSxJQUFJLEVBRTVEVyxFQUFnQkMsR0FBOEMsQ0FDbEVMLEVBQWdCSyxFQUFFLE9BQU8sS0FBSyxDQUNoQyxFQUVNQyxFQUFvQkMsR0FBcUIsQ0FDN0NKLEVBQWFJLENBQU8sQ0FDdEIsRUFHTUMsRUFBb0JDLEdBQU0sWUFBWSxJQUFNLENBQ2hELEdBQUlQLEVBQ0YsT0FBSVQsSUFBVSxNQUNaQyxFQUFTLElBQUksRUFDTixJQUVGLEdBR1QsSUFBTWdCLEVBQVlYLElBQWlCLEdBQUssS0FBUSxLQUFLLE1BQU1BLENBQVksRUFHdkUsT0FBSVcsSUFBY2pCLEdBQ2hCQyxFQUFTZ0IsQ0FBUyxFQUNYLElBRUYsRUFDVCxFQUFHLENBQUNYLEVBQWNOLEVBQU9DLEVBQVVRLENBQVMsQ0FBQyxFQUV2Q1MsRUFBZSxJQUFNLENBRXpCWCxFQUFnQkYsQ0FBWSxFQUM1QkssRUFBYVYsSUFBVSxJQUFJLENBQzdCLEVBR00sQ0FBRSxXQUFBbUIsRUFBWSxhQUFBQyxDQUFhLEVBQUlDLEdBQWtCLENBQ3JELE9BQVFOLEVBQ1IsU0FBVUcsRUFDVixTQUFBZixDQUNGLENBQUMsRUFFRCxPQUNFTixHQUFBRixHQUFBLENBQ0UsVUFBQUMsR0FBQyxPQUFJLFVBQVUsdURBQ2IsU0FBQUEsR0FBQyxZQUNDLEtBQU0sRUFDTixNQUFPVSxFQUNQLFNBQVVLLEVBQ1YsU0FBVUYsR0FBYU4sRUFDdkIsVUFBVSxvTUFDVixLQUFLLFFBQ1AsRUFDRixFQUNBUCxHQUFDMEIsR0FBQSxDQUNDLE9BQVFILEVBQ1IsU0FBVUMsRUFDVixhQUFjaEIsRUFBYVMsRUFBbUIsT0FDOUMsT0FBUUosRUFDUixTQUFVTixFQUNaLEdBQ0YsQ0FFSixDQ2xGQSxPQUFPb0IsSUFBUyxZQUFBQyxPQUFnQixRQWdFNUIsbUJBQUFDLEdBRUksT0FBQUMsR0FERixRQUFBQyxPQURGLG9CQWxERyxTQUFTQyxHQUFhQyxFQUEwQixDQUNyRCxHQUFNLENBQUUsTUFBQUMsRUFBTyxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSixFQUN4Q0ssRUFBYUYsRUFBTyxXQUFhLEdBQ2pDLENBQUNHLEVBQWNDLENBQWUsRUFBSUMsR0FBaUJQLElBQVUsS0FBTyxHQUFLLE9BQU9BLENBQUssQ0FBQyxFQUN0RixDQUFDUSxFQUFXQyxDQUFZLEVBQUlGLEdBQWtCUCxJQUFVLElBQUksRUFDNURVLEVBQWVWLElBQVUsS0FBTyxHQUFLLE9BQU9BLENBQUssRUFFakRXLEVBQWdCQyxHQUEyQyxDQUMvRE4sRUFBZ0JNLEVBQUUsT0FBTyxLQUFLLENBQ2hDLEVBRU1DLEVBQW9CQyxHQUFxQixDQUM3Q0wsRUFBYUssQ0FBTyxDQUN0QixFQUdNQyxFQUFvQkMsR0FBTSxZQUFZLElBQU0sQ0FDaEQsR0FBSVIsRUFDRixPQUFJUixJQUFVLE1BQ1pDLEVBQVMsSUFBSSxFQUNOLElBRUYsR0FJVCxJQUFNZ0IsRUFBZVosSUFBaUIsR0FBSyxLQUFPLE9BQU9BLENBQVksRUFHckUsT0FBSUEsSUFBaUJMLEdBQ25CQyxFQUFTZ0IsQ0FBWSxFQUNkLElBRUYsRUFDVCxFQUFHLENBQUNaLEVBQWNMLEVBQU9DLEVBQVVPLENBQVMsQ0FBQyxFQUV2Q1UsRUFBZSxJQUFNLENBRXpCWixFQUFnQkksQ0FBWSxFQUM1QkQsRUFBYVQsSUFBVSxJQUFJLENBQzdCLEVBR00sQ0FBRSxXQUFBbUIsRUFBWSxhQUFBQyxDQUFhLEVBQUlDLEdBQWtCLENBQ3JELE9BQVFOLEVBQ1IsU0FBVUcsRUFDVixTQUFBZixDQUNGLENBQUMsRUFFRCxPQUNFTixHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxPQUFJLFVBQVUsd0ZBQ2IsVUFBQUQsR0FBQzBCLEdBQUEsQ0FBTSxRQUFRLGdCQUFnQixVQUFVLGFBQWEsbUJBRXRELEVBQ0ExQixHQUFDLFNBQ0MsS0FBSyxPQUNMLFVBQVUsVUFDVixRQUFRLE9BQ1IsTUFBT1MsRUFDUCxTQUFVTSxFQUNWLFNBQVVILEdBQWFMLEVBQ3ZCLFVBQVUsNE1BQ1YsS0FBSyxNQUNMLEtBQUssUUFDUCxHQUNGLEVBQ0FQLEdBQUMyQixHQUFBLENBQ0MsT0FBUUosRUFDUixTQUFVQyxFQUNWLGFBQWNoQixFQUFhUyxFQUFtQixPQUM5QyxPQUFRTCxFQUNSLFNBQVVMLEVBQ1osR0FDRixDQUVKLENDekZBLE9BQU9xQixPQUFXLFFBNENkLG1CQUFBQyxHQUVJLE9BQUFDLEdBREYsUUFBQUMsT0FERixvQkEvQkcsU0FBU0MsR0FBU0MsRUFBc0IsQ0FDN0MsR0FBTSxDQUFFLFNBQUFDLEVBQVUsTUFBQUMsRUFBTyxTQUFBQyxDQUFTLEVBQUlILEVBRWhDSSxFQUFlLE9BQU9GLENBQUssRUFFM0IsQ0FBRSxlQUFBRyxFQUFnQixNQUFPQyxDQUFXLEVBQUlDLEdBQVMsQ0FBRSxhQUFBSCxDQUFhLENBQUMsRUFFdkUsU0FBU0ksRUFBZUMsRUFBa0IsQ0FDeENBLEVBQU0sZUFBZSxFQUNqQkgsSUFBZUYsR0FDakJILEVBQVNLLENBQVUsQ0FFdkIsQ0FFQSxJQUFNSSxFQUFvQkMsR0FBTSxZQUFZLElBQ3RDTCxJQUFlRixHQUNqQkgsRUFBU0ssQ0FBVSxFQUNaLElBRUYsR0FDTixDQUFDQSxFQUFZRixFQUFjSCxDQUFRLENBQUMsRUFFakNXLEVBQWUsSUFBTSxDQUFDLEVBRXRCLENBQUUsV0FBQUMsRUFBWSxhQUFBQyxDQUFhLEVBQUlDLEdBQWtCLENBQ3JELE9BQVFMLEVBQ1IsU0FBVUUsRUFDVixTQUFBVCxDQUNGLENBQUMsRUFFRCxPQUNFTCxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxRQUFLLFNBQVVVLEVBQ2QsVUFBQVgsR0FBQ21CLEdBQUEsQ0FDQyxVQUFVLDZJQUNWLFNBQVVYLEVBQ1YsS0FBSyxPQUNMLE1BQU9DLEVBQ1AsU0FBVUgsRUFDWixFQUNBTixHQUFDLFNBQU0sS0FBSyxTQUFTLFVBQVUsYUFBYSxHQUM5QyxFQUNBQSxHQUFDb0IsR0FBQSxDQUFhLE9BQVFKLEVBQVksU0FBVUMsRUFBYyxTQUFVWCxFQUFVLEdBQ2hGLENBRUosQ0MzREEsT0FBT2UsT0FBVyxRQUNsQixPQUFPQyxPQUFxQiwrQkFFNUIsT0FBUyxlQUFBQyxHQUFhLFdBQUFDLE9BQWUsUUErRWpDLG1CQUFBQyxHQUVJLE9BQUFDLEdBREYsUUFBQUMsT0FERixvQkFyRUpDLEdBQU0sT0FBT0MsRUFBZSxFQVNyQixTQUFTQyxHQUFVQyxFQUF1QixDQUMvQyxHQUFNLENBQUUsU0FBQUMsRUFBVSxNQUFBQyxFQUFPLFNBQUFDLENBQVMsRUFBSUgsRUFFaENJLEVBQWUsT0FBT0YsQ0FBSyxFQUUzQixDQUFFLGVBQUFHLEVBQWdCLE1BQU9DLENBQVcsRUFBSUMsR0FBUyxDQUFFLGFBQUFILENBQWEsQ0FBQyxFQUdqRUksRUFBZ0JDLEdBQVEsSUFBTSxDQUNsQyxHQUFJLENBQ0YsR0FBSSxDQUFDSCxFQUFXLFNBQVMsR0FBRyxFQUFHLE9BQU9BLEVBRXRDLElBQU1JLEVBQWMsc0JBQXNCLEtBQUtKLENBQVUsRUFDbkRLLEVBQU9kLEdBQU0sY0FBY1MsQ0FBVSxFQUFFLEVBQzdDLEdBQUlLLEVBQUssUUFBUSxFQUNmLE9BQU9BLEVBQUssT0FBTyxRQUFRLEdBQUtELEVBQWMsS0FBS0MsRUFBSyxPQUFPLEdBQUcsQ0FBQyxJQUFNLElBRzNFLElBQU1DLEVBQVksNkRBQ1pDLEVBQVFQLEVBQVcsTUFBTU0sQ0FBUyxFQUN4QyxHQUFJQyxFQUFPLENBQ1QsSUFBTUMsRUFBUSxTQUFTRCxFQUFNLENBQUMsR0FBSyxLQUFNLEVBQUUsRUFDckNFLEVBQVVGLEVBQU0sQ0FBQyxHQUFLLEtBQ3RCRyxFQUFXSCxFQUFNLENBQUMsR0FBSyxHQUN2QkksRUFBU0gsR0FBUyxHQUFLLEtBQU8sS0FHcEMsTUFBTyxHQUZRQSxFQUFRLEtBQU8sRUFBSSxHQUFLQSxFQUFRLEVBRS9CLElBQUlDLENBQU8sSUFBSUUsQ0FBTSxHQUFHRCxFQUFXLEtBQUtBLENBQVEsSUFBTSxFQUFFLEVBQzFFLENBRUEsT0FBT1YsQ0FDVCxNQUFRLENBQ04sT0FBT0EsQ0FDVCxDQUNGLEVBQUcsQ0FBQ0EsQ0FBVSxDQUFDLEVBRWYsU0FBU1ksRUFBZUMsRUFBa0IsQ0FDeENBLEVBQU0sZUFBZSxFQUNqQmIsSUFBZUYsR0FDakJILEVBQVNLLENBQVUsQ0FFdkIsQ0FFQSxJQUFNYyxFQUFvQkMsR0FBWSxJQUNoQ2YsSUFBZUYsR0FDakJILEVBQVNLLENBQVUsRUFDWixJQUVGLEdBQ04sQ0FBQ0EsRUFBWUYsRUFBY0gsQ0FBUSxDQUFDLEVBRWpDcUIsRUFBZSxJQUFNLENBQUMsRUFFdEIsQ0FBRSxXQUFBQyxFQUFZLGFBQUFDLENBQWEsRUFBSUMsR0FBa0IsQ0FDckQsT0FBUUwsRUFDUixTQUFVRSxFQUNWLFNBQUFuQixDQUNGLENBQUMsRUFFRCxPQUNFUCxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxRQUFLLFNBQVVzQixFQUNkLFVBQUF2QixHQUFDK0IsR0FBQSxDQUNDLFVBQVUsNklBQ1YsU0FBVXJCLEVBQ1YsS0FBSyxPQUNMLE1BQU9DLEVBQ1QsRUFDQVgsR0FBQyxTQUFNLEtBQUssU0FBUyxVQUFVLGFBQWEsR0FDOUMsRUFDQUMsR0FBQyxPQUFJLFVBQVUseUVBQ2IsVUFBQUQsR0FBQyxPQUFJLFVBQVUsc0NBQXNDLDJCQUFlLEVBQ3BFQSxHQUFDLE9BQUksVUFBVSw2Q0FBOEMsU0FBQWEsRUFBYyxHQUM3RSxFQUNBYixHQUFDZ0MsR0FBQSxDQUFhLE9BQVFKLEVBQVksU0FBVUMsRUFBYyxTQUFVckIsRUFBVSxHQUNoRixDQUVKLENadkVXLGNBQUF5QixPQUFBLG9CQWhCSixTQUFTQyxHQUFTQyxFQUt0QixDQUNELEdBQU0sQ0FBRSxLQUFBQyxFQUFNLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSCxFQUM3QixDQUFFLE1BQUFJLEVBQU8sUUFBQUMsRUFBUyxRQUFBQyxDQUFRLEVBQUlKLEVBQU8sU0FDckNLLEVBQVdMLEVBQU8sWUFBY0YsRUFBTSxTQUV0Q1EsRUFBWVAsRUFBSyxTQUFTLEVBRzFCUSxFQUFRRCxJQUFjLE9BQVksR0FBS0EsRUFFN0MsT0FBSUosSUFBVSxXQUNMTixHQUFDWSxHQUFBLENBQVUsU0FBVVAsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd0RkgsSUFBVSxPQUNMTixHQUFDYSxHQUFBLENBQVUsU0FBVVIsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd0RkgsSUFBVSxRQUFVRSxFQUNmUixHQUFDYyxHQUFBLENBQVUsU0FBVVQsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd0RkgsSUFBVSxVQUNMTixHQUFDZSxHQUFBLENBQWEsU0FBVVYsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd6RkgsSUFBVSxPQUNMTixHQUFDZ0IsR0FBQSxDQUFVLFNBQVVYLEVBQVUsTUFBT00sRUFBTyxRQUFTSixFQUFTLE9BQVFILEVBQVEsU0FBVUssRUFBVSxFQUd4R0gsSUFBVSxVQUNMTixHQUFDaUIsR0FBQSxDQUFhLFNBQVVaLEVBQVUsTUFBT00sRUFBTyxPQUFRUCxFQUFRLFNBQVVLLEVBQVUsRUFJM0ZULEdBQUNrQixHQUFBLENBQVMsU0FBVWIsRUFBVSxNQUFPYyxHQUFhUixDQUFLLEVBQUksS0FBSyxVQUFVQSxDQUFLLEVBQUlBLEVBQU8sU0FBVUYsRUFBVSxDQUVsSCxDYXREQSxPQUEyQixpQkFBQVcsT0FBcUIsd0JBRWhELE9BQVMsUUFBQUMsT0FBWSxTQXFDRSxPQW9DbkIsWUFBQUMsR0FwQ21CLE9BQUFDLE9BQUEsb0JBbEJoQixTQUFTQyxHQUFXQyxFQUFjLENBQ3ZDLEdBQU0sQ0FBRSxNQUFPQyxFQUFhLFdBQUFDLEVBQVksY0FBQUMsQ0FBYyxFQUFJSCxFQUNwREksRUFBVyxFQUFRQyxHQUFlLEVBRXhDLFNBQVNDLEVBQWdCQyxFQUFrQkMsRUFBcUMsQ0FDOUVMLEVBQWVNLEdBQWEsQ0FDMUIsSUFBTUMsRUFBVSxDQUFDLEdBQUdELENBQVEsRUFDNUIsT0FBQUMsRUFBUUgsQ0FBUSxFQUFJLENBQUUsR0FBR0csRUFBUUgsQ0FBUSxFQUFHLEdBQUdDLENBQVcsRUFFbkRFLENBQ1QsQ0FBQyxDQUNILENBRUEsSUFBTUMsRUFBYSxPQUFPLE9BQU9WLEVBQVksUUFBUSxPQUFPLEVBQUUsSUFBS1csR0FDN0RBLEVBQU8sS0FBTyxjQUNULENBQ0wsR0FBR0EsRUFDSCxNQUFPLENBQ0wsTUFBTyxJQUFNZCxHQUFDZSxHQUFBLEVBQVUsQ0FDMUIsQ0FDRixFQUdLLENBQ0wsR0FBR0QsRUFDSCxLQUFLLENBQUUsS0FBQUUsQ0FBSyxFQUFHLENBQ2IsT0FBUWQsR0FDTkYsR0FBQ2lCLEdBQUEsQ0FDQyxjQUFlQyxHQUFRLENBQUUsS0FBQUYsRUFBTSxPQUFRRixFQUFPLEtBQWdCLE1BQUFaLENBQU0sQ0FBQyxFQUNyRSxlQUFnQmlCLEdBQVMsQ0FDdkIsS0FBQUgsRUFDQSxPQUFRRixFQUFPLEtBQ2YsU0FBU00sRUFBTyxDQUNkWixFQUFnQk4sRUFBTSxTQUFVLENBQUUsQ0FBQ1ksRUFBTyxFQUFHLEVBQUdNLENBQU0sQ0FBQyxDQUN6RCxFQUNBLFNBQUFkLENBQ0YsQ0FBQyxFQUNILENBRUosQ0FDRixDQUNELEVBRUtlLEVBQVFDLEdBQWMsQ0FDMUIsR0FBR25CLEVBQVksUUFDZixRQUFTVSxFQUNULGNBQWUsR0FDZixtQkFBb0IsT0FDcEIsZ0JBQWlCLE9BQ2pCLEtBQU1ULEVBQ04sTUFBT21CLEdBQUtwQixFQUFZLFFBQVEsTUFBTyxDQUFDLGFBQWMsU0FBUyxDQUFDLENBQ2xFLENBQUMsRUFFRCxPQUNFSCxHQUFBRCxHQUFBLENBQ0csU0FBQXNCLEVBQU0sWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDRyxFQUFLQyxJQUNsQ3pCLEdBQUMwQixHQUFBLENBQ0UsU0FBQUYsRUFBSSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNSLEVBQU1XLElBQU0sQ0FDdEMsR0FBSSxPQUFPWCxFQUFLLE9BQU8sVUFBVSxNQUFTLFdBQVksQ0FFcEQsSUFBTVksRUFBT1osRUFBSyxPQUFPLFVBQVUsS0FBS0EsRUFBSyxXQUFXLENBQUMsRUFDekQsT0FBT2hCLEdBQUM0QixFQUFBLENBQWMsR0FBR0MsR0FBdUJiLEVBQUssT0FBUSxNQUFNLEVBQUcsU0FBVVMsR0FBOURFLENBQWlFLENBQ3JGLENBRUEsT0FBTyxJQUNULENBQUMsR0FUWUYsQ0FVZixDQUNELEVBQ0gsQ0FFSixDMUdpQlUsT0FrRk0sWUFBQUssR0FsRk4sT0FBQUMsRUFzRFUsUUFBQUMsT0F0RFYsb0JBeEVILFNBQVNDLEdBQWdCQyxFQUE4QixDQUM1RCxJQUFNQyxFQUFhLEVBQVFDLEdBQWMsRUFDbkMsQ0FBRSxZQUFBQyxFQUFhLFFBQUFDLEVBQVMsYUFBQUMsRUFBYyxpQkFBQUMsRUFBa0IsaUJBQUFDLEVBQWtCLGlCQUFBQyxDQUFpQixFQUFJQyxFQUFVLEVBQ3pHLENBQUUsYUFBQUMsRUFBYyxnQkFBQUMsQ0FBZ0IsRUFBSUMsR0FBVyxFQUMvQyxDQUFFLGdCQUFBQyxFQUFpQixtQkFBQUMsQ0FBbUIsRUFBSUMsR0FBYyxFQUN4RCxDQUFDQyxFQUFZQyxDQUFhLEVBQUlDLEdBQW9DLENBQUMsQ0FBQyxFQUNwRSxDQUFFLGNBQUFDLEVBQWUsaUJBQUFDLEVBQWtCLGNBQUFDLEVBQWUsaUJBQUFDLEVBQWtCLG9CQUFBQyxDQUFvQixFQUFJQyxHQUFhLEVBRXpHLENBQUUsS0FBQUMsRUFBTSxXQUFBQyxDQUFXLEVBQUlDLEdBQW9CLENBQy9DLEdBQUdkLEVBQ0gsVUFBV0gsRUFDWCxPQUFRUyxDQUNWLENBQUMsRUFDSyxDQUFFLGdCQUFBUyxHQUFpQixZQUFBQyxFQUFhLGtCQUFBQyxFQUFtQixxQkFBQUMsQ0FBcUIsRUFBSUMsR0FBYVAsQ0FBSSxFQUU3RlEsRUFBVyxDQUFDLE9BQU8sT0FBTzlCLEdBQWEsU0FBVyxDQUFDLENBQUMsRUFBRSxLQUFNK0IsR0FBV0EsRUFBTyxjQUFjLEVBQzVGQyxFQUFjQyxHQUFlLEVBQzdCQyxFQUFTQyxHQUFxQixFQUM5QkMsRUFBU0MsR0FBcUIsRUFLcEMsR0FGQUMsR0FBVSxJQUFNeEIsRUFBYyxDQUFDLENBQUMsRUFBRyxDQUFDZCxDQUFXLENBQUMsRUFFNUMsQ0FBQ0EsRUFDSCxPQUFPLEtBR1QsU0FBU3VDLElBQWlCLENBQ3hCTCxFQUFPLE9BQU9yQixFQUFZLENBQ3hCLFFBQUFaLEVBQ0EsV0FBWSxDQUNWdUMsR0FBTSxRQUFRLDRCQUE0QixFQUMxQzFCLEVBQWMsQ0FBQyxDQUFDLENBQ2xCLENBQ0YsQ0FBQyxDQUNILENBRUEsU0FBUzJCLEdBQWUsQ0FFdEIzQixFQUFlNEIsR0FBUSxDQUFDLEdBQUdBLEVBQUssQ0FBQyxDQUFDLENBQUMsQ0FDckMsQ0FFQSxTQUFTQyxHQUFpQixDQUN4QjdCLEVBQWMsQ0FBQyxDQUFDLENBQ2xCLENBRUEsU0FBUzhCLEVBQXNCQyxFQUFnQmQsR0FBZ0JlLEdBQW9DLENBQ2pHVixFQUFPLE9BQU8sQ0FDWixRQUFTLENBQUUsUUFBUyxDQUFFLENBQUNMLEdBQU8sSUFBSSxFQUFHYyxDQUFNLEVBQUcsSUFBQUMsR0FBSyxNQUFPOUMsQ0FBYSxFQUN2RSxRQUFTLENBQUMsQ0FDWixDQUFDLENBQ0gsQ0FFQSxTQUFTK0MsRUFBbUJDLEVBQWUsQ0FDckNBLElBQVMsR0FDWDdCLEVBQWlCSCxDQUFhLEVBRTlCQyxFQUFpQkMsQ0FBYSxDQUVsQyxDQUdBLElBQU0rQixHQUFxQixPQUFPLE9BQU9qRCxHQUFhLFNBQVcsQ0FBQyxDQUFDLEVBQUUsSUFBSytCLElBQ2pFLENBQ0wsR0FBSUEsRUFBTyxLQUNYLFlBQWFBLEVBQU8sS0FDcEIsS0FBTUEsRUFDTixRQUFTLENBQ1AsT0FBT21CLEdBQW1CLENBQUUsT0FBQW5CLENBQU8sQ0FBQyxDQUN0QyxFQUNBLEtBQUssQ0FBRSxLQUFBb0IsRUFBSyxFQUFHLENBQ2IsT0FBUUMsSUFDTjFELEVBQUMyRCxHQUFBLENBQ0MsY0FBZUMsR0FBUSxDQUFFLEtBQUFILEdBQU0sT0FBQXBCLEVBQVEsTUFBQXFCLEVBQU0sQ0FBQyxFQUM5QyxlQUFnQkcsR0FBUyxDQUN2QixLQUFBSixHQUNBLE9BQUFwQixFQUNBLFNBQUFELEVBQ0EsU0FBU2UsR0FBTyxDQUNkLE9BQU9ELEVBQXNCQyxHQUFPZCxFQUFRb0IsR0FBSyxJQUFJLFFBQVEsQ0FDL0QsQ0FDRixDQUFDLEVBQ0gsQ0FFSixDQUNGLEVBQ0QsRUFHS0ssR0FBb0IsQ0FDeEIsQ0FDRSxHQUFJLGNBQ0osWUFBYSxjQUNiLGNBQWUsR0FDZixlQUFnQixHQUNoQixjQUFlLEdBQ2YsZ0JBQWlCLEdBQ2pCLEtBQU0sR0FDTixRQUFTLEdBQ1QsT0FBTyxDQUFFLE1BQUFDLENBQU0sRUFBRyxDQUNoQixPQUFRTCxJQUNOMUQsRUFBQ2dFLEdBQUEsQ0FBaUIsTUFBT0QsRUFBTyxTQUFVM0IsRUFBVyxHQUFHc0IsR0FBTyxDQUVuRSxFQUNBLEtBQUssQ0FBRSxJQUFBTixDQUFJLEVBQUcsQ0FDWixPQUFRTSxJQUNDMUQsRUFBQ2lFLEdBQUEsQ0FBYyxJQUFLYixFQUFLLFNBQVVoQixFQUFXLEdBQUdzQixHQUFPLENBRW5FLENBQ0YsQ0FDRixFQUVNUSxHQUFhLENBQUMsR0FBR1gsR0FBb0IsR0FBR08sRUFBaUIsRUFBRSxLQUFLSyxFQUFvQixFQUUxRixPQUNFbEUsR0FBQUYsR0FBQSxDQUNFLFVBQUFDLEVBQUMsT0FBSSxVQUFVLHlHQUNiLFNBQUFBLEVBQUMsT0FBSSxVQUFVLGdFQUNiLFNBQUFDLEdBQUMsT0FBSSxVQUFVLDBEQUNiLFVBQUFBLEdBQUMsT0FBSSxVQUFVLG1DQUNiLFVBQUFELEVBQUNvRSxFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssS0FBSyxRQUFTMUQsRUFDMUMsU0FBQUMsRUFBbUJYLEVBQUNxRSxHQUFBLEVBQWUsRUFBS3JFLEVBQUNzRSxHQUFBLEVBQWMsRUFDMUQsRUFDQXJFLEdBQUNzRSxHQUFBLENBQVEsYUFBY2xCLEVBQ3JCLFVBQUFyRCxFQUFDd0UsR0FBQSxDQUFlLFFBQU8sR0FDckIsU0FBQXhFLEVBQUNvRSxFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssS0FBSyxVQUFXSyxFQUFHL0MsRUFBc0IsR0FBSyxtQkFBbUIsRUFDOUYsU0FBQXpCLEdBQUMsUUFBSyxVQUFVLG1DQUNkLFVBQUFELEVBQUMwRSxHQUFBLEVBQVcsRUFDWGhELEVBQXNCLEdBQ3JCMUIsRUFBQzJFLEdBQUEsQ0FDQyxTQUFBM0UsRUFBQzRFLEdBQUEsQ0FBYyxXQUFZLENBQUUsT0FBUSxDQUFFLFNBQVUsR0FBSyxDQUFFLEVBQ3JELFNBQUFsRCxFQUNILEVBQ0YsR0FFSixFQUNGLEVBQ0YsRUFDQTFCLEVBQUM2RSxHQUFBLENBQWUsTUFBTSxRQUFRLEtBQUssU0FBUyxVQUFVLCtDQUNwRCxTQUFBN0UsRUFBQzhFLEdBQUEsQ0FDQyxPQUFRdEQsRUFDUixVQUFXQyxFQUNYLGlCQUFtQnNELEdBQVcsQ0FDNUJ0RCxFQUFpQnNELENBQU0sRUFDdkJ4RCxFQUFpQndELENBQU0sQ0FDekIsRUFDQSxNQUFPekUsRUFDVCxFQUNGLEdBQ0YsRUFDQU4sRUFBQ29FLEVBQUEsQ0FBTyxRQUFRLFVBQVUsS0FBSyxLQUFLLFFBQVNyQixFQUFjLFNBQVVULEVBQWMsRUFBRyxzQkFFdEYsRUFDQ25CLEVBQVcsT0FBUyxHQUNuQmxCLEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxFQUFDb0UsRUFBQSxDQUFPLFFBQVEsWUFBWSxLQUFLLEtBQUssUUFBU3ZCLEdBQWdCLGdCQUUvRCxFQUVBN0MsRUFBQ29FLEVBQUEsQ0FBTyxRQUFRLFFBQVEsS0FBSyxLQUFLLFFBQVNuQixFQUFnQixrQkFFM0QsR0FDRixFQUVEakIsR0FDQ2hDLEVBQUFELEdBQUEsQ0FDRSxTQUFBQyxFQUFDb0UsRUFBQSxDQUFPLFFBQVEsWUFBWSxLQUFLLEtBQUssUUFBU3JDLEdBQWlCLGtCQUVoRSxFQUNGLEdBRUosRUFFQS9CLEVBQUNvRSxFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssT0FBTyxRQUFTM0QsRUFDNUMsU0FBQUQsRUFBZVIsRUFBQ2dGLEdBQUEsRUFBUyxFQUFLaEYsRUFBQ2lGLEdBQUEsRUFBUyxFQUMzQyxHQUNGLEVBQ0YsRUFDRixFQUNBakYsRUFBQ2tGLEdBQUEsQ0FDQyxXQUFZaEIsR0FDWixjQUFnQkgsR0FBVS9ELEVBQUNtRixHQUFBLENBQWlCLE1BQUFwQixFQUFPLFdBQUE1QyxFQUFZLGNBQUFDLEVBQWlCLEVBQ2hGLFVBQVdTLEVBQ1gsYUFBY3pCLEVBQ2QsbUJBQW9CYSxFQUNwQixxQkFBc0JpQixFQUN0QixnQkFBaUJwQixFQUNqQixVQUFXc0UsR0FBYXhELEdBQU0sa0JBQW9CLElBQVVaLEVBQWdCLFFBQVEsRUFDcEYsZ0JBQWlCQSxFQUNqQixLQUFNWSxHQUFNLE1BQVEsQ0FBQyxFQUNyQixrQkFBbUJLLEVBQ25CLGFBQWNwQixFQUNoQixHQUNGLENBRUosQ0FFQSxTQUFTdUUsR0FBYUMsRUFBMERDLEVBQXNDLENBQ3BILEdBQUlELElBQWEsSUFDZixPQUdGLElBQU1FLEVBQVksUUFBUSxPQUFPRixDQUFRLEVBQUksT0FBT0MsQ0FBUSxFQUFJLE9BQU8sQ0FBQyxHQUFLLE9BQU9BLENBQVEsQ0FBQyxFQUU3RixPQUFPLE9BQU8sY0FBY0MsQ0FBUyxFQUFJQSxFQUFZLE9BQU8sZ0JBQzlELENBRUEsU0FBU3BCLEdBQXFCcUIsRUFBdUNDLEVBQXVDLENBQzFHLElBQU1DLEVBQVFGLEVBQUUsS0FDVkcsRUFBUUYsRUFBRSxLQUVoQixPQUFJRCxFQUFFLEtBQU8sZUFBaUJDLEVBQUUsS0FBTyxjQUM5QixFQUdMQyxJQUFVLFFBQWFDLElBQVUsT0FDNUIsRUFHTEQsRUFBTSxnQkFBa0IsQ0FBQ0MsRUFBTSxlQUMxQixHQUVMLENBQUNELEVBQU0sZ0JBQWtCQyxFQUFNLGVBQzFCLEVBR0ZELEVBQU0sS0FBSyxjQUFjQyxFQUFNLElBQUksQ0FDNUMsQzJHdlFBLE9BQVMsUUFBQUMsT0FBWSx1QkNBckIsT0FBUyxlQUFBQyxHQUFhLGFBQUFDLEdBQVcsV0FBQUMsT0FBZSxRQUNoRCxPQUFTLE1BQU1DLE9BQWMsT0NEN0IsT0FBUyxZQUFBQyxPQUFnQix3QkFLbEIsSUFBTUMsR0FBMEIsR0FFaEMsU0FBU0MsSUFBbUIsQ0FDakMsR0FBTSxDQUFFLFFBQUFDLENBQVEsRUFBSUMsRUFBVSxFQUU5QixPQUFPQyxHQUFTLENBQ2QsWUFBYSxDQUNYLFFBQVMsQ0FDUCxDQUFDRixFQUFRLGVBQWlCLElBQUksRUFBRyxDQUMvQixPQUFRLENBQUMsQ0FDWCxDQUNGLEVBQ0EsU0FBVSxNQUNWLGdCQUFpQixDQUFDLENBQ3BCLEVBQ0EscUJBQXNCRixHQUN0QixRQUFTLE1BQU8sQ0FBRSxPQUFBSyxDQUFPLElBQU0sQ0FDN0IsR0FBTSxDQUFDQyxFQUFPQyxDQUFhLEVBQUksTUFBTUwsRUFBUSxXQUFXLENBQUUsWUFBYUcsQ0FBTyxDQUFDLEVBRS9FLEdBQUlDLEVBQ0YsTUFBTUEsRUFHUixPQUFPQyxDQUNULEVBQ0EsU0FBVSxDQUFDLGVBQWUsRUFHMUIsVUFBWUMsR0FBU0EsRUFBSSxNQUFNLGdCQUFrQlIsR0FBMEIsRUFBSSxHQUNqRixDQUFDLENBQ0gsQ0R0Qk8sU0FBU1MsSUFBaUIsQ0FDL0IsR0FBTSxDQUFFLFlBQUFDLEVBQWEsZUFBQUMsRUFBZ0IsUUFBQUMsRUFBUyxtQkFBQUMsQ0FBbUIsRUFBSUMsRUFBVSxFQUN6RSxDQUFFLEtBQU1DLEVBQWUsY0FBQUMsQ0FBYyxFQUFJQyxHQUFpQixFQUMxREMsRUFBWUYsSUFBa0JHLEdBRzlCQyxFQUFrQkMsR0FBUSxJQUN2QixPQUFPLE9BQU9OLEVBQWMsUUFBUUgsRUFBUSxlQUFpQixJQUFJLEdBQUcsUUFBVSxDQUFDLENBQUMsRUFDdEYsQ0FBQ0csRUFBYyxRQUFTSCxFQUFRLGFBQWEsQ0FBQyxFQUczQ1UsRUFBa0JELEdBQVEsSUFDdkIsT0FBTyxPQUFPTixFQUFjLE9BQU8sRUFBRSxPQUFPLENBQUNRLEVBQUtDLElBQ2hERCxFQUFNLE9BQU8sS0FBS0MsRUFBTyxNQUFNLEVBQUUsT0FDdkMsQ0FBQyxFQUNILENBQUNULEVBQWMsT0FBTyxDQUFDLEVBRXBCLENBQUNVLENBQVUsRUFBSUwsRUFFZixDQUFDTSxFQUFnQkMsQ0FBaUIsRUFBSUMsR0FDbkMsQ0FDTCxNQUFPLENBQ0wsYUFBYyxLQUNkLE1BQVFDLEdBQXFCQSxFQUM3QixVQUFZQSxHQUFxQkEsR0FBSyxFQUN4QyxFQUNBLE9BQVEsQ0FDTixhQUFjLEdBQ2QsTUFBUUEsR0FBcUJBLEVBQzdCLFVBQVlBLEdBQXFCQSxHQUFLLEVBQ3hDLENBQ0YsQ0FDRixFQUVNLENBQUMsQ0FBRUMsQ0FBWSxFQUFJQyxHQUE2QixZQUFhLENBQ2pFLE1BQVFGLEdBQU1BLEVBQ2QsVUFBWUEsR0FBTUEsR0FBSyxFQUN6QixDQUFDLEVBQ0ssQ0FBQyxDQUFFRyxDQUFZLEVBQUlELEdBQTZCLE9BQVEsQ0FDNUQsTUFBUUYsR0FBTUEsRUFDZCxVQUFZQSxHQUFNQSxHQUFLLEVBQ3pCLENBQUMsRUFHREksR0FBVSxJQUFNLENBQ2QsR0FBSSxDQUFBZixFQUVKLElBQUlRLEdBQWdCLE9BQVNOLEVBQU8sT0FBUyxFQUFHLENBQzlDLElBQU1jLEVBQWlCZCxFQUFPLEtBQU1lLEdBQU1BLEVBQUUsT0FBU1QsRUFBZSxLQUFLLEVBRXpFLEdBQUlRLEVBQWdCLENBQ2xCdkIsRUFBZXVCLENBQWMsRUFDN0IsTUFDRixDQUNGLENBRUlkLEVBQU8sT0FBUyxHQUFLLENBQUNWLElBQ3hCQyxFQUFlYyxHQUFjLElBQUksRUFDN0JBLEdBQ0dFLEVBQWtCLENBQUUsTUFBT0YsRUFBVyxLQUFNLE9BQVFBLEVBQVcsTUFBTyxDQUFDLEdBR2xGLEVBQUcsQ0FBQ1AsRUFBV1EsRUFBZ0JOLEVBQVFLLEVBQVlmLEVBQWFDLEVBQWdCZ0IsQ0FBaUIsQ0FBQyxFQU1sRyxJQUFNUyxFQUFvQkMsR0FDdkJDLEdBQW9CLENBQ2Y1QixJQUFnQjRCLElBQ2xCM0IsRUFBZTJCLENBQVEsRUFDbEJYLEVBQWtCLENBQUUsTUFBT1csRUFBUyxLQUFNLE9BQVFBLEVBQVMsTUFBTyxDQUFDLEVBRW5FUixFQUFhLElBQUksRUFDakJFLEVBQWEsSUFBSSxFQUUxQixFQUNBLENBQUN0QixFQUFhQyxFQUFnQmdCLEVBQW1CRyxFQUFjRSxDQUFZLENBQzdFLEVBRUEsT0FBQUMsR0FBVSxJQUFNLENBRVZqQixJQUFrQixJQUNwQkgsRUFBbUIsQ0FDakIsTUFBTyxrQkFDUCxRQUFTLENBQ1AsU0FBVTBCLEdBQU8sRUFDakIsVUFBVyxJQUFJLEtBQUssRUFBRSxZQUFZLEVBQ2xDLFlBQWFqQixDQUNmLENBQ0YsQ0FBQyxDQUVMLEVBQUcsQ0FBQ0YsRUFBUVAsRUFBb0JHLEVBQWVNLENBQWUsQ0FBQyxFQUV4RCxDQUNMLE9BQUFGLEVBQ0EsWUFBQVYsRUFDQSxVQUFBUSxFQUNBLGtCQUFBa0IsQ0FDRixDQUNGLENEL0VjLGNBQUFJLEdBc0JSLFFBQUFDLE9BdEJRLG9CQXhCUCxTQUFTQyxHQUFXLENBQUUsVUFBQUMsQ0FBVSxFQUFvQixDQUV6RCxHQUFNLENBQUUsT0FBQUMsRUFBUSxZQUFBQyxFQUFhLFVBQUFDLEVBQVcsa0JBQUFDLENBQWtCLEVBQUlDLEdBQWUsRUFFdkVDLEVBQWlCQyxFQUNyQix3SEFDQVAsQ0FDRixFQUVBLE9BQ0VILEdBQUMsT0FBSSxVQUFXUyxFQUVkLFNBQUFULEdBQUNFLEdBQVcsTUFBWCxDQUFpQixNQUFNLFNBQ3JCLFNBQUFFLEVBQU8sT0FBUyxFQUNmQSxFQUFPLElBQUtPLEdBQ1ZYLEdBQUNFLEdBQVcsS0FBWCxDQUVDLFFBQU8sR0FDUCxTQUFVRyxJQUFnQk0sRUFDMUIsUUFBUyxJQUFNLENBQ2JKLEVBQWtCSSxDQUFLLENBQ3pCLEVBQ0EsVUFBVywrTkFFWCxTQUFBWCxHQUFDLEtBQUUsS0FBTSxVQUFVVyxFQUFNLElBQUksV0FBV0EsRUFBTSxNQUFNLEdBQUssU0FBQUEsRUFBTSxLQUFLLEdBUi9ELEdBQUdBLEVBQU0sTUFBTSxJQUFJQSxFQUFNLElBQUksRUFTcEMsQ0FDRCxFQUNDTCxFQUNGLE1BQU0sQ0FBQyxFQUNKLEtBQUssSUFBSSxFQUNULElBQUksQ0FBQ00sRUFBR0MsSUFDUGIsR0FBQ0UsR0FBVyxLQUFYLENBQTRCLG1CQUFvQixHQUMvQyxTQUFBRixHQUFDYyxHQUFBLENBQVMsVUFBVSxtQkFBbUIsR0FEbkJELENBRXRCLENBQ0QsRUFFSGIsR0FBQ0UsR0FBVyxLQUFYLENBQWdCLDJCQUFlLEVBRXBDLEVBQ0YsQ0FFSixDQUVBLElBQU1hLEdBQVEsQ0FBQyxDQUFFLFVBQUFaLEVBQVcsTUFBQWEsRUFBTyxTQUFBQyxFQUFVLEdBQUdDLENBQU0sSUFFbERqQixHQUFDLE9BQUksVUFBV0UsRUFBWSxHQUFHZSxFQUM3QixVQUFBakIsR0FBQyxPQUFJLFVBQVUsb0hBQ2IsVUFBQUQsR0FBQ21CLEdBQUEsQ0FBTyxLQUFNLEdBQUksVUFBVSw4QkFBOEIsRUFDMURuQixHQUFDLE1BQUcsVUFBVSw0QkFBNkIsU0FBQWdCLEVBQU0sR0FDbkQsRUFDQWhCLEdBQUMsT0FBSSxhQUFZZ0IsRUFBTyxVQUFVLCtDQUMvQixTQUFBQyxFQUNILEdBQ0YsRUFJRUcsR0FBTyxDQUFDLENBQ1osVUFBQWpCLEVBQ0EsUUFBQWtCLEVBQVUsR0FDVixTQUFBQyxFQUNBLEtBQUFDLEVBQ0EsU0FBQU4sRUFDQSxtQkFBQU8sRUFBcUIsR0FDckIsR0FBR04sQ0FDTCxJQVNJbEIsR0FIV3FCLEVBQVVJLEdBQU8sU0FHM0IsQ0FDQyxlQUFhLGNBQ2IsWUFBV0YsRUFDWCxjQUFhRCxFQUNiLFVBQVdaLEVBQ1QsK0lBQ0FQLENBQ0YsRUFDQyxHQUFHZSxFQUVILFNBQUFNLEVBQXFCeEIsR0FBQyxRQUFLLFVBQVUsY0FBZSxTQUFBaUIsRUFBUyxFQUFVQSxFQUMxRSxFQUlKZixHQUFXLE1BQVFhLEdBQ25CYixHQUFXLEtBQU9rQixHMUhqRVAsY0FBQU0sR0FvQkwsUUFBQUMsT0FwQkssb0JBTEosU0FBU0MsR0FBT0MsRUFBb0IsQ0FDekMsR0FBTSxDQUFFLFFBQUFDLEVBQVMsUUFBQUMsRUFBUyxpQkFBQUMsQ0FBaUIsRUFBSUgsRUFFL0MsT0FBS0MsRUFNSEosR0FBQ08sR0FBQSxDQUFzQixRQUFTSCxFQUFTLFFBQVNDLEVBQVMsaUJBQWtCQyxFQUMzRSxTQUFBTixHQUFDUSxHQUFBLEVBQWMsRUFDakIsR0FQQSxRQUFRLE1BQU0seUNBQXlDLEVBQ2hEUixHQUFDLE9BQUksc0NBQTBCLEVBUTFDLENBRUEsU0FBU1EsSUFBZ0IsQ0FDdkIsR0FBTSxDQUFFLGFBQUFDLEVBQWMsaUJBQUFDLENBQWlCLEVBQUlDLEVBQVUsRUFFL0NDLEVBQW1CQyxFQUN2Qix5REFDQUosR0FBZ0IseURBQ2xCLEVBRUEsT0FDRVQsR0FBQyxPQUFJLGtCQUFpQlMsRUFBYyxVQUFXRyxFQUM3QyxTQUFBWCxHQUFDLE9BQUksVUFBVSxvR0FDYixVQUFBRCxHQUFDYyxHQUFBLENBQWdCLEtBQUssT0FDbkIsU0FBQUosR0FDQ1YsR0FBQ2UsR0FBTyxJQUFQLENBQ0MsUUFBUyxDQUFFLE1BQU8sRUFBRyxRQUFTLENBQUUsRUFDaEMsUUFBUyxDQUFFLE1BQU8sT0FBUSxRQUFTLENBQUUsRUFDckMsS0FBTSxDQUFFLE1BQU8sRUFBRyxRQUFTLENBQUUsRUFDN0IsV0FBWSxDQUFFLFNBQVUsR0FBSyxFQUU3QixTQUFBZixHQUFDZ0IsR0FBQSxFQUFXLEVBQ2QsRUFFSixFQUVBaEIsR0FBQ2UsR0FBTyxJQUFQLENBQ0MsVUFBVSw2SUFDVixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTdCLFNBQUFmLEdBQUNpQixHQUFBLEVBQWdCLEVBQ25CLEdBQ0YsRUFDRixDQUVKIiwKICAibmFtZXMiOiBbIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiY2xzeCIsICJDTEFTU19QQVJUX1NFUEFSQVRPUiIsICJjcmVhdGVDbGFzc0dyb3VwVXRpbHMiLCAiY29uZmlnIiwgImNsYXNzTWFwIiwgImNyZWF0ZUNsYXNzTWFwIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgImdldENsYXNzR3JvdXBJZCIsICJjbGFzc05hbWUiLCAiY2xhc3NQYXJ0cyIsICJzcGxpdCIsICJsZW5ndGgiLCAic2hpZnQiLCAiZ2V0R3JvdXBSZWN1cnNpdmUiLCAiZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5IiwgImdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyIsICJjbGFzc0dyb3VwSWQiLCAiaGFzUG9zdGZpeE1vZGlmaWVyIiwgImNvbmZsaWN0cyIsICJjbGFzc1BhcnRPYmplY3QiLCAiY3VycmVudENsYXNzUGFydCIsICJuZXh0Q2xhc3NQYXJ0T2JqZWN0IiwgIm5leHRQYXJ0IiwgImdldCIsICJjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQiLCAic2xpY2UiLCAidW5kZWZpbmVkIiwgInZhbGlkYXRvcnMiLCAiY2xhc3NSZXN0IiwgImpvaW4iLCAiZmluZCIsICJ2YWxpZGF0b3IiLCAiYXJiaXRyYXJ5UHJvcGVydHlSZWdleCIsICJ0ZXN0IiwgImFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lIiwgImV4ZWMiLCAicHJvcGVydHkiLCAic3Vic3RyaW5nIiwgImluZGV4T2YiLCAidGhlbWUiLCAicHJlZml4IiwgIk1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgImdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAiY2xhc3NHcm91cHMiLCAiZm9yRWFjaCIsICJjbGFzc0dyb3VwIiwgInByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkiLCAiY2xhc3NEZWZpbml0aW9uIiwgImNsYXNzUGFydE9iamVjdFRvRWRpdCIsICJnZXRQYXJ0IiwgImlzVGhlbWVHZXR0ZXIiLCAicHVzaCIsICJrZXkiLCAicGF0aCIsICJjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0IiwgInBhdGhQYXJ0IiwgImhhcyIsICJzZXQiLCAiZnVuYyIsICJjbGFzc0dyb3VwRW50cmllcyIsICJtYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwIiwgImZyb21FbnRyaWVzIiwgInZhbHVlIiwgImNyZWF0ZUxydUNhY2hlIiwgIm1heENhY2hlU2l6ZSIsICJjYWNoZVNpemUiLCAiY2FjaGUiLCAicHJldmlvdXNDYWNoZSIsICJ1cGRhdGUiLCAiSU1QT1JUQU5UX01PRElGSUVSIiwgImNyZWF0ZVBhcnNlQ2xhc3NOYW1lIiwgInNlcGFyYXRvciIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciIsICJmaXJzdFNlcGFyYXRvckNoYXJhY3RlciIsICJzZXBhcmF0b3JMZW5ndGgiLCAicGFyc2VDbGFzc05hbWUiLCAibW9kaWZpZXJzIiwgImJyYWNrZXREZXB0aCIsICJtb2RpZmllclN0YXJ0IiwgInBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgImluZGV4IiwgImN1cnJlbnRDaGFyYWN0ZXIiLCAiYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciIsICJoYXNJbXBvcnRhbnRNb2RpZmllciIsICJzdGFydHNXaXRoIiwgImJhc2VDbGFzc05hbWUiLCAibWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJzb3J0TW9kaWZpZXJzIiwgInNvcnRlZE1vZGlmaWVycyIsICJ1bnNvcnRlZE1vZGlmaWVycyIsICJtb2RpZmllciIsICJzb3J0IiwgImNyZWF0ZUNvbmZpZ1V0aWxzIiwgIlNQTElUX0NMQVNTRVNfUkVHRVgiLCAibWVyZ2VDbGFzc0xpc3QiLCAiY2xhc3NMaXN0IiwgImNvbmZpZ1V0aWxzIiwgImNsYXNzR3JvdXBzSW5Db25mbGljdCIsICJjbGFzc05hbWVzIiwgInRyaW0iLCAicmVzdWx0IiwgIm9yaWdpbmFsQ2xhc3NOYW1lIiwgIkJvb2xlYW4iLCAidmFyaWFudE1vZGlmaWVyIiwgIm1vZGlmaWVySWQiLCAiY2xhc3NJZCIsICJpbmNsdWRlcyIsICJjb25mbGljdEdyb3VwcyIsICJpIiwgImdyb3VwIiwgInR3Sm9pbiIsICJhcmd1bWVudCIsICJyZXNvbHZlZFZhbHVlIiwgInN0cmluZyIsICJhcmd1bWVudHMiLCAidG9WYWx1ZSIsICJtaXgiLCAiayIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgImNyZWF0ZUNvbmZpZ0ZpcnN0IiwgImNyZWF0ZUNvbmZpZ1Jlc3QiLCAiY2FjaGVHZXQiLCAiY2FjaGVTZXQiLCAiZnVuY3Rpb25Ub0NhbGwiLCAiaW5pdFRhaWx3aW5kTWVyZ2UiLCAicmVkdWNlIiwgInByZXZpb3VzQ29uZmlnIiwgImNyZWF0ZUNvbmZpZ0N1cnJlbnQiLCAidGFpbHdpbmRNZXJnZSIsICJjYWNoZWRSZXN1bHQiLCAiYXBwbHkiLCAiZnJvbVRoZW1lIiwgInRoZW1lR2V0dGVyIiwgImFyYml0cmFyeVZhbHVlUmVnZXgiLCAiZnJhY3Rpb25SZWdleCIsICJzdHJpbmdMZW5ndGhzIiwgIlNldCIsICJ0c2hpcnRVbml0UmVnZXgiLCAibGVuZ3RoVW5pdFJlZ2V4IiwgImNvbG9yRnVuY3Rpb25SZWdleCIsICJzaGFkb3dSZWdleCIsICJpbWFnZVJlZ2V4IiwgImlzTGVuZ3RoIiwgImlzTnVtYmVyIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldElzQXJiaXRyYXJ5VmFsdWUiLCAiaXNMZW5ndGhPbmx5IiwgIk51bWJlciIsICJpc05hTiIsICJpc0FyYml0cmFyeU51bWJlciIsICJpc0ludGVnZXIiLCAiaXNQZXJjZW50IiwgImVuZHNXaXRoIiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiaXNUc2hpcnRTaXplIiwgInNpemVMYWJlbHMiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzTmV2ZXIiLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJpbWFnZUxhYmVscyIsICJpc0FyYml0cmFyeUltYWdlIiwgImlzSW1hZ2UiLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiaXNTaGFkb3ciLCAiaXNBbnkiLCAibGFiZWwiLCAidGVzdFZhbHVlIiwgImdldERlZmF1bHRDb25maWciLCAiY29sb3JzIiwgImZyb21UaGVtZSIsICJzcGFjaW5nIiwgImJsdXIiLCAiYnJpZ2h0bmVzcyIsICJib3JkZXJDb2xvciIsICJib3JkZXJSYWRpdXMiLCAiYm9yZGVyU3BhY2luZyIsICJib3JkZXJXaWR0aCIsICJjb250cmFzdCIsICJncmF5c2NhbGUiLCAiaHVlUm90YXRlIiwgImludmVydCIsICJnYXAiLCAiZ3JhZGllbnRDb2xvclN0b3BzIiwgImdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zIiwgImluc2V0IiwgIm1hcmdpbiIsICJvcGFjaXR5IiwgInBhZGRpbmciLCAic2F0dXJhdGUiLCAic2NhbGUiLCAic2VwaWEiLCAic2tldyIsICJzcGFjZSIsICJ0cmFuc2xhdGUiLCAiZ2V0T3ZlcnNjcm9sbCIsICJnZXRPdmVyZmxvdyIsICJnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSIsICJnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkiLCAiaXNMZW5ndGgiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNOdW1iZXIiLCAiZ2V0UG9zaXRpb25zIiwgImdldExpbmVTdHlsZXMiLCAiZ2V0QmxlbmRNb2RlcyIsICJnZXRBbGlnbiIsICJnZXRaZXJvQW5kRW1wdHkiLCAiZ2V0QnJlYWtzIiwgImdldE51bWJlckFuZEFyYml0cmFyeSIsICJjYWNoZVNpemUiLCAic2VwYXJhdG9yIiwgInRoZW1lIiwgImlzQW55IiwgImlzVHNoaXJ0U2l6ZSIsICJpc1BlcmNlbnQiLCAiY2xhc3NHcm91cHMiLCAiYXNwZWN0IiwgImNvbnRhaW5lciIsICJjb2x1bW5zIiwgImJveCIsICJkaXNwbGF5IiwgImZsb2F0IiwgImNsZWFyIiwgImlzb2xhdGlvbiIsICJvYmplY3QiLCAib3ZlcmZsb3ciLCAib3ZlcnNjcm9sbCIsICJwb3NpdGlvbiIsICJzdGFydCIsICJlbmQiLCAidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0IiwgInZpc2liaWxpdHkiLCAieiIsICJpc0ludGVnZXIiLCAiYmFzaXMiLCAiZmxleCIsICJncm93IiwgInNocmluayIsICJvcmRlciIsICJjb2wiLCAic3BhbiIsICJyb3ciLCAianVzdGlmeSIsICJjb250ZW50IiwgIml0ZW1zIiwgInNlbGYiLCAicCIsICJweCIsICJweSIsICJwcyIsICJwZSIsICJwdCIsICJwciIsICJwYiIsICJwbCIsICJtIiwgIm14IiwgIm15IiwgIm1zIiwgIm1lIiwgIm10IiwgIm1yIiwgIm1iIiwgIm1sIiwgInciLCAic2NyZWVuIiwgImgiLCAic2l6ZSIsICJ0ZXh0IiwgImZvbnQiLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAidHJhY2tpbmciLCAibGVhZGluZyIsICJsaXN0IiwgInBsYWNlaG9sZGVyIiwgImRlY29yYXRpb24iLCAiaW5kZW50IiwgImFsaWduIiwgIndoaXRlc3BhY2UiLCAiYnJlYWsiLCAiaHlwaGVucyIsICJiZyIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgInJlcGVhdCIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJmcm9tIiwgInZpYSIsICJ0byIsICJyb3VuZGVkIiwgImJvcmRlciIsICJkaXZpZGUiLCAib3V0bGluZSIsICJyaW5nIiwgInNoYWRvdyIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJmaWx0ZXIiLCAidGFibGUiLCAiY2FwdGlvbiIsICJ0cmFuc2l0aW9uIiwgImR1cmF0aW9uIiwgImVhc2UiLCAiZGVsYXkiLCAiYW5pbWF0ZSIsICJ0cmFuc2Zvcm0iLCAicm90YXRlIiwgIm9yaWdpbiIsICJhY2NlbnQiLCAiYXBwZWFyYW5jZSIsICJjdXJzb3IiLCAiY2FyZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzbmFwIiwgInRvdWNoIiwgInNlbGVjdCIsICJmaWxsIiwgInN0cm9rZSIsICJzciIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJtZXJnZUNvbmZpZ3MiLCAiYmFzZUNvbmZpZyIsICJwcmVmaXgiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiZXh0ZW5kIiwgIm92ZXJyaWRlIiwgIm92ZXJyaWRlUHJvcGVydHkiLCAiY29uZmlnS2V5IiwgIm92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyIsICJrZXkiLCAibWVyZ2VDb25maWdQcm9wZXJ0aWVzIiwgImJhc2VPYmplY3QiLCAib3ZlcnJpZGVLZXkiLCAib3ZlcnJpZGVWYWx1ZSIsICJ1bmRlZmluZWQiLCAib3ZlcnJpZGVPYmplY3QiLCAibWVyZ2VPYmplY3QiLCAibWVyZ2VWYWx1ZSIsICJjb25jYXQiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjb25maWdFeHRlbnNpb24iLCAiY3JlYXRlQ29uZmlnIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAidHdNZXJnZSIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNuIiwgImlucHV0cyIsICJjbHN4IiwgInVzZUlzTXV0YXRpbmciLCAidG9LZWJhYkNhc2UiLCAic3RyaW5nIiwgIm1lcmdlQ2xhc3NlcyIsICJjbGFzc2VzIiwgImNsYXNzTmFtZSIsICJpbmRleCIsICJhcnJheSIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJJY29uIiwgImZvcndhcmRSZWYiLCAiY29sb3IiLCAic2l6ZSIsICJzdHJva2VXaWR0aCIsICJhYnNvbHV0ZVN0cm9rZVdpZHRoIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJpY29uTm9kZSIsICJyZXN0IiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIm1lcmdlQ2xhc3NlcyIsICJ0YWciLCAiYXR0cnMiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJpY29uTmFtZSIsICJpY29uTm9kZSIsICJDb21wb25lbnQiLCAiZm9yd2FyZFJlZiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiSWNvbiIsICJtZXJnZUNsYXNzZXMiLCAidG9LZWJhYkNhc2UiLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFycm93VXBXaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hlY2siLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblJpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNMZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZUhlbHAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaXJjbGUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3B5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29ybmVyRG93bkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJGaWx0ZXIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJHcmlwVmVydGljYWwiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJLZXlSb3VuZCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1heGltaXplIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWluaW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNb3ZlRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVVcCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBhbmVsTGVmdENsb3NlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0T3BlbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbk9mZiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICIjY2xpZW50IiwgIiNvbmxpbmVNYW5hZ2VyIiwgIiNxdWVyeUZsYXZvciIsICIjdmVyc2lvbiIsICIjaXNNb3VudGVkIiwgIiNzdHlsZU5vbmNlIiwgIiNzaGFkb3dET01UYXJnZXQiLCAiI2J1dHRvblBvc2l0aW9uIiwgIiNwb3NpdGlvbiIsICIjaW5pdGlhbElzT3BlbiIsICIjZXJyb3JUeXBlcyIsICIjQ29tcG9uZW50IiwgIiNkaXNwb3NlIiwgImNvbmZpZyIsICJjbGllbnQiLCAicXVlcnlGbGF2b3IiLCAidmVyc2lvbiIsICJvbmxpbmVNYW5hZ2VyIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJjcmVhdGVTaWduYWwiLCAiaXNPcGVuIiwgImVsIiwgImRpc3Bvc2UiLCAicmVuZGVyIiwgIl9zZWxmJCIsICJidG5Qb3NpdGlvbiIsICJwb3MiLCAiZXJyb3JzIiwgInF1ZXJ5Q2xpZW50IiwgIkRldnRvb2xzIiwgImxhenkiLCAic2V0dXBTdHlsZVNoZWV0IiwgImNyZWF0ZUNvbXBvbmVudCIsICJtZXJnZVByb3BzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIiNvbkNsb3NlIiwgIm9uQ2xvc2UiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInRvYXN0IiwgIlNvbm5lciIsICJqc3giLCAiVG9hc3RlciIsICJwcm9wcyIsICJjcmVhdGVBZGFwdGVyUHJvdmlkZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZUhhc2hBZGFwdGVyIiwgInJhd0hhc2giLCAiaGFzaFBhcmFtcyIsICJzZXRIYXNoUGFyYW1zIiwgInVwZGF0ZVVybCIsICJ1cGRhdGVkIiwgImhpc3RvcnkiLCAicGF0aG5hbWUiLCAic2VhcmNoIiwgImhhc2giLCAidXJsIiwgImdldFNlYXJjaFBhcmFtc1NuYXBzaG90IiwgInJhdyIsICJoYW5kbGVIYXNoQ2hhbmdlIiwgIk51cXNIYXNoQWRhcHRlciIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiaXNGdWxsc2NyZWVuIiwgInNldElzRnVsbHNjcmVlbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInNldElzTmF2aWdhdGlvbk9wZW4iLCAib25FcnJvciIsICJlcnJvciIsICJ0b2FzdCIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlTWVtbyIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInByZXYiLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJRdWVyeUNsaWVudFByb3ZpZGVyIiwgIlJlYWN0UXVlcnlEZXZ0b29sczIiLCAiVG9hc3RlciIsICJOdXFzSGFzaEFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgImNvbnRleHQiLCAidXNlQ29udGV4dCIsICJnZXRSb3dJZCIsICJyb3ciLCAidGFibGUiLCAiaWQiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiYWRkUm93SWRUb1JvdyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgInJlc3VsdCIsICJyb3dzIiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIm5ld0RhdGEiLCAib2xkRGF0YSIsICJ1c2VRdWVyeSIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgInByb3BzIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInByZXZpb3VzRGF0YSIsICJwcmV2aW91c1F1ZXJ5IiwgInNjaGVtYSIsICJ0YWJsZSIsICJzaWduYWwiLCAiZXJyb3IiLCAicmVzdWx0cyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIml0ZW0iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJxdWVyeUtleVByZWZpeCIsICJ1c2VNdXRhdGlvbiIsICJwYXJhbXMiLCAiZXJyb3IiLCAicmVzdWx0IiwgImNoYW5nZXMiLCAicm93IiwgIm92ZXJ3cml0ZUNhY2hlZFJvdyIsICJjaGFuZ2VkUm93IiwgInJvd0ZpbHRlciIsICJpbmZlclJvd0ZpbHRlciIsICJjYWNoZWRSb3ciLCAiY29sdW1uTmFtZSIsICJ2YWx1ZSIsICJvcmlnaW5hbFZhbHVlcyIsICJkZXRhaWxzIiwgInVuY2hhbmdlZFJvdyIsICJfX3BzX3VwZGF0ZWRfYXRfXyIsICJnZXRGaW5kZXJGbiIsICJ0YWJsZSIsICJ1cGRhdGVyRm4iLCAiZmluZGVyIiwgImNhY2hlZFJlc3VsdCIsICJjYWNoZWRSb3dzIiwgImNhY2hlZFJvd0luZGV4IiwgIm5ld1JvdyIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJzaG9ydCIsICJudXFzX2V4cG9ydHMiLCAiX19leHBvcnQiLCAia2V5TWFwIiwgInVybEtleXMiLCAidXNlUXVlcnlTdGF0ZSIsICJ1c2VRdWVyeVN0YXRlcyIsICJfX3JlRXhwb3J0IiwgIm51cXNfZXhwb3J0cyIsICJudXFzX3N0YXIiLCAidXNlUXVlcnlTdGF0ZU9yaWdpbmFsIiwgInVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwiLCAia2V5TWFwIiwgInVybEtleXMiLCAiX0JSQU5EX1NZTUJPTCIsICJ1c2VRdWVyeVN0YXRlIiwgImtleSIsICJvcHRpb25zIiwgInVzZVF1ZXJ5U3RhdGVzIiwgImRlZmF1bHRGaWx0ZXIiLCAic2hvcnQiLCAiY291bnRGaWx0ZXJzUmVjdXJzaXZlIiwgImZpbHRlckdyb3VwIiwgImNvdW50IiwgImZpbHRlciIsICJ1c2VGaWx0ZXJpbmciLCAiZmlsdGVyUGFyYW0iLCAic2V0RmlsdGVyUGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJhcHBsaWVkRmlsdGVyIiwgInVzZU1lbW8iLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgInRvdGFsRWRpdGluZ0ZpbHRlcnMiLCAidXNlSXNNdXRhdGluZyIsICJ1c2VJc0luc2VydGluZyIsICJtdXRhdGlvbktleSIsICJ1c2VDYWxsYmFjayIsICJERUZBVUxUX1BBR0VfU0laRSIsICJwYWdpbmF0aW9uUGFyc2VycyIsICJ1c2VQYWdpbmF0aW9uIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzZXRQYWdpbmF0aW9uIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInNldFBhZ2luYXRpb25TdGF0ZSIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAibmV3U3RhdGUiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJ1c2VTZWxlY3Rpb24iLCAiZGF0YSIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJwYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTdGF0ZSIsICJpc1NlbGVjdGluZyIsICJtdXRhdGUiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAidXNlRWZmZWN0IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJyb3dzIiwgInJvdyIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlU29ydGluZyIsICJzb3J0UGFyYW0iLCAic2V0U29ydFBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAicGFyc2VTb3J0aW5nIiwgIml0ZW0iLCAiY29sdW1uIiwgImRpcmVjdGlvbiIsICJlIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgIm5ld1NvcnRpbmdTdGF0ZSIsICJuZXdTdGF0ZSIsICJyZXNvbHZlZFN0YXRlIiwgInNvcnRTdHJpbmciLCAiaXNPYmplY3RUeXBlIiwgImZvcndhcmRSZWYiLCAiUmVhY3QiLCAianN4IiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgImlzVmFsaWRFbGVtZW50IiwgIkNvbnRleHRNZW51UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudVN1YlRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImluc2V0IiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uUmlnaHQiLCAiQ29udGV4dE1lbnVTdWJDb250ZW50IiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiQ29udGV4dE1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJDaGVjayIsICJDb250ZXh0TWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiQ29udGV4dE1lbnVMYWJlbCIsICJDb250ZXh0TWVudVNlcGFyYXRvciIsICJDb250ZXh0TWVudVNob3J0Y3V0IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgInByb3BzIiwgImNoaWxkcmVuIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgImNvbnRlbnQiLCAiZXh0cmFjdFRleHRDb250ZW50IiwgImVycm9yIiwgIkNvcHkiLCAibm9kZSIsICJpc1ZhbGlkRWxlbWVudCIsICJqc3giLCAiQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImZvcndhcmRlZFByb3BzIiwgIlRhYmxlQ2VsbCIsICJjbiIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJqc3giLCAiQm9vbGVhbkNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJEYXRlQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkVtcHR5Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkVudW1DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJKU09OQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIk51bGxDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiTnVtZXJpY0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJSYXdDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiVGltZUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJqc3giLCAiZ2V0Q2VsbCIsICJjZWxsIiwgImNvbHVtbiIsICJwcm9wcyIsICJ2YWx1ZSIsICJFbXB0eUNlbGwiLCAiTnVsbENlbGwiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgIkpTT05DZWxsIiwgIlJhd0NlbGwiLCAiRW51bUNlbGwiLCAiQm9vbGVhbkNlbGwiLCAiRGF0ZUNlbGwiLCAiVGltZUNlbGwiLCAiTnVtZXJpY0NlbGwiLCAiaXNPYmplY3RUeXBlIiwgImZvcndhcmRSZWYiLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAianN4IiwgIlNlbGVjdEhlYWRlckNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAidGFibGUiLCAicmVhZG9ubHkiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInJlc3QiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAiZm9yd2FyZFJlZiIsICJGcmFnbWVudCIsICJqc3giLCAiU2VsZWN0Q2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImlzSGVhZGVyIiwgImZvcndhcmRlZFByb3BzIiwgInNlbGVjdENsYXNzZXMiLCAiY24iLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJqc3giLCAiU2VsZWN0Um93Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJyb3ciLCAicmVhZG9ubHkiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInJlc3QiLCAiU2VsZWN0Q2VsbCIsICJDaGVja2JveCIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyQ2VsbENvbnRleHQiLCAiUG9wb3ZlckNlbGwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAib3BlbiIsICJzZXRPcGVuIiwgIlBvcG92ZXJDZWxsVHJpZ2dlciIsICJvbkRvdWJsZUNsaWNrIiwgImNsYXNzTmFtZSIsICJyZWYiLCAidHJpZ2dlclJlZiIsICJub2RlIiwgImNuIiwgIlBvcG92ZXJDZWxsQ29udGVudCIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgImV2ZW50IiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImFjdGlvbnMiLCAiY29udGV4dCIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJoYW5kbGVLZXlEb3duIiwgImpzeCIsICJqc3hzIiwgIldyaXRlYWJsZUNlbGwiLCAicHJvcHMiLCAiY2VsbENvbXBvbmVudCIsICJpbnB1dENvbXBvbmVudCIsICJQb3BvdmVyQ2VsbCIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImNuIiwgImNsb3Nlc3RDZW50ZXIiLCAiRG5kQ29udGV4dCIsICJEcmFnT3ZlcmxheSIsICJLZXlib2FyZFNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJTb3J0YWJsZUNvbnRleHQiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZVNvcnRhYmxlIiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJDU1MiLCAibW90aW9uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJjcmVhdGVQb3J0YWwiLCAic2hvcnQiLCAiY29lcmNlVG9WYWx1ZSIsICJjb2x1bW4iLCAib3BlcmF0b3IiLCAidmFsdWUiLCAiZGF0YVR5cGVHcm91cCIsICJjb2VyY2VUb1N0cmluZyIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ1c2VTb3J0YWJsZSIsICJDU1MiLCAiZ2V0Q29yZVJvd01vZGVsIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0SXRlbSIsICJrZXkiLCAiaXRlbVZhbHVlIiwgImxvY2FsU3RvcmFnZSIsICJKU09OIiwgInBhcnNlIiwgInVzZUxvY2FsU3RvcmFnZSIsICJkZWZhdWx0VmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgImluaXRpYWxWYWx1ZSIsICJzZXR0ZXIiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlciIsICJvbGQiLCAibmV3VmFsIiwgInNldEl0ZW0iLCAic3RyaW5naWZ5IiwgImRlZmF1bHRUaGVtZSIsICJiYWNrZ3JvdW5kIiwgImJhY2tncm91bmRBbHQiLCAiZm9yZWdyb3VuZCIsICJncmF5IiwgImdyYXlBbHQiLCAiaW5wdXRCYWNrZ3JvdW5kQ29sb3IiLCAiaW5wdXRUZXh0Q29sb3IiLCAic3VjY2VzcyIsICJkYW5nZXIiLCAiYWN0aXZlIiwgIndhcm5pbmciLCAiVGhlbWVDb250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiVGhlbWVQcm92aWRlciIsICJfcmVmIiwgInRoZW1lIiwgInJlc3QiLCAiY3JlYXRlRWxlbWVudCIsICJQcm92aWRlciIsICJfZXh0ZW5kcyIsICJ1c2VUaGVtZSIsICJ1c2VDb250ZXh0IiwgInVzZU1lZGlhUXVlcnkiLCAicXVlcnkiLCAiaXNNYXRjaCIsICJzZXRJc01hdGNoIiwgIndpbmRvdyIsICJtYXRjaE1lZGlhIiwgIm1hdGNoZXMiLCAibWF0Y2hlciIsICJvbkNoYW5nZSIsICJhZGRMaXN0ZW5lciIsICJyZW1vdmVMaXN0ZW5lciIsICJpc1NlcnZlciIsICJzdHlsZWQiLCAidHlwZSIsICJuZXdTdHlsZXMiLCAicXVlcmllcyIsICJmb3J3YXJkUmVmIiwgInJlZiIsICJzdHlsZSIsICJtZWRpYVN0eWxlcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJyZWR1Y2UiLCAiY3VycmVudCIsICJfcmVmMiIsICJ1c2VJc01vdW50ZWQiLCAibW91bnRlZFJlZiIsICJ1c2VSZWYiLCAiaXNNb3VudGVkIiwgIlBhbmVsIiwgIl9wcm9wcyIsICJmb250U2l6ZSIsICJmb250RmFtaWx5IiwgImRpc3BsYXkiLCAiYmFja2dyb3VuZENvbG9yIiwgImNvbG9yIiwgImZsZXhEaXJlY3Rpb24iLCAiZmxleCIsICJvdmVyZmxvdyIsICJoZWlnaHQiLCAiKG1heC13aWR0aDogNzAwcHgpIiwgImJvcmRlclRvcCIsICJCdXR0b24iLCAicHJvcHMiLCAiYXBwZWFyYW5jZSIsICJmb250V2VpZ2h0IiwgImJvcmRlciIsICJib3JkZXJSYWRpdXMiLCAicGFkZGluZyIsICJvcGFjaXR5IiwgImRpc2FibGVkIiwgInVuZGVmaW5lZCIsICJjdXJzb3IiLCAibGluZUhlaWdodCIsICJXZWJraXRBcHBlYXJhbmNlIiwgImJhY2tncm91bmRJbWFnZSIsICJiYWNrZ3JvdW5kUmVwZWF0IiwgImJhY2tncm91bmRQb3NpdGlvbiIsICJiYWNrZ3JvdW5kU2l6ZSIsICJFbnRyeSIsICJvdXRsaW5lIiwgIndvcmRCcmVhayIsICJMYWJlbCIsICJWYWx1ZSIsICJTdWJFbnRyaWVzIiwgIm1hcmdpbkxlZnQiLCAicGFkZGluZ0xlZnQiLCAiYm9yZGVyTGVmdCIsICJJbmZvIiwgIkV4cGFuZGVyIiwgImV4cGFuZGVkIiwgInRyYW5zaXRpb24iLCAidHJhbnNmb3JtIiwgIkRlZmF1bHRSZW5kZXJlciIsICJoYW5kbGVFbnRyeSIsICJsYWJlbCIsICJzdWJFbnRyaWVzIiwgInN1YkVudHJ5UGFnZXMiLCAidG9nZ2xlIiwgInBhZ2VTaXplIiwgInJlbmRlcmVyIiwgInZhbHVlU25hcHNob3QiLCAic2V0VmFsdWVTbmFwc2hvdCIsICJleHBhbmRlZFBhZ2VzIiwgInNldEV4cGFuZGVkUGFnZXMiLCAicmVmcmVzaFZhbHVlU25hcHNob3QiLCAibGVuZ3RoIiwgIkZyYWdtZW50IiwgIm9uQ2xpY2siLCAiU3RyaW5nIiwgInRvTG93ZXJDYXNlIiwgIm1hcCIsICJlbnRyeSIsICJpbmRleCIsICJpbmNsdWRlcyIsICJmaWx0ZXIiLCAiZCIsICJFeHBsb3JlciIsICJkZWZhdWx0RXhwYW5kZWQiLCAiZ2V0T3duUHJvcGVydHlOYW1lcyIsICJfcmVmMyIsICJkZXB0aCIsICJzZXRFeHBhbmRlZCIsICJzZXQiLCAicGF0aCIsICJtYWtlUHJvcGVydHkiLCAic3ViIiwgIm5ld1BhdGgiLCAiY29uY2F0IiwgInN1YkRlZmF1bHRFeHBhbmRlZCIsICJzdWJQYXRoIiwgIkFycmF5IiwgImlzQXJyYXkiLCAiaSIsICJTeW1ib2wiLCAiaXRlcmF0b3IiLCAiZnJvbSIsICJ2YWwiLCAiX3JlZjQiLCAicHVzaCIsICJzbGljZSIsICJMb2dvIiwgIndpZHRoIiwgInZpZXdCb3giLCAidmVyc2lvbiIsICJzdHJva2UiLCAic3Ryb2tlV2lkdGgiLCAiZmlsbCIsICJmaWxsUnVsZSIsICJpZCIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiaW5pdGlhbElzT3BlbiIsICJ0YWJsZSIsICJwYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblByb3BzIiwgImNvbnRhaW5lckVsZW1lbnQiLCAiQ29udGFpbmVyIiwgInJvb3RSZWYiLCAicGFuZWxSZWYiLCAiaXNPcGVuIiwgInNldElzT3BlbiIsICJwYW5lbFN0eWxlIiwgIm90aGVyUGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25TdHlsZSIsICJvblRvZ2dsZUNsaWNrIiwgIm90aGVyVG9nZ2xlQnV0dG9uUHJvcHMiLCAiY2xhc3NOYW1lIiwgIlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIiwgIm1heEhlaWdodCIsICJlIiwgIm1hcmdpbiIsICJkYW5nZXJvdXNseVNldElubmVySFRNTCIsICJfX2h0bWwiLCAibWluSGVpZ2h0IiwgImJvcmRlclJpZ2h0IiwgImp1c3RpZnlDb250ZW50IiwgImFsaWduSXRlbXMiLCAibWFyZ2luUmlnaHQiLCAiZmxleFdyYXAiLCAib3ZlcmZsb3dZIiwgImdldFN0YXRlIiwgImdldEFsbENvbHVtbnMiLCAiZ2V0Q29yZVJvd01vZGVsIiwgImdldEZpbHRlcmVkUm93TW9kZWwiLCAiZ2V0U29ydGVkUm93TW9kZWwiLCAiZ2V0R3JvdXBlZFJvd01vZGVsIiwgImdldEV4cGFuZGVkUm93TW9kZWwiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJqc3giLCAiU2tlbGV0b24iLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgImNuIiwgImZsZXhSZW5kZXIiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlciIsICJwcm9wcyIsICJoZWFkZXIiLCAiY2xhc3NOYW1lIiwgImNuIiwgImZsZXhSZW5kZXIiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJNb3ZlRG93biIsICJNb3ZlVXAiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQnV0dG9uIiwgIkNoZXZyb25Eb3duIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgIkFycm93VXBXaWRlTmFycm93IiwgIlgiLCAiUGluT2ZmIiwgIlBpbiIsICJlIiwgImpzeCIsICJEYXRhR3JpZExvYWRpbmdCYXIiLCAiY2xhc3NOYW1lIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkUGFnaW5hdGlvbiIsICJwcm9wcyIsICJ0YWJsZSIsICJ2YXJpYW50IiwgInBhZ2VJbmRleCIsICJwYWdlQ291bnQiLCAiQnV0dG9uIiwgIkNoZXZyb25zTGVmdCIsICJDaGV2cm9uTGVmdCIsICJJbnB1dCIsICJlIiwgIkNoZXZyb25SaWdodCIsICJDaGV2cm9uc1JpZ2h0IiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiY29sdW1uIiwgImtpbmQiLCAiaXNQaW5uZWQiLCAiaXNMZWZ0UGlubmVkIiwgImlzUmlnaHRQaW5uZWQiLCAiaXNTZWxlY3RDb2x1bW4iLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRHJhZ2dhYmxlSGVhZGVyQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAiaGVhZGVyIiwgImNvbW1vblN0eWxlIiwgImRpc2FibGVEcmFnZ2luZyIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJzZXROb2RlUmVmIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAiZHJhZ1N0eWxlIiwgIkNTUyIsICJjb21tb25DbGFzcyIsICJjbiIsICJkcmFnQ2xhc3MiLCAiVGFibGVIZWFkIiwgIkRhdGFHcmlkIiwgImNvbHVtbkRlZnMiLCAiZ2V0QmVmb3JlUm93cyIsICJpc0xvYWRpbmciLCAiaXNQcm9jZXNzaW5nIiwgIm9uUGFnaW5hdGlvbkNoYW5nZSIsICJvblJvd1NlbGVjdGlvbkNoYW5nZSIsICJvblNvcnRpbmdDaGFuZ2UiLCAicGFnZUNvdW50IiwgInBhZ2luYXRpb25TdGF0ZSIsICJyb3dzIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNvcnRpbmdTdGF0ZSIsICJjb2x1bW5PcmRlciIsICJzZXRDb2x1bW5PcmRlciIsICJ1c2VTdGF0ZSIsICJjb2x1bW5QaW5uaW5nIiwgInNldENvbHVtblBpbm5pbmciLCAiY29sdW1uU2l6aW5nIiwgInNldENvbHVtblNpemluZyIsICJzb3J0aW5nIiwgInVzZU1lbW8iLCAidG9Tb3J0aW5nU3RhdGUiLCAiZGlzcGxheUxvYWRlciIsICJ1c2VFZmZlY3QiLCAiYWNjZXNzb3JLZXkiLCAiaGFuZGxlRHJhZ0VuZCIsICJhY3RpdmUiLCAib3ZlciIsICJvcmRlciIsICJhY3RpdmVJbmRleCIsICJvdmVySW5kZXgiLCAiYXJyYXlNb3ZlIiwgIm1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJNb3VzZVNlbnNvciIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRDb3JlUm93TW9kZWwiLCAiX19wc19yb3dpZCIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAidG9Tb3J0T3JkZXJJdGVtcyIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgIkRuZENvbnRleHQiLCAiVGFibGUiLCAiVGFibGVIZWFkZXIiLCAiaGVhZGVyR3JvdXAiLCAiVGFibGVSb3ciLCAiU29ydGFibGVDb250ZXh0IiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgImhlYWRlckZuIiwgIkhlYWRlckNvbXBvbmVudCIsICJwaW5uaW5nU3R5bGVzIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiRGF0YUdyaWRIZWFkZXIiLCAiVGFibGVCb2R5IiwgInJvdyIsICJjZWxsIiwgImkiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgIlRvb2x0aXBQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImNsYXNzTmFtZSIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiY29sdW1uIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIktleVJvdW5kIiwgIlRvb2x0aXBDb250ZW50IiwgImlzT2JqZWN0VHlwZSIsICJtb3Rpb24iLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiTGFiZWxQcmltaXRpdmUiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJsYWJlbFZhcmlhbnRzIiwgImN2YSIsICJMYWJlbCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlN3aXRjaFByaW1pdGl2ZXMiLCAiUmVhY3QiLCAianN4IiwgIlN3aXRjaCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIklucHV0QWN0aW9ucyIsICJvblNhdmUiLCAib25DYW5jZWwiLCAib25DbG9zZSIsICJvbk51bGxDaGFuZ2UiLCAiaXNOdWxsIiwgInJlYWRvbmx5IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkRheVBpY2tlciIsICJqc3giLCAiQ2FsZW5kYXIiLCAiY2xhc3NOYW1lIiwgImNsYXNzTmFtZXMiLCAic2hvd091dHNpZGVEYXlzIiwgInByb3BzIiwgIkRheVBpY2tlciIsICJjbiIsICJidXR0b25WYXJpYW50cyIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaW5pdGlhbFZhbHVlIiwgInBhcnNlZEluaXRpYWxEYXRlIiwgInVzZU1lbW8iLCAicGFyc2VkIiwgInNlbGVjdGVkRGF0ZSIsICJzZXRTZWxlY3RlZERhdGUiLCAidXNlU3RhdGUiLCAiY3VycmVudE1vbnRoIiwgInNldEN1cnJlbnRNb250aCIsICJiYXNlSGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJzZXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJoYW5kbGVPbkNoYW5nZSIsICJldmVudCIsICJuZXdWYWx1ZSIsICJuZXdEYXRlIiwgImhhbmRsZUNhbGVuZGFyU2VsZWN0IiwgImRhdGUiLCAiY29sdW1uVHlwZSIsICJkYkZvcm1hdCIsICJnZXRGb3JtYXRGb3JUeXBlIiwgInR5cGUiLCAiZm9ybWF0dGVkRGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiaGFuZGxlU2V0Tm93IiwgImUiLCAibm93IiwgIm1vbnRocyIsICJjdXJyZW50TW9udGhWYWx1ZSIsICJ5ZWFyVmFsdWUiLCAic2V0WWVhclZhbHVlIiwgImhhbmRsZU1vbnRoQ2hhbmdlIiwgIm5ld01vbnRoIiwgIm5ld1NlbGVjdGVkRGF0ZSIsICJoYW5kbGVZZWFyQ2hhbmdlIiwgIm5ld1llYXIiLCAieWVhciIsICJ1c2VFZmZlY3QiLCAiSW5wdXQiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJtb250aCIsICJTZWxlY3RJdGVtIiwgIkRheVBpY2tlcldyYXBwZXIiLCAiSW5wdXRBY3Rpb25zIiwgInNlbGVjdGVkIiwgIm9uU2VsZWN0IiwgIm9uTW9udGhDaGFuZ2UiLCAiZGlzYWJsZWQiLCAiQ2FsZW5kYXIiLCAidXNlQ2FsbGJhY2siLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRW51bUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJ2YWx1ZSIsICJvcHRpb25zIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVTZWxlY3RPcHRpb24iLCAib3B0aW9uIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYmFkZ2VWYXJpYW50cyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSnNvbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImpzb25WYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIk51bWVyaWNJbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJudW1lcmljVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIkxhYmVsIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJSYXdJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VNZW1vIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJUaW1lSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiZm9ybWF0dGVkVGltZSIsICJ1c2VNZW1vIiwgImhhc1RpbWV6b25lIiwgImRhdGUiLCAidGltZVJlZ2V4IiwgIm1hdGNoIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAidHpPZmZzZXQiLCAicGVyaW9kIiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAianN4IiwgImdldElucHV0IiwgInByb3BzIiwgImNlbGwiLCAiY29sdW1uIiwgIm9uU3VibWl0IiwgImdyb3VwIiwgIm9wdGlvbnMiLCAiaXNBcnJheSIsICJyZWFkb25seSIsICJjZWxsVmFsdWUiLCAidmFsdWUiLCAiRGF0ZUlucHV0IiwgIlRpbWVJbnB1dCIsICJKc29uSW5wdXQiLCAiQm9vbGVhbklucHV0IiwgIkVudW1JbnB1dCIsICJOdW1lcmljSW5wdXQiLCAiUmF3SW5wdXQiLCAiaXNPYmplY3RUeXBlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJGcmFnbWVudCIsICJqc3giLCAiU3RhZ2VkUm93cyIsICJwcm9wcyIsICJwYXJlbnRUYWJsZSIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAicmVhZG9ubHkiLCAidXNlSXNJbnNlcnRpbmciLCAidXBkYXRlU3RhZ2VkUm93IiwgInJvd0luZGV4IiwgInBhcnRpYWxSb3ciLCAicHJldlJvd3MiLCAibmV3Um93cyIsICJjb2x1bW5EZWZzIiwgImNvbHVtbiIsICJFbXB0eUNlbGwiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmFsdWUiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgInJvdyIsICJpIiwgIlRhYmxlUm93IiwgImoiLCAiQ2VsbCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkFjdGl2ZVRhYmxlVmlldyIsICJfcHJvcHMiLCAiaXNNdXRhdGluZyIsICJ1c2VJc011dGF0aW5nIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAiaXNGdWxsc2NyZWVuIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInVzZVN0dWRpbyIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVNvcnRpbmciLCAicGFnaW5hdGlvblN0YXRlIiwgInNldFBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJ1c2VTdGF0ZSIsICJhcHBsaWVkRmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInRvdGFsRWRpdGluZ0ZpbHRlcnMiLCAidXNlRmlsdGVyaW5nIiwgImRhdGEiLCAiaXNGZXRjaGluZyIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJpc1NlbGVjdGluZyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTZWxlY3Rpb24iLCAicmVhZG9ubHkiLCAiY29sdW1uIiwgImlzSW5zZXJ0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgImluc2VydCIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJ1cGRhdGUiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAidXNlRWZmZWN0IiwgInNhdmVTdGFnZWRSb3dzIiwgInRvYXN0IiwgIm5ld1N0YWdlZFJvdyIsICJvbGQiLCAiZHJvcFN0YWdlZFJvd3MiLCAiaGFuZGxlQ2VsbElucHV0U3VibWl0IiwgInZhbHVlIiwgInJvdyIsICJvbkZpbHRlck9wZW5DaGFuZ2UiLCAib3BlbiIsICJjb25jcmV0ZUNvbHVtbkRlZnMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNlbGwiLCAicHJvcHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZpcnR1YWxDb2x1bW5EZWZzIiwgInRhYmxlIiwgIlNlbGVjdEhlYWRlckNlbGwiLCAiU2VsZWN0Um93Q2VsbCIsICJjb2x1bW5EZWZzIiwgImRlZmF1bHRDb2x1bW5Tb3J0aW5nIiwgIkJ1dHRvbiIsICJQYW5lbExlZnRDbG9zZSIsICJQYW5lbExlZnRPcGVuIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiY24iLCAiRmlsdGVyIiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiRmlsdGVyVHJlZSIsICJmaWx0ZXIiLCAiTWluaW1pemUiLCAiTWF4aW1pemUiLCAiRGF0YUdyaWQiLCAiU3RhZ2VkUm93cyIsICJnZXRQYWdlQ291bnQiLCAicm93Q291bnQiLCAicGFnZVNpemUiLCAicGFnZUNvdW50IiwgImEiLCAiYiIsICJhTWV0YSIsICJiTWV0YSIsICJTbG90IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInV1aWR2NCIsICJ1c2VRdWVyeSIsICJJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInNpZ25hbCIsICJlcnJvciIsICJpbnRyb3NwZWN0aW9uIiwgImN0eCIsICJ1c2VBY3RpdmVUYWJsZSIsICJhY3RpdmVUYWJsZSIsICJzZXRBY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VTdHVkaW8iLCAiaW50cm9zcGVjdGlvbiIsICJkYXRhVXBkYXRlZEF0IiwgInVzZUludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInRhYmxlcyIsICJ1c2VNZW1vIiwgInRvdGFsVGFibGVDb3VudCIsICJzdW0iLCAic2NoZW1hIiwgImZpcnN0VGFibGUiLCAidGFibGVBbmRTY2hlbWEiLCAic2V0VGFibGVBbmRTY2hlbWEiLCAidXNlUXVlcnlTdGF0ZXMiLCAidiIsICJzZXRQYWdlUGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJzZXRTb3J0UGFyYW0iLCAidXNlRWZmZWN0IiwgInRhYmxlRnJvbVBhcmFtIiwgInQiLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQ2FsbGJhY2siLCAibmV3VGFibGUiLCAidXVpZHY0IiwgImpzeCIsICJqc3hzIiwgIk5hdmlnYXRpb24iLCAiY2xhc3NOYW1lIiwgInRhYmxlcyIsICJhY3RpdmVUYWJsZSIsICJpc0xvYWRpbmciLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQWN0aXZlVGFibGUiLCAic2lkZUJhckNsYXNzZXMiLCAiY24iLCAidGFibGUiLCAiXyIsICJpbmRleCIsICJTa2VsZXRvbiIsICJCbG9jayIsICJsYWJlbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJUYWJsZTIiLCAiSXRlbSIsICJhc0NoaWxkIiwgImlzQWN0aXZlIiwgInNpemUiLCAid3JhcENoaWxkcmVuSW5TcGFuIiwgIlNsb3QiLCAianN4IiwgImpzeHMiLCAiU3R1ZGlvIiwgInByb3BzIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJvblRlbGVtZXRyeUV2ZW50IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJTdHVkaW9Db250ZW50IiwgImlzRnVsbHNjcmVlbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInVzZVN0dWRpbyIsICJjb250YWluZXJDbGFzc2VzIiwgImNuIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTmF2aWdhdGlvbiIsICJBY3RpdmVUYWJsZVZpZXciXQp9Cg==
|