diff --git a/packages/theme/dist/index.js b/packages/theme/dist/index.js index 2e4c0ab..528e673 100644 --- a/packages/theme/dist/index.js +++ b/packages/theme/dist/index.js @@ -1 +1 @@ -"use strict";var e,r=Object.create,a=Object.defineProperty,t=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,n=(e,r)=>a(e,"name",{value:r,configurable:!0}),o=(e,r,i,n)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let o of s(r))!l.call(e,o)&&o!==i&&a(e,o,{get:()=>r[o],enumerable:!(n=t(r,o))||n.enumerable});return e},d=(e,t,s)=>(s=null!=e?r(i(e)):{},o(!t&&e&&e.__esModule?s:a(s,"default",{value:e,enumerable:!0}),e)),c={};((e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})})(c,{Breadcrumbs:()=>ee,CloneButton:()=>k,Combobox:()=>Xa,ConfirmDialog:()=>et,CreateButton:()=>D,CreatePage:()=>ss,DefaultLayout:()=>As,DeleteActionModal:()=>ri,DeleteButton:()=>wt,DeleteContext:()=>ai,DeleteProvider:()=>ti,EditButton:()=>kt,EditPage:()=>os,ExportButton:()=>Tt,Field:()=>tt,Form:()=>nt,ImportButton:()=>At,Link:()=>J,ListButton:()=>Vt,ListPage:()=>ms,ModeToggle:()=>ut,PageHeader:()=>xt,RefreshButton:()=>Ut,SaveButton:()=>Xt,Select:()=>ht,ShowButton:()=>es,ShowPage:()=>js,Sidebar:()=>Nt,Table:()=>Yi,notificationProvider:()=>Os,useNotificationProvider:()=>Es}),module.exports=(e=c,o(a({},"__esModule",{value:!0}),e));var u=require("@radix-ui/react-slot"),m=require("class-variance-authority"),x=d(require("react")),f=require("clsx"),p=require("tailwind-merge");function h(...e){return(0,p.twMerge)((0,f.clsx)(e))}n(h,"cn");var g=require("lucide-react"),j=d(require("react")),b=require("react/jsx-runtime"),v=j.default.forwardRef((({className:e,...r},a)=>(0,b.jsx)(g.RefreshCwIcon,{ref:a,className:h("h-4 w-4 animate-spin",e),...r}))),N=require("react/jsx-runtime"),y=(0,m.cva)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),w=x.forwardRef((({className:e,variant:r,size:a,icon:t=null,loading:s=!1,asChild:i=!1,children:l,disabled:n,...o},d)=>{n=n||s;let c=x.useMemo((()=>x.isValidElement(t)?t:s?(0,N.jsx)(v,{className:"mr-2"}):null),[t,s]);return(0,N.jsx)(i?u.Slot:"button",{className:h(y({variant:r,size:a,className:e})),ref:d,disabled:n,...o,children:"icon"===a?s?(0,N.jsx)(v,{}):l:(0,N.jsxs)(N.Fragment,{children:[c,l]})})}));w.displayName="Button";var C=require("@refinedev/core"),q=require("lucide-react"),S=require("react/jsx-runtime"),k=n((({resource:e,recordItemId:r,hideText:a=!1,accessControl:t,meta:s,onClick:i,children:l,...n})=>{let{to:o,LinkComponent:d,label:c,disabled:u,hidden:m,title:x}=(0,C.useCloneButton)({id:r,resource:e,accessControl:t,meta:s});return m?null:(0,S.jsx)(d,{to:o,replace:!1,onClick:e=>{u?e.preventDefault():i&&(e.preventDefault(),i(e))},children:(0,S.jsx)(w,{disabled:u,title:x,icon:(0,S.jsx)(q.CopyPlus,{className:"mr-2 w-4 h-4"}),...n,children:!a&&(l??c)})})}),"CloneButton");k.displayName="CloneButton";var R=require("@refinedev/core"),I=require("lucide-react"),z=require("react/jsx-runtime"),D=n((({resource:e,hideText:r=!1,accessControl:a,meta:t,onClick:s,children:i,...l})=>{let{hidden:n,disabled:o,label:d,title:c,LinkComponent:u,to:m}=(0,R.useCreateButton)({resource:e,accessControl:a,meta:t});return n?null:(0,z.jsx)(u,{to:m,replace:!1,onClick:e=>{o?e.preventDefault():s&&(e.preventDefault(),s(e))},children:(0,z.jsx)(w,{disabled:o,title:c,icon:(0,z.jsx)(I.SquarePlusIcon,{className:"mr-2 w-4 h-4"}),...l,children:!r&&(i??d)})})}),"CreateButton");D.displayName="CreateButton";var T=require("@refinedev/core"),B=require("lucide-react"),F=d(require("react")),P=require("@radix-ui/react-icons"),L=require("@radix-ui/react-slot"),A=require("react/jsx-runtime"),M=F.forwardRef((({...e},r)=>(0,A.jsx)("nav",{ref:r,"aria-label":"breadcrumb",...e})));M.displayName="Breadcrumb";var O=F.forwardRef((({className:e,...r},a)=>(0,A.jsx)("ol",{ref:a,className:h("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",e),...r})));O.displayName="BreadcrumbList";var E=F.forwardRef((({className:e,...r},a)=>(0,A.jsx)("li",{ref:a,className:h("inline-flex items-center gap-1.5",e),...r})));E.displayName="BreadcrumbItem";var V=F.forwardRef((({asChild:e,className:r,...a},t)=>(0,A.jsx)(e?L.Slot:"a",{ref:t,className:h("transition-colors hover:text-foreground",r),...a})));V.displayName="BreadcrumbLink";var _=F.forwardRef((({className:e,...r},a)=>(0,A.jsx)("span",{ref:a,role:"link","aria-disabled":"true","aria-current":"page",className:h("font-normal text-foreground",e),...r})));_.displayName="BreadcrumbPage";var H=n((({children:e,className:r,...a})=>(0,A.jsx)("li",{role:"presentation","aria-hidden":"true",className:h("[&>svg]:size-3.5",r),...a,children:e??(0,A.jsx)(P.ChevronRightIcon,{})})),"BreadcrumbSeparator");H.displayName="BreadcrumbSeparator";var $=n((({className:e,...r})=>(0,A.jsxs)("span",{role:"presentation","aria-hidden":"true",className:h("flex h-9 w-9 items-center justify-center",e),...r,children:[(0,A.jsx)(P.DotsHorizontalIcon,{className:"h-4 w-4"}),(0,A.jsx)("span",{className:"sr-only",children:"More"})]})),"BreadcrumbEllipsis");$.displayName="BreadcrumbElipssis";var U=require("@refinedev/core"),Q=require("react"),G=require("@radix-ui/react-slot"),W=require("@refinedev/core"),K=require("react"),X=require("react/jsx-runtime"),J=(0,K.forwardRef)((({children:e,href:r,title:a,className:t,asChild:s},i)=>{let{Link:l}=(0,W.useRouterContext)(),n=(0,W.useRouterType)(),o=(0,W.useLink)();return(0,X.jsx)(s?G.Slot:"legacy"===n?l:o,{ref:i,to:r,className:t,title:a,children:e})}));J.displayName="Link";var Y=require("lucide-react"),Z=require("react/jsx-runtime"),ee=n((({showHome:e=!0,meta:r})=>{let{breadcrumbs:a}=(0,U.useBreadcrumb)({meta:r}),{hasDashboard:t}=(0,U.useRefineContext)(),{resources:s}=(0,U.useResource)(),i=s[0],l=(0,U.matchResourceFromRoute)("/",s),n=a.map((({label:e,href:r},t)=>(0,Z.jsxs)(Q.Fragment,{children:[(0,Z.jsx)(E,{children:r?(0,Z.jsx)(V,{asChild:!0,href:"#x",children:(0,Z.jsx)(J,{href:r,children:e})}):(0,Z.jsx)(_,{children:e})}),t(0,se.jsx)(ae.Overlay,{className:h("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...r,ref:a})));oe.displayName=ae.Overlay.displayName;var de=te.forwardRef((({className:e,...r},a)=>(0,se.jsxs)(ne,{children:[(0,se.jsx)(oe,{}),(0,se.jsx)(ae.Content,{ref:a,className:h("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r})]})));de.displayName=ae.Content.displayName;var ce=n((({className:e,...r})=>(0,se.jsx)("div",{className:h("flex flex-col space-y-2 text-center sm:text-left",e),...r})),"AlertDialogHeader");ce.displayName="AlertDialogHeader";var ue=n((({className:e,...r})=>(0,se.jsx)("div",{className:h("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...r})),"AlertDialogFooter");ue.displayName="AlertDialogFooter";var me=te.forwardRef((({className:e,...r},a)=>(0,se.jsx)(ae.Title,{ref:a,className:h("text-lg font-semibold",e),...r})));me.displayName=ae.Title.displayName;var xe=te.forwardRef((({className:e,...r},a)=>(0,se.jsx)(ae.Description,{ref:a,className:h("text-sm text-muted-foreground",e),...r})));xe.displayName=ae.Description.displayName;var fe=te.forwardRef((({className:e,variant:r="default",size:a="default",...t},s)=>(0,se.jsx)(ae.Action,{ref:s,className:h(y({variant:r,size:a}),e),...t})));fe.displayName=ae.Action.displayName;var pe=te.forwardRef((({className:e,variant:r="outline",size:a="default",...t},s)=>(0,se.jsx)(ae.Cancel,{ref:s,className:h(y({variant:r,size:a}),"mt-2 sm:mt-0",e),...t})));pe.displayName=ae.Cancel.displayName;var he=require("class-variance-authority"),ge=require("react/jsx-runtime"),je=(0,he.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function be({className:e,variant:r,...a}){return(0,ge.jsx)("div",{className:h(je({variant:r}),e),...a})}n(be,"Badge");var ve=require("@radix-ui/react-icons"),Ne=require("react-day-picker"),ye=require("react/jsx-runtime");function we({className:e,classNames:r,showOutsideDays:a=!0,...t}){return(0,ye.jsx)(Ne.DayPicker,{showOutsideDays:a,className:h("p-3",e),classNames:{months:"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",month:"space-y-4",caption:"flex justify-center pt-1 relative items-center",caption_label:"text-sm font-medium",nav:"space-x-1 flex items-center",nav_button:h(y({variant:"outline"}),"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-y-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:h("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md","range"===t.mode?"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md":"[&:has([aria-selected])]:rounded-md"),day:h(y({variant:"ghost"}),"h-8 w-8 p-0 font-normal aria-selected:opacity-100"),day_range_start:"day-range-start",day_range_end:"day-range-end",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...r},components:{IconLeft:n((()=>(0,ye.jsx)(ve.ChevronLeftIcon,{className:"h-4 w-4"})),"IconLeft"),IconRight:n((()=>(0,ye.jsx)(ve.ChevronRightIcon,{className:"h-4 w-4"})),"IconRight")},...t})}n(we,"Calendar"),we.displayName="Calendar";var Ce=d(require("react")),qe=require("react/jsx-runtime"),Se=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("rounded-xl border bg-card text-card-foreground shadow",e),...r})));Se.displayName="Card";var ke=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("flex flex-col space-y-1.5 p-6",e),...r})));ke.displayName="CardHeader";var Re=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("h3",{ref:a,className:h("font-semibold leading-none tracking-tight",e),...r})));Re.displayName="CardTitle";var Ie=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("p",{ref:a,className:h("text-sm text-muted-foreground",e),...r})));Ie.displayName="CardDescription";var ze=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("p-6 pt-0",e),...r})));ze.displayName="CardContent";var De=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("flex items-center p-6 pt-0",e),...r})));De.displayName="CardFooter";var Te=d(require("react")),Be=d(require("@radix-ui/react-checkbox")),Fe=require("@radix-ui/react-icons"),Pe=require("react/jsx-runtime"),Le=Te.forwardRef((({className:e,...r},a)=>(0,Pe.jsx)(Be.Root,{ref:a,className:h("peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...r,children:(0,Pe.jsx)(Be.Indicator,{className:h("flex items-center justify-center text-current"),children:(0,Pe.jsx)(Fe.CheckIcon,{className:"h-4 w-4"})})})));Le.displayName=Be.Root.displayName;var Ae=d(require("react")),Me=require("@radix-ui/react-icons"),Oe=require("cmdk"),Ee=d(require("react")),Ve=d(require("@radix-ui/react-dialog")),_e=require("@radix-ui/react-icons"),He=require("react/jsx-runtime"),$e=Ve.Portal,Ue=Ee.forwardRef((({className:e,...r},a)=>(0,He.jsx)(Ve.Overlay,{ref:a,className:h("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...r})));Ue.displayName=Ve.Overlay.displayName;var Qe=Ee.forwardRef((({className:e,children:r,...a},t)=>(0,He.jsxs)($e,{children:[(0,He.jsx)(Ue,{}),(0,He.jsxs)(Ve.Content,{ref:t,className:h("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...a,children:[r,(0,He.jsxs)(Ve.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,He.jsx)(_e.Cross2Icon,{className:"h-4 w-4"}),(0,He.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})));Qe.displayName=Ve.Content.displayName;var Ge=n((({className:e,...r})=>(0,He.jsx)("div",{className:h("flex flex-col space-y-1.5 text-center sm:text-left",e),...r})),"DialogHeader");Ge.displayName="DialogHeader";var We=n((({className:e,...r})=>(0,He.jsx)("div",{className:h("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...r})),"DialogFooter");We.displayName="DialogFooter";var Ke=Ee.forwardRef((({className:e,...r},a)=>(0,He.jsx)(Ve.Title,{ref:a,className:h("text-lg font-semibold leading-none tracking-tight",e),...r})));Ke.displayName=Ve.Title.displayName;var Xe=Ee.forwardRef((({className:e,...r},a)=>(0,He.jsx)(Ve.Description,{ref:a,className:h("text-sm text-muted-foreground",e),...r})));Xe.displayName=Ve.Description.displayName;var Je=require("react/jsx-runtime"),Ye=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command,{ref:a,className:h("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...r})));Ye.displayName=Oe.Command.displayName;var Ze=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,Je.jsx)(Me.MagnifyingGlassIcon,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),(0,Je.jsx)(Oe.Command.Input,{ref:a,className:h("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...r})]})));Ze.displayName=Oe.Command.Input.displayName;var er=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.List,{ref:a,className:h("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...r})));er.displayName=Oe.Command.List.displayName;var rr=Ae.forwardRef(((e,r)=>(0,Je.jsx)(Oe.Command.Empty,{ref:r,className:"py-6 text-center text-sm",...e})));rr.displayName=Oe.Command.Empty.displayName;var ar=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.Group,{ref:a,className:h("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...r})));ar.displayName=Oe.Command.Group.displayName;var tr=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.Separator,{ref:a,className:h("-mx-1 h-px bg-border",e),...r})));tr.displayName=Oe.Command.Separator.displayName;var sr=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.Item,{ref:a,className:h("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50",e),...r})));sr.displayName=Oe.Command.Item.displayName;var ir=n((({className:e,...r})=>(0,Je.jsx)("span",{className:h("ml-auto text-xs tracking-widest text-muted-foreground",e),...r})),"CommandShortcut");ir.displayName="CommandShortcut";var lr=d(require("react")),nr=d(require("@radix-ui/react-dropdown-menu")),or=require("@radix-ui/react-icons"),dr=require("react/jsx-runtime"),cr=nr.Root,ur=nr.Trigger,mr=lr.forwardRef((({className:e,inset:r,children:a,...t},s)=>(0,dr.jsxs)(nr.SubTrigger,{ref:s,className:h("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",r&&"pl-8",e),...t,children:[a,(0,dr.jsx)(or.ChevronRightIcon,{className:"ml-auto h-4 w-4"})]})));mr.displayName=nr.SubTrigger.displayName;var xr=lr.forwardRef((({className:e,...r},a)=>(0,dr.jsx)(nr.SubContent,{ref:a,className:h("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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),...r})));xr.displayName=nr.SubContent.displayName;var fr=lr.forwardRef((({className:e,sideOffset:r=4,...a},t)=>(0,dr.jsx)(nr.Portal,{children:(0,dr.jsx)(nr.Content,{ref:t,sideOffset:r,className:h("z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md","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),...a})})));fr.displayName=nr.Content.displayName;var pr=lr.forwardRef((({className:e,inset:r,...a},t)=>(0,dr.jsx)(nr.Item,{ref:t,className:h("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r&&"pl-8",e),...a})));pr.displayName=nr.Item.displayName;var hr=lr.forwardRef((({className:e,children:r,checked:a,...t},s)=>(0,dr.jsxs)(nr.CheckboxItem,{ref:s,className:h("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:a,...t,children:[(0,dr.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,dr.jsx)(nr.ItemIndicator,{children:(0,dr.jsx)(or.CheckIcon,{className:"h-4 w-4"})})}),r]})));hr.displayName=nr.CheckboxItem.displayName;var gr=lr.forwardRef((({className:e,children:r,...a},t)=>(0,dr.jsxs)(nr.RadioItem,{ref:t,className:h("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...a,children:[(0,dr.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,dr.jsx)(nr.ItemIndicator,{children:(0,dr.jsx)(or.DotFilledIcon,{className:"h-4 w-4 fill-current"})})}),r]})));gr.displayName=nr.RadioItem.displayName;var jr=lr.forwardRef((({className:e,inset:r,...a},t)=>(0,dr.jsx)(nr.Label,{ref:t,className:h("px-2 py-1.5 text-sm font-semibold",r&&"pl-8",e),...a})));jr.displayName=nr.Label.displayName;var br=lr.forwardRef((({className:e,...r},a)=>(0,dr.jsx)(nr.Separator,{ref:a,className:h("-mx-1 my-1 h-px bg-muted",e),...r})));br.displayName=nr.Separator.displayName;var vr=n((({className:e,...r})=>(0,dr.jsx)("span",{className:h("ml-auto text-xs tracking-widest opacity-60",e),...r})),"DropdownMenuShortcut");vr.displayName="DropdownMenuShortcut";var Nr=d(require("react")),yr=require("@radix-ui/react-slot"),wr=require("react-hook-form"),Cr=d(require("react")),qr=d(require("@radix-ui/react-label")),Sr=require("class-variance-authority"),kr=require("react/jsx-runtime"),Rr=(0,Sr.cva)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Ir=Cr.forwardRef((({className:e,...r},a)=>(0,kr.jsx)(qr.Root,{ref:a,className:h(Rr(),e),...r})));Ir.displayName=qr.Root.displayName;var zr=require("react/jsx-runtime"),Dr=wr.FormProvider,Tr=Nr.createContext({}),Br=n((({...e})=>(0,zr.jsx)(Tr.Provider,{value:{name:e.name},children:(0,zr.jsx)(wr.Controller,{...e})})),"FormField"),Fr=n((()=>{let e=Nr.useContext(Tr),r=Nr.useContext(Pr),{getFieldState:a,formState:t}=(0,wr.useFormContext)(),s=a(e.name,t);if(!e)throw new Error("useFormField should be used within ");let{id:i}=r;return{id:i,name:e.name,formItemId:`${i}-form-item`,formDescriptionId:`${i}-form-item-description`,formMessageId:`${i}-form-item-message`,...s}}),"useFormField"),Pr=Nr.createContext({}),Lr=Nr.forwardRef((({className:e,...r},a)=>{let t=Nr.useId();return(0,zr.jsx)(Pr.Provider,{value:{id:t},children:(0,zr.jsx)("div",{ref:a,className:h("space-y-2",e),...r})})}));Lr.displayName="FormItem";var Ar=Nr.forwardRef((({className:e,...r},a)=>{let{error:t,formItemId:s}=Fr();return(0,zr.jsx)(Ir,{ref:a,className:h(t&&"text-destructive",e),htmlFor:s,...r})}));Ar.displayName="FormLabel";var Mr=Nr.forwardRef((({...e},r)=>{let{error:a,formItemId:t,formDescriptionId:s,formMessageId:i}=Fr();return(0,zr.jsx)(yr.Slot,{ref:r,id:t,"aria-describedby":a?`${s} ${i}`:`${s}`,"aria-invalid":!!a,...e})}));Mr.displayName="FormControl";var Or=Nr.forwardRef((({className:e,...r},a)=>{let{formDescriptionId:t}=Fr();return(0,zr.jsx)("p",{ref:a,id:t,className:h("text-[0.8rem] text-muted-foreground",e),...r})}));Or.displayName="FormDescription";var Er=Nr.forwardRef((({className:e,children:r,...a},t)=>{let{error:s,formMessageId:i}=Fr(),l=s?String(s?.message):r;return l?(0,zr.jsx)("p",{ref:t,id:i,className:h("text-[0.8rem] font-medium text-destructive",e),...a,children:l}):null}));Er.displayName="FormMessage";var Vr=d(require("react")),_r=require("react/jsx-runtime"),Hr=Vr.forwardRef((({className:e,type:r,...a},t)=>(0,_r.jsx)("input",{type:r,className:h("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",e),ref:t,...a})));Hr.displayName="Input";var $r=d(require("react")),Ur=d(require("@radix-ui/react-popover")),Qr=require("react/jsx-runtime"),Gr=Ur.Root,Wr=Ur.Trigger,Kr=$r.forwardRef((({className:e,align:r="center",sideOffset:a=4,...t},s)=>(0,Qr.jsx)(Ur.Portal,{children:(0,Qr.jsx)(Ur.Content,{ref:s,align:r,sideOffset:a,className:h("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md 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),...t})})));Kr.displayName=Ur.Content.displayName;var Xr=require("@radix-ui/react-icons"),Jr=d(require("react-resizable-panels")),Yr=require("react/jsx-runtime"),Zr=n((({className:e,...r})=>(0,Yr.jsx)(Jr.PanelGroup,{className:h("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",e),...r})),"ResizablePanelGroup"),ea=Jr.Panel,ra=n((({withHandle:e,className:r,...a})=>(0,Yr.jsx)(Jr.PanelResizeHandle,{className:h("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",r),...a,children:e&&(0,Yr.jsx)("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:(0,Yr.jsx)(Xr.DragHandleDots2Icon,{className:"h-2.5 w-2.5"})})})),"ResizableHandle"),aa=d(require("react")),ta=d(require("@radix-ui/react-scroll-area")),sa=require("react/jsx-runtime"),ia=aa.forwardRef((({className:e,children:r,...a},t)=>(0,sa.jsxs)(ta.Root,{ref:t,className:h("relative overflow-hidden",e),...a,children:[(0,sa.jsx)(ta.Viewport,{className:"h-full w-full rounded-[inherit]",children:r}),(0,sa.jsx)(la,{}),(0,sa.jsx)(ta.Corner,{})]})));ia.displayName=ta.Root.displayName;var la=aa.forwardRef((({className:e,orientation:r="vertical",...a},t)=>(0,sa.jsx)(ta.ScrollAreaScrollbar,{ref:t,orientation:r,className:h("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...a,children:(0,sa.jsx)(ta.ScrollAreaThumb,{className:"relative flex-1 rounded-full bg-border"})})));la.displayName=ta.ScrollAreaScrollbar.displayName;var na=d(require("react")),oa=require("@radix-ui/react-icons"),da=d(require("@radix-ui/react-select")),ca=require("react/jsx-runtime"),ua=da.Root,ma=da.Value,xa=na.forwardRef((({className:e,children:r,...a},t)=>(0,ca.jsxs)(da.Trigger,{ref:t,className:h("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...a,children:[r,(0,ca.jsx)(da.Icon,{asChild:!0,children:(0,ca.jsx)(oa.CaretSortIcon,{className:"h-4 w-4 opacity-50"})})]})));xa.displayName=da.Trigger.displayName;var fa=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.ScrollUpButton,{ref:a,className:h("flex cursor-default items-center justify-center py-1",e),...r,children:(0,ca.jsx)(oa.ChevronUpIcon,{})})));fa.displayName=da.ScrollUpButton.displayName;var pa=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.ScrollDownButton,{ref:a,className:h("flex cursor-default items-center justify-center py-1",e),...r,children:(0,ca.jsx)(oa.ChevronDownIcon,{})})));pa.displayName=da.ScrollDownButton.displayName;var ha=na.forwardRef((({className:e,children:r,position:a="popper",...t},s)=>(0,ca.jsx)(da.Portal,{children:(0,ca.jsxs)(da.Content,{ref:s,className:h("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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","popper"===a&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:a,...t,children:[(0,ca.jsx)(fa,{}),(0,ca.jsx)(da.Viewport,{className:h("p-1","popper"===a&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),(0,ca.jsx)(pa,{})]})})));ha.displayName=da.Content.displayName;var ga=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.Label,{ref:a,className:h("px-2 py-1.5 text-sm font-semibold",e),...r})));ga.displayName=da.Label.displayName;var ja=na.forwardRef((({className:e,children:r,...a},t)=>(0,ca.jsxs)(da.Item,{ref:t,className:h("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...a,children:[(0,ca.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,ca.jsx)(da.ItemIndicator,{children:(0,ca.jsx)(oa.CheckIcon,{className:"h-4 w-4"})})}),(0,ca.jsx)(da.ItemText,{children:r})]})));ja.displayName=da.Item.displayName;var ba=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.Separator,{ref:a,className:h("-mx-1 my-1 h-px bg-muted",e),...r})));ba.displayName=da.Separator.displayName;var va=d(require("react")),Na=d(require("@radix-ui/react-separator")),ya=require("react/jsx-runtime"),wa=va.forwardRef((({className:e,orientation:r="horizontal",decorative:a=!0,...t},s)=>(0,ya.jsx)(Na.Root,{ref:s,decorative:a,orientation:r,className:h("shrink-0 bg-border","horizontal"===r?"h-[1px] w-full":"h-full w-[1px]",e),...t})));wa.displayName=Na.Root.displayName;var Ca=require("next-themes"),qa=require("sonner"),Sa=require("react/jsx-runtime"),ka=n((({...e})=>{let{theme:r="system"}=(0,Ca.useTheme)();return(0,Sa.jsx)(qa.Toaster,{theme:r,className:"toaster 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})}),"Toaster"),Ra=d(require("react")),Ia=require("react/jsx-runtime"),za=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("div",{className:"relative w-full overflow-auto",children:(0,Ia.jsx)("table",{ref:a,className:h("w-full caption-bottom text-sm",e),...r})})));za.displayName="Table";var Da=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("thead",{ref:a,className:h("[&_tr]:border-b",e),...r})));Da.displayName="TableHeader";var Ta=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("tbody",{ref:a,className:h("[&_tr:last-child]:border-0",e),...r})));Ta.displayName="TableBody";var Ba=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("tfoot",{ref:a,className:h("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...r})));Ba.displayName="TableFooter";var Fa=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("tr",{ref:a,className:h("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...r})));Fa.displayName="TableRow";var Pa=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("th",{ref:a,className:h("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...r})));Pa.displayName="TableHead";var La=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("td",{ref:a,className:h("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...r})));La.displayName="TableCell";var Aa=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("caption",{ref:a,className:h("mt-4 text-sm text-muted-foreground",e),...r})));Aa.displayName="TableCaption";var Ma=d(require("react")),Oa=require("react/jsx-runtime"),Ea=Ma.forwardRef((({className:e,...r},a)=>(0,Oa.jsx)("textarea",{className:h("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",e),ref:a,...r})));Ea.displayName="Textarea";var Va=d(require("react")),_a=d(require("@radix-ui/react-tooltip")),Ha=require("react/jsx-runtime"),$a=_a.Provider,Ua=_a.Root,Qa=_a.Trigger,Ga=Va.forwardRef((({className:e,sideOffset:r=4,...a},t)=>(0,Ha.jsx)(_a.Content,{ref:t,sideOffset:r,className:h("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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),...a})));Ga.displayName=_a.Content.displayName;var Wa=require("react"),Ka=require("react/jsx-runtime"),Xa=(0,Wa.forwardRef)((({...e},r)=>{let[a,t]=(0,Wa.useState)(!1),s=n((()=>"object"==typeof e.value&&"id"in e.value?e.value.id:e.value),"value");return(0,Ka.jsxs)(Gr,{open:a,onOpenChange:t,children:[(0,Ka.jsx)(Wr,{asChild:!0,children:(0,Ka.jsx)(Mr,{children:(0,Ka.jsxs)(w,{disabled:e.disabled,variant:"outline",role:"combobox","aria-expanded":a,className:h("w-full sm:w-[250px] flex justify-between",!s()&&"text-muted-foreground"),children:[s()?e.options?.find((e=>e.value===s()))?.label:e.placeholder??"Select",(0,Ka.jsx)(re.CaretSortIcon,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})})}),(0,Ka.jsx)(Kr,{className:"w-full max-w-full sm:w-[250px] p-0",children:(0,Ka.jsxs)(Ye,{className:"rounded-lg border shadow-md",ref:r,children:[(0,Ka.jsx)(Ze,{placeholder:"Type a command or search..."}),(0,Ka.jsxs)(er,{children:[(0,Ka.jsx)(rr,{children:"No results found."}),(0,Ka.jsx)(ar,{heading:"Suggestions",children:(0,Ka.jsx)(ia,{className:"max-h-52 overflow-y-auto",children:e.options?.map((r=>(0,Ka.jsxs)(sr,{value:r.label,onSelect:()=>{e.onChange?.(r.value),t(!1)},children:[r.label,(0,Ka.jsx)(re.CheckIcon,{className:h("ml-auto h-4 w-4",r.value===s()?"opacity-100":"opacity-0")})]},r.value)))})})]})]})})]})}));Xa.displayName="Combobox";var Ja=require("lucide-react"),Ya=require("react"),Za=require("react/jsx-runtime"),et=n((({children:e,title:r="Are you sure?",description:a="This action cannot be undone.",okText:t="Ok",cancelText:s="Cancel",okButtonSize:i="default",cancelButtonSize:l="default",okButtonVariant:n="default",cancelButtonVariant:o="outline",loading:d=!1,okIconSide:c="left",cancelIconSide:u="left",onConfirm:m,okIcon:x,cancelIcon:f,open:p,onOpenChange:h,defaultOpen:g})=>{let j=(0,Ya.useMemo)((()=>(0,Ya.isValidElement)(f)?f:(0,Za.jsx)(Ja.XIcon,{className:"mr-2 h-4 w-4"})),[f]),b=(0,Ya.useMemo)((()=>d?(0,Za.jsx)(v,{className:"mr-2"}):(0,Ya.isValidElement)(x)?x:(0,Za.jsx)(Ja.CheckIcon,{className:"mr-2 h-4 w-4"})),[x,d]);return(0,Za.jsxs)(ie,{open:p,onOpenChange:h,defaultOpen:g,children:[(0,Za.jsx)(le,{asChild:!0,children:e}),(0,Za.jsxs)(de,{children:[(0,Za.jsxs)(ce,{children:[(0,Za.jsx)(me,{children:r}),(0,Za.jsx)(xe,{children:a})]}),(0,Za.jsxs)(ue,{children:[(0,Za.jsxs)(pe,{variant:o,size:l,disabled:d,children:["left"===u&&j,s,"right"===u&&j]}),(0,Za.jsxs)(fe,{variant:n,size:i,disabled:d,onClick:m,children:["left"===c&&b,t,"right"===c&&b]})]})]})]})}),"ConfirmDialog");et.displayName="ConfirmDialog";var rt=require("react"),at=require("react/jsx-runtime"),tt=n((e=>(0,at.jsx)(Br,{control:e.control,name:e.name,render:({field:r})=>(0,at.jsxs)(Lr,{className:h(e.className,e.isCheckbox?"flex flex-row items-center space-x-3 space-y-0":""),children:[!e.isCheckbox&&(0,at.jsx)(Ar,{children:e.label}),(0,at.jsx)(Mr,{children:(0,rt.cloneElement)(e.children,{...r,...e.children.props})}),e.isCheckbox&&(0,at.jsx)(Ar,{className:"text-sm font-normal",children:e.label}),e.description&&(0,at.jsx)(Or,{children:e.description}),(0,at.jsx)(Er,{})]})})),"Field"),st=require("@refinedev/core"),it=require("react"),lt=require("react/jsx-runtime"),nt=n((({formProps:e,isWatchable:r,saveButtonProps:a,...t})=>{let s=(0,it.useRef)(!1),{resource:i,action:l}=(0,st.useParsed)(),n=(0,st.useRouterType)(),o=(0,st.useBack)(),{goBack:d}=(0,st.useNavigation)(),c="list"!==l||typeof l<"u"?"legacy"===n?d:o:void 0;r&&!s.current&&(s.current=!0,t.watch());let u=t.handleSubmit((e=>{t.refineCore.onFinish(t.getValues()).then()}));return(0,lt.jsx)(Dr,{...t,children:(0,lt.jsx)("form",{...e,onSubmit:u,children:(0,lt.jsxs)(Se,{className:"border-border/40 shadow-sm",children:[(0,lt.jsx)(ze,{className:"pt-6 space-y-4",children:t.children}),(0,lt.jsxs)(De,{className:"flex justify-end gap-x-4",children:[(0,lt.jsx)(w,{type:"button",onClick:c,disabled:t.refineCore.formLoading,variant:"outline",children:"Cancel"}),(0,lt.jsx)(Xt,{type:"submit",loading:t.refineCore.formLoading,...a})]})]})})})}),"Form"),ot=require("next-themes"),dt=require("@radix-ui/react-icons"),ct=require("react/jsx-runtime"),ut=n((()=>{let{setTheme:e}=(0,ot.useTheme)();return(0,ct.jsxs)(cr,{children:[(0,ct.jsx)(ur,{asChild:!0,children:(0,ct.jsxs)(w,{variant:"ghost",size:"icon",children:[(0,ct.jsx)(dt.SunIcon,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),(0,ct.jsx)(dt.MoonIcon,{className:"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"}),(0,ct.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}),(0,ct.jsxs)(fr,{align:"end",children:[(0,ct.jsx)(pr,{onClick:()=>e("light"),children:"Light"}),(0,ct.jsx)(pr,{onClick:()=>e("dark"),children:"Dark"}),(0,ct.jsx)(pr,{onClick:()=>e("system"),children:"System"})]})]})}),"ModeToggle"),mt=require("react/jsx-runtime"),xt=n((({extra:e,...r})=>(0,mt.jsx)("div",{className:"w-full",children:(0,mt.jsxs)("div",{className:h("flex h-20 items-end lg:justify-between",r.className,!r.breadcrumb&&"h-auto"),children:[(0,mt.jsxs)("div",{className:"min-w-0 flex-1",children:[r.breadcrumb,(0,mt.jsx)("div",{className:"inline-flex flex-row items-center gap-x-4 mt-3",children:(0,mt.jsxs)("div",{className:"inline-flex flex-col",children:[(0,mt.jsx)("h2",{className:"text-2xl font-bold leading-7 text-black dark:text-white sm:truncate sm:text-3xl sm:tracking-tight",children:r.title}),r.subTitle&&(0,mt.jsx)("div",{className:"mt-2 flex items-center text-sm text-gray-300",children:r.subTitle})]})})]}),(0,mt.jsx)("div",{className:"flex lg:ml-4 lg:mt-0",children:e})]})})),"PageHeader"),ft=d(require("react")),pt=require("react/jsx-runtime"),ht=(0,ft.forwardRef)((({...e},r)=>{let a=ft.default.useRef(null);return(0,pt.jsxs)(ua,{disabled:e.disabled||0===e.options?.length,onValueChange:e.onChange,defaultValue:e.value,value:e.value,children:[(0,pt.jsx)(Mr,{children:(0,pt.jsx)(xa,{ref:a,children:(0,pt.jsx)(ma,{placeholder:e.placeholder??"Select"})})}),(0,pt.jsx)(ha,{style:{width:a.current?.offsetWidth},ref:r,children:e.options?.map(((e,r)=>(0,pt.jsx)(ja,{value:e.value,children:e.label},r)))})]})}));ht.displayName="Select";var gt=require("@refinedev/core"),jt=require("react-use"),bt=d(require("react")),vt=require("react/jsx-runtime"),Nt=n((({isCollapsed:e})=>{let{menuItems:r}=(0,gt.useMenu)(),a=(0,gt.useResourceParams)(),{pathname:t}=(0,jt.useLocation)(),s=String(t),i=n((e=>{let r=e.meta?.icon;return bt.default.isValidElement(r)?bt.default.cloneElement(r,{className:"mr-2 w-4 h-4"}):null}),"GetIcon");return(0,vt.jsx)("div",{"data-collapsed":e,className:"group flex flex-col gap-4 py-2 justify-between h-[94dvh] xl:h-[84dvh] data-[collapsed=true]:py-2",children:(0,vt.jsx)("nav",{className:"grid gap-1 px-2 group-[[data-collapsed=true]]:justify-center group-[[data-collapsed=true]]:px-2",children:r.filter((e=>!e.meta?.hide)).map(((r,t)=>{let l=[r.list?.toString(),r.create?.toString(),r.edit?.toString()?.replace(":id",a.id),r.show?.toString()?.replace(":id",a.id)].filter(Boolean),n=l.includes(s)||l.some((e=>e?.startsWith(s)||s.startsWith(e)));return e?(0,vt.jsxs)(Ua,{delayDuration:0,children:[(0,vt.jsx)(Qa,{asChild:!0,children:(0,vt.jsxs)(J,{href:r.list?.toString()??"/#",title:r.meta?.title??r.name,className:h(y({variant:"ghost"}),"justify-start",n?"bg-primary text-primary-foreground hover:bg-primary/80 hover:text-primary-foreground":""),children:[r.meta?.icon,(0,vt.jsxs)("span",{className:"sr-only",children:[r.meta?.title??r.label," ",r.list?"List":"Create"]})]},t)}),(0,vt.jsxs)(Ga,{side:"right",className:"flex items-center gap-4",children:[r.label,r.meta?.label&&(0,vt.jsx)("span",{className:"ml-auto text-muted-foreground",children:r.meta?.label})]})]},t):(0,vt.jsxs)(J,{href:r.list?.toString()??"/#",title:r.meta?.title??r.name,className:h(y({variant:"ghost"}),"justify-start",n?"bg-primary text-primary-foreground hover:bg-primary/80 hover:text-primary-foreground":""),children:[i(r),r.meta?.title??r.name]},t)}))})})}),"Sidebar");Nt.displayName="Sidebar";var yt=require("react/jsx-runtime"),wt=n((({resource:e,recordItemId:r,onSuccess:a,mutationMode:t,confirmTitle:s,confirmDescription:i,successNotification:l,errorNotification:n,hideText:o=!1,accessControl:d,meta:c,dataProviderName:u,confirmOkText:m,confirmCancelText:x,invalidates:f,children:p,...h})=>{let{title:g,label:j,hidden:b,disabled:v,loading:N,confirmTitle:y,confirmOkLabel:C,cancelLabel:q,onConfirm:S}=(0,T.useDeleteButton)({resource:e,id:r,dataProviderName:u,invalidates:f,meta:c,onSuccess:a,mutationMode:t,errorNotification:n,successNotification:l,accessControl:d});return b?null:(0,yt.jsx)(et,{okText:m??C,cancelText:x??q,okButtonVariant:"destructive",cancelButtonVariant:"outline",title:s??y,description:i,loading:N,onConfirm:S,children:(0,yt.jsx)(w,{disabled:v,title:g,loading:N,icon:(0,yt.jsx)(B.Trash2Icon,{className:"mr-2 w-4 h-4"}),...h,children:!o&&(p??j)})})}),"DeleteButton");wt.displayName="DeleteButton";var Ct=require("@refinedev/core"),qt=require("lucide-react"),St=require("react/jsx-runtime"),kt=n((({resource:e,recordItemId:r,hideText:a=!1,accessControl:t,meta:s,onClick:i,children:l,...n})=>{let{hidden:o,disabled:d,label:c,title:u,LinkComponent:m,to:x}=(0,Ct.useEditButton)({resource:e,id:r,accessControl:t,meta:s});return o?null:(0,St.jsx)(m,{to:x,replace:!1,onClick:e=>{d?e.preventDefault():i&&(e.preventDefault(),i(e))},children:(0,St.jsx)(w,{disabled:d,title:u,icon:(0,St.jsx)(qt.SquarePenIcon,{className:"mr-2 w-4 h-4"}),...n,children:!a&&(l??c)})})}),"EditButton");kt.displayName="EditButton";var Rt=require("@radix-ui/react-slot"),It=require("@refinedev/core"),zt=require("lucide-react"),Dt=require("react/jsx-runtime"),Tt=n((({hideText:e=!1,resource:r,recordItemId:a,accessControl:t,access:s,children:i,...l})=>{let{label:n}=(0,It.useExportButton)(),o=t?.enabled?It.CanAccess:Rt.Slot;return t?.hideIfUnauthorized&&t.enabled?null:(0,Dt.jsx)(o,{params:{id:a},resource:r,action:"export",...s,children:(0,Dt.jsx)(w,{icon:(0,Dt.jsx)(zt.ShareIcon,{className:"mr-2 w-4 h-4"}),...l,children:!e&&(i??n)})})}),"ExportButton");Tt.displayName="ExportButton";var Bt=require("@radix-ui/react-slot"),Ft=require("@refinedev/core"),Pt=require("lucide-react"),Lt=require("react/jsx-runtime"),At=n((({hideText:e=!1,resource:r,onChange:a,accept:t="image/*,application/*",recordItemId:s,accessControl:i,access:l,children:o,...d})=>{let{label:c}=(0,Ft.useImportButton)(),u=i?.enabled?Ft.CanAccess:Bt.Slot,m=n((()=>{let e=document.createElement("input");e.type="file",e.accept=t,e.onchange=r=>{r.target instanceof HTMLInputElement&&(a(Array.from(r.target.files??[])),e.remove())},e.click()}),"onClick");return i?.hideIfUnauthorized&&i.enabled?null:(0,Lt.jsx)(u,{params:{id:s},resource:r,action:"import",...l,children:(0,Lt.jsx)(w,{onClick:m,icon:(0,Lt.jsx)(Pt.ImportIcon,{className:"mr-2 w-4 h-4"}),...d,children:!e&&(o??c)})})}),"ImportButton");At.displayName="ImportButton";var Mt=require("@refinedev/core"),Ot=require("lucide-react"),Et=require("react/jsx-runtime"),Vt=n((({resource:e,hideText:r=!1,accessControl:a,meta:t,children:s,onClick:i,...l})=>{let{hidden:n,disabled:o,label:d,title:c,LinkComponent:u,to:m}=(0,Mt.useListButton)({resource:e,accessControl:a,meta:t});return n?null:(0,Et.jsx)(u,{to:m,replace:!1,onClick:e=>{o?e.preventDefault():i&&(e.preventDefault(),i(e))},children:(0,Et.jsx)(w,{disabled:o,title:c,icon:(0,Et.jsx)(Ot.ListIcon,{className:"mr-2 w-4 h-4"}),...l,children:!r&&(s??d)})})}),"ListButton");Vt.displayName="ListButton";var _t=require("@refinedev/core"),Ht=require("lucide-react"),$t=require("react/jsx-runtime"),Ut=n((({resource:e,recordItemId:r,hideText:a=!1,dataProviderName:t,children:s,...i})=>{let{onClick:l,label:n,loading:o}=(0,_t.useRefreshButton)({resource:e,id:r,dataProviderName:t});return(0,$t.jsx)(w,{onClick:l,loading:o,icon:(0,$t.jsx)(Ht.RefreshCwIcon,{className:"mr-2 w-4 h-4"}),...i,children:!a&&(s??n)})}),"RefreshButton");Ut.displayName="RefreshButton";var Qt=require("@radix-ui/react-slot"),Gt=require("@refinedev/core"),Wt=require("lucide-react"),Kt=require("react/jsx-runtime"),Xt=n((({hideText:e=!1,children:r,accessControl:a,access:t,resource:s,recordItemId:i,...l})=>{let{label:n}=(0,Gt.useSaveButton)(),o=a?.enabled?Gt.CanAccess:Qt.Slot;return a?.hideIfUnauthorized&&a.enabled?null:(0,Kt.jsx)(o,{params:{id:i},resource:s,action:"save",...t,children:(0,Kt.jsx)(w,{icon:(0,Kt.jsx)(Wt.SaveIcon,{className:"mr-2 w-4 h-4"}),...l,children:!e&&(r??n)})})}),"SaveButton");Xt.displayName="SaveButton";var Jt=require("@refinedev/core"),Yt=require("lucide-react"),Zt=require("react/jsx-runtime"),es=n((({resource:e,recordItemId:r,hideText:a=!1,accessControl:t,meta:s,children:i,onClick:l,...n})=>{let{to:o,label:d,title:c,hidden:u,disabled:m,LinkComponent:x}=(0,Jt.useShowButton)({resource:e,id:r,accessControl:t,meta:s});return u?null:(0,Zt.jsx)(x,{to:o,replace:!1,onClick:e=>{m?e.preventDefault():l&&(e.preventDefault(),l(e))},children:(0,Zt.jsx)(w,{icon:(0,Zt.jsx)(Yt.EyeIcon,{className:"mr-2 w-4 h-4"}),title:c,disabled:m,...n,children:!a&&(i??d)})})}),"ShowButton");es.displayName="ShowButton";var rs=require("@refinedev/core"),as=require("react"),ts=require("react/jsx-runtime"),ss=n((({title:e,resource:r,breadcrumb:a,extra:t,children:s})=>{let i=(0,rs.useTranslate)(),{options:{breadcrumb:l}={}}=(0,rs.useRefineContext)(),n=(0,rs.useUserFriendlyName)(),{resource:o,identifier:d}=(0,rs.useResource)(r),c=typeof a>"u"?l:a;return(0,ts.jsxs)(ts.Fragment,{children:[(0,ts.jsx)(xt,{title:e??i(`${d}.titles.List`,`Create ${n(o?.meta?.label??d,"singular")}`),isBack:!0,breadcrumb:(0,as.isValidElement)(c)?c:(0,ts.jsx)(ee,{}),extra:t??(0,ts.jsx)(ts.Fragment,{children:(0,ts.jsx)(Vt,{resource:r})})}),(0,ts.jsx)("div",{className:"pt-4 !mt-0",children:s})]})}),"CreatePage");ss.displayName="CreatePage";var is=require("@refinedev/core"),ls=require("react"),ns=require("react/jsx-runtime"),os=n((({title:e,resource:r,extra:a,breadcrumb:t,children:s})=>{let i=(0,is.useTranslate)(),{options:{breadcrumb:l}={}}=(0,is.useRefineContext)(),{list:n}=(0,is.useNavigation)(),o=(0,is.useUserFriendlyName)(),{resource:d,identifier:c}=(0,is.useResource)(r),u=typeof t>"u"?l:t;return(0,ns.jsxs)(ns.Fragment,{children:[(0,ns.jsx)(xt,{title:e??i(`${c}.titles.List`,`Edit ${o(d?.meta?.label??c,"plural")}`),isBack:!0,breadcrumb:(0,ls.isValidElement)(u)?u:(0,ns.jsx)(ee,{}),extra:a??(0,ns.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-2",children:[(0,ns.jsx)(es,{resource:r}),(0,ns.jsx)(wt,{resource:r,onSuccess:()=>{n(d?.name)}})]})}),(0,ns.jsx)("div",{className:"pt-4",children:s})]})}),"EditPage");os.displayName="EditPage";var ds=require("@refinedev/core"),cs=require("react"),us=require("react/jsx-runtime"),ms=n((({title:e,resource:r,breadcrumb:a,createButtonProps:t,className:s,isCreate:i=!0,extra:l,children:n})=>{let o=(0,ds.useTranslate)(),{options:{breadcrumb:d}={}}=(0,ds.useRefineContext)(),c=(0,ds.useUserFriendlyName)(),{resource:u,identifier:m}=(0,ds.useResource)(r),x=typeof a>"u"?d:a;return(0,us.jsxs)(us.Fragment,{children:[(0,us.jsx)(xt,{title:e??o(`${m}.titles.List`,`List ${c(u?.meta?.label??m,"plural")}`),breadcrumb:(0,cs.isValidElement)(x)?x:(0,us.jsx)(ee,{}),extra:l??(0,us.jsx)(us.Fragment,{children:(0,us.jsx)("div",{className:"inline-flex flex-row gap-4",children:i&&(0,us.jsx)(D,{...t,resource:t?.resource??m})})})}),(0,us.jsx)("div",{className:h("pt-2 sm:pt-4 !mt-0",s),children:n})]})}),"ListPage");ms.displayName="ListPage";var xs=require("@refinedev/core"),fs=require("react"),ps=require("react/jsx-runtime"),hs=n((({title:e,children:r})=>(0,ps.jsx)(ps.Fragment,{children:(0,ps.jsx)("dl",{className:"flex flex-wrap",children:(0,ps.jsxs)("div",{className:"flex-auto pt-4",children:[(0,ps.jsx)("dt",{className:"scroll-m-20 text-xs font-semibold tracking-tight",children:e}),(0,ps.jsx)("dd",{className:"mt-1 text-base font-normal text-foreground leading-7",children:r})]})})})),"Row"),gs=require("react/jsx-runtime"),js=n((({title:e,resource:r,breadcrumb:a,isEdit:t=!0,isDelete:s=!0,extra:i,children:l})=>{let n=(0,xs.useTranslate)(),{options:{breadcrumb:o}={}}=(0,xs.useRefineContext)(),d=(0,xs.useUserFriendlyName)(),{resource:c,identifier:u}=(0,xs.useResource)(r),{list:m}=(0,xs.useNavigation)(),x=typeof a>"u"?o:a;return(0,gs.jsxs)(gs.Fragment,{children:[(0,gs.jsx)(xt,{title:e??n(`${u}.titles.List`,`Show ${d(c?.meta?.label??u,"singular")}`),breadcrumb:(0,fs.isValidElement)(x)?x:(0,gs.jsx)(ee,{}),isBack:!0,extra:i??(0,gs.jsxs)("div",{className:"inline-flex items-center gap-x-2",children:[t&&(0,gs.jsx)(kt,{resource:r}),s&&(0,gs.jsx)(wt,{resource:r,onSuccess:()=>{m(c?.name)}})]})}),(0,gs.jsx)("div",{className:"relative pt-4 !mt-0",children:l})]})}),"ShowPage");js.Row=hs,js.displayName="ShowPage";var bs=require("next-themes"),vs=require("react/jsx-runtime");function Ns({children:e,...r}){return(0,vs.jsx)(bs.ThemeProvider,{...r,children:e})}n(Ns,"ThemeProvider");var ys=require("react/jsx-runtime"),ws=n((({attribute:e,defaultTheme:r,enableSystem:a,disableTransitionOnChange:t,enableColorScheme:s,forcedTheme:i,nonce:l,storageKey:n,themes:o,value:d,children:c})=>(0,ys.jsx)(Ns,{attribute:e??"class",defaultTheme:r??"system",enableSystem:a??!0,disableTransitionOnChange:t??!1,enableColorScheme:s??!0,forcedTheme:i,nonce:l,storageKey:n,themes:o,value:d,children:(0,ys.jsxs)($a,{delayDuration:0,skipDelayDuration:0,disableHoverableContent:!0,children:[c,(0,ys.jsx)(ka,{})]})})),"BaseLayout");ws.displayName="BaseLayout";var Cs=ws,qs=d(require("react"));function Ss(e,r){if(r===e)return!1;let a=Object.values(r),t=Object.values(e);if(a.length!==t.length||a.some(((e,r)=>e!==t[r])))return!0;let s=Object.keys(e);return Object.keys(r).some(((e,r)=>e!==s[r]))}function ks(e,r){return e.matches[r]=!1,e.mediaQueries[r]={},e}function Rs(e){let r=Object.keys(e);return typeof window>"u"?r.reduce(ks,{mediaQueries:{},matches:{}}):r.reduce(((r,a)=>{let t=window.matchMedia(e[a]);return r.mediaQueries[a]=t,r.matches[a]=t.matches,r}),{mediaQueries:{},matches:{}})}function Is(e,r){function a(r,a){return r[a]=e.mediaQueries[a].matches,r}switch(n(a,"_ref2"),r.type){case"updateMatches":return{matches:Object.keys(e.mediaQueries).reduce(a,{}),mediaQueries:e.mediaQueries};case"setQueries":return Rs(r.queries)}}function zs(e){let r=qs.useRef(e),[a,t]=qs.useReducer(Is,e,Rs);function s(){return t({type:"updateMatches"})}function i(e){let r=s;return typeof e.addListener<"u"?e.addListener(r):e.addEventListener("change",r),r}qs.useEffect((()=>{Ss(e,r.current)&&(t({type:"setQueries",queries:e}),r.current=e)}),[e]),n(s,"_ref3"),n(i,"_ref4"),qs.useEffect((()=>{let e=Object.values(a.mediaQueries),r=e.map(i);function t(e,a){typeof e.addListener<"u"?e.removeListener(r[a]):e.removeEventListener("change",r[a])}return n(t,"_ref5"),()=>{e.forEach(t)}}),[a.mediaQueries]);let{matches:l}=a,o=qs.useMemo((()=>Object.values(l)),[l]);return{matches:l,matchesAny:o.some(Boolean),matchesAll:o.length>0&&o.every(Boolean)}}function Ds(e){return zs(Bs(e)).matchesAll}n(Ss,"queriesDidChange"),n(ks,"_ref"),n(Rs,"init"),n(Is,"reducer"),n(zs,"useMediaQueries"),n(Ds,"useMediaQuery");var Ts={};function Bs(e){return void 0===Ts[e]&&(Ts[e]={default:e}),Ts[e]}n(Bs,"getObj");var Fs=require("react"),Ps=require("@refinedev/core"),Ls=require("react/jsx-runtime"),As=n((({children:e,defaultLayout:r,defaultCollapsed:a=!1,navCollapsedSize:t,navbar:s,footer:i,logo:l,attribute:n,defaultTheme:o,enableSystem:d,disableTransitionOnChange:c,enableColorScheme:u,forcedTheme:m,nonce:x,storageKey:f,themes:p,value:g})=>{let{resources:j}=(0,Ps.useResource)(),b=j?.[0],v=Ds("only screen and (max-width: 579.999px)"),N=Ds("only screen and (min-width: 640px) and (max-width: 767.999px)"),y=Ds("only screen and (min-width: 768px) and (max-width: 1023.999px)"),w=Ds("only screen and (min-width: 1024px)"),[C,q]=(0,Fs.useState)(v??a),S=(0,Fs.useMemo)((()=>r||(v?[15,85]:N?[20,80]:y?[25,75]:[15,85])),[r,v,N,y]),k=(0,Fs.useMemo)((()=>w?{minSize:11,maxSize:15}:y?{minSize:15,maxSize:25}:N?{minSize:20,maxSize:30}:{minSize:15,maxSize:15}),[N,y,w]),R=(0,Fs.useMemo)((()=>C||v||N||y),[C,y,N,v]),I=(0,Fs.useMemo)((()=>{if(!l)return null;if(!R&&(0,Fs.isValidElement)(l.default))return(0,Fs.cloneElement)(l.default,{className:"w-auto h-8"});let e=R?l.collapsed:l.default;return(0,Fs.isValidElement)(e)?(0,Fs.cloneElement)(e,{className:"w-auto h-8"}):null}),[l,r,R]);return(0,Ls.jsx)(Ls.Fragment,{children:(0,Ls.jsx)(Cs,{attribute:n,defaultTheme:o,enableSystem:d,disableTransitionOnChange:c,enableColorScheme:u,forcedTheme:m,nonce:x,storageKey:f,themes:p,value:g,children:(0,Ls.jsxs)(Zr,{direction:"horizontal",onLayout:e=>{document.cookie=`react-resizable-panels:layout=${JSON.stringify(e)}`},className:"h-full items-stretch",children:[(0,Ls.jsxs)(ea,{defaultSize:S[0],collapsedSize:t,collapsible:!0,minSize:k.minSize,maxSize:k.maxSize,onExpand:()=>{let e=v;q(e),document.cookie=`react-resizable-panels:collapsed=${JSON.stringify(e)}`},onCollapse:()=>{q(!0),document.cookie=`react-resizable-panels:collapsed=${JSON.stringify(!0)}`},className:h(R&&"min-w-[50px] transition-all duration-300 ease-in-out"),children:[(0,Ls.jsx)("div",{className:h("flex py-1.5 max-h-14 items-center border-b border-border/40 justify-center",R&&"px-2"),children:(0,Ls.jsx)(J,{href:b.list?.toString()??"/",className:"inline-flex items-center justify-center",title:b.meta?.label??b.name,children:I})}),(0,Ls.jsx)(Nt,{isCollapsed:R})]}),(0,Ls.jsx)(ra,{withHandle:!0,className:"bg-border/40"}),(0,Ls.jsxs)(ea,{defaultSize:S[1],minSize:25,className:"xl:max-h-dvh h-full !overflow-y-auto flex flex-col overflow-x-hidden",children:[(0,Ls.jsxs)("header",{className:h("sticky top-0 z-50 py-2 h-14 px-4 flex justify-end items-center border-b border-border/40 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",s?.rightSide&&"justify-between"),children:[s?.leftSide&&(0,Ls.jsx)("div",{className:"flex items-center justify-start flex-1",children:s?.leftSide}),s?.rightSide?(0,Ls.jsxs)("div",{className:"flex items-center justify-end flex-1",children:[(0,Ls.jsx)(ut,{}),s?.rightSide]}):(0,Ls.jsx)(ut,{})]}),(0,Ls.jsx)("main",{className:"grow px-6 py-4",children:e}),i&&(0,Ls.jsx)("footer",{className:"px-6 py-4 border-t border-border/40 sticky bottom-0 bg-background text-primary flex flex-row items-center",children:(0,Ls.jsx)("div",{className:"w-full",children:i})})]})]})})})}),"DefaultLayout");As.displayName="DefaultLayout";var Ms=require("sonner"),Os={open:n((({key:e,message:r,description:a,type:t})=>{"success"===t&&Ms.toast.success(r,{description:a,id:e}),"error"===t&&Ms.toast.error(r,{description:a,id:e}),"progress"===t&&Ms.toast.loading(r,{description:a,id:e})}),"open"),close:n((e=>Ms.toast.dismiss(e)),"close")},Es=n((()=>Os),"useNotificationProvider"),Vs=require("@refinedev/core"),_s=require("react"),Hs=n(((e,r,a)=>{let t=(0,_s.useContext)(Vs.AccessControlContext),s=t.options.buttons.enableAccessControl,i=t.options.buttons.hideIfUnauthorized,{editUrl:l}=(0,Vs.useNavigation)(),{id:o,resource:d}=(0,Vs.useResource)(e),{data:c}=(0,Vs.useCan)({resource:e,action:"edit",params:{id:r,resource:d},queryOptions:{enabled:s}}),u=(0,Vs.useTranslate)(),m=n((()=>c?.can?"":c?.reason?c.reason:u("buttons.notAccessTitle","You don't have permission to access")),"reason"),x=e&&(r??o)?l(e,r??o,a):"";return{can:!(s&&i&&!c?.can),reason:m(),url:x}}),"useGetEditUrl"),$s=require("@refinedev/core"),Us=require("react"),Qs=n(((e,r,a)=>{let t=(0,Us.useContext)($s.AccessControlContext),s=t.options.buttons.enableAccessControl,i=t.options.buttons.hideIfUnauthorized,{showUrl:l}=(0,$s.useNavigation)(),{id:o,resource:d}=(0,$s.useResource)(e),{data:c}=(0,$s.useCan)({resource:e,action:"show",params:{id:r,resource:d},queryOptions:{enabled:s}}),u=(0,$s.useTranslate)(),m=n((()=>c?.can?"":c?.reason?c.reason:u("buttons.notAccessTitle","You don't have permission to access")),"reason"),x=e&&(r||o)?l(e,r??o,a):"";return{can:!(s&&i&&!c?.can),reason:m(),url:x}}),"useGetShowUrl"),Gs=require("@refinedev/core"),Ws=require("react"),Ks=n(((e,r,a)=>{let t=(0,Ws.useContext)(Gs.AccessControlContext),s=t.options.buttons.enableAccessControl,i=t.options.buttons.hideIfUnauthorized,l=(0,Gs.useTranslate)(),o=(0,Gs.useResourceParams)(),{resource:d,identifier:c}=(0,Gs.useResource)(e),{mutationMode:u}=(0,Gs.useMutationMode)(),{mutate:m,isLoading:x}=(0,Gs.useDelete)(),{data:f}=(0,Gs.useCan)({resource:d?.name,action:"delete",params:{id:r??o,resource:d},queryOptions:{enabled:s}}),p=n((()=>f?.can?"":f?.reason?f.reason:l("You don't have permission to access")),"reason"),{setWarnWhen:h}=(0,Gs.useWarnAboutChange)(),g=n((e=>{if((!s||!i||f?.can)&&(r??o)&&c)return h(!1),m({id:r??o??"",resource:c,mutationMode:u,meta:(0,Gs.pickNotDeprecated)(a),metaData:(0,Gs.pickNotDeprecated)(a)},e)}),"onDeleteMutate");return{can:!(s&&i&&!f?.can),reason:p(),mutate:g,isLoading:x}}),"useDeleteHelper"),Xs=require("@refinedev/core"),Js=n((()=>{let e=(0,Xs.useRouterType)(),r=(0,Xs.useBack)(),{goBack:a}=(0,Xs.useNavigation)(),{action:t}=(0,Xs.useResource)();return"list"!==t||typeof t<"u"?"legacy"===e?a:r:void 0}),"useOnBack"),Ys=require("@refinedev/core"),Zs=require("react"),ei=require("react/jsx-runtime");function ri(e){let r=Js(),{can:a,isLoading:t,mutate:s}=Ks(e.data?.resource,e.data?.row?.id),i=(0,Ys.useTranslate)(),l=(0,Zs.useCallback)((()=>{if(a)return s({onSuccess(){let a=e?.data?.redirectBack??!1,t=e?.data?.onAfterHandle;e?.updateData({toogle:!1,row:void 0,resource:"",redirectBack:!1,onAfterHandle:void 0}),a&&r?.(),t&&t()}})}),[a,s,e,r]);return(0,ei.jsx)(et,{open:a&&e?.data?.toogle,loading:t,title:i("Are you sure?"),description:i("This action cannot be undone."),okText:i("Delete"),cancelText:i("Cancel"),okButtonVariant:"destructive",onOpenChange:()=>{t||e?.updateData({toogle:!1,row:void 0,resource:""})},onConfirm:l})}n(ri,"DeleteActionModal");var ai=(0,Zs.createContext)(void 0),ti=n((({children:e})=>{let[r,a]=(0,Zs.useState)({row:void 0,resource:"",toogle:!1,onAfterHandle:void 0}),t=n((e=>{a(e)}),"updateData");return(0,ei.jsxs)(ai.Provider,{value:{data:r,updateData:t},children:[e,(0,ei.jsx)(ri,{data:r,updateData:t})]})}),"DeleteProvider"),si=require("react"),ii=require("react/jsx-runtime"),li=(0,si.forwardRef)((({className:e,...r},a)=>(0,ii.jsxs)("svg",{ref:a,xmlns:"http://www.w3.org/2000/svg",className:h("mx-auto inline",e),viewBox:"0 0 120 30",fill:"currentColor",...r,children:[(0,ii.jsxs)("circle",{cx:"15",cy:"15",r:"15",children:[(0,ii.jsx)("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:"15",repeatCount:"indefinite",to:"15",values:"15;9;15"}),(0,ii.jsx)("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:"1",repeatCount:"indefinite",to:"1",values:"1;.5;1"})]}),(0,ii.jsxs)("circle",{cx:"60",cy:"15",r:"9",fillOpacity:"0.3",children:[(0,ii.jsx)("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:"9",repeatCount:"indefinite",to:"9",values:"9;15;9"}),(0,ii.jsx)("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:"0.5",repeatCount:"indefinite",to:"0.5",values:".5;1;.5"})]}),(0,ii.jsxs)("circle",{cx:"105",cy:"15",r:"15",children:[(0,ii.jsx)("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:"15",repeatCount:"indefinite",to:"15",values:"15;9;15"}),(0,ii.jsx)("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:"1",repeatCount:"indefinite",to:"1",values:"1;.5;1"})]})]}))),ni=li,oi=require("@refinedev/react-table"),di=require("@tanstack/react-table"),ci=require("react"),ui=require("@radix-ui/react-icons"),mi=require("react/jsx-runtime"),xi=n((e=>(0,mi.jsx)(pr,{disabled:e.disabled,asChild:!(!e.to||!e.to&&!e.children),onClick:e.onClick,children:e.asChild?e.children:e.to?(0,mi.jsxs)(J,{href:e.to,title:e.title,children:[e.icon?(0,mi.jsx)("span",{className:"mr-2",children:e.icon}):null,e.title]}):(0,mi.jsxs)(mi.Fragment,{children:[e.icon?(0,mi.jsx)("span",{className:"mr-2",children:e.icon}):null,e.title]})})),"RowAction");function fi({children:e}){return(0,mi.jsxs)(cr,{children:[(0,mi.jsx)(ur,{asChild:!0,children:(0,mi.jsxs)(w,{variant:"ghost",size:"icon",children:[(0,mi.jsx)(ui.DotsHorizontalIcon,{className:"h-4 w-4"}),(0,mi.jsx)("span",{className:"sr-only",children:"Open menu"})]})}),(0,mi.jsx)(fr,{align:"end",className:"w-[160px]",children:e})]})}xi.displayName="RowAction",n(fi,"RowActions");var pi=require("react/jsx-runtime");function hi({row:e,resource:r,title:a,disabled:t,...s}){let i=Hs(r,e.id);return(0,pi.jsx)(xi,{...s,disabled:!i.can||t,title:i?.can?a:i?.reason,to:i.url})}n(hi,"EditAction"),hi.displayName="EditAction";var gi=require("react/jsx-runtime");function ji({row:e,resource:r,title:a,disabled:t,...s}){let i=Qs(r,e.id);return(0,gi.jsx)(xi,{...s,disabled:!i.can||t,title:i?.can?a:i?.reason,to:i.url})}n(ji,"ShowAction"),ji.displayName="ShowAction";var bi=require("date-fns"),vi=require("lucide-react"),Ni=require("react"),yi=require("react/jsx-runtime");function wi({column:e,title:r,numberOfMonths:a=2,align:t="start"}){let[s,i]=(0,Ni.useState)({from:void 0,to:void 0}),l=new Set(e?.getFilterValue());return(0,Ni.useEffect)((()=>{if(s){let r=Object.values(s).filter(Boolean);r.length&&e?.setFilterValue(r.map((e=>e?(0,bi.format)(e,"yyyy-MM-dd").toString():"")))}}),[e,s]),(0,yi.jsxs)(Gr,{children:[(0,yi.jsx)(Wr,{asChild:!0,children:(0,yi.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-0.5",children:[(0,yi.jsxs)(w,{title:r,variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",children:[(0,yi.jsx)(vi.FilterIcon,{className:h("h-3.5 w-3.5")}),s?.from?(0,yi.jsxs)(yi.Fragment,{children:[(0,yi.jsx)(wa,{orientation:"vertical",className:"mx-2 h-4"}),(0,yi.jsx)(be,{variant:"secondary",className:"rounded-sm p-1 h-3.5 text-xs font-normal",children:s.to?(0,yi.jsx)(yi.Fragment,{children:[(0,bi.format)(s.from,"LLL dd, y"),(0,bi.format)(s.to,"LLL dd, y")].join(" ")}):(0,bi.format)(s.from,"LLL dd, y")})]}):null]}),l.size>0&&(0,yi.jsx)(w,{variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",onClick:r=>{r.preventDefault(),e?.setFilterValue(void 0),i({from:void 0,to:void 0})},children:(0,yi.jsx)(vi.FilterX,{className:h("h-3.5 w-3.5")})})]})}),(0,yi.jsxs)(Kr,{className:"w-auto p-0",align:t,children:[(0,yi.jsx)(we,{initialFocus:!0,mode:"range",defaultMonth:new Date,selected:s,onSelect:i,numberOfMonths:a}),l.size>0&&(0,yi.jsxs)(yi.Fragment,{children:[(0,yi.jsx)(wa,{}),(0,yi.jsx)("div",{className:"flex flex-row items-center justify-center py-3",children:(0,yi.jsxs)(w,{variant:"outline",size:"sm",className:"h-8 border-dashed px-2",onClick:()=>{e?.setFilterValue(void 0),i({from:void 0,to:void 0})},children:[(0,yi.jsx)(vi.FilterX,{size:16,className:"mr-2"}),"Clear"]})})]})]})]})}n(wi,"TableFilterDateRangePickerFilter");var Ci=require("@radix-ui/react-icons"),qi=require("lucide-react"),Si=require("react/jsx-runtime");function ki({column:e,title:r,options:a,align:t="start"}){let s=e?.getFacetedUniqueValues(),i=new Set(e?.getFilterValue());return(0,Si.jsxs)(Gr,{children:[(0,Si.jsx)(Wr,{asChild:!0,children:(0,Si.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-0.5",children:[(0,Si.jsxs)(w,{title:r,variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",children:[(0,Si.jsx)(qi.FilterIcon,{className:h("h-3.5 w-3.5")}),i?.size>0&&(0,Si.jsxs)(Si.Fragment,{children:[(0,Si.jsx)(wa,{orientation:"vertical",className:"mx-2 h-4"}),(0,Si.jsx)(be,{variant:"secondary",className:"rounded-sm p-1 h-3.5 text-xs font-normal lg:hidden",children:i.size}),(0,Si.jsx)("div",{className:"hidden space-x-1 lg:flex",children:i.size>2?(0,Si.jsxs)(be,{variant:"secondary",className:"rounded-sm p-1 text-xs h-3.5 font-normal",children:[i.size," selected"]}):a?.filter((e=>i.has(e.value))).map((e=>(0,Si.jsx)(be,{variant:"secondary",className:"rounded-sm p-1 text-xs h-3.5 font-normal",children:e.label},e.value)))})]})]}),i.size>0&&(0,Si.jsx)(w,{variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",onClick:r=>{r.preventDefault(),e?.setFilterValue(void 0)},children:(0,Si.jsx)(qi.FilterX,{className:h("h-3.5 w-3.5")})})]})}),(0,Si.jsx)(Kr,{className:"w-[200px] p-0",align:t,children:(0,Si.jsxs)(Ye,{children:[(0,Si.jsx)(Ze,{placeholder:r}),(0,Si.jsxs)(er,{children:[(0,Si.jsx)(rr,{children:"No results found."}),(0,Si.jsx)(ar,{children:a?.map((r=>{let a=i.has(r.value);return(0,Si.jsxs)(sr,{onSelect:()=>{a?i.delete(r.value):i.add(r.value);let t=Array.from(i);e?.setFilterValue(t.length?t:void 0)},children:[(0,Si.jsx)("div",{className:h("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",a?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:(0,Si.jsx)(Ci.CheckIcon,{className:h("h-4 w-4")})}),r.icon&&(0,Si.jsx)(r.icon,{className:"mr-2 h-4 w-4 text-muted-foreground"}),(0,Si.jsx)("span",{children:r.label}),s?.get(r.value)&&(0,Si.jsx)("span",{className:"ml-auto flex h-4 w-4 items-center justify-center font-mono text-xs",children:s.get(r.value)})]},r.value)}))}),i.size>0&&(0,Si.jsxs)(Si.Fragment,{children:[(0,Si.jsx)(tr,{}),(0,Si.jsx)(ar,{children:(0,Si.jsx)(sr,{onSelect:()=>e?.setFilterValue(void 0),className:"justify-center text-center",children:"Clear filters"})})]})]})]})})]})}n(ki,"TableFilterDropdown");var Ri=require("lucide-react"),Ii=require("react/jsx-runtime");function zi({column:e,title:r,align:a="start"}){let t=e?.getFilterValue();return(0,Ii.jsxs)(Gr,{children:[(0,Ii.jsx)(Wr,{asChild:!0,children:(0,Ii.jsx)("div",{className:"inline-flex flex-row items-center gap-x-0.5",children:t?(0,Ii.jsx)(w,{variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",onClick:r=>{r.preventDefault(),e?.setFilterValue(void 0)},children:(0,Ii.jsx)(Ri.FilterX,{className:h("h-3.5 w-3.5")})}):(0,Ii.jsx)(w,{title:r,variant:"outline",size:"sm",className:"h-4 border-dashed px-1 py-2.5",children:(0,Ii.jsx)(Ri.FilterIcon,{className:h("h-3.5 w-3.5")})})})}),(0,Ii.jsx)(Kr,{className:"w-[200px] p-0 overflow-hidden border-0 ring-0",align:a,children:(0,Ii.jsxs)("div",{className:"relative",children:[(0,Ii.jsxs)("div",{className:"flex flex-row items-center px-3 text-popover-foreground bg-popover",children:[(0,Ii.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"mr-2 h-4 w-4 shrink-0 opacity-50",children:(0,Ii.jsx)("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})}),(0,Ii.jsx)(Hr,{defaultValue:t??"",onChange:r=>{e?.setFilterValue(r.target.value)},className:h("h-10 border-0 focus-visible:ring-0 ring-0 rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground shadow-none disabled:cursor-not-allowed disabled:opacity-50"),placeholder:r})]}),t&&(0,Ii.jsxs)(Ii.Fragment,{children:[(0,Ii.jsx)(wa,{}),(0,Ii.jsx)("div",{className:"flex flex-row items-center justify-center py-3",children:(0,Ii.jsxs)(w,{variant:"outline",size:"sm",className:"h-8 border-dashed px-2",onClick:()=>{e?.setFilterValue(void 0)},children:[(0,Ii.jsx)(Ri.FilterX,{size:16,className:"mr-2"}),"Clear"]})})]})]})})]})}n(zi,"TableFilterSearchColumn");var Di=require("@radix-ui/react-icons"),Ti=require("react"),Bi=require("react/jsx-runtime"),Fi=(0,Ti.forwardRef)((({table:e,children:r,options:a},t)=>(0,Bi.jsxs)(Bi.Fragment,{children:[(0,Bi.jsx)(Le,{ref:t,checked:e.getIsSomeRowsSelected()?"indeterminate":e.getIsAllPageRowsSelected(),onCheckedChange:r=>e.toggleAllPageRowsSelected(!!r),className:"translate-y-[2px]","aria-label":"Select all"}),r||Array.isArray(a)&&a.length&&(0,Bi.jsxs)(cr,{children:[(0,Bi.jsx)(ur,{asChild:!0,children:(0,Bi.jsx)(w,{disabled:!(e.getIsSomeRowsSelected()||e.getIsAllPageRowsSelected()),size:"icon",variant:"ghost",className:"px-0 w-5",children:(0,Bi.jsx)(Di.DotsVerticalIcon,{className:"w-4 h-4"})})}),(0,Bi.jsxs)(fr,{align:"start",children:[(0,Bi.jsx)(jr,{children:"Bulk Actions"}),(0,Bi.jsx)(br,{}),!r&&Array.isArray(a)&&a?.length>0?a.map(((e,r)=>(0,Bi.jsx)(pr,{onSelect:e.onClick,children:e.label},r))):r]})]})]})));Fi.displayName="CheckAll";var Pi=require("@radix-ui/react-icons"),Li=require("react/jsx-runtime"),Ai=n((({table:e})=>(0,Li.jsxs)("div",{className:"flex flex-col sm:flex-row gap-y-4 sm-gap-y-0 items-center justify-between",children:[(0,Li.jsxs)("div",{className:"flex-1 text-sm text-muted-foreground",children:[e.getFilteredSelectedRowModel().rows.length," of"," ",e.getFilteredRowModel().rows.length," row(s) selected."]}),(0,Li.jsxs)("div",{className:"flex relative flex-col-reverse gap-y-4 sm:gap-y-0 sm:flex-row items-center space-x-6 lg:space-x-8",children:[(0,Li.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,Li.jsx)("p",{className:"text-sm font-medium",children:"Rows per page"}),(0,Li.jsxs)(ua,{value:`${e.getState().pagination.pageSize}`,onValueChange:r=>{e.setPageSize(Number(r))},children:[(0,Li.jsx)(xa,{className:"h-8 w-[70px]",children:(0,Li.jsx)(ma,{placeholder:e.getState().pagination.pageSize})}),(0,Li.jsx)(ha,{children:[10,20,30,40,50].map((e=>(0,Li.jsx)(ja,{value:`${e}`,children:e},e)))})]})]}),(0,Li.jsxs)("div",{className:"flex w-fit items-center justify-center text-sm font-medium",children:["Page ",e.getState().pagination.pageIndex+1," of"," ",e.getPageCount()]}),(0,Li.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,Li.jsxs)(w,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[(0,Li.jsx)("span",{className:"sr-only",children:"Go to first page"}),(0,Li.jsx)(Pi.DoubleArrowLeftIcon,{className:"h-4 w-4"})]}),(0,Li.jsxs)(w,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[(0,Li.jsx)("span",{className:"sr-only",children:"Go to previous page"}),(0,Li.jsx)(Pi.ChevronLeftIcon,{className:"h-4 w-4"})]}),(0,Li.jsxs)(w,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[(0,Li.jsx)("span",{className:"sr-only",children:"Go to next page"}),(0,Li.jsx)(Pi.ChevronRightIcon,{className:"h-4 w-4"})]}),(0,Li.jsxs)(w,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[(0,Li.jsx)("span",{className:"sr-only",children:"Go to last page"}),(0,Li.jsx)(Pi.DoubleArrowRightIcon,{className:"h-4 w-4"})]})]})]})]})),"Pagination");Ai.displayName="Pagination";var Mi=require("@radix-ui/react-icons"),Oi=require("react/jsx-runtime"),Ei=n((({column:e})=>(0,Oi.jsx)("div",{className:"cursor-pointer",onClick:()=>{e?.toggleSorting("asc"===e?.getIsSorted())},children:(0,Oi.jsxs)("div",{className:"inline-flex flex-col",children:[(0,Oi.jsx)(Mi.CaretUpIcon,{className:h("-mb-1.5 w-5 h-5","asc"===e?.getIsSorted()?"text-foreground":"text-input")}),(0,Oi.jsx)(Mi.CaretDownIcon,{className:h("-mt-1.5 w-5 h-5","desc"===e?.getIsSorted()?"text-foreground":"text-input")})]})})),"SortAction"),Vi=require("@radix-ui/react-dropdown-menu"),_i=require("@radix-ui/react-icons"),Hi=require("react"),$i=require("react/jsx-runtime"),Ui=n((({table:e})=>{let r=(0,Hi.useMemo)((()=>e.getAllColumns().filter((e=>typeof e.accessorFn<"u"&&e.getCanHide()))),[e]);return(0,$i.jsxs)(cr,{children:[(0,$i.jsx)(Vi.DropdownMenuTrigger,{asChild:!0,children:(0,$i.jsxs)(w,{variant:"outline",size:"sm",className:"ml-auto hidden h-8 lg:flex",children:[(0,$i.jsx)(_i.MixerHorizontalIcon,{className:"mr-2 h-4 w-4"}),"View"]})}),(0,$i.jsxs)(fr,{align:"end",className:"w-[150px]",children:[(0,$i.jsx)(jr,{children:"Toggle columns"}),(0,$i.jsx)(br,{}),r.map((e=>(0,$i.jsx)(hr,{className:"capitalize",checked:e.getIsVisible(),onCheckedChange:r=>e.toggleVisibility(r),children:e.id},e.id)))]})]})}),"DataTableViewOptions");Ui.displayName="DataTableViewOptions";var Qi=require("react/jsx-runtime");function Gi({table:e}){return(0,Qi.jsxs)("div",{className:"flex items-center justify-between",children:[(0,Qi.jsx)("div",{className:"flex flex-1 items-center space-x-2"}),(0,Qi.jsx)(Ui,{table:e})]})}n(Gi,"DataTableToolbar");var Wi=require("react"),Ki=require("react/jsx-runtime");function Xi({row:e,resource:r,title:a,disabled:t,onAfterHandle:s,...i}){let{can:l,reason:n}=Ks(r,e.id),o=(0,Wi.useContext)(ai);return(0,Ki.jsx)(xi,{...i,disabled:!l||t,title:l?a:n,onClick:()=>o?.updateData({row:e,resource:r,toogle:!0,onAfterHandle:s})})}n(Xi,"DeleteAction"),Xi.displayName="DeleteAction";var Ji=require("react/jsx-runtime");function Yi({children:e,showHeader:r=!0,columns:a=[],...t}){let s=(0,ci.useCallback)((({id:e,accessorKey:r,header:a,enableSorting:t,enableHiding:s,filter:i,cell:l})=>{let n={id:e,header:a,accessorKey:r,enableSorting:t??!1,enableHiding:s??!1,enableColumnFilter:!0,enableResizing:!0,filter:i};return l&&(n.cell=l),n}),[]);a=(0,ci.useMemo)((()=>Array.isArray(e)?e.map((e=>e.props)).map(s):[]),[e,s]);let i=(0,oi.useTable)({columns:a,...t}),l=(0,ci.useMemo)((()=>i.options),[i]),n=(0,ci.useMemo)((()=>!(!l.enableColumnFilters&&!l?.enableFilters)),[l]);return(0,Ji.jsx)(ti,{children:(0,Ji.jsxs)("div",{className:"space-y-4",children:[(0,Ji.jsx)(Gi,{table:i}),(0,Ji.jsx)("div",{className:"rounded-md border border-border",children:(0,Ji.jsxs)(za,{children:[r&&(0,Ji.jsx)(Da,{children:i.getHeaderGroups().map((e=>(0,Ji.jsx)(Fa,{children:e.headers.map((e=>{let r=e.column.columnDef;return(0,Ji.jsx)(Pa,{children:(0,Ji.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-2.5",children:[e.isPlaceholder?null:(0,di.flexRender)(e.column.columnDef.header,e.getContext()),l.enableSorting&&r.enableSorting&&(0,Ji.jsx)(Ei,{column:e.column}),n&&r?.filter&&r.filter({column:e.column,title:`${r.header} Filter`})]})},e.id)}))},e.id)))}),(0,Ji.jsx)(Ta,{children:i.refineCore.tableQuery.isLoading?(0,Ji.jsx)(Fa,{children:(0,Ji.jsx)(La,{colSpan:a.length,className:"h-24 text-center text-nowrap",children:(0,Ji.jsx)("div",{className:"flex items-center justify-center flex-row",children:(0,Ji.jsx)(ni,{className:"h-4 text-primary"})})})}):i.getRowModel().rows?.length?i.getRowModel().rows.map((e=>(0,Ji.jsx)(Fa,{"data-state":e.getIsSelected()&&"selected",children:e.getVisibleCells().map((e=>(0,Ji.jsx)(La,{className:"text-nowrap",children:(0,di.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)))},e.id))):(0,Ji.jsx)(Fa,{children:(0,Ji.jsx)(La,{colSpan:a.length,className:"h-24 text-center",children:"No results."})})})]})}),(0,Ji.jsx)(Ai,{table:i})]})})}n(Yi,"Table");var Zi=n((e=>e.children),"TableColumn");Yi.Column=Zi,Yi.CheckAll=Fi,Yi.Actions=fi,Yi.Action=xi,Yi.EditAction=hi,Yi.ShowAction=ji,Yi.DeleteAction=Xi,Yi.Filter={DateRangePicker:wi,Dropdown:ki,Search:zi},Yi.displayName="Table";//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy91aS9idXR0b24udHN4IiwgIi4uL3NyYy9saWIvdXRpbHMudHMiLCAiLi4vc3JjL3VpL2xvYWRpbmcudHN4IiwgIi4uL3NyYy9idXR0b25zL2Nsb25lLnRzeCIsICIuLi9zcmMvYnV0dG9ucy9jcmVhdGUudHN4IiwgIi4uL3NyYy9idXR0b25zL2RlbGV0ZS50c3giLCAiLi4vc3JjL3VpL2JyZWFkY3J1bWIudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL2JyZWFkY3J1bWJzLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9saW5rLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9jb21ib2JveC50c3giLCAiLi4vc3JjL3VpL2FsZXJ0LWRpYWxvZy50c3giLCAiLi4vc3JjL3VpL2JhZGdlLnRzeCIsICIuLi9zcmMvdWkvY2FsZW5kYXIudHN4IiwgIi4uL3NyYy91aS9jYXJkLnRzeCIsICIuLi9zcmMvdWkvY2hlY2tib3gudHN4IiwgIi4uL3NyYy91aS9jb21tYW5kLnRzeCIsICIuLi9zcmMvdWkvZGlhbG9nLnRzeCIsICIuLi9zcmMvdWkvZHJvcGRvd24tbWVudS50c3giLCAiLi4vc3JjL3VpL2Zvcm0udHN4IiwgIi4uL3NyYy91aS9sYWJlbC50c3giLCAiLi4vc3JjL3VpL2lucHV0LnRzeCIsICIuLi9zcmMvdWkvcG9wb3Zlci50c3giLCAiLi4vc3JjL3VpL3Jlc2l6YWJsZS50c3giLCAiLi4vc3JjL3VpL3Njcm9sbC1hcmVhLnRzeCIsICIuLi9zcmMvdWkvc2VsZWN0LnRzeCIsICIuLi9zcmMvdWkvc2VwYXJhdG9yLnRzeCIsICIuLi9zcmMvdWkvc29ubmVyLnRzeCIsICIuLi9zcmMvdWkvdGFibGUudHN4IiwgIi4uL3NyYy91aS90ZXh0YXJlYS50c3giLCAiLi4vc3JjL3VpL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL2NvbmZpcm0udHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL2ZpZWxkLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9mb3JtLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9tb2RlVG9nZ2xlLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9wYWdlSGVhZGVyLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9zZWxlY3QudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL3NpZGViYXIudHN4IiwgIi4uL3NyYy9idXR0b25zL2VkaXQudHN4IiwgIi4uL3NyYy9idXR0b25zL2V4cG9ydC50c3giLCAiLi4vc3JjL2J1dHRvbnMvaW1wb3J0LnRzeCIsICIuLi9zcmMvYnV0dG9ucy9saXN0LnRzeCIsICIuLi9zcmMvYnV0dG9ucy9yZWZyZXNoLnRzeCIsICIuLi9zcmMvYnV0dG9ucy9zYXZlLnRzeCIsICIuLi9zcmMvYnV0dG9ucy9zaG93LnRzeCIsICIuLi9zcmMvY3VyZHMvY3JlYXRlLnRzeCIsICIuLi9zcmMvY3VyZHMvZWRpdC50c3giLCAiLi4vc3JjL2N1cmRzL2xpc3QudHN4IiwgIi4uL3NyYy9jdXJkcy9zaG93L2luZGV4LnRzeCIsICIuLi9zcmMvY3VyZHMvc2hvdy9yb3cudHN4IiwgIi4uL3NyYy9wcm92aWRlcnMvdGhlbWUtcHJvdmlkZXIudHN4IiwgIi4uL3NyYy9sYXlvdXRzL2Jhc2UudHN4IiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AcmVhY3QtaG9vay9tZWRpYS1xdWVyeS9kaXN0L21vZHVsZS9pbmRleC5qcyIsICIuLi9zcmMvbGF5b3V0cy9kZWZhdWx0LnRzeCIsICIuLi9zcmMvcHJvdmlkZXJzL25vdGlmaWNhdGlvblByb3ZpZGVyLnRzIiwgIi4uL3NyYy9ob29rcy91c2VHZXRFZGl0VXJsLnRzeCIsICIuLi9zcmMvaG9va3MvdXNlR2V0U2hvd1VybC50c3giLCAiLi4vc3JjL2hvb2tzL3VzZURlbGV0ZUhlbHBlci50c3giLCAiLi4vc3JjL2hvb2tzL3VzZU9uQmFjay50c3giLCAiLi4vc3JjL3Byb3ZpZGVycy9kZWxldGVQcm92aWRlci50c3giLCAiLi4vc3JjL2NvbXBvbmVudHMvbG9hZGVyLnRzeCIsICIuLi9zcmMvdGFibGUvaW5kZXgudHN4IiwgIi4uL3NyYy90YWJsZS9hY3Rpb25zL2luZGV4LnRzeCIsICIuLi9zcmMvdGFibGUvYWN0aW9ucy9lZGl0LnRzeCIsICIuLi9zcmMvdGFibGUvYWN0aW9ucy9zaG93LnRzeCIsICIuLi9zcmMvdGFibGUvZmllbGRzL3RhYmxlLWZpbHRlci1kYXRlLXJhbmdlLXBpY2tlci50c3giLCAiLi4vc3JjL3RhYmxlL2ZpZWxkcy90YWJsZS1maWx0ZXItZHJvcGRvd24udHN4IiwgIi4uL3NyYy90YWJsZS9maWVsZHMvdGFibGUtZmlsdGVyLXNlYXJjaC1jb2x1bW4udHN4IiwgIi4uL3NyYy90YWJsZS9maWVsZHMvY2hlY2thbGwudHN4IiwgIi4uL3NyYy90YWJsZS9maWVsZHMvcGFnaW5hdGlvbi50c3giLCAiLi4vc3JjL3RhYmxlL2ZpZWxkcy9zb3J0LnRzeCIsICIuLi9zcmMvdGFibGUvdG9vbGJhci90YWJsZS12aWV3LW9wdGlvbnMtZHJvcGRvd24udHN4IiwgIi4uL3NyYy90YWJsZS90b29sYmFyL2luZGV4LnRzeCIsICIuLi9zcmMvdGFibGUvYWN0aW9ucy9kZWxldGUudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBmcm9tIFwiLi9idXR0b25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jdXJkc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGF5b3V0c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvdmlkZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YWJsZVwiO1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBMb2FkaW5nSWNvbiB9IGZyb20gXCIuL2xvYWRpbmdcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgIHtcbiAgICAgICAgdmFyaWFudHM6IHtcbiAgICAgICAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgc2hhZG93IGhvdmVyOmJnLXByaW1hcnkvOTBcIixcbiAgICAgICAgICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICAgICAgICAgICAgXCJiZy1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgc2hhZG93LXNtIGhvdmVyOmJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgICAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICAgICAgICAgICAgXCJib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgc2hhZG93LXNtIGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OlxuICAgICAgICAgICAgICAgICAgICBcImJnLXNlY29uZGFyeSB0ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIHNoYWRvdy1zbSBob3ZlcjpiZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgICAgICAgICBnaG9zdDogXCJob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgICAgICAgIGxpbms6IFwidGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaXplOiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogXCJoLTkgcHgtNCBweS0yXCIsXG4gICAgICAgICAgICAgICAgc206IFwiaC04IHJvdW5kZWQtbWQgcHgtMyB0ZXh0LXhzXCIsXG4gICAgICAgICAgICAgICAgbGc6IFwiaC0xMCByb3VuZGVkLW1kIHB4LThcIixcbiAgICAgICAgICAgICAgICBpY29uOiBcImgtOSB3LTlcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICAgICAgfSxcbiAgICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICAgIGV4dGVuZHMgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gICAgYXNDaGlsZD86IGJvb2xlYW47XG4gICAgbG9hZGluZz86IGJvb2xlYW47XG4gICAgaWNvbj86IFJlYWN0LlJlYWN0RWxlbWVudDxTVkdTVkdFbGVtZW50Pjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAgIChcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgdmFyaWFudCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBpY29uID0gbnVsbCxcbiAgICAgICAgICAgIGxvYWRpbmcgPSBmYWxzZSxcbiAgICAgICAgICAgIGFzQ2hpbGQgPSBmYWxzZSxcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9LFxuICAgICAgICByZWYsXG4gICAgKSA9PiB7XG4gICAgICAgIGRpc2FibGVkID0gZGlzYWJsZWQgfHwgbG9hZGluZztcbiAgICAgICAgY29uc3QgSWNvbiA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGljb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGljb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbG9hZGluZyA/IDxMb2FkaW5nSWNvbiBjbGFzc05hbWU9XCJtci0yXCIgLz4gOiBudWxsO1xuICAgICAgICB9LCBbaWNvbiwgbG9hZGluZ10pO1xuICAgICAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbXBcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX1cbiAgICAgICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtzaXplID09PSBcImljb25cIiA/IChcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQ29tcD5cbiAgICAgICAgKTtcbiAgICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgeyBjbHN4LCB0eXBlIENsYXNzVmFsdWUgfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufVxuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBMdWNpZGVQcm9wcywgUmVmcmVzaEN3SWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IExvYWRpbmdJY29uID0gUmVhY3QuZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oXG4gICAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxSZWZyZXNoQ3dJY29uXG4gICAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcImgtNCB3LTQgYW5pbWF0ZS1zcGluXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICB9LFxuKTtcbiIsICJpbXBvcnQgeyBDbG9uZUJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlQ2xvbmVCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBDb3B5UGx1cyB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IENsb25lQnV0dG9uOiBGQzxDbG9uZUJ1dHRvblByb3BzPiA9ICh7XG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIG9uQ2xpY2ssXG4gICAgY2hpbGRyZW4sXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IHRvLCBMaW5rQ29tcG9uZW50LCBsYWJlbCwgZGlzYWJsZWQsIGhpZGRlbiwgdGl0bGUgfSA9XG4gICAgICAgIHVzZUNsb25lQnV0dG9uKHtcbiAgICAgICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgICAgICByZXNvdXJjZTogcmVzb3VyY2UsXG4gICAgICAgICAgICBhY2Nlc3NDb250cm9sOiBhY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgbWV0YTogbWV0YSxcbiAgICAgICAgfSk7XG5cbiAgICBpZiAoaGlkZGVuKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxMaW5rQ29tcG9uZW50XG4gICAgICAgICAgICB0bz17dG99XG4gICAgICAgICAgICByZXBsYWNlPXtmYWxzZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhlOiBSZWFjdC5Qb2ludGVyRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2soZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgICAgICAgICAgaWNvbj17PENvcHlQbHVzIGNsYXNzTmFtZT1cIm1yLTIgdy00IGgtNFwiIC8+fVxuICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9MaW5rQ29tcG9uZW50PlxuICAgICk7XG59O1xuXG5DbG9uZUJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQ2xvbmVCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBDcmVhdGVCdXR0b25Qcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZUNyZWF0ZUJ1dHRvbiB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IFNxdWFyZVBsdXNJY29uIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBGQyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlQnV0dG9uOiBGQzxDcmVhdGVCdXR0b25Qcm9wcz4gPSAoe1xuICAgIHJlc291cmNlLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIG9uQ2xpY2ssXG4gICAgY2hpbGRyZW4sXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IGhpZGRlbiwgZGlzYWJsZWQsIGxhYmVsLCB0aXRsZSwgTGlua0NvbXBvbmVudCwgdG8gfSA9XG4gICAgICAgIHVzZUNyZWF0ZUJ1dHRvbih7XG4gICAgICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgICAgIGFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICBtZXRhLFxuICAgICAgICB9KTtcblxuICAgIGlmIChoaWRkZW4pIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxMaW5rQ29tcG9uZW50XG4gICAgICAgICAgICB0bz17dG99XG4gICAgICAgICAgICByZXBsYWNlPXtmYWxzZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhlOiBSZWFjdC5Qb2ludGVyRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2soZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgICAgICAgICAgaWNvbj17PFNxdWFyZVBsdXNJY29uIGNsYXNzTmFtZT1cIm1yLTIgdy00IGgtNFwiIC8+fVxuICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9MaW5rQ29tcG9uZW50PlxuICAgICk7XG59O1xuXG5DcmVhdGVCdXR0b24uZGlzcGxheU5hbWUgPSBcIkNyZWF0ZUJ1dHRvblwiO1xuIiwgImltcG9ydCB7IERlbGV0ZUJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlRGVsZXRlQnV0dG9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgVHJhc2gySWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbmZpcm1EaWFsb2cgfSBmcm9tIFwiQC9jb21wb25lbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVCdXR0b246IEZDPERlbGV0ZUJ1dHRvblByb3BzPiA9ICh7XG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIG9uU3VjY2VzcyxcbiAgICBtdXRhdGlvbk1vZGU6IG11dGF0aW9uTW9kZVByb3AsXG4gICAgY29uZmlybVRpdGxlLFxuICAgIGNvbmZpcm1EZXNjcmlwdGlvbixcbiAgICBzdWNjZXNzTm90aWZpY2F0aW9uLFxuICAgIGVycm9yTm90aWZpY2F0aW9uLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIGRhdGFQcm92aWRlck5hbWUsXG4gICAgY29uZmlybU9rVGV4dCxcbiAgICBjb25maXJtQ2FuY2VsVGV4dCxcbiAgICBpbnZhbGlkYXRlcyxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBoaWRkZW4sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBjb25maXJtVGl0bGU6IGRlZmF1bHRDb25maXJtVGl0bGUsXG4gICAgICAgIGNvbmZpcm1Pa0xhYmVsOiBkZWZhdWx0Q29uZmlybU9rTGFiZWwsXG4gICAgICAgIGNhbmNlbExhYmVsOiBkZWZhdWx0Q2FuY2VsTGFiZWwsXG4gICAgICAgIG9uQ29uZmlybSxcbiAgICB9ID0gdXNlRGVsZXRlQnV0dG9uKHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgIGRhdGFQcm92aWRlck5hbWUsXG4gICAgICAgIGludmFsaWRhdGVzLFxuICAgICAgICBtZXRhLFxuICAgICAgICBvblN1Y2Nlc3MsXG4gICAgICAgIG11dGF0aW9uTW9kZTogbXV0YXRpb25Nb2RlUHJvcCxcbiAgICAgICAgZXJyb3JOb3RpZmljYXRpb24sXG4gICAgICAgIHN1Y2Nlc3NOb3RpZmljYXRpb24sXG4gICAgICAgIGFjY2Vzc0NvbnRyb2wsXG4gICAgfSk7XG5cbiAgICBpZiAoaGlkZGVuKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb25maXJtRGlhbG9nXG4gICAgICAgICAgICBva1RleHQ9e2NvbmZpcm1Pa1RleHQgPz8gZGVmYXVsdENvbmZpcm1Pa0xhYmVsfVxuICAgICAgICAgICAgY2FuY2VsVGV4dD17Y29uZmlybUNhbmNlbFRleHQgPz8gZGVmYXVsdENhbmNlbExhYmVsfVxuICAgICAgICAgICAgb2tCdXR0b25WYXJpYW50PXtcImRlc3RydWN0aXZlXCJ9XG4gICAgICAgICAgICBjYW5jZWxCdXR0b25WYXJpYW50PXtcIm91dGxpbmVcIn1cbiAgICAgICAgICAgIHRpdGxlPXtjb25maXJtVGl0bGUgPz8gZGVmYXVsdENvbmZpcm1UaXRsZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtjb25maXJtRGVzY3JpcHRpb259XG4gICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25Db25maXJtPXtvbkNvbmZpcm19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgICAgICAgaWNvbj17PFRyYXNoMkljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHshaGlkZVRleHQgJiYgKGNoaWxkcmVuID8/IGxhYmVsKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0NvbmZpcm1EaWFsb2c+XG4gICAgKTtcbn07XG5cbkRlbGV0ZUJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiRGVsZXRlQnV0dG9uXCI7XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IENoZXZyb25SaWdodEljb24sIERvdHNIb3Jpem9udGFsSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIlxuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgQnJlYWRjcnVtYiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8XCJuYXZcIj4gJiB7XG4gICAgc2VwYXJhdG9yPzogUmVhY3QuUmVhY3ROb2RlXG4gIH1cbj4oKHsgLi4ucHJvcHMgfSwgcmVmKSA9PiA8bmF2IHJlZj17cmVmfSBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiIHsuLi5wcm9wc30gLz4pXG5CcmVhZGNydW1iLmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iXCJcblxuY29uc3QgQnJlYWRjcnVtYkxpc3QgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MT0xpc3RFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8XCJvbFwiPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8b2xcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBicmVhay13b3JkcyB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBzbTpnYXAtMi41XCIsXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5CcmVhZGNydW1iTGlzdC5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYkxpc3RcIlxuXG5jb25zdCBCcmVhZGNydW1iSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxMSUVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjxcImxpXCI+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxsaVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5CcmVhZGNydW1iSXRlbS5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYkl0ZW1cIlxuXG5jb25zdCBCcmVhZGNydW1iTGluayA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxBbmNob3JFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8XCJhXCI+ICYge1xuICAgIGFzQ2hpbGQ/OiBib29sZWFuXG4gIH1cbj4oKHsgYXNDaGlsZCwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJhXCJcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJ0cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59KVxuQnJlYWRjcnVtYkxpbmsuZGlzcGxheU5hbWUgPSBcIkJyZWFkY3J1bWJMaW5rXCJcblxuY29uc3QgQnJlYWRjcnVtYlBhZ2UgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MU3BhbkVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjxcInNwYW5cIj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHNwYW5cbiAgICByZWY9e3JlZn1cbiAgICByb2xlPVwibGlua1wiXG4gICAgYXJpYS1kaXNhYmxlZD1cInRydWVcIlxuICAgIGFyaWEtY3VycmVudD1cInBhZ2VcIlxuICAgIGNsYXNzTmFtZT17Y24oXCJmb250LW5vcm1hbCB0ZXh0LWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQnJlYWRjcnVtYlBhZ2UuZGlzcGxheU5hbWUgPSBcIkJyZWFkY3J1bWJQYWdlXCJcblxuY29uc3QgQnJlYWRjcnVtYlNlcGFyYXRvciA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImxpXCI+KSA9PiAoXG4gIDxsaVxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3NOYW1lPXtjbihcIlsmPnN2Z106c2l6ZS0zLjVcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW4gPz8gPENoZXZyb25SaWdodEljb24gLz59XG4gIDwvbGk+XG4pXG5CcmVhZGNydW1iU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iU2VwYXJhdG9yXCJcblxuY29uc3QgQnJlYWRjcnVtYkVsbGlwc2lzID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJzcGFuXCI+KSA9PiAoXG4gIDxzcGFuXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzc05hbWU9e2NuKFwiZmxleCBoLTkgdy05IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxEb3RzSG9yaXpvbnRhbEljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPk1vcmU8L3NwYW4+XG4gIDwvc3Bhbj5cbilcbkJyZWFkY3J1bWJFbGxpcHNpcy5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYkVsaXBzc2lzXCJcblxuZXhwb3J0IHtcbiAgQnJlYWRjcnVtYixcbiAgQnJlYWRjcnVtYkxpc3QsXG4gIEJyZWFkY3J1bWJJdGVtLFxuICBCcmVhZGNydW1iTGluayxcbiAgQnJlYWRjcnVtYlBhZ2UsXG4gIEJyZWFkY3J1bWJTZXBhcmF0b3IsXG4gIEJyZWFkY3J1bWJFbGxpcHNpcyxcbn1cbiIsICJpbXBvcnQge1xuICAgIEJyZWFkY3J1bWIsXG4gICAgQnJlYWRjcnVtYkl0ZW0sXG4gICAgQnJlYWRjcnVtYkxpbmssXG4gICAgQnJlYWRjcnVtYkxpc3QsXG4gICAgQnJlYWRjcnVtYlBhZ2UsXG4gICAgQnJlYWRjcnVtYlNlcGFyYXRvcixcbn0gZnJvbSBcIkAvdWkvYnJlYWRjcnVtYlwiO1xuaW1wb3J0IHtcbiAgICBtYXRjaFJlc291cmNlRnJvbVJvdXRlLFxuICAgIHVzZUJyZWFkY3J1bWIsXG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgUmVmaW5lQnJlYWRjcnVtYlByb3BzIH0gZnJvbSBcIkByZWZpbmVkZXYvdWktdHlwZXNcIjtcbmltcG9ydCB7IEZDLCBGcmFnbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmtcIjtcbmltcG9ydCB7IEhvbWVJY29uIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuZXhwb3J0IHR5cGUgQnJlYWRjcnVtYlByb3BzID0gUmVmaW5lQnJlYWRjcnVtYlByb3BzO1xuXG5leHBvcnQgY29uc3QgQnJlYWRjcnVtYnM6IEZDPEJyZWFkY3J1bWJQcm9wcz4gPSAoeyBzaG93SG9tZSA9IHRydWUsIG1ldGEgfSkgPT4ge1xuICAgIGNvbnN0IHsgYnJlYWRjcnVtYnMgfSA9IHVzZUJyZWFkY3J1bWIoe1xuICAgICAgICBtZXRhLFxuICAgIH0pO1xuXG4gICAgY29uc3QgeyBoYXNEYXNoYm9hcmQgfSA9IHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IHsgcmVzb3VyY2VzIH0gPSB1c2VSZXNvdXJjZSgpO1xuXG4gICAgY29uc3QgZGFzaGJvYXJkUmVzb3VyY2UgPSByZXNvdXJjZXNbMF07XG5cbiAgICBjb25zdCByb290Um91dGVSZXNvdXJjZSA9IG1hdGNoUmVzb3VyY2VGcm9tUm91dGUoXCIvXCIsIHJlc291cmNlcyk7XG5cbiAgICBjb25zdCBCcmVhZENydW1iSXRlbXMgPSBicmVhZGNydW1icy5tYXAoKHsgbGFiZWwsIGhyZWYgfSwga2V5KSA9PiAoXG4gICAgICAgIDxGcmFnbWVudCBrZXk9e2tleX0+XG4gICAgICAgICAgICA8QnJlYWRjcnVtYkl0ZW0+XG4gICAgICAgICAgICAgICAge2hyZWYgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxCcmVhZGNydW1iTGluayBhc0NoaWxkIGhyZWY9e2AjeGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPExpbmsgaHJlZj17aHJlZn0+e2xhYmVsfTwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9CcmVhZGNydW1iTGluaz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8QnJlYWRjcnVtYlBhZ2U+e2xhYmVsfTwvQnJlYWRjcnVtYlBhZ2U+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQnJlYWRjcnVtYkl0ZW0+XG4gICAgICAgICAgICB7a2V5IDwgYnJlYWRjcnVtYnMubGVuZ3RoIC0gMSAmJiA8QnJlYWRjcnVtYlNlcGFyYXRvciAvPn1cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICApKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxCcmVhZGNydW1iPlxuICAgICAgICAgICAgPEJyZWFkY3J1bWJMaXN0PlxuICAgICAgICAgICAgICAgIHtzaG93SG9tZSB8fCBoYXNEYXNoYm9hcmQgfHwgcm9vdFJvdXRlUmVzb3VyY2UuZm91bmQgPyAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnJlYWRjcnVtYkl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJyZWFkY3J1bWJMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2Rhc2hib2FyZFJlc291cmNlLmxpc3Q/LnRvU3RyaW5nKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkUmVzb3VyY2U/Lm1ldGE/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRSZXNvdXJjZS5uYW1lID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRhc2hib2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtkYXNoYm9hcmRSZXNvdXJjZS5saXN0Py50b1N0cmluZygpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFJlc291cmNlPy5tZXRhPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFJlc291cmNlLm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRhc2hib2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkYXNoYm9hcmRSZXNvdXJjZT8ubWV0YT8uaWNvbiA/PyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvbWVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnJlYWRjcnVtYkxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JyZWFkY3J1bWJJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJyZWFkY3J1bWJTZXBhcmF0b3IgLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAge0JyZWFkQ3J1bWJJdGVtc31cbiAgICAgICAgICAgIDwvQnJlYWRjcnVtYkxpc3Q+XG4gICAgICAgIDwvQnJlYWRjcnVtYj5cbiAgICApO1xufTtcbiIsICJpbXBvcnQgeyBMYXlvdXRSZXNvdXJjZSB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyB1c2VMaW5rLCB1c2VSb3V0ZXJDb250ZXh0LCB1c2VSb3V0ZXJUeXBlIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIExpbmtQcm9wcyA9IExheW91dFJlc291cmNlW1wibGlua1wiXSAmIHtcbiAgICBhc0NoaWxkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBMaW5rID0gZm9yd2FyZFJlZjxIVE1MQW5jaG9yRWxlbWVudCwgTGlua1Byb3BzPihcbiAgICAoeyBjaGlsZHJlbiwgaHJlZiwgdGl0bGUsIGNsYXNzTmFtZSwgYXNDaGlsZCB9LCByZWYpID0+IHtcbiAgICAgICAgY29uc3QgeyBMaW5rOiBMZWdhY3lMaW5rIH0gPSB1c2VSb3V0ZXJDb250ZXh0KCk7XG4gICAgICAgIGNvbnN0IHJvdXRlclR5cGUgPSB1c2VSb3V0ZXJUeXBlKCk7XG4gICAgICAgIGNvbnN0IExpbmsgPSB1c2VMaW5rKCk7XG5cbiAgICAgICAgY29uc3QgQWN0aXZlTGluayA9IHJvdXRlclR5cGUgPT09IFwibGVnYWN5XCIgPyBMZWdhY3lMaW5rIDogTGluaztcbiAgICAgICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogQWN0aXZlTGluaztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbXAgcmVmPXtyZWZ9IHRvPXtocmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gdGl0bGU9e3RpdGxlfT5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L0NvbXA+XG4gICAgICAgICk7XG4gICAgfSxcbik7XG5cbkxpbmsuZGlzcGxheU5hbWUgPSBcIkxpbmtcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHtcbiAgICBDYWxlbmRhckljb24sXG4gICAgRW52ZWxvcGVDbG9zZWRJY29uLFxuICAgIEZhY2VJY29uLFxuICAgIEdlYXJJY29uLFxuICAgIFBlcnNvbkljb24sXG4gICAgUm9ja2V0SWNvbixcbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHsgQ2FyZXRTb3J0SWNvbiwgQ2hlY2tJY29uIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHtcbiAgICBCdXR0b24sXG4gICAgQ29tbWFuZCxcbiAgICBDb21tYW5kRW1wdHksXG4gICAgQ29tbWFuZEdyb3VwLFxuICAgIENvbW1hbmRJbnB1dCxcbiAgICBDb21tYW5kSXRlbSxcbiAgICBDb21tYW5kTGlzdCxcbiAgICBDb21tYW5kU2VwYXJhdG9yLFxuICAgIENvbW1hbmRTaG9ydGN1dCxcbiAgICBGb3JtQ29udHJvbCxcbiAgICBQb3BvdmVyLFxuICAgIFBvcG92ZXJDb250ZW50LFxuICAgIFBvcG92ZXJUcmlnZ2VyLFxuICAgIFNjcm9sbEFyZWEsXG59IGZyb20gXCJAL3VpXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9uLCBCYXNlUmVjb3JkLCBVc2VTZWxlY3RSZXR1cm5UeXBlIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICB1c2VTdGF0ZSxcbiAgICB0eXBlIEVsZW1lbnRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIENvbWJvYm94UHJvcHMgPSBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbW1hbmQ+ICZcbiAgICBQaWNrPFVzZVNlbGVjdFJldHVyblR5cGU8QmFzZU9wdGlvbiwgYW55PiwgXCJvcHRpb25zXCI+ICYge1xuICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICAgICAgZW1wdHlNZXNzYWdlPzogc3RyaW5nO1xuICAgICAgICBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSA9PiB2b2lkO1xuICAgICAgICB2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IEJhc2VSZWNvcmQ7XG4gICAgICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICB9O1xuXG5leHBvcnQgY29uc3QgQ29tYm9ib3ggPSBmb3J3YXJkUmVmPEVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmQ+LCBDb21ib2JveFByb3BzPihcbiAgICAoeyAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAgICAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wcy52YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBcImlkXCIgaW4gcHJvcHMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLnZhbHVlIGFzIEJhc2VSZWNvcmQpLmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJvcHMudmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxQb3BvdmVyIG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17b3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInctZnVsbCBzbTp3LVsyNTBweF0gZmxleCBqdXN0aWZ5LWJldHdlZW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXZhbHVlKCkgJiYgXCJ0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHMub3B0aW9ucz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHMucGxhY2Vob2xkZXIgPz8gXCJTZWxlY3RcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZXRTb3J0SWNvbiBjbGFzc05hbWU9XCJtbC0yIGgtNCB3LTQgc2hyaW5rLTAgb3BhY2l0eS01MFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBjbGFzc05hbWU9XCJ3LWZ1bGwgbWF4LXctZnVsbCBzbTp3LVsyNTBweF0gcC0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxDb21tYW5kIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIHNoYWRvdy1tZFwiIHJlZj17cmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kSW5wdXQgcGxhY2Vob2xkZXI9XCJUeXBlIGEgY29tbWFuZCBvciBzZWFyY2guLi5cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRMaXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kRW1wdHk+Tm8gcmVzdWx0cyBmb3VuZC48L0NvbW1hbmRFbXB0eT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29tbWFuZEdyb3VwIGhlYWRpbmc9XCJTdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2Nyb2xsQXJlYSBjbGFzc05hbWU9XCJtYXgtaC01MiBvdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5vcHRpb25zPy5tYXAoKG9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm9uQ2hhbmdlPy4ob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1sLWF1dG8gaC00IHctNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwib3BhY2l0eS0wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TY3JvbGxBcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZEdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Db21tYW5kTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPC9Db21tYW5kPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICk7XG4gICAgfSxcbik7XG5cbkNvbWJvYm94LmRpc3BsYXlOYW1lID0gXCJDb21ib2JveFwiO1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0ICogYXMgQWxlcnREaWFsb2dQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1hbGVydC1kaWFsb2dcIjtcbmltcG9ydCB7IFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwic3JjL3VpL2J1dHRvblwiO1xuXG5jb25zdCBBbGVydERpYWxvZyA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nVHJpZ2dlciA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nUG9ydGFsID0gQWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBBbGVydERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8QWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJmaXhlZCBpbnNldC0wIHotNTAgYmctYmxhY2svODAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTBcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ092ZXJsYXkuZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0NvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8QWxlcnREaWFsb2dQb3J0YWw+XG4gICAgICAgIDxBbGVydERpYWxvZ092ZXJsYXkgLz5cbiAgICAgICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICBcImZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIHotNTAgZ3JpZCB3LWZ1bGwgbWF4LXctbGcgdHJhbnNsYXRlLXgtWy01MCVdIHRyYW5zbGF0ZS15LVstNTAlXSBnYXAtNCBib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnIGR1cmF0aW9uLTIwMCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tbGVmdC0xLzIgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tdG9wLVs0OCVdIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tbGVmdC0xLzIgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS10b3AtWzQ4JV0gc206cm91bmRlZC1sZ1wiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgPC9BbGVydERpYWxvZ1BvcnRhbD5cbikpO1xuQWxlcnREaWFsb2dDb250ZW50LmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dIZWFkZXIgPSAoe1xuICAgIGNsYXNzTmFtZSxcbiAgICAuLi5wcm9wc1xufTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMiB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnRcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuQWxlcnREaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSBcIkFsZXJ0RGlhbG9nSGVhZGVyXCI7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nRm9vdGVyID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgLi4ucHJvcHNcbn06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiZmxleCBmbGV4LWNvbC1yZXZlcnNlIHNtOmZsZXgtcm93IHNtOmp1c3RpZnktZW5kIHNtOnNwYWNlLXgtMlwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbik7XG5BbGVydERpYWxvZ0Zvb3Rlci5kaXNwbGF5TmFtZSA9IFwiQWxlcnREaWFsb2dGb290ZXJcIjtcblxuY29uc3QgQWxlcnREaWFsb2dUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1sZyBmb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nRGVzY3JpcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ0Rlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID1cbiAgICBBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dBY3Rpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj4gJlxuICAgICAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj4gJlxuICAgICAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPlxuPigoeyBjbGFzc05hbWUsIHZhcmlhbnQgPSBcImRlZmF1bHRcIiwgc2l6ZSA9IFwiZGVmYXVsdFwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQWN0aW9uXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgYnV0dG9uVmFyaWFudHMoe1xuICAgICAgICAgICAgICAgIHZhcmlhbnQsXG4gICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbikpO1xuQWxlcnREaWFsb2dBY3Rpb24uZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nQ2FuY2VsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+ICZcbiAgICAgICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+ICZcbiAgICAgICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCB2YXJpYW50ID0gXCJvdXRsaW5lXCIsIHNpemUgPSBcImRlZmF1bHRcIiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbFxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSB9KSxcbiAgICAgICAgICAgIFwibXQtMiBzbTptdC0wXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ0NhbmNlbC5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgICBBbGVydERpYWxvZyxcbiAgICBBbGVydERpYWxvZ0FjdGlvbixcbiAgICBBbGVydERpYWxvZ0NhbmNlbCxcbiAgICBBbGVydERpYWxvZ0NvbnRlbnQsXG4gICAgQWxlcnREaWFsb2dEZXNjcmlwdGlvbixcbiAgICBBbGVydERpYWxvZ0Zvb3RlcixcbiAgICBBbGVydERpYWxvZ0hlYWRlcixcbiAgICBBbGVydERpYWxvZ092ZXJsYXksXG4gICAgQWxlcnREaWFsb2dQb3J0YWwsXG4gICAgQWxlcnREaWFsb2dUaXRsZSxcbiAgICBBbGVydERpYWxvZ1RyaWdnZXIsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgYmFkZ2VWYXJpYW50cyA9IGN2YShcbiAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgcHgtMi41IHB5LTAuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJpbmcgZm9jdXM6cmluZy1vZmZzZXQtMlwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBcImJvcmRlci10cmFuc3BhcmVudCBiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHNoYWRvdyBob3ZlcjpiZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTpcbiAgICAgICAgICBcImJvcmRlci10cmFuc3BhcmVudCBiZy1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJib3JkZXItdHJhbnNwYXJlbnQgYmctZGVzdHJ1Y3RpdmUgdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHNoYWRvdyBob3ZlcjpiZy1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICBvdXRsaW5lOiBcInRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfVxuKVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBiYWRnZVZhcmlhbnRzPiB7fVxuXG5mdW5jdGlvbiBCYWRnZSh7IGNsYXNzTmFtZSwgdmFyaWFudCwgLi4ucHJvcHMgfTogQmFkZ2VQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApXG59XG5cbmV4cG9ydCB7IEJhZGdlLCBiYWRnZVZhcmlhbnRzIH1cbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDaGV2cm9uTGVmdEljb24sIENoZXZyb25SaWdodEljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5pbXBvcnQgeyBEYXlQaWNrZXIgfSBmcm9tIFwicmVhY3QtZGF5LXBpY2tlclwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwic3JjL3VpL2J1dHRvblwiO1xuXG5leHBvcnQgdHlwZSBDYWxlbmRhclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERheVBpY2tlcj47XG5cbmZ1bmN0aW9uIENhbGVuZGFyKHtcbiAgICBjbGFzc05hbWUsXG4gICAgY2xhc3NOYW1lcyxcbiAgICBzaG93T3V0c2lkZURheXMgPSB0cnVlLFxuICAgIC4uLnByb3BzXG59OiBDYWxlbmRhclByb3BzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPERheVBpY2tlclxuICAgICAgICAgICAgc2hvd091dHNpZGVEYXlzPXtzaG93T3V0c2lkZURheXN9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicC0zXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgICAgICAgICAgbW9udGhzOiBcImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgc3BhY2UteS00IHNtOnNwYWNlLXgtNCBzbTpzcGFjZS15LTBcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCJzcGFjZS15LTRcIixcbiAgICAgICAgICAgICAgICBjYXB0aW9uOiBcImZsZXgganVzdGlmeS1jZW50ZXIgcHQtMSByZWxhdGl2ZSBpdGVtcy1jZW50ZXJcIixcbiAgICAgICAgICAgICAgICBjYXB0aW9uX2xhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW1cIixcbiAgICAgICAgICAgICAgICBuYXY6IFwic3BhY2UteC0xIGZsZXggaXRlbXMtY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgbmF2X2J1dHRvbjogY24oXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudDogXCJvdXRsaW5lXCIgfSksXG4gICAgICAgICAgICAgICAgICAgIFwiaC03IHctNyBiZy10cmFuc3BhcmVudCBwLTAgb3BhY2l0eS01MCBob3ZlcjpvcGFjaXR5LTEwMFwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbmF2X2J1dHRvbl9wcmV2aW91czogXCJhYnNvbHV0ZSBsZWZ0LTFcIixcbiAgICAgICAgICAgICAgICBuYXZfYnV0dG9uX25leHQ6IFwiYWJzb2x1dGUgcmlnaHQtMVwiLFxuICAgICAgICAgICAgICAgIHRhYmxlOiBcInctZnVsbCBib3JkZXItY29sbGFwc2Ugc3BhY2UteS0xXCIsXG4gICAgICAgICAgICAgICAgaGVhZF9yb3c6IFwiZmxleFwiLFxuICAgICAgICAgICAgICAgIGhlYWRfY2VsbDpcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgcm91bmRlZC1tZCB3LTggZm9udC1ub3JtYWwgdGV4dC1bMC44cmVtXVwiLFxuICAgICAgICAgICAgICAgIHJvdzogXCJmbGV4IHctZnVsbCBtdC0yXCIsXG4gICAgICAgICAgICAgICAgY2VsbDogY24oXG4gICAgICAgICAgICAgICAgICAgIFwicmVsYXRpdmUgcC0wIHRleHQtY2VudGVyIHRleHQtc20gZm9jdXMtd2l0aGluOnJlbGF0aXZlIGZvY3VzLXdpdGhpbjp6LTIwIFsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpiZy1hY2NlbnQgWyY6aGFzKFthcmlhLXNlbGVjdGVkXS5kYXktb3V0c2lkZSldOmJnLWFjY2VudC81MCBbJjpoYXMoW2FyaWEtc2VsZWN0ZWRdLmRheS1yYW5nZS1lbmQpXTpyb3VuZGVkLXItbWRcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMubW9kZSA9PT0gXCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiWyY6aGFzKD4uZGF5LXJhbmdlLWVuZCldOnJvdW5kZWQtci1tZCBbJjpoYXMoPi5kYXktcmFuZ2Utc3RhcnQpXTpyb3VuZGVkLWwtbWQgZmlyc3Q6WyY6aGFzKFthcmlhLXNlbGVjdGVkXSldOnJvdW5kZWQtbC1tZCBsYXN0OlsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpyb3VuZGVkLXItbWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpyb3VuZGVkLW1kXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkYXk6IGNuKFxuICAgICAgICAgICAgICAgICAgICBidXR0b25WYXJpYW50cyh7IHZhcmlhbnQ6IFwiZ2hvc3RcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgXCJoLTggdy04IHAtMCBmb250LW5vcm1hbCBhcmlhLXNlbGVjdGVkOm9wYWNpdHktMTAwXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkYXlfcmFuZ2Vfc3RhcnQ6IFwiZGF5LXJhbmdlLXN0YXJ0XCIsXG4gICAgICAgICAgICAgICAgZGF5X3JhbmdlX2VuZDogXCJkYXktcmFuZ2UtZW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X3NlbGVjdGVkOlxuICAgICAgICAgICAgICAgICAgICBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBmb2N1czpiZy1wcmltYXJ5IGZvY3VzOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X3RvZGF5OiBcImJnLWFjY2VudCB0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X291dHNpZGU6XG4gICAgICAgICAgICAgICAgICAgIFwiZGF5LW91dHNpZGUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG9wYWNpdHktNTAgIGFyaWEtc2VsZWN0ZWQ6YmctYWNjZW50LzUwIGFyaWEtc2VsZWN0ZWQ6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGFyaWEtc2VsZWN0ZWQ6b3BhY2l0eS0zMFwiLFxuICAgICAgICAgICAgICAgIGRheV9kaXNhYmxlZDogXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgb3BhY2l0eS01MFwiLFxuICAgICAgICAgICAgICAgIGRheV9yYW5nZV9taWRkbGU6XG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZDpiZy1hY2NlbnQgYXJpYS1zZWxlY3RlZDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X2hpZGRlbjogXCJpbnZpc2libGVcIixcbiAgICAgICAgICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgICAgICBJY29uTGVmdDogKCkgPT4gPENoZXZyb25MZWZ0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz4sXG4gICAgICAgICAgICAgICAgSWNvblJpZ2h0OiAoKSA9PiA8Q2hldnJvblJpZ2h0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz4sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICk7XG59XG5DYWxlbmRhci5kaXNwbGF5TmFtZSA9IFwiQ2FsZW5kYXJcIjtcblxuZXhwb3J0IHsgQ2FsZW5kYXIgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmNvbnN0IENhcmQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJyb3VuZGVkLXhsIGJvcmRlciBiZy1jYXJkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIHNoYWRvd1wiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ2FyZC5kaXNwbGF5TmFtZSA9IFwiQ2FyZFwiXG5cbmNvbnN0IENhcmRIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSBwLTZcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ2FyZEhlYWRlci5kaXNwbGF5TmFtZSA9IFwiQ2FyZEhlYWRlclwiXG5cbmNvbnN0IENhcmRUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxoM1xuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5DYXJkVGl0bGUuZGlzcGxheU5hbWUgPSBcIkNhcmRUaXRsZVwiXG5cbmNvbnN0IENhcmREZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MUGFyYWdyYXBoRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHBcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ2FyZERlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID0gXCJDYXJkRGVzY3JpcHRpb25cIlxuXG5jb25zdCBDYXJkQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInAtNiBwdC0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpXG5DYXJkQ29udGVudC5kaXNwbGF5TmFtZSA9IFwiQ2FyZENvbnRlbnRcIlxuXG5jb25zdCBDYXJkRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcImZsZXggaXRlbXMtY2VudGVyIHAtNiBwdC0wXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcbkNhcmRGb290ZXIuZGlzcGxheU5hbWUgPSBcIkNhcmRGb290ZXJcIlxuXG5leHBvcnQgeyBDYXJkLCBDYXJkSGVhZGVyLCBDYXJkRm9vdGVyLCBDYXJkVGl0bGUsIENhcmREZXNjcmlwdGlvbiwgQ2FyZENvbnRlbnQgfVxuIiwgIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCJcbmltcG9ydCB7IENoZWNrSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwZWVyIGgtNCB3LTQgc2hyaW5rLTAgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLXByaW1hcnkgc2hhZG93IGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXByaW1hcnkgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvclxuICAgICAgY2xhc3NOYW1lPXtjbihcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtY3VycmVudFwiKX1cbiAgICA+XG4gICAgICA8Q2hlY2tJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKVxuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lXG5cbmV4cG9ydCB7IENoZWNrYm94IH1cbiIsICJcInVzZSBjbGllbnRcIlxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdHlwZSBEaWFsb2dQcm9wcyB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlhbG9nXCJcbmltcG9ydCB7IE1hZ25pZnlpbmdHbGFzc0ljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCJcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZFByaW1pdGl2ZSB9IGZyb20gXCJjbWRrXCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuaW1wb3J0IHsgRGlhbG9nLCBEaWFsb2dDb250ZW50IH0gZnJvbSBcInNyYy91aS9kaWFsb2dcIlxuXG5jb25zdCBDb21tYW5kID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmVcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJmbGV4IGgtZnVsbCB3LWZ1bGwgZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYmctcG9wb3ZlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZFwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ29tbWFuZC5kaXNwbGF5TmFtZSA9IENvbW1hbmRQcmltaXRpdmUuZGlzcGxheU5hbWVcblxuaW50ZXJmYWNlIENvbW1hbmREaWFsb2dQcm9wcyBleHRlbmRzIERpYWxvZ1Byb3BzIHt9XG5cbmNvbnN0IENvbW1hbmREaWFsb2cgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfTogQ29tbWFuZERpYWxvZ1Byb3BzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERpYWxvZyB7Li4ucHJvcHN9PlxuICAgICAgPERpYWxvZ0NvbnRlbnQgY2xhc3NOYW1lPVwib3ZlcmZsb3ctaGlkZGVuIHAtMFwiPlxuICAgICAgICA8Q29tbWFuZCBjbGFzc05hbWU9XCJbJl9bY21kay1ncm91cC1oZWFkaW5nXV06cHgtMiBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06Zm9udC1tZWRpdW0gWyZfW2NtZGstZ3JvdXAtaGVhZGluZ11dOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBbJl9bY21kay1ncm91cF06bm90KFtoaWRkZW5dKV9+W2NtZGstZ3JvdXBdXTpwdC0wIFsmX1tjbWRrLWdyb3VwXV06cHgtMiBbJl9bY21kay1pbnB1dC13cmFwcGVyXV9zdmddOmgtNSBbJl9bY21kay1pbnB1dC13cmFwcGVyXV9zdmddOnctNSBbJl9bY21kay1pbnB1dF1dOmgtMTIgWyZfW2NtZGstaXRlbV1dOnB4LTIgWyZfW2NtZGstaXRlbV1dOnB5LTMgWyZfW2NtZGstaXRlbV1fc3ZnXTpoLTUgWyZfW2NtZGstaXRlbV1fc3ZnXTp3LTVcIj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvQ29tbWFuZD5cbiAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICA8L0RpYWxvZz5cbiAgKVxufVxuXG5jb25zdCBDb21tYW5kSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb21tYW5kUHJpbWl0aXZlLklucHV0PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb21tYW5kUHJpbWl0aXZlLklucHV0PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGJvcmRlci1iIHB4LTNcIiBjbWRrLWlucHV0LXdyYXBwZXI9XCJcIj5cbiAgICA8TWFnbmlmeWluZ0dsYXNzSWNvbiBjbGFzc05hbWU9XCJtci0yIGgtNCB3LTQgc2hyaW5rLTAgb3BhY2l0eS01MFwiIC8+XG4gICAgPENvbW1hbmRQcmltaXRpdmUuSW5wdXRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJmbGV4IGgtMTAgdy1mdWxsIHJvdW5kZWQtbWQgYmctdHJhbnNwYXJlbnQgcHktMyB0ZXh0LXNtIG91dGxpbmUtbm9uZSBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvZGl2PlxuKSlcblxuQ29tbWFuZElucHV0LmRpc3BsYXlOYW1lID0gQ29tbWFuZFByaW1pdGl2ZS5JbnB1dC5kaXNwbGF5TmFtZVxuXG5jb25zdCBDb21tYW5kTGlzdCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmRQcmltaXRpdmUuTGlzdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5MaXN0PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29tbWFuZFByaW1pdGl2ZS5MaXN0XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIm1heC1oLVszMDBweF0gb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblxuQ29tbWFuZExpc3QuZGlzcGxheU5hbWUgPSBDb21tYW5kUHJpbWl0aXZlLkxpc3QuZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZEVtcHR5ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5FbXB0eT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5FbXB0eT5cbj4oKHByb3BzLCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmUuRW1wdHlcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9XCJweS02IHRleHQtY2VudGVyIHRleHQtc21cIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5cbkNvbW1hbmRFbXB0eS5kaXNwbGF5TmFtZSA9IENvbW1hbmRQcmltaXRpdmUuRW1wdHkuZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZEdyb3VwID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5Hcm91cD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5Hcm91cD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmUuR3JvdXBcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJvdmVyZmxvdy1oaWRkZW4gcC0xIHRleHQtZm9yZWdyb3VuZCBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06cHgtMiBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06cHktMS41IFsmX1tjbWRrLWdyb3VwLWhlYWRpbmddXTp0ZXh0LXhzIFsmX1tjbWRrLWdyb3VwLWhlYWRpbmddXTpmb250LW1lZGl1bSBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5cbkNvbW1hbmRHcm91cC5kaXNwbGF5TmFtZSA9IENvbW1hbmRQcmltaXRpdmUuR3JvdXAuZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmRQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb21tYW5kUHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIi1teC0xIGgtcHggYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcbkNvbW1hbmRTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBDb21tYW5kUHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZVxuXG5jb25zdCBDb21tYW5kSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmRQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29tbWFuZFByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIG91dGxpbmUtbm9uZSBkYXRhLVtkaXNhYmxlZD10cnVlXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW3NlbGVjdGVkPXRydWVdOmJnLWFjY2VudCBkYXRhLVtzZWxlY3RlZD10cnVlXTp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkPXRydWVdOm9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblxuQ29tbWFuZEl0ZW0uZGlzcGxheU5hbWUgPSBDb21tYW5kUHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZFNob3J0Y3V0ID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcIm1sLWF1dG8gdGV4dC14cyB0cmFja2luZy13aWRlc3QgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5Db21tYW5kU2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkNvbW1hbmRTaG9ydGN1dFwiXG5cbmV4cG9ydCB7XG4gIENvbW1hbmQsXG4gIENvbW1hbmREaWFsb2csXG4gIENvbW1hbmRJbnB1dCxcbiAgQ29tbWFuZExpc3QsXG4gIENvbW1hbmRFbXB0eSxcbiAgQ29tbWFuZEdyb3VwLFxuICBDb21tYW5kSXRlbSxcbiAgQ29tbWFuZFNob3J0Y3V0LFxuICBDb21tYW5kU2VwYXJhdG9yLFxufVxuIiwgIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgKiBhcyBEaWFsb2dQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaWFsb2dcIlxuaW1wb3J0IHsgQ3Jvc3MySWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmNvbnN0IERpYWxvZyA9IERpYWxvZ1ByaW1pdGl2ZS5Sb290XG5cbmNvbnN0IERpYWxvZ1RyaWdnZXIgPSBEaWFsb2dQcmltaXRpdmUuVHJpZ2dlclxuXG5jb25zdCBEaWFsb2dQb3J0YWwgPSBEaWFsb2dQcmltaXRpdmUuUG9ydGFsXG5cbmNvbnN0IERpYWxvZ0Nsb3NlID0gRGlhbG9nUHJpbWl0aXZlLkNsb3NlXG5cbmNvbnN0IERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcImZpeGVkIGluc2V0LTAgei01MCBiZy1ibGFjay84MCAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTBcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcbkRpYWxvZ092ZXJsYXkuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheS5kaXNwbGF5TmFtZVxuXG5jb25zdCBEaWFsb2dDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1BvcnRhbD5cbiAgICA8RGlhbG9nT3ZlcmxheSAvPlxuICAgIDxEaWFsb2dQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcImZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIHotNTAgZ3JpZCB3LWZ1bGwgbWF4LXctbGcgdHJhbnNsYXRlLXgtWy01MCVdIHRyYW5zbGF0ZS15LVstNTAlXSBnYXAtNCBib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnIGR1cmF0aW9uLTIwMCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tbGVmdC0xLzIgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tdG9wLVs0OCVdIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tbGVmdC0xLzIgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS10b3AtWzQ4JV0gc206cm91bmRlZC1sZ1wiLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZSBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC00IHRvcC00IHJvdW5kZWQtc20gb3BhY2l0eS03MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICA8Q3Jvc3MySWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ2xvc2U+XG4gICAgPC9EaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbiAgPC9EaWFsb2dQb3J0YWw+XG4pKVxuRGlhbG9nQ29udGVudC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lXG5cbmNvbnN0IERpYWxvZ0hlYWRlciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnRcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKVxuRGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJEaWFsb2dIZWFkZXJcIlxuXG5jb25zdCBEaWFsb2dGb290ZXIgPSAoe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcImZsZXggZmxleC1jb2wtcmV2ZXJzZSBzbTpmbGV4LXJvdyBzbTpqdXN0aWZ5LWVuZCBzbTpzcGFjZS14LTJcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKVxuRGlhbG9nRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJEaWFsb2dGb290ZXJcIlxuXG5jb25zdCBEaWFsb2dUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlRpdGxlPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLlRpdGxlXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwidGV4dC1sZyBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuRGlhbG9nVGl0bGUuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWVcblxuY29uc3QgRGlhbG9nRGVzY3JpcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5EaWFsb2dEZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZVxuXG5leHBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ1BvcnRhbCxcbiAgRGlhbG9nT3ZlcmxheSxcbiAgRGlhbG9nVHJpZ2dlcixcbiAgRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0hlYWRlcixcbiAgRGlhbG9nRm9vdGVyLFxuICBEaWFsb2dUaXRsZSxcbiAgRGlhbG9nRGVzY3JpcHRpb24sXG59XG4iLCAiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICogYXMgRHJvcGRvd25NZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHtcbiAgICBDaGVja0ljb24sXG4gICAgQ2hldnJvblJpZ2h0SWNvbixcbiAgICBEb3RGaWxsZWRJY29uLFxufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgICAgIGluc2V0PzogYm9vbGVhbjtcbiAgICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcImZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIHJvdW5kZWQtc20gcHgtMiBweS0xLjUgdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOmJnLWFjY2VudFwiLFxuICAgICAgICAgICAgaW5zZXQgJiYgXCJwbC04XCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPENoZXZyb25SaWdodEljb24gY2xhc3NOYW1lPVwibWwtYXV0byBoLTQgdy00XCIgLz5cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID1cbiAgICBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJ6LTUwIG1pbi13LVs4cmVtXSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYmctcG9wb3ZlciBwLTEgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9XG4gICAgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgIFwiei01MCBtaW4tdy1bOHJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctcG9wb3ZlciBwLTEgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LW1kXCIsXG4gICAgICAgICAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnNsaWRlLWluLWZyb20tYm90dG9tLTJcIixcbiAgICAgICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgICAgIGluc2V0PzogYm9vbGVhbjtcbiAgICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MFwiLFxuICAgICAgICAgICAgaW5zZXQgJiYgXCJwbC04XCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweS0xLjUgcGwtOCBwci0yIHRleHQtc20gb3V0bGluZS1ub25lIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMiBmbGV4IGgtMy41IHctMy41IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9XG4gICAgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJyZWxhdGl2ZSBmbGV4IGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC04IHByLTIgdGV4dC1zbSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTBcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJzb2x1dGUgbGVmdC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgPERvdEZpbGxlZEljb24gY2xhc3NOYW1lPVwiaC00IHctNCBmaWxsLWN1cnJlbnRcIiAvPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgICAgIGluc2V0PzogYm9vbGVhbjtcbiAgICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInB4LTIgcHktMS41IHRleHQtc20gZm9udC1zZW1pYm9sZFwiLFxuICAgICAgICAgICAgaW5zZXQgJiYgXCJwbC04XCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXCItbXgtMSBteS0xIGgtcHggYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgLi4ucHJvcHNcbn06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICBcIm1sLWF1dG8gdGV4dC14cyB0cmFja2luZy13aWRlc3Qgb3BhY2l0eS02MFwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgKTtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgICBEcm9wZG93bk1lbnUsXG4gICAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgICBEcm9wZG93bk1lbnVDb250ZW50LFxuICAgIERyb3Bkb3duTWVudUl0ZW0sXG4gICAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICAgIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gICAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gICAgRHJvcGRvd25NZW51R3JvdXAsXG4gICAgRHJvcGRvd25NZW51UG9ydGFsLFxuICAgIERyb3Bkb3duTWVudVN1YixcbiAgICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxuICAgIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gICAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiXCJ1c2UgY2xpZW50XCJcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIlxuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiXG5pbXBvcnQge1xuICBDb250cm9sbGVyLFxuICBDb250cm9sbGVyUHJvcHMsXG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIEZvcm1Qcm92aWRlcixcbiAgdXNlRm9ybUNvbnRleHQsXG59IGZyb20gXCJyZWFjdC1ob29rLWZvcm1cIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCJzcmMvdWkvbGFiZWxcIlxuXG5jb25zdCBGb3JtID0gRm9ybVByb3ZpZGVyXG5cbnR5cGUgRm9ybUZpZWxkQ29udGV4dFZhbHVlPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz5cbj4gPSB7XG4gIG5hbWU6IFROYW1lXG59XG5cbmNvbnN0IEZvcm1GaWVsZENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEZvcm1GaWVsZENvbnRleHRWYWx1ZT4oXG4gIHt9IGFzIEZvcm1GaWVsZENvbnRleHRWYWx1ZVxuKVxuXG5jb25zdCBGb3JtRmllbGQgPSA8XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPlxuPih7XG4gIC4uLnByb3BzXG59OiBDb250cm9sbGVyUHJvcHM8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8Rm9ybUZpZWxkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBuYW1lOiBwcm9wcy5uYW1lIH19PlxuICAgICAgPENvbnRyb2xsZXIgey4uLnByb3BzfSAvPlxuICAgIDwvRm9ybUZpZWxkQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5jb25zdCB1c2VGb3JtRmllbGQgPSAoKSA9PiB7XG4gIGNvbnN0IGZpZWxkQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRm9ybUZpZWxkQ29udGV4dClcbiAgY29uc3QgaXRlbUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZvcm1JdGVtQ29udGV4dClcbiAgY29uc3QgeyBnZXRGaWVsZFN0YXRlLCBmb3JtU3RhdGUgfSA9IHVzZUZvcm1Db250ZXh0KClcblxuICBjb25zdCBmaWVsZFN0YXRlID0gZ2V0RmllbGRTdGF0ZShmaWVsZENvbnRleHQubmFtZSwgZm9ybVN0YXRlKVxuXG4gIGlmICghZmllbGRDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlRm9ybUZpZWxkIHNob3VsZCBiZSB1c2VkIHdpdGhpbiA8Rm9ybUZpZWxkPlwiKVxuICB9XG5cbiAgY29uc3QgeyBpZCB9ID0gaXRlbUNvbnRleHRcblxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIG5hbWU6IGZpZWxkQ29udGV4dC5uYW1lLFxuICAgIGZvcm1JdGVtSWQ6IGAke2lkfS1mb3JtLWl0ZW1gLFxuICAgIGZvcm1EZXNjcmlwdGlvbklkOiBgJHtpZH0tZm9ybS1pdGVtLWRlc2NyaXB0aW9uYCxcbiAgICBmb3JtTWVzc2FnZUlkOiBgJHtpZH0tZm9ybS1pdGVtLW1lc3NhZ2VgLFxuICAgIC4uLmZpZWxkU3RhdGUsXG4gIH1cbn1cblxudHlwZSBGb3JtSXRlbUNvbnRleHRWYWx1ZSA9IHtcbiAgaWQ6IHN0cmluZ1xufVxuXG5jb25zdCBGb3JtSXRlbUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEZvcm1JdGVtQ29udGV4dFZhbHVlPihcbiAge30gYXMgRm9ybUl0ZW1Db250ZXh0VmFsdWVcbilcblxuY29uc3QgRm9ybUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IGlkID0gUmVhY3QudXNlSWQoKVxuXG4gIHJldHVybiAoXG4gICAgPEZvcm1JdGVtQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBpZCB9fT5cbiAgICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJzcGFjZS15LTJcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICAgIDwvRm9ybUl0ZW1Db250ZXh0LlByb3ZpZGVyPlxuICApXG59KVxuRm9ybUl0ZW0uZGlzcGxheU5hbWUgPSBcIkZvcm1JdGVtXCJcblxuY29uc3QgRm9ybUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgeyBlcnJvciwgZm9ybUl0ZW1JZCB9ID0gdXNlRm9ybUZpZWxkKClcblxuICByZXR1cm4gKFxuICAgIDxMYWJlbFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKGVycm9yICYmIFwidGV4dC1kZXN0cnVjdGl2ZVwiLCBjbGFzc05hbWUpfVxuICAgICAgaHRtbEZvcj17Zm9ybUl0ZW1JZH1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59KVxuRm9ybUxhYmVsLmRpc3BsYXlOYW1lID0gXCJGb3JtTGFiZWxcIlxuXG5jb25zdCBGb3JtQ29udHJvbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNsb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNsb3Q+XG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCB7IGVycm9yLCBmb3JtSXRlbUlkLCBmb3JtRGVzY3JpcHRpb25JZCwgZm9ybU1lc3NhZ2VJZCB9ID0gdXNlRm9ybUZpZWxkKClcblxuICByZXR1cm4gKFxuICAgIDxTbG90XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGlkPXtmb3JtSXRlbUlkfVxuICAgICAgYXJpYS1kZXNjcmliZWRieT17XG4gICAgICAgICFlcnJvclxuICAgICAgICAgID8gYCR7Zm9ybURlc2NyaXB0aW9uSWR9YFxuICAgICAgICAgIDogYCR7Zm9ybURlc2NyaXB0aW9uSWR9ICR7Zm9ybU1lc3NhZ2VJZH1gXG4gICAgICB9XG4gICAgICBhcmlhLWludmFsaWQ9eyEhZXJyb3J9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufSlcbkZvcm1Db250cm9sLmRpc3BsYXlOYW1lID0gXCJGb3JtQ29udHJvbFwiXG5cbmNvbnN0IEZvcm1EZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MUGFyYWdyYXBoRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgeyBmb3JtRGVzY3JpcHRpb25JZCB9ID0gdXNlRm9ybUZpZWxkKClcblxuICByZXR1cm4gKFxuICAgIDxwXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGlkPXtmb3JtRGVzY3JpcHRpb25JZH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJ0ZXh0LVswLjhyZW1dIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn0pXG5Gb3JtRGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSBcIkZvcm1EZXNjcmlwdGlvblwiXG5cbmNvbnN0IEZvcm1NZXNzYWdlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFBhcmFncmFwaEVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxQYXJhZ3JhcGhFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgeyBlcnJvciwgZm9ybU1lc3NhZ2VJZCB9ID0gdXNlRm9ybUZpZWxkKClcbiAgY29uc3QgYm9keSA9IGVycm9yID8gU3RyaW5nKGVycm9yPy5tZXNzYWdlKSA6IGNoaWxkcmVuXG5cbiAgaWYgKCFib2R5KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPHBcbiAgICAgIHJlZj17cmVmfVxuICAgICAgaWQ9e2Zvcm1NZXNzYWdlSWR9XG4gICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1bMC44cmVtXSBmb250LW1lZGl1bSB0ZXh0LWRlc3RydWN0aXZlXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2JvZHl9XG4gICAgPC9wPlxuICApXG59KVxuRm9ybU1lc3NhZ2UuZGlzcGxheU5hbWUgPSBcIkZvcm1NZXNzYWdlXCJcblxuZXhwb3J0IHtcbiAgdXNlRm9ybUZpZWxkLFxuICBGb3JtLFxuICBGb3JtSXRlbSxcbiAgRm9ybUxhYmVsLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybURlc2NyaXB0aW9uLFxuICBGb3JtTWVzc2FnZSxcbiAgRm9ybUZpZWxkLFxufVxuIiwgIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgKiBhcyBMYWJlbFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWxhYmVsXCJcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6b3BhY2l0eS03MFwiXG4pXG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJlxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuTGFiZWwuZGlzcGxheU5hbWUgPSBMYWJlbFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lXG5cbmV4cG9ydCB7IExhYmVsIH1cbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRQcm9wc1xuICBleHRlbmRzIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4ge31cblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIElucHV0UHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHR5cGUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcImZsZXggaC05IHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItaW5wdXQgYmctdHJhbnNwYXJlbnQgcHgtMyBweS0xIHRleHQtc20gc2hhZG93LXNtIHRyYW5zaXRpb24tY29sb3JzIGZpbGU6Ym9yZGVyLTAgZmlsZTpiZy10cmFuc3BhcmVudCBmaWxlOnRleHQtc20gZmlsZTpmb250LW1lZGl1bSBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTEgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKVxuICB9XG4pXG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIlxuXG5leHBvcnQgeyBJbnB1dCB9XG4iLCAiXCJ1c2UgY2xpZW50XCJcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuXG5jb25zdCBQb3BvdmVyID0gUG9wb3ZlclByaW1pdGl2ZS5Sb290XG5cbmNvbnN0IFBvcG92ZXJUcmlnZ2VyID0gUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvclxuXG5jb25zdCBQb3BvdmVyQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJ6LTUwIHctNzIgcm91bmRlZC1tZCBib3JkZXIgYmctcG9wb3ZlciBwLTQgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LW1kIG91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnNsaWRlLWluLWZyb20tYm90dG9tLTJcIixcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKVxuUG9wb3ZlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWVcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH1cbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgRHJhZ0hhbmRsZURvdHMySWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCAqIGFzIFJlc2l6YWJsZVByaW1pdGl2ZSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbEdyb3VwID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBSZXNpemFibGVQcmltaXRpdmUuUGFuZWxHcm91cD4pID0+IChcbiAgICA8UmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsR3JvdXBcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiZmxleCBoLWZ1bGwgdy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06ZmxleC1jb2xcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbCA9IFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbDtcblxuY29uc3QgUmVzaXphYmxlSGFuZGxlID0gKHtcbiAgICB3aXRoSGFuZGxlLFxuICAgIGNsYXNzTmFtZSxcbiAgICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZT4gJiB7XG4gICAgd2l0aEhhbmRsZT86IGJvb2xlYW47XG59KSA9PiAoXG4gICAgPFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJyZWxhdGl2ZSBmbGV4IHctcHggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJvcmRlciBhZnRlcjphYnNvbHV0ZSBhZnRlcjppbnNldC15LTAgYWZ0ZXI6bGVmdC0xLzIgYWZ0ZXI6dy0xIGFmdGVyOi10cmFuc2xhdGUteC0xLzIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTEgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0xIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06aC1weCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOnctZnVsbCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOmxlZnQtMCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOmgtMSBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOnctZnVsbCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOi10cmFuc2xhdGUteS0xLzIgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjp0cmFuc2xhdGUteC0wIFsmW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXT5kaXZdOnJvdGF0ZS05MFwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgICB7d2l0aEhhbmRsZSAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInotMTAgZmxleCBoLTQgdy0zIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLXNtIGJvcmRlciBiZy1ib3JkZXJcIj5cbiAgICAgICAgICAgICAgICA8RHJhZ0hhbmRsZURvdHMySWNvbiBjbGFzc05hbWU9XCJoLTIuNSB3LTIuNVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICA8L1Jlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZT5cbik7XG5cbmV4cG9ydCB7IFJlc2l6YWJsZVBhbmVsR3JvdXAsIFJlc2l6YWJsZVBhbmVsLCBSZXNpemFibGVIYW5kbGUgfTtcbiIsICJcInVzZSBjbGllbnRcIlxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0ICogYXMgU2Nyb2xsQXJlYVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNjcm9sbC1hcmVhXCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuXG5jb25zdCBTY3JvbGxBcmVhID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2Nyb2xsQXJlYVByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTY3JvbGxBcmVhUHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2Nyb2xsQXJlYVByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxTY3JvbGxBcmVhUHJpbWl0aXZlLlZpZXdwb3J0IGNsYXNzTmFtZT1cImgtZnVsbCB3LWZ1bGwgcm91bmRlZC1baW5oZXJpdF1cIj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1Njcm9sbEFyZWFQcmltaXRpdmUuVmlld3BvcnQ+XG4gICAgPFNjcm9sbEJhciAvPlxuICAgIDxTY3JvbGxBcmVhUHJpbWl0aXZlLkNvcm5lciAvPlxuICA8L1Njcm9sbEFyZWFQcmltaXRpdmUuUm9vdD5cbikpXG5TY3JvbGxBcmVhLmRpc3BsYXlOYW1lID0gU2Nyb2xsQXJlYVByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lXG5cbmNvbnN0IFNjcm9sbEJhciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNjcm9sbEFyZWFQcmltaXRpdmUuU2Nyb2xsQXJlYVNjcm9sbGJhcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2Nyb2xsQXJlYVByaW1pdGl2ZS5TY3JvbGxBcmVhU2Nyb2xsYmFyPlxuPigoeyBjbGFzc05hbWUsIG9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNjcm9sbEFyZWFQcmltaXRpdmUuU2Nyb2xsQXJlYVNjcm9sbGJhclxuICAgIHJlZj17cmVmfVxuICAgIG9yaWVudGF0aW9uPXtvcmllbnRhdGlvbn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJmbGV4IHRvdWNoLW5vbmUgc2VsZWN0LW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIixcbiAgICAgIG9yaWVudGF0aW9uID09PSBcInZlcnRpY2FsXCIgJiZcbiAgICAgICAgXCJoLWZ1bGwgdy0yLjUgYm9yZGVyLWwgYm9yZGVyLWwtdHJhbnNwYXJlbnQgcC1bMXB4XVwiLFxuICAgICAgb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmXG4gICAgICAgIFwiaC0yLjUgZmxleC1jb2wgYm9yZGVyLXQgYm9yZGVyLXQtdHJhbnNwYXJlbnQgcC1bMXB4XVwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8U2Nyb2xsQXJlYVByaW1pdGl2ZS5TY3JvbGxBcmVhVGh1bWIgY2xhc3NOYW1lPVwicmVsYXRpdmUgZmxleC0xIHJvdW5kZWQtZnVsbCBiZy1ib3JkZXJcIiAvPlxuICA8L1Njcm9sbEFyZWFQcmltaXRpdmUuU2Nyb2xsQXJlYVNjcm9sbGJhcj5cbikpXG5TY3JvbGxCYXIuZGlzcGxheU5hbWUgPSBTY3JvbGxBcmVhUHJpbWl0aXZlLlNjcm9sbEFyZWFTY3JvbGxiYXIuZGlzcGxheU5hbWVcblxuZXhwb3J0IHsgU2Nyb2xsQXJlYSwgU2Nyb2xsQmFyIH1cbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICAgIENhcmV0U29ydEljb24sXG4gICAgQ2hlY2tJY29uLFxuICAgIENoZXZyb25Eb3duSWNvbixcbiAgICBDaGV2cm9uVXBJY29uLFxufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5pbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zZWxlY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcblxuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuY29uc3QgU2VsZWN0VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxTZWxlY3RQcmltaXRpdmUuVHJpZ2dlclxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiZmxleCBoLTkgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHNoYWRvdy1zbSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctcmluZyBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBbJj5zcGFuXTpsaW5lLWNsYW1wLTFcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgICAgICAgIDxDYXJldFNvcnRJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgb3BhY2l0eS01MFwiIC8+XG4gICAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj5cbikpO1xuU2VsZWN0VHJpZ2dlci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxVcEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIDxDaGV2cm9uVXBJY29uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcImZsZXggY3Vyc29yLWRlZmF1bHQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTFcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgICAgPENoZXZyb25Eb3duSWNvbiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPVxuICAgIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgXCJyZWxhdGl2ZSB6LTUwIG1heC1oLTk2IG1pbi13LVs4cmVtXSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYmctcG9wb3ZlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBzaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgXCJkYXRhLVtzaWRlPWJvdHRvbV06dHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOi10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOi10cmFuc2xhdGUteS0xXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgICAgPFNlbGVjdFNjcm9sbFVwQnV0dG9uIC8+XG4gICAgICAgICAgICA8U2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgXCJwLTFcIixcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gdy1mdWxsIG1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldXCIsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgICAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXCJweC0yIHB5LTEuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJyZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweS0xLjUgcGwtMiBwci04IHRleHQtc20gb3V0bGluZS1ub25lIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTIgZmxleCBoLTMuNSB3LTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICA8Q2hlY2tJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtPlxuKSk7XG5TZWxlY3RJdGVtLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwiLW14LTEgbXktMSBoLXB4IGJnLW11dGVkXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICAgIFNlbGVjdCxcbiAgICBTZWxlY3RHcm91cCxcbiAgICBTZWxlY3RWYWx1ZSxcbiAgICBTZWxlY3RUcmlnZ2VyLFxuICAgIFNlbGVjdENvbnRlbnQsXG4gICAgU2VsZWN0TGFiZWwsXG4gICAgU2VsZWN0SXRlbSxcbiAgICBTZWxlY3RTZXBhcmF0b3IsXG4gICAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gICAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCAiXCJ1c2UgY2xpZW50XCJcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCAqIGFzIFNlcGFyYXRvclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNlcGFyYXRvclwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgU2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VwYXJhdG9yUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlcGFyYXRvclByaW1pdGl2ZS5Sb290PlxuPihcbiAgKFxuICAgIHsgY2xhc3NOYW1lLCBvcmllbnRhdGlvbiA9IFwiaG9yaXpvbnRhbFwiLCBkZWNvcmF0aXZlID0gdHJ1ZSwgLi4ucHJvcHMgfSxcbiAgICByZWZcbiAgKSA9PiAoXG4gICAgPFNlcGFyYXRvclByaW1pdGl2ZS5Sb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGRlY29yYXRpdmU9e2RlY29yYXRpdmV9XG4gICAgICBvcmllbnRhdGlvbj17b3JpZW50YXRpb259XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInNocmluay0wIGJnLWJvcmRlclwiLFxuICAgICAgICBvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcImgtWzFweF0gdy1mdWxsXCIgOiBcImgtZnVsbCB3LVsxcHhdXCIsXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG4pXG5TZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZXBhcmF0b3JQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZVxuXG5leHBvcnQgeyBTZXBhcmF0b3IgfVxuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJuZXh0LXRoZW1lc1wiO1xuaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIgfSBmcm9tIFwic29ubmVyXCI7XG5cbnR5cGUgVG9hc3RlclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNvbm5lcj47XG5cbmNvbnN0IFRvYXN0ZXIgPSAoeyAuLi5wcm9wcyB9OiBUb2FzdGVyUHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lID0gXCJzeXN0ZW1cIiB9ID0gdXNlVGhlbWUoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxTb25uZXJcbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZSBhcyBUb2FzdGVyUHJvcHNbXCJ0aGVtZVwiXX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRvYXN0ZXIgZ3JvdXBcIlxuICAgICAgICAgICAgdG9hc3RPcHRpb25zPXt7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lczoge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdDogXCJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnXCIsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25CdXR0b246XG4gICAgICAgICAgICAgICAgICAgICAgICBcImdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJncm91cC1bLnRvYXN0XTpiZy1tdXRlZCBncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgLz5cbiAgICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RlciB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgPHRhYmxlXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJ3LWZ1bGwgY2FwdGlvbi1ib3R0b20gdGV4dC1zbVwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvZGl2PlxuKSlcblRhYmxlLmRpc3BsYXlOYW1lID0gXCJUYWJsZVwiXG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJbJl90cl06Ym9yZGVyLWJcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSlcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiXG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRib2R5XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOmJvcmRlci0wXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCJcblxuY29uc3QgVGFibGVGb290ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0Zm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcImJvcmRlci10IGJnLW11dGVkLzUwIGZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OmJvcmRlci1iLTBcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiXG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlUm93RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwiYm9yZGVyLWIgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOmJnLW11dGVkXCIsXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9IFwiVGFibGVSb3dcIlxuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRoXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwiaC0xMCBweC0yIHRleHQtbGVmdCBhbGlnbi1taWRkbGUgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wIFsmPltyb2xlPWNoZWNrYm94XV06dHJhbnNsYXRlLXktWzJweF1cIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCJcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQsXG4gIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0ZFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInAtMiBhbGlnbi1taWRkbGUgWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTAgWyY+W3JvbGU9Y2hlY2tib3hdXTp0cmFuc2xhdGUteS1bMnB4XVwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIlxuXG5jb25zdCBUYWJsZUNhcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxjYXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIm10LTQgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuVGFibGVDYXB0aW9uLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNhcHRpb25cIlxuXG5leHBvcnQge1xuICBUYWJsZSxcbiAgVGFibGVIZWFkZXIsXG4gIFRhYmxlQm9keSxcbiAgVGFibGVGb290ZXIsXG4gIFRhYmxlSGVhZCxcbiAgVGFibGVSb3csXG4gIFRhYmxlQ2VsbCxcbiAgVGFibGVDYXB0aW9uLFxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0YXJlYVByb3BzXG4gIGV4dGVuZHMgUmVhY3QuVGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50PiB7fVxuXG5jb25zdCBUZXh0YXJlYSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwiZmxleCBtaW4taC1bNjBweF0gdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSBzaGFkb3ctc20gcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxuKVxuVGV4dGFyZWEuZGlzcGxheU5hbWUgPSBcIlRleHRhcmVhXCJcblxuZXhwb3J0IHsgVGV4dGFyZWEgfVxuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAqIGFzIFRvb2x0aXBQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10b29sdGlwXCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPFRvb2x0aXBQcmltaXRpdmUuQ29udGVudFxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiei01MCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBiZy1wcmltYXJ5IHB4LTMgcHktMS41IHRleHQteHMgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgYW5pbWF0ZS1pbiBmYWRlLWluLTAgem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgdHlwZSB7IENvbmZpcm1EaWFsb2dQcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQge1xuICAgIEFsZXJ0RGlhbG9nLFxuICAgIEFsZXJ0RGlhbG9nQWN0aW9uLFxuICAgIEFsZXJ0RGlhbG9nQ2FuY2VsLFxuICAgIEFsZXJ0RGlhbG9nQ29udGVudCxcbiAgICBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uLFxuICAgIEFsZXJ0RGlhbG9nRm9vdGVyLFxuICAgIEFsZXJ0RGlhbG9nSGVhZGVyLFxuICAgIEFsZXJ0RGlhbG9nVGl0bGUsXG4gICAgQWxlcnREaWFsb2dUcmlnZ2VyLFxufSBmcm9tIFwiQC91aS9hbGVydC1kaWFsb2dcIjtcbmltcG9ydCB7IExvYWRpbmdJY29uIH0gZnJvbSBcIkAvdWkvbG9hZGluZ1wiO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBYSWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEZDLCBpc1ZhbGlkRWxlbWVudCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgQ29uZmlybURpYWxvZzogRkM8Q29uZmlybURpYWxvZ1Byb3BzPiA9ICh7XG4gICAgY2hpbGRyZW4sXG4gICAgdGl0bGUgPSBcIkFyZSB5b3Ugc3VyZT9cIixcbiAgICBkZXNjcmlwdGlvbiA9IFwiVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5cIixcbiAgICBva1RleHQgPSBcIk9rXCIsXG4gICAgY2FuY2VsVGV4dCA9IFwiQ2FuY2VsXCIsXG4gICAgb2tCdXR0b25TaXplID0gXCJkZWZhdWx0XCIsXG4gICAgY2FuY2VsQnV0dG9uU2l6ZSA9IFwiZGVmYXVsdFwiLFxuICAgIG9rQnV0dG9uVmFyaWFudCA9IFwiZGVmYXVsdFwiLFxuICAgIGNhbmNlbEJ1dHRvblZhcmlhbnQgPSBcIm91dGxpbmVcIixcbiAgICBsb2FkaW5nID0gZmFsc2UsXG4gICAgb2tJY29uU2lkZSA9IFwibGVmdFwiLFxuICAgIGNhbmNlbEljb25TaWRlID0gXCJsZWZ0XCIsXG4gICAgb25Db25maXJtLFxuICAgIG9rSWNvbixcbiAgICBjYW5jZWxJY29uLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGRlZmF1bHRPcGVuLFxufSkgPT4ge1xuICAgIGNvbnN0IENhbmNlbEljb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KGNhbmNlbEljb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FuY2VsSWNvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiA8WEljb24gY2xhc3NOYW1lPVwibXItMiBoLTQgdy00XCIgLz47XG4gICAgfSwgW2NhbmNlbEljb25dKTtcblxuICAgIGNvbnN0IE9rSWNvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAobG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nSWNvbiBjbGFzc05hbWU9XCJtci0yXCIgLz47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KG9rSWNvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBva0ljb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gPENoZWNrSWNvbiBjbGFzc05hbWU9XCJtci0yIGgtNCB3LTRcIiAvPjtcbiAgICB9LCBbb2tJY29uLCBsb2FkaW5nXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8QWxlcnREaWFsb2dcbiAgICAgICAgICAgIG9wZW49e29wZW59XG4gICAgICAgICAgICBvbk9wZW5DaGFuZ2U9e29uT3BlbkNoYW5nZX1cbiAgICAgICAgICAgIGRlZmF1bHRPcGVuPXtkZWZhdWx0T3Blbn1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEFsZXJ0RGlhbG9nVHJpZ2dlciBhc0NoaWxkPntjaGlsZHJlbn08L0FsZXJ0RGlhbG9nVHJpZ2dlcj5cbiAgICAgICAgICAgIDxBbGVydERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0RGlhbG9nSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnREaWFsb2dUaXRsZT57dGl0bGV9PC9BbGVydERpYWxvZ1RpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnREaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydERpYWxvZ0Rlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgIDwvQWxlcnREaWFsb2dIZWFkZXI+XG4gICAgICAgICAgICAgICAgPEFsZXJ0RGlhbG9nRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnREaWFsb2dDYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e2NhbmNlbEJ1dHRvblZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXtjYW5jZWxCdXR0b25TaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5jZWxJY29uU2lkZSA9PT0gXCJsZWZ0XCIgJiYgQ2FuY2VsSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5jZWxUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAge2NhbmNlbEljb25TaWRlID09PSBcInJpZ2h0XCIgJiYgQ2FuY2VsSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydERpYWxvZ0NhbmNlbD5cbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0RGlhbG9nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtva0J1dHRvblZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXtva0J1dHRvblNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ29uZmlybX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge29rSWNvblNpZGUgPT09IFwibGVmdFwiICYmIE9rSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtva1RleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICB7b2tJY29uU2lkZSA9PT0gXCJyaWdodFwiICYmIE9rSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydERpYWxvZ0FjdGlvbj5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0RGlhbG9nRm9vdGVyPlxuICAgICAgICAgICAgPC9BbGVydERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgIDwvQWxlcnREaWFsb2c+XG4gICAgKTtcbn07XG5cbkNvbmZpcm1EaWFsb2cuZGlzcGxheU5hbWUgPSBcIkNvbmZpcm1EaWFsb2dcIjtcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHtcbiAgICBGb3JtRmllbGQsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybURlc2NyaXB0aW9uLFxuICAgIEZvcm1JdGVtLFxuICAgIEZvcm1MYWJlbCxcbiAgICBGb3JtTWVzc2FnZSxcbn0gZnJvbSBcIkAvdWlcIjtcbmltcG9ydCB7IFJlYWN0RWxlbWVudCwgY2xvbmVFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICAgIENvbnRyb2xsZXJSZW5kZXJQcm9wcyxcbiAgICBGaWVsZFBhdGgsXG4gICAgRmllbGRWYWx1ZXMsXG4gICAgVXNlQ29udHJvbGxlclByb3BzLFxufSBmcm9tIFwicmVhY3QtaG9vay1mb3JtXCI7XG5cbmV4cG9ydCB0eXBlIEZpZWxkUHJvcHM8XG4gICAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4+ID0gVXNlQ29udHJvbGxlclByb3BzPFRGaWVsZFZhbHVlcywgVE5hbWU+ICYge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBpc0NoZWNrYm94PzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbjogUmVhY3RFbGVtZW50PHtcbiAgICAgICAgZmllbGQ6IENvbnRyb2xsZXJSZW5kZXJQcm9wczxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICB9Pjtcbn07XG5leHBvcnQgY29uc3QgRmllbGQgPSAocHJvcHM6IEZpZWxkUHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8Rm9ybUZpZWxkXG4gICAgICAgICAgICBjb250cm9sPXtwcm9wcy5jb250cm9sfVxuICAgICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cbiAgICAgICAgICAgIHJlbmRlcj17KHsgZmllbGQgfTogeyBmaWVsZDogYW55IH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8Rm9ybUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmlzQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBzcGFjZS15LTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IXByb3BzLmlzQ2hlY2tib3ggJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtTGFiZWw+e3Byb3BzLmxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xvbmVFbGVtZW50KHByb3BzLmNoaWxkcmVuLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcy5jaGlsZHJlbi5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuaXNDaGVja2JveCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1MYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1EZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybU1lc3NhZ2UgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICApO1xufTtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBTYXZlQnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uLCBDYXJkLCBDYXJkQ29udGVudCwgQ2FyZEZvb3RlciwgRm9ybSBhcyBGb3JtVUkgfSBmcm9tIFwiQC91aVwiO1xuaW1wb3J0IHtcbiAgICB1c2VCYWNrLFxuICAgIHVzZU5hdmlnYXRpb24sXG4gICAgdXNlUGFyc2VkLFxuICAgIHVzZVJvdXRlclR5cGUsXG4gICAgdHlwZSBCYXNlUmVjb3JkLFxuICAgIHR5cGUgSHR0cEVycm9yLFxufSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IFVzZUZvcm1SZXR1cm5UeXBlIH0gZnJvbSBcIkByZWZpbmVkZXYvcmVhY3QtaG9vay1mb3JtXCI7XG5pbXBvcnQge1xuICAgIEZDLFxuICAgIHVzZVJlZixcbiAgICB0eXBlIERldGFpbGVkSFRNTFByb3BzLFxuICAgIHR5cGUgRm9ybUhUTUxBdHRyaWJ1dGVzLFxuICAgIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdHlwZSBGaWVsZFZhbHVlcyB9IGZyb20gXCJyZWFjdC1ob29rLWZvcm1cIjtcbmltcG9ydCB7IFNhdmVCdXR0b24gfSBmcm9tIFwiLi4vYnV0dG9uc1wiO1xuXG50eXBlIE5hdGl2ZUZvcm1Qcm9wcyA9IE9taXQ8XG4gICAgRGV0YWlsZWRIVE1MUHJvcHM8Rm9ybUhUTUxBdHRyaWJ1dGVzPEhUTUxGb3JtRWxlbWVudD4sIEhUTUxGb3JtRWxlbWVudD4sXG4gICAgXCJvblN1Ym1pdFwiXG4+O1xuXG5leHBvcnQgdHlwZSBGb3JtUHJvcHM8XG4gICAgVFF1ZXJ5Rm5EYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQsXG4gICAgVEVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gSHR0cEVycm9yLFxuICAgIFRWYXJpYWJsZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICAgIFRDb250ZXh0IGV4dGVuZHMgb2JqZWN0ID0ge30sXG4gICAgVERhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gVFF1ZXJ5Rm5EYXRhLFxuICAgIFRSZXNwb25zZSBleHRlbmRzIEJhc2VSZWNvcmQgPSBURGF0YSxcbiAgICBUUmVzcG9uc2VFcnJvciBleHRlbmRzIEh0dHBFcnJvciA9IFRFcnJvcixcbj4gPSBQcm9wc1dpdGhDaGlsZHJlbiAmXG4gICAgVXNlRm9ybVJldHVyblR5cGU8XG4gICAgICAgIFRRdWVyeUZuRGF0YSxcbiAgICAgICAgVEVycm9yLFxuICAgICAgICBUVmFyaWFibGVzLFxuICAgICAgICBUQ29udGV4dCxcbiAgICAgICAgVERhdGEsXG4gICAgICAgIFRSZXNwb25zZSxcbiAgICAgICAgVFJlc3BvbnNlRXJyb3JcbiAgICA+ICYge1xuICAgICAgICBmb3JtUHJvcHM/OiBOYXRpdmVGb3JtUHJvcHM7XG4gICAgICAgIGlzV2F0Y2hhYmxlPzogYm9vbGVhbjtcbiAgICB9O1xuXG5leHBvcnQgY29uc3QgRm9ybSA9IDxcbiAgICBUUXVlcnlGbkRhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gQmFzZVJlY29yZCxcbiAgICBURXJyb3IgZXh0ZW5kcyBIdHRwRXJyb3IgPSBIdHRwRXJyb3IsXG4gICAgVFZhcmlhYmxlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gICAgVENvbnRleHQgZXh0ZW5kcyBvYmplY3QgPSB7fSxcbiAgICBURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBUUXVlcnlGbkRhdGEsXG4gICAgVFJlc3BvbnNlIGV4dGVuZHMgQmFzZVJlY29yZCA9IFREYXRhLFxuICAgIFRSZXNwb25zZUVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gVEVycm9yLFxuPih7XG4gICAgZm9ybVByb3BzLFxuICAgIGlzV2F0Y2hhYmxlLFxuICAgIHNhdmVCdXR0b25Qcm9wcyxcbiAgICAuLi5wcm9wc1xufTogRm9ybVByb3BzPFxuICAgIFRRdWVyeUZuRGF0YSxcbiAgICBURXJyb3IsXG4gICAgVFZhcmlhYmxlcyxcbiAgICBUQ29udGV4dCxcbiAgICBURGF0YSxcbiAgICBUUmVzcG9uc2UsXG4gICAgVFJlc3BvbnNlRXJyb3Jcbj4pID0+IHtcbiAgICBjb25zdCB3YXRjaGFibGUgPSB1c2VSZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGNvbnN0IHsgcmVzb3VyY2U6IF9yZXNvdXJjZSwgYWN0aW9uIH0gPSB1c2VQYXJzZWQoKTtcbiAgICBjb25zdCByb3V0ZXJUeXBlID0gdXNlUm91dGVyVHlwZSgpO1xuICAgIGNvbnN0IGJhY2sgPSB1c2VCYWNrKCk7XG4gICAgY29uc3QgeyBnb0JhY2sgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IG9uQmFjayA9XG4gICAgICAgIGFjdGlvbiAhPT0gXCJsaXN0XCIgfHwgdHlwZW9mIGFjdGlvbiAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgPyByb3V0ZXJUeXBlID09PSBcImxlZ2FjeVwiXG4gICAgICAgICAgICAgICAgPyBnb0JhY2tcbiAgICAgICAgICAgICAgICA6IGJhY2tcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGlzV2F0Y2hhYmxlICYmICF3YXRjaGFibGUuY3VycmVudCkge1xuICAgICAgICB3YXRjaGFibGUuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHByb3BzLndhdGNoKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb25TdWJtaXQgPSBwcm9wcy5oYW5kbGVTdWJtaXQoKF9kYXRhOiBUVmFyaWFibGVzKSA9PiB7XG4gICAgICAgIHByb3BzLnJlZmluZUNvcmUub25GaW5pc2gocHJvcHMuZ2V0VmFsdWVzKCkpLnRoZW4oKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxGb3JtVUkgey4uLnByb3BzfT5cbiAgICAgICAgICAgIDxmb3JtIHsuLi5mb3JtUHJvcHN9IG9uU3VibWl0PXtvblN1Ym1pdH0+XG4gICAgICAgICAgICAgICAgPENhcmQgY2xhc3NOYW1lPVwiYm9yZGVyLWJvcmRlci80MCBzaGFkb3ctc21cIj5cbiAgICAgICAgICAgICAgICAgICAgPENhcmRDb250ZW50IGNsYXNzTmFtZT1cInB0LTYgc3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPENhcmRGb290ZXIgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAteC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25CYWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5yZWZpbmVDb3JlLmZvcm1Mb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8U2F2ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e3Byb3BzLnJlZmluZUNvcmUuZm9ybUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLnNhdmVCdXR0b25Qcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQ2FyZEZvb3Rlcj5cbiAgICAgICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvRm9ybVVJPlxuICAgICk7XG59O1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJuZXh0LXRoZW1lc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICAgIERyb3Bkb3duTWVudSxcbiAgICBEcm9wZG93bk1lbnVDb250ZW50LFxuICAgIERyb3Bkb3duTWVudUl0ZW0sXG4gICAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIkAvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgTW9vbkljb24sIFN1bkljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5cbmV4cG9ydCBjb25zdCBNb2RlVG9nZ2xlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgc2V0VGhlbWUgfSA9IHVzZVRoZW1lKCk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwiaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8U3VuSWNvbiBjbGFzc05hbWU9XCJoLVsxLjJyZW1dIHctWzEuMnJlbV0gcm90YXRlLTAgc2NhbGUtMTAwIHRyYW5zaXRpb24tYWxsIGRhcms6LXJvdGF0ZS05MCBkYXJrOnNjYWxlLTBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8TW9vbkljb24gY2xhc3NOYW1lPVwiYWJzb2x1dGUgaC1bMS4ycmVtXSB3LVsxLjJyZW1dIHJvdGF0ZS05MCBzY2FsZS0wIHRyYW5zaXRpb24tYWxsIGRhcms6cm90YXRlLTAgZGFyazpzY2FsZS0xMDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+VG9nZ2xlIHRoZW1lPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249e1wiZW5kXCJ9PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IHNldFRoZW1lKFwibGlnaHRcIil9PlxuICAgICAgICAgICAgICAgICAgICBMaWdodFxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBzZXRUaGVtZShcImRhcmtcIil9PlxuICAgICAgICAgICAgICAgICAgICBEYXJrXG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IHNldFRoZW1lKFwic3lzdGVtXCIpfT5cbiAgICAgICAgICAgICAgICAgICAgU3lzdGVtXG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICApO1xufTtcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgUGFnZUhlYWRlclByb3BzIH0gZnJvbSBcIkAvdHlwZXMvcGFnZUhlYWRlclwiO1xuaW1wb3J0IHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IFBhZ2VIZWFkZXI6IEZDPFBhZ2VIZWFkZXJQcm9wcz4gPSAoeyBleHRyYSwgLi4ucHJvcHMgfSkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgXCJmbGV4IGgtMjAgaXRlbXMtZW5kIGxnOmp1c3RpZnktYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICFwcm9wcy5icmVhZGNydW1iICYmIFwiaC1hdXRvXCIsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5icmVhZGNydW1ifVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAteC00IG10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIGxlYWRpbmctNyB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZSBzbTp0cnVuY2F0ZSBzbTp0ZXh0LTN4bCBzbTp0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuc3ViVGl0bGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuc3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGxnOm1sLTQgbGc6bXQtMFwiPntleHRyYX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHtcbiAgICBGb3JtQ29udHJvbCxcbiAgICBTZWxlY3RDb250ZW50LFxuICAgIFNlbGVjdEl0ZW0sXG4gICAgU2VsZWN0VHJpZ2dlcixcbiAgICBTZWxlY3QgYXMgU2VsZWN0VUksXG4gICAgU2VsZWN0VmFsdWUsXG59IGZyb20gXCJAL3VpXCI7XG5pbXBvcnQgdHlwZSB7XG4gICAgQ29udGVudCBhcyBTZWxlY3RDb250ZW50VHlwZSxcbiAgICBTZWxlY3RQcm9wcyBhcyBTZWxlY3RDb3JlUHJvcHMsXG59IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBTZWxlY3RQcm9wcyA9IFNlbGVjdENvcmVQcm9wcyAmIHtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBlbXB0eU1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBvcHRpb25zPzogQmFzZU9wdGlvbltdO1xufTtcblxuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IGZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0Q29udGVudFR5cGU+LFxuICAgIFNlbGVjdFByb3BzXG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxTZWxlY3RVSVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkIHx8IHByb3BzLm9wdGlvbnM/Lmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e3Byb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEZvcm1Db250cm9sPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIHJlZj17dHJpZ2dlclJlZn0+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj17cHJvcHMucGxhY2Vob2xkZXIgPz8gXCJTZWxlY3RcIn0gLz5cbiAgICAgICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8L0Zvcm1Db250cm9sPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnRcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdHJpZ2dlclJlZi5jdXJyZW50Py5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwcm9wcy5vcHRpb25zPy5tYXAoKG9wdGlvbiwga2V5OiBudW1iZXIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtrZXl9IHZhbHVlPXtvcHRpb24udmFsdWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICA8L1NlbGVjdFVJPlxuICAgICk7XG59KTtcblxuU2VsZWN0LmRpc3BsYXlOYW1lID0gXCJTZWxlY3RcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcbmltcG9ydCB7IGJ1dHRvblZhcmlhbnRzIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiQC91aS90b29sdGlwXCI7XG5pbXBvcnQgeyB1c2VNZW51LCB1c2VSZXNvdXJjZVBhcmFtcyB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IHVzZUxvY2F0aW9uIH0gZnJvbSBcInJlYWN0LXVzZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmtcIjtcblxudHlwZSBOYXZQcm9wcyA9IHtcbiAgICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHsgaXNDb2xsYXBzZWQgfTogTmF2UHJvcHMpID0+IHtcbiAgICBjb25zdCB7IG1lbnVJdGVtcyB9ID0gdXNlTWVudSgpO1xuICAgIGNvbnN0IHJlc291cmNlUGFyYW1zID0gdXNlUmVzb3VyY2VQYXJhbXMoKTtcbiAgICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpO1xuXG4gICAgY29uc3QgY3VycmVudFBhdGhuYW1lID0gU3RyaW5nKHBhdGhuYW1lKTtcblxuICAgIGNvbnN0IEdldEljb24gPSAoaXRlbTogKHR5cGVvZiBtZW51SXRlbXMpWzBdKSA9PiB7XG4gICAgICAgIGNvbnN0IGljb24gPSBpdGVtLm1ldGE/Lmljb247XG4gICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChpY29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudDxhbnk+KGljb24sIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwibXItMiB3LTQgaC00XCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS1jb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAgZmxleCBmbGV4LWNvbCBnYXAtNCBweS0yIGp1c3RpZnktYmV0d2VlbiBoLVs5NGR2aF0geGw6aC1bODRkdmhdIGRhdGEtW2NvbGxhcHNlZD10cnVlXTpweS0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5hdiBjbGFzc05hbWU9XCJncmlkIGdhcC0xIHB4LTIgZ3JvdXAtW1tkYXRhLWNvbGxhcHNlZD10cnVlXV06anVzdGlmeS1jZW50ZXIgZ3JvdXAtW1tkYXRhLWNvbGxhcHNlZD10cnVlXV06cHgtMlwiPlxuICAgICAgICAgICAgICAgIHttZW51SXRlbXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaSkgPT4gIWkubWV0YT8uaGlkZSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRocyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxpc3Q/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jcmVhdGU/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnJlcGxhY2UoXCI6aWRcIiwgcmVzb3VyY2VQYXJhbXMuaWQgYXMgc3RyaW5nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNob3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ucmVwbGFjZShcIjppZFwiLCByZXNvdXJjZVBhcmFtcy5pZCBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuaW5jbHVkZXMoY3VycmVudFBhdGhuYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLnNvbWUoKHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg/LnN0YXJ0c1dpdGgoY3VycmVudFBhdGhuYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhdGhuYW1lLnN0YXJ0c1dpdGgocGF0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0NvbGxhcHNlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBrZXk9e2tleX0gZGVsYXlEdXJhdGlvbj17MH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtpdGVtLmxpc3Q/LnRvU3RyaW5nKCkgPz8gXCIvI1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtpdGVtLm1ldGE/LnRpdGxlID8/IGl0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25WYXJpYW50cyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50OiBcImdob3N0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImp1c3RpZnktc3RhcnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnkvODAgaG92ZXI6dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ubWV0YT8uaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLm1ldGE/LnRpdGxlID8/IGl0ZW0ubGFiZWx9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5saXN0ID8gXCJMaXN0XCIgOiBcIkNyZWF0ZVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLm1ldGE/LmxhYmVsICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtbC1hdXRvIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5tZXRhPy5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2l0ZW0ubGlzdD8udG9TdHJpbmcoKSA/PyBcIi8jXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtpdGVtLm1ldGE/LnRpdGxlID8/IGl0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblZhcmlhbnRzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50OiBcImdob3N0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwianVzdGlmeS1zdGFydFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1wcmltYXJ5LzgwIGhvdmVyOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7R2V0SWNvbihpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ubWV0YT8udGl0bGUgPz8gaXRlbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5TaWRlYmFyLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyXCI7XG4iLCAiaW1wb3J0IHsgRWRpdEJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlRWRpdEJ1dHRvbiB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IFNxdWFyZVBlbkljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZDIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBFZGl0QnV0dG9uOiBGQzxFZGl0QnV0dG9uUHJvcHM+ID0gKHtcbiAgICByZXNvdXJjZSxcbiAgICByZWNvcmRJdGVtSWQsXG4gICAgaGlkZVRleHQgPSBmYWxzZSxcbiAgICBhY2Nlc3NDb250cm9sLFxuICAgIG1ldGEsXG4gICAgb25DbGljayxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgaGlkZGVuLCBkaXNhYmxlZCwgbGFiZWwsIHRpdGxlLCBMaW5rQ29tcG9uZW50LCB0byB9ID0gdXNlRWRpdEJ1dHRvbihcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgICAgICBpZDogcmVjb3JkSXRlbUlkLFxuICAgICAgICAgICAgYWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChoaWRkZW4pIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPExpbmtDb21wb25lbnRcbiAgICAgICAgICAgIHRvPXt0b31cbiAgICAgICAgICAgIHJlcGxhY2U9e2ZhbHNlfVxuICAgICAgICAgICAgb25DbGljaz17KGU6IFJlYWN0LlBvaW50ZXJFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbGljayhlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICBpY29uPXs8U3F1YXJlUGVuSWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn1cbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyFoaWRlVGV4dCAmJiAoY2hpbGRyZW4gPz8gbGFiZWwpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvTGlua0NvbXBvbmVudD5cbiAgICApO1xufTtcblxuRWRpdEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiRWRpdEJ1dHRvblwiO1xuIiwgImltcG9ydCB7IEV4cG9ydEJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgQ2FuQWNjZXNzLCB1c2VFeHBvcnRCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBTaGFyZUljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IEV4cG9ydEJ1dHRvbjogRkM8RXhwb3J0QnV0dG9uUHJvcHM+ID0gKHtcbiAgICBoaWRlVGV4dCA9IGZhbHNlLFxuICAgIHJlc291cmNlLFxuICAgIHJlY29yZEl0ZW1JZCxcbiAgICBhY2Nlc3NDb250cm9sLFxuICAgIGFjY2VzcyxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWwgfSA9IHVzZUV4cG9ydEJ1dHRvbigpO1xuICAgIGNvbnN0IENvbSA9ICFhY2Nlc3NDb250cm9sPy5lbmFibGVkID8gU2xvdCA6IENhbkFjY2VzcztcblxuICAgIGlmIChhY2Nlc3NDb250cm9sPy5oaWRlSWZVbmF1dGhvcml6ZWQgJiYgYWNjZXNzQ29udHJvbC5lbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb21cbiAgICAgICAgICAgIHBhcmFtcz17e1xuICAgICAgICAgICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlfVxuICAgICAgICAgICAgYWN0aW9uPVwiZXhwb3J0XCJcbiAgICAgICAgICAgIHsuLi5hY2Nlc3N9XG4gICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b24gaWNvbj17PFNoYXJlSWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Db20+XG4gICAgKTtcbn07XG5cbkV4cG9ydEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiRXhwb3J0QnV0dG9uXCI7XG4iLCAiaW1wb3J0IHsgSW1wb3J0QnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBDYW5BY2Nlc3MsIHVzZUltcG9ydEJ1dHRvbiB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IEltcG9ydEljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZDIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBJbXBvcnRCdXR0b246IEZDPEltcG9ydEJ1dHRvblByb3BzPiA9ICh7XG4gICAgaGlkZVRleHQgPSBmYWxzZSxcbiAgICByZXNvdXJjZSxcbiAgICBvbkNoYW5nZSxcbiAgICBhY2NlcHQgPSBcImltYWdlLyosYXBwbGljYXRpb24vKlwiLFxuICAgIHJlY29yZEl0ZW1JZCxcbiAgICBhY2Nlc3NDb250cm9sLFxuICAgIGFjY2VzcyxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWwgfSA9IHVzZUltcG9ydEJ1dHRvbigpO1xuICAgIGNvbnN0IENvbSA9ICFhY2Nlc3NDb250cm9sPy5lbmFibGVkID8gU2xvdCA6IENhbkFjY2VzcztcblxuICAgIGNvbnN0IG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgICAgICBlbC50eXBlID0gXCJmaWxlXCI7XG4gICAgICAgIGVsLmFjY2VwdCA9IGFjY2VwdDtcbiAgICAgICAgZWwub25jaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKEFycmF5LmZyb20oZS50YXJnZXQuZmlsZXMgPz8gW10pKTtcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZWwuY2xpY2soKTtcbiAgICB9O1xuXG4gICAgaWYgKGFjY2Vzc0NvbnRyb2w/LmhpZGVJZlVuYXV0aG9yaXplZCAmJiBhY2Nlc3NDb250cm9sLmVuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPENvbVxuICAgICAgICAgICAgcGFyYW1zPXt7XG4gICAgICAgICAgICAgICAgaWQ6IHJlY29yZEl0ZW1JZCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICByZXNvdXJjZT17cmVzb3VyY2V9XG4gICAgICAgICAgICBhY3Rpb249XCJpbXBvcnRcIlxuICAgICAgICAgICAgey4uLmFjY2Vzc31cbiAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgICAgICAgICAgaWNvbj17PEltcG9ydEljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHshaGlkZVRleHQgJiYgKGNoaWxkcmVuID8/IGxhYmVsKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0NvbT5cbiAgICApO1xufTtcblxuSW1wb3J0QnV0dG9uLmRpc3BsYXlOYW1lID0gXCJJbXBvcnRCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBMaXN0QnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyB1c2VMaXN0QnV0dG9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgTGlzdEljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZDIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBMaXN0QnV0dG9uOiBGQzxMaXN0QnV0dG9uUHJvcHM+ID0gKHtcbiAgICByZXNvdXJjZTogcmVzb3VyY2VOYW1lRnJvbVByb3BzLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIGNoaWxkcmVuLFxuICAgIG9uQ2xpY2ssXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IGhpZGRlbiwgZGlzYWJsZWQsIGxhYmVsLCB0aXRsZSwgTGlua0NvbXBvbmVudCwgdG8gfSA9IHVzZUxpc3RCdXR0b24oXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZU5hbWVGcm9tUHJvcHMsXG4gICAgICAgICAgICBhY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGhpZGRlbikgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8TGlua0NvbXBvbmVudFxuICAgICAgICAgICAgdG89e3RvfVxuICAgICAgICAgICAgcmVwbGFjZT17ZmFsc2V9XG4gICAgICAgICAgICBvbkNsaWNrPXsoZTogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgIGljb249ezxMaXN0SWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn1cbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyFoaWRlVGV4dCAmJiAoY2hpbGRyZW4gPz8gbGFiZWwpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvTGlua0NvbXBvbmVudD5cbiAgICApO1xufTtcblxuTGlzdEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiTGlzdEJ1dHRvblwiO1xuIiwgImltcG9ydCB7IFJlZnJlc2hCdXR0b25Qcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZVJlZnJlc2hCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBSZWZyZXNoQ3dJY29uIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBGQyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgUmVmcmVzaEJ1dHRvbjogRkM8UmVmcmVzaEJ1dHRvblByb3BzPiA9ICh7XG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgZGF0YVByb3ZpZGVyTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgb25DbGljaywgbGFiZWwsIGxvYWRpbmcgfSA9IHVzZVJlZnJlc2hCdXR0b24oe1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgaWQ6IHJlY29yZEl0ZW1JZCxcbiAgICAgICAgZGF0YVByb3ZpZGVyTmFtZSxcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgICAgaWNvbj17PFJlZnJlc2hDd0ljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICAgIHshaGlkZVRleHQgJiYgKGNoaWxkcmVuID8/IGxhYmVsKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgKTtcbn07XG5cblJlZnJlc2hCdXR0b24uZGlzcGxheU5hbWUgPSBcIlJlZnJlc2hCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBTYXZlQnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBDYW5BY2Nlc3MsIHVzZVNhdmVCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBTYXZlSWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IFNhdmVCdXR0b246IEZDPFNhdmVCdXR0b25Qcm9wcz4gPSAoe1xuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgY2hpbGRyZW4sXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBhY2Nlc3MsXG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIC4uLnByb3BzXG59KSA9PiB7XG4gICAgY29uc3QgeyBsYWJlbCB9ID0gdXNlU2F2ZUJ1dHRvbigpO1xuICAgIGNvbnN0IENvbSA9ICFhY2Nlc3NDb250cm9sPy5lbmFibGVkID8gU2xvdCA6IENhbkFjY2VzcztcblxuICAgIGlmIChhY2Nlc3NDb250cm9sPy5oaWRlSWZVbmF1dGhvcml6ZWQgJiYgYWNjZXNzQ29udHJvbC5lbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb21cbiAgICAgICAgICAgIHBhcmFtcz17e1xuICAgICAgICAgICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlfVxuICAgICAgICAgICAgYWN0aW9uPVwic2F2ZVwiXG4gICAgICAgICAgICB7Li4uYWNjZXNzfVxuICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uIGljb249ezxTYXZlSWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Db20+XG4gICAgKTtcbn07XG5cblNhdmVCdXR0b24uZGlzcGxheU5hbWUgPSBcIlNhdmVCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBTaG93QnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyB1c2VTaG93QnV0dG9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgRXllSWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IFNob3dCdXR0b246IEZDPFNob3dCdXR0b25Qcm9wcz4gPSAoe1xuICAgIHJlc291cmNlOiByZXNvdXJjZU5hbWVGcm9tUHJvcHMsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIGNoaWxkcmVuLFxuICAgIG9uQ2xpY2ssXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IHRvLCBsYWJlbCwgdGl0bGUsIGhpZGRlbiwgZGlzYWJsZWQsIExpbmtDb21wb25lbnQgfSA9IHVzZVNob3dCdXR0b24oXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZU5hbWVGcm9tUHJvcHMsXG4gICAgICAgICAgICBpZDogcmVjb3JkSXRlbUlkLFxuICAgICAgICAgICAgYWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChoaWRkZW4pIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPExpbmtDb21wb25lbnRcbiAgICAgICAgICAgIHRvPXt0b31cbiAgICAgICAgICAgIHJlcGxhY2U9e2ZhbHNlfVxuICAgICAgICAgICAgb25DbGljaz17KGU6IFJlYWN0LlBvaW50ZXJFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbGljayhlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvbj17PEV5ZUljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyFoaWRlVGV4dCAmJiAoY2hpbGRyZW4gPz8gbGFiZWwpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvTGlua0NvbXBvbmVudD5cbiAgICApO1xufTtcblxuU2hvd0J1dHRvbi5kaXNwbGF5TmFtZSA9IFwiU2hvd0J1dHRvblwiO1xuIiwgImltcG9ydCB7IExpc3RCdXR0b24gfSBmcm9tIFwiQC9idXR0b25zXCI7XG5pbXBvcnQgeyBCcmVhZGNydW1icywgUGFnZUhlYWRlciB9IGZyb20gXCJAL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IENyZWF0ZVByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7XG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG4gICAgdXNlVXNlckZyaWVuZGx5TmFtZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IFJlYWN0LCB7IGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVBhZ2U6IFJlYWN0LkZDPENyZWF0ZVByb3BzPiA9ICh7XG4gICAgdGl0bGUsXG4gICAgcmVzb3VyY2U6IHJlc291cmNlRnJvbVByb3BzLFxuICAgIGJyZWFkY3J1bWI6IGJyZWFkY3J1bWJGcm9tUHJvcHMsXG4gICAgZXh0cmEsXG4gICAgY2hpbGRyZW4sXG59KTogUmV0dXJuVHlwZTxSZWFjdC5GQzxDcmVhdGVQcm9wcz4+ID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlLCBpZGVudGlmaWVyIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZUZyb21Qcm9wcyk7XG5cbiAgICBjb25zdCBicmVhZGNydW1iID1cbiAgICAgICAgdHlwZW9mIGJyZWFkY3J1bWJGcm9tUHJvcHMgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgID8gZ2xvYmFsQnJlYWRjcnVtYlxuICAgICAgICAgICAgOiBicmVhZGNydW1iRnJvbVByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxQYWdlSGVhZGVyXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtpZGVudGlmaWVyfS50aXRsZXMuTGlzdGAsXG4gICAgICAgICAgICAgICAgICAgICAgICBgQ3JlYXRlICR7Z2V0VXNlckZyaWVuZGx5TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZT8ubWV0YT8ubGFiZWwgPz8gaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNpbmd1bGFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICApfWAsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXNCYWNrXG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYj17XG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWRFbGVtZW50KGJyZWFkY3J1bWIpID8gYnJlYWRjcnVtYiA6IDxCcmVhZGNydW1icyAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBleHRyYT17XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhID8/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpc3RCdXR0b24gcmVzb3VyY2U9e3Jlc291cmNlRnJvbVByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdC00ICFtdC0wXCI+e2NoaWxkcmVuIGFzIFJlYWN0Tm9kZX08L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbkNyZWF0ZVBhZ2UuZGlzcGxheU5hbWUgPSBcIkNyZWF0ZVBhZ2VcIjtcbiIsICJpbXBvcnQgeyBEZWxldGVCdXR0b24sIFNob3dCdXR0b24gfSBmcm9tIFwiQC9idXR0b25zXCI7XG5pbXBvcnQgeyBCcmVhZGNydW1icywgUGFnZUhlYWRlciB9IGZyb20gXCJAL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVkaXRQcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQge1xuICAgIHVzZU5hdmlnYXRpb24sXG4gICAgdXNlUmVkaXJlY3Rpb25BZnRlclN1Ym1pc3Npb24sXG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG4gICAgdXNlVXNlckZyaWVuZGx5TmFtZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgRkMsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBFZGl0UGFnZTogRkM8RWRpdFByb3BzPiA9ICh7XG4gICAgdGl0bGUsXG4gICAgcmVzb3VyY2UsXG4gICAgZXh0cmEsXG4gICAgYnJlYWRjcnVtYjogYnJlYWRjcnVtYkZyb21Qcm9wcyxcbiAgICBjaGlsZHJlbixcbn0pID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcbiAgICBjb25zdCB7IGxpc3QgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlOiBfcmVzb3VyY2UsIGlkZW50aWZpZXIgfSA9IHVzZVJlc291cmNlKHJlc291cmNlKTtcblxuICAgIGNvbnN0IGJyZWFkY3J1bWIgPVxuICAgICAgICB0eXBlb2YgYnJlYWRjcnVtYkZyb21Qcm9wcyA9PT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgPyBnbG9iYWxCcmVhZGNydW1iXG4gICAgICAgICAgICA6IGJyZWFkY3J1bWJGcm9tUHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPFBhZ2VIZWFkZXJcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2lkZW50aWZpZXJ9LnRpdGxlcy5MaXN0YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBFZGl0ICR7Z2V0VXNlckZyaWVuZGx5TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVzb3VyY2U/Lm1ldGE/LmxhYmVsID8/IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwbHVyYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICl9YCxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0JhY2tcbiAgICAgICAgICAgICAgICBicmVhZGNydW1iPXtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEVsZW1lbnQoYnJlYWRjcnVtYikgPyBicmVhZGNydW1iIDogPEJyZWFkY3J1bWJzIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4dHJhPXtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEgPz8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaG93QnV0dG9uIHJlc291cmNlPXtyZXNvdXJjZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlPXtyZXNvdXJjZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KF9yZXNvdXJjZT8ubmFtZSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB0LTRcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5FZGl0UGFnZS5kaXNwbGF5TmFtZSA9IFwiRWRpdFBhZ2VcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgQ3JlYXRlQnV0dG9uIH0gZnJvbSBcIkAvYnV0dG9uc1wiO1xuaW1wb3J0IHsgQnJlYWRjcnVtYnMsIFBhZ2VIZWFkZXIgfSBmcm9tIFwiQC9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgTGlzdFByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7XG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG4gICAgdXNlVXNlckZyaWVuZGx5TmFtZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgRkMsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBMaXN0UGFnZTogRkM8TGlzdFByb3BzPiA9ICh7XG4gICAgdGl0bGUsXG4gICAgcmVzb3VyY2U6IHJlc291cmNlRnJvbVByb3BzLFxuICAgIGJyZWFkY3J1bWI6IGJyZWFkY3J1bWJGcm9tUHJvcHMsXG4gICAgY3JlYXRlQnV0dG9uUHJvcHMsXG4gICAgY2xhc3NOYW1lLFxuICAgIGlzQ3JlYXRlID0gdHJ1ZSxcbiAgICBleHRyYSxcbiAgICBjaGlsZHJlbixcbn0pID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlLCBpZGVudGlmaWVyIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZUZyb21Qcm9wcyk7XG5cbiAgICBjb25zdCBicmVhZGNydW1iID1cbiAgICAgICAgdHlwZW9mIGJyZWFkY3J1bWJGcm9tUHJvcHMgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgID8gZ2xvYmFsQnJlYWRjcnVtYlxuICAgICAgICAgICAgOiBicmVhZGNydW1iRnJvbVByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxQYWdlSGVhZGVyXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtpZGVudGlmaWVyfS50aXRsZXMuTGlzdGAsXG4gICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCAke2dldFVzZXJGcmllbmRseU5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U/Lm1ldGE/LmxhYmVsID8/IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwbHVyYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICl9YCxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhZGNydW1iPXtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEVsZW1lbnQoYnJlYWRjcnVtYikgPyBicmVhZGNydW1iIDogPEJyZWFkY3J1bWJzIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4dHJhPXtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEgPz8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0NyZWF0ZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3JlYXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmNyZWF0ZUJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQnV0dG9uUHJvcHM/LnJlc291cmNlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHQtMiBzbTpwdC00ICFtdC0wXCIsIGNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcblxuTGlzdFBhZ2UuZGlzcGxheU5hbWUgPSBcIkxpc3RQYWdlXCI7XG4iLCAiaW1wb3J0IHsgRGVsZXRlQnV0dG9uLCBFZGl0QnV0dG9uIH0gZnJvbSBcIkAvYnV0dG9uc1wiO1xuaW1wb3J0IHsgQnJlYWRjcnVtYnMsIFBhZ2VIZWFkZXIgfSBmcm9tIFwiQC9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBTaG93UHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHtcbiAgICB1c2VOYXZpZ2F0aW9uLFxuICAgIHVzZVJlZmluZUNvbnRleHQsXG4gICAgdXNlUmVzb3VyY2UsXG4gICAgdXNlVHJhbnNsYXRlLFxuICAgIHVzZVVzZXJGcmllbmRseU5hbWUsXG59IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IEZDLCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUm93IH0gZnJvbSBcIi4vcm93XCI7XG5cbmV4cG9ydCBjb25zdCBTaG93UGFnZTogRkM8U2hvd1Byb3BzPiAmIHtcbiAgICBSb3c6IHR5cGVvZiBSb3c7XG59ID0gKHtcbiAgICB0aXRsZSxcbiAgICByZXNvdXJjZTogcmVzb3VyY2VGcm9tUHJvcHMsXG4gICAgYnJlYWRjcnVtYjogYnJlYWRjcnVtYkZyb21Qcm9wcyxcbiAgICBpc0VkaXQgPSB0cnVlLFxuICAgIGlzRGVsZXRlID0gdHJ1ZSxcbiAgICBleHRyYSxcbiAgICBjaGlsZHJlbixcbn0pID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlLCBpZGVudGlmaWVyIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZUZyb21Qcm9wcyk7XG5cbiAgICBjb25zdCB7IGxpc3QgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IGJyZWFkY3J1bWIgPVxuICAgICAgICB0eXBlb2YgYnJlYWRjcnVtYkZyb21Qcm9wcyA9PT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgPyBnbG9iYWxCcmVhZGNydW1iXG4gICAgICAgICAgICA6IGJyZWFkY3J1bWJGcm9tUHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPFBhZ2VIZWFkZXJcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2lkZW50aWZpZXJ9LnRpdGxlcy5MaXN0YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBTaG93ICR7Z2V0VXNlckZyaWVuZGx5TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZT8ubWV0YT8ubGFiZWwgPz8gaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNpbmd1bGFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICApfWAsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYj17XG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWRFbGVtZW50KGJyZWFkY3J1bWIpID8gYnJlYWRjcnVtYiA6IDxCcmVhZGNydW1icyAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0JhY2tcbiAgICAgICAgICAgICAgICBleHRyYT17XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhID8/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNFZGl0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVkaXRCdXR0b24gcmVzb3VyY2U9e3Jlc291cmNlRnJvbVByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzRGVsZXRlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlRnJvbVByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyZXNvdXJjZT8ubmFtZSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBwdC00ICFtdC0wXCI+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcblxuU2hvd1BhZ2UuUm93ID0gUm93O1xuU2hvd1BhZ2UuZGlzcGxheU5hbWUgPSBcIlNob3dQYWdlXCI7XG4iLCAiaW1wb3J0IHsgUHJvcHNXaXRoQ2hpbGRyZW4sIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgUm93ID0gKHtcbiAgICB0aXRsZSxcbiAgICBjaGlsZHJlbixcbn06IFJlcXVpcmVkPFxuICAgIFByb3BzV2l0aENoaWxkcmVuPHtcbiAgICAgICAgdGl0bGU6IHN0cmluZztcbiAgICB9PlxuPikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8ZGwgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0byBwdC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkdCBjbGFzc05hbWU9XCJzY3JvbGwtbS0yMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtZm9yZWdyb3VuZCBsZWFkaW5nLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIGFzIE5leHRUaGVtZXNQcm92aWRlciB9IGZyb20gXCJuZXh0LXRoZW1lc1wiO1xuaW1wb3J0IHsgdHlwZSBUaGVtZVByb3ZpZGVyUHJvcHMgfSBmcm9tIFwibmV4dC10aGVtZXMvZGlzdC90eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gVGhlbWVQcm92aWRlcih7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBUaGVtZVByb3ZpZGVyUHJvcHMpIHtcbiAgICByZXR1cm4gPE5leHRUaGVtZXNQcm92aWRlciB7Li4ucHJvcHN9PntjaGlsZHJlbn08L05leHRUaGVtZXNQcm92aWRlcj47XG59XG4iLCAiaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAL3Byb3ZpZGVycy90aGVtZS1wcm92aWRlclwiO1xuaW1wb3J0IHsgTGF5b3V0UHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgVG9hc3RlciwgVG9vbHRpcFByb3ZpZGVyIH0gZnJvbSBcIkAvdWlcIjtcbmltcG9ydCB7IFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxcbiAgICBQaWNrPFxuICAgICAgICBMYXlvdXRQcm9wcyxcbiAgICAgICAgfCBcImF0dHJpYnV0ZVwiXG4gICAgICAgIHwgXCJkZWZhdWx0VGhlbWVcIlxuICAgICAgICB8IFwiZW5hYmxlU3lzdGVtXCJcbiAgICAgICAgfCBcImRpc2FibGVUcmFuc2l0aW9uT25DaGFuZ2VcIlxuICAgICAgICB8IFwiZW5hYmxlQ29sb3JTY2hlbWVcIlxuICAgICAgICB8IFwiZm9yY2VkVGhlbWVcIlxuICAgICAgICB8IFwibm9uY2VcIlxuICAgICAgICB8IFwic3RvcmFnZUtleVwiXG4gICAgICAgIHwgXCJ0aGVtZXNcIlxuICAgICAgICB8IFwidmFsdWVcIlxuICAgID5cbj47XG5cbmNvbnN0IEJhc2VMYXlvdXQgPSAoe1xuICAgIGF0dHJpYnV0ZSxcbiAgICBkZWZhdWx0VGhlbWUsXG4gICAgZW5hYmxlU3lzdGVtLFxuICAgIGRpc2FibGVUcmFuc2l0aW9uT25DaGFuZ2UsXG4gICAgZW5hYmxlQ29sb3JTY2hlbWUsXG4gICAgZm9yY2VkVGhlbWUsXG4gICAgbm9uY2UsXG4gICAgc3RvcmFnZUtleSxcbiAgICB0aGVtZXMsXG4gICAgdmFsdWUsXG4gICAgY2hpbGRyZW4sXG59OiBQcm9wcykgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVtZVByb3ZpZGVyXG4gICAgICAgICAgICBhdHRyaWJ1dGU9e2F0dHJpYnV0ZSA/PyBcImNsYXNzXCJ9XG4gICAgICAgICAgICBkZWZhdWx0VGhlbWU9e2RlZmF1bHRUaGVtZSA/PyBcInN5c3RlbVwifVxuICAgICAgICAgICAgZW5hYmxlU3lzdGVtPXtlbmFibGVTeXN0ZW0gPz8gdHJ1ZX1cbiAgICAgICAgICAgIGRpc2FibGVUcmFuc2l0aW9uT25DaGFuZ2U9e2Rpc2FibGVUcmFuc2l0aW9uT25DaGFuZ2UgPz8gZmFsc2V9XG4gICAgICAgICAgICBlbmFibGVDb2xvclNjaGVtZT17ZW5hYmxlQ29sb3JTY2hlbWUgPz8gdHJ1ZX1cbiAgICAgICAgICAgIGZvcmNlZFRoZW1lPXtmb3JjZWRUaGVtZX1cbiAgICAgICAgICAgIG5vbmNlPXtub25jZX1cbiAgICAgICAgICAgIHN0b3JhZ2VLZXk9e3N0b3JhZ2VLZXl9XG4gICAgICAgICAgICB0aGVtZXM9e3RoZW1lc31cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPFRvb2x0aXBQcm92aWRlclxuICAgICAgICAgICAgICAgIGRlbGF5RHVyYXRpb249ezB9XG4gICAgICAgICAgICAgICAgc2tpcERlbGF5RHVyYXRpb249ezB9XG4gICAgICAgICAgICAgICAgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ9e3RydWV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgIDxUb2FzdGVyIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICk7XG59O1xuXG5CYXNlTGF5b3V0LmRpc3BsYXlOYW1lID0gXCJCYXNlTGF5b3V0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IEJhc2VMYXlvdXQ7XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiBxdWVyaWVzRGlkQ2hhbmdlKHByZXZRdWVyaWVzLCBuZXh0UXVlcmllcykge1xuICBpZiAobmV4dFF1ZXJpZXMgPT09IHByZXZRdWVyaWVzKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IG5leHRRdWVyaWVzQXJyID0gT2JqZWN0LnZhbHVlcyhuZXh0UXVlcmllcyk7XG4gIGNvbnN0IHByZXZRdWVyaWVzQXJyID0gT2JqZWN0LnZhbHVlcyhwcmV2UXVlcmllcyk7XG4gIGlmIChuZXh0UXVlcmllc0Fyci5sZW5ndGggIT09IHByZXZRdWVyaWVzQXJyLmxlbmd0aCkgcmV0dXJuIHRydWU7XG4gIGlmIChuZXh0UXVlcmllc0Fyci5zb21lKChxLCBpKSA9PiBxICE9PSBwcmV2UXVlcmllc0FycltpXSkpIHJldHVybiB0cnVlO1xuICBjb25zdCBwcmV2S2V5cyA9IE9iamVjdC5rZXlzKHByZXZRdWVyaWVzKTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG5leHRRdWVyaWVzKS5zb21lKChuLCBpKSA9PiBuICE9PSBwcmV2S2V5c1tpXSk7XG59XG5cbmZ1bmN0aW9uIF9yZWYoY3Vyciwga2V5KSB7XG4gIGN1cnIubWF0Y2hlc1trZXldID0gZmFsc2U7XG4gIGN1cnIubWVkaWFRdWVyaWVzW2tleV0gPSB7fTtcbiAgcmV0dXJuIGN1cnI7XG59XG5cbmZ1bmN0aW9uIGluaXQocXVlcmllcykge1xuICBjb25zdCBxdWVyeUtleXMgPSBPYmplY3Qua2V5cyhxdWVyaWVzKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBxdWVyeUtleXMucmVkdWNlKF9yZWYsIHtcbiAgICBtZWRpYVF1ZXJpZXM6IHt9LFxuICAgIG1hdGNoZXM6IHt9XG4gIH0pO1xuICByZXR1cm4gcXVlcnlLZXlzLnJlZHVjZSgoc3RhdGUsIG5hbWUpID0+IHtcbiAgICBjb25zdCBtcWwgPSB3aW5kb3cubWF0Y2hNZWRpYShxdWVyaWVzW25hbWVdKTtcbiAgICBzdGF0ZS5tZWRpYVF1ZXJpZXNbbmFtZV0gPSBtcWw7XG4gICAgc3RhdGUubWF0Y2hlc1tuYW1lXSA9IG1xbC5tYXRjaGVzO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfSwge1xuICAgIG1lZGlhUXVlcmllczoge30sXG4gICAgbWF0Y2hlczoge31cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZXIoc3RhdGUsIGFjdGlvbikge1xuICBmdW5jdGlvbiBfcmVmMihwcmV2LCBrZXkpIHtcbiAgICBwcmV2W2tleV0gPSBzdGF0ZS5tZWRpYVF1ZXJpZXNba2V5XS5tYXRjaGVzO1xuICAgIHJldHVybiBwcmV2O1xuICB9XG5cbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ3VwZGF0ZU1hdGNoZXMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2hlczogT2JqZWN0LmtleXMoc3RhdGUubWVkaWFRdWVyaWVzKS5yZWR1Y2UoX3JlZjIsIHt9KSxcbiAgICAgICAgbWVkaWFRdWVyaWVzOiBzdGF0ZS5tZWRpYVF1ZXJpZXNcbiAgICAgIH07XG5cbiAgICBjYXNlICdzZXRRdWVyaWVzJzpcbiAgICAgIHJldHVybiBpbml0KGFjdGlvbi5xdWVyaWVzKTtcbiAgfVxufVxuLyoqXG4gKiBBIGhvb2sgdGhhdCByZXR1cm5zIGEgW2BNZWRpYVF1ZXJ5TWF0Y2hlc2BdKCNtZWRpYXF1ZXJ5bWF0Y2hlcykgb2JqZWN0IHdoaWNoIHdpbGxcbiAqIHRlbGwgeW91IGlmIHNwZWNpZmljIG1lZGlhIHF1ZXJpZXMgbWF0Y2hlZCwgYWxsIG1lZGlhIHF1ZXJpZXMgbWF0Y2hlZCwgb3JcbiAqIGFueSBtZWRpYSBxdWVyaWVzIG1hdGNoZWQuIE1hdGNoZXMgaW4gdGhpcyBob29rIHdpbGwgYWx3YXlzIHJldHVybiBgZmFsc2VgIHdoZW5cbiAqIHJlbmRlcmluZyBvbiB0aGUgc2VydmVyLlxuICpcbiAqIEBwYXJhbSBxdWVyeU1hcCBUaGUgbWVkaWEgcXVlcmllcyB5b3Ugd2FudCB0byBtYXRjaCBhZ2FpbnN0IGUuZy4gYHtzY3JlZW46IFwic2NyZWVuXCIsIHdpZHRoOiBcIihtaW4td2lkdGg6IDEyZW0pXCJ9YFxuICovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcmllcyhxdWVyeU1hcCkge1xuICBjb25zdCBwcmV2UXVlcmllcyA9IFJlYWN0LnVzZVJlZihxdWVyeU1hcCk7XG4gIGNvbnN0IFtzdGF0ZSwgZGlzcGF0Y2hdID0gUmVhY3QudXNlUmVkdWNlcihyZWR1Y2VyLCBxdWVyeU1hcCwgaW5pdCk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHF1ZXJpZXNEaWRDaGFuZ2UocXVlcnlNYXAsIHByZXZRdWVyaWVzLmN1cnJlbnQpKSB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6ICdzZXRRdWVyaWVzJyxcbiAgICAgICAgcXVlcmllczogcXVlcnlNYXBcbiAgICAgIH0pO1xuICAgICAgcHJldlF1ZXJpZXMuY3VycmVudCA9IHF1ZXJ5TWFwO1xuICAgIH1cbiAgfSwgW3F1ZXJ5TWFwXSk7XG5cbiAgZnVuY3Rpb24gX3JlZjMoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICd1cGRhdGVNYXRjaGVzJ1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gX3JlZjQobXEpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IF9yZWYzO1xuICAgIGlmICh0eXBlb2YgbXEuYWRkTGlzdGVuZXIgIT09ICd1bmRlZmluZWQnKSBtcS5hZGRMaXN0ZW5lcihjYWxsYmFjayk7ZWxzZSBtcS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIGNhbGxiYWNrO1xuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBxdWVyaWVzID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZWRpYVF1ZXJpZXMpO1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IHF1ZXJpZXMubWFwKF9yZWY0KTtcblxuICAgIGZ1bmN0aW9uIF9yZWY1KG1xLCBpKSB7XG4gICAgICBpZiAodHlwZW9mIG1xLmFkZExpc3RlbmVyICE9PSAndW5kZWZpbmVkJykgbXEucmVtb3ZlTGlzdGVuZXIoY2FsbGJhY2tzW2ldKTtlbHNlIG1xLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGNhbGxiYWNrc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHF1ZXJpZXMuZm9yRWFjaChfcmVmNSk7XG4gICAgfTtcbiAgfSwgW3N0YXRlLm1lZGlhUXVlcmllc10pO1xuICBjb25zdCB7XG4gICAgbWF0Y2hlc1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IG1hdGNoVmFsdWVzID0gUmVhY3QudXNlTWVtbygoKSA9PiBPYmplY3QudmFsdWVzKG1hdGNoZXMpLCBbbWF0Y2hlc10pO1xuICByZXR1cm4ge1xuICAgIG1hdGNoZXMsXG4gICAgbWF0Y2hlc0FueTogbWF0Y2hWYWx1ZXMuc29tZShCb29sZWFuKSxcbiAgICBtYXRjaGVzQWxsOiBtYXRjaFZhbHVlcy5sZW5ndGggPiAwICYmIG1hdGNoVmFsdWVzLmV2ZXJ5KEJvb2xlYW4pXG4gIH07XG59XG4vKipcbiAqIEEgaG9vayB0aGF0IHJldHVybnMgYHRydWVgIGlmIHRoZSBtZWRpYSBxdWVyeSBtYXRjaGVkIGFuZCBgZmFsc2VgIGlmIG5vdC4gVGhpc1xuICogaG9vayB3aWxsIGFsd2F5cyByZXR1cm4gYGZhbHNlYCB3aGVuIHJlbmRlcmluZyBvbiB0aGUgc2VydmVyLlxuICpcbiAqIEBwYXJhbSBxdWVyeSBUaGUgbWVkaWEgcXVlcnkgeW91IHdhbnQgdG8gbWF0Y2ggYWdhaW5zdCBlLmcuIGBcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMmVtKVwiYFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5KSB7XG4gIHJldHVybiB1c2VNZWRpYVF1ZXJpZXMoZ2V0T2JqKHF1ZXJ5KSkubWF0Y2hlc0FsbDtcbn1cbmNvbnN0IGNhY2hlID0ge307XG5cbmZ1bmN0aW9uIGdldE9iaihxdWVyeSkge1xuICBpZiAoY2FjaGVbcXVlcnldID09PSB2b2lkIDApIGNhY2hlW3F1ZXJ5XSA9IHtcbiAgICBkZWZhdWx0OiBxdWVyeVxuICB9O1xuICByZXR1cm4gY2FjaGVbcXVlcnldO1xufSIsICJpbXBvcnQge1xuICAgIFJlc2l6YWJsZUhhbmRsZSxcbiAgICBSZXNpemFibGVQYW5lbCxcbiAgICBSZXNpemFibGVQYW5lbEdyb3VwLFxufSBmcm9tIFwiQC91aS9yZXNpemFibGVcIjtcbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiQC91aS9zb25uZXJcIjtcbmltcG9ydCB7IFRvb2x0aXBQcm92aWRlciB9IGZyb20gXCJAL3VpL3Rvb2x0aXBcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IExheW91dFByb3BzLCBMb2dvVHlwZSB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VNZWRpYVF1ZXJ5IH0gZnJvbSBcIkByZWFjdC1ob29rL21lZGlhLXF1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VNZW1vLCBpc1ZhbGlkRWxlbWVudCwgY2xvbmVFbGVtZW50LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgU2lkZWJhciwgTW9kZVRvZ2dsZSB9IGZyb20gXCJAL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiQC9jb21wb25lbnRzL2xpbmtcIjtcbmltcG9ydCB7IHVzZVJlc291cmNlIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAL3Byb3ZpZGVycy90aGVtZS1wcm92aWRlclwiO1xuaW1wb3J0IEJhc2VMYXlvdXQgZnJvbSBcIi4vYmFzZVwiO1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdExheW91dCA9ICh7XG4gICAgY2hpbGRyZW4sXG4gICAgZGVmYXVsdExheW91dCxcbiAgICBkZWZhdWx0Q29sbGFwc2VkID0gZmFsc2UsXG4gICAgbmF2Q29sbGFwc2VkU2l6ZSxcbiAgICBuYXZiYXIsXG4gICAgZm9vdGVyLFxuICAgIGxvZ28sXG4gICAgYXR0cmlidXRlLFxuICAgIGRlZmF1bHRUaGVtZSxcbiAgICBlbmFibGVTeXN0ZW0sXG4gICAgZGlzYWJsZVRyYW5zaXRpb25PbkNoYW5nZSxcbiAgICBlbmFibGVDb2xvclNjaGVtZSxcbiAgICBmb3JjZWRUaGVtZSxcbiAgICBub25jZSxcbiAgICBzdG9yYWdlS2V5LFxuICAgIHRoZW1lcyxcbiAgICB2YWx1ZSxcbn06IExheW91dFByb3BzKSA9PiB7XG4gICAgY29uc3QgeyByZXNvdXJjZXMgfSA9IHVzZVJlc291cmNlKCk7XG5cbiAgICBjb25zdCBmaXJzdERhc2hib2FyZCA9IHJlc291cmNlcz8uWzBdO1xuXG4gICAgY29uc3QgeHMgPSB1c2VNZWRpYVF1ZXJ5KFwib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3OS45OTlweClcIik7XG4gICAgY29uc3Qgc20gPSB1c2VNZWRpYVF1ZXJ5KFxuICAgICAgICBcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkgYW5kIChtYXgtd2lkdGg6IDc2Ny45OTlweClcIixcbiAgICApO1xuICAgIGNvbnN0IG1kID0gdXNlTWVkaWFRdWVyeShcbiAgICAgICAgXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzLjk5OXB4KVwiLFxuICAgICk7XG4gICAgY29uc3QgbGcgPSB1c2VNZWRpYVF1ZXJ5KFwib25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweClcIik7XG5cbiAgICBjb25zdCBbaXNDb2xsYXBzZWQsIHNldElzQ29sbGFwc2VkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KFxuICAgICAgICB4cyA/PyBkZWZhdWx0Q29sbGFwc2VkLFxuICAgICk7XG5cbiAgICBjb25zdCBsYXlvdXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKGRlZmF1bHRMYXlvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TGF5b3V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh4cykge1xuICAgICAgICAgICAgcmV0dXJuIFsxNSwgODVdO1xuICAgICAgICB9IGVsc2UgaWYgKHNtKSB7XG4gICAgICAgICAgICByZXR1cm4gWzIwLCA4MF07XG4gICAgICAgIH0gZWxzZSBpZiAobWQpIHtcbiAgICAgICAgICAgIHJldHVybiBbMjUsIDc1XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbMTUsIDg1XTtcbiAgICB9LCBbZGVmYXVsdExheW91dCwgeHMsIHNtLCBtZF0pO1xuXG4gICAgY29uc3QgU2lkZWJhclNpemVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChsZykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtaW5TaXplOiAxMSxcbiAgICAgICAgICAgICAgICBtYXhTaXplOiAxNSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAobWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWluU2l6ZTogMTUsXG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogMjUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKHNtKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pblNpemU6IDIwLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IDMwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtaW5TaXplOiAxNSxcbiAgICAgICAgICAgIG1heFNpemU6IDE1LFxuICAgICAgICB9O1xuICAgIH0sIFtzbSwgbWQsIGxnXSk7XG5cbiAgICBjb25zdCBoYXNDb2xsYXBzZWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGlzQ29sbGFwc2VkIHx8IHhzIHx8IHNtIHx8IG1kO1xuICAgIH0sIFtpc0NvbGxhcHNlZCwgbWQsIHNtLCB4c10pO1xuXG4gICAgY29uc3QgTG9nbzogTG9nb1R5cGUgfCB1bmRlZmluZWQgPSB1c2VNZW1vPExvZ29UeXBlIHwgdW5kZWZpbmVkPigoKTpcbiAgICAgICAgfCBMb2dvVHlwZVxuICAgICAgICB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgIGlmICghbG9nbykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KGxvZ28uZGVmYXVsdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50PExvZ29UeXBlPihsb2dvLmRlZmF1bHQsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInctYXV0byBoLThcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGhhc0NvbGxhcHNlZCA/IGxvZ28uY29sbGFwc2VkIDogbG9nby5kZWZhdWx0O1xuICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoY29tcG9uZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVudDxMb2dvVHlwZT4oY29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInctYXV0byBoLThcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSwgW2xvZ28sIGRlZmF1bHRMYXlvdXQsIGhhc0NvbGxhcHNlZF0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxCYXNlTGF5b3V0XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlPXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdFRoZW1lPXtkZWZhdWx0VGhlbWV9XG4gICAgICAgICAgICAgICAgZW5hYmxlU3lzdGVtPXtlbmFibGVTeXN0ZW19XG4gICAgICAgICAgICAgICAgZGlzYWJsZVRyYW5zaXRpb25PbkNoYW5nZT17ZGlzYWJsZVRyYW5zaXRpb25PbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBlbmFibGVDb2xvclNjaGVtZT17ZW5hYmxlQ29sb3JTY2hlbWV9XG4gICAgICAgICAgICAgICAgZm9yY2VkVGhlbWU9e2ZvcmNlZFRoZW1lfVxuICAgICAgICAgICAgICAgIG5vbmNlPXtub25jZX1cbiAgICAgICAgICAgICAgICBzdG9yYWdlS2V5PXtzdG9yYWdlS2V5fVxuICAgICAgICAgICAgICAgIHRoZW1lcz17dGhlbWVzfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UmVzaXphYmxlUGFuZWxHcm91cFxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICAgICAgb25MYXlvdXQ9eyhzaXplczogbnVtYmVyW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGByZWFjdC1yZXNpemFibGUtcGFuZWxzOmxheW91dD0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLWZ1bGwgaXRlbXMtc3RyZXRjaFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UmVzaXphYmxlUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaXplPXtsYXlvdXRbMF19XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWRTaXplPXtuYXZDb2xsYXBzZWRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2libGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5TaXplPXtTaWRlYmFyU2l6ZXMubWluU2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFNpemU9e1NpZGViYXJTaXplcy5tYXhTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25FeHBhbmQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xsYXBzZWQgPSB4cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0NvbGxhcHNlZChjb2xsYXBzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGByZWFjdC1yZXNpemFibGUtcGFuZWxzOmNvbGxhcHNlZD0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29sbGFwc2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKGNvbGxhcHNlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gYHJlYWN0LXJlc2l6YWJsZS1wYW5lbHM6Y29sbGFwc2VkPSR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDb2xsYXBzZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtaW4tdy1bNTBweF0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGVhc2UtaW4tb3V0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmbGV4IHB5LTEuNSBtYXgtaC0xNCBpdGVtcy1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWJvcmRlci80MCBqdXN0aWZ5LWNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDb2xsYXBzZWQgJiYgXCJweC0yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtmaXJzdERhc2hib2FyZC5saXN0Py50b1N0cmluZygpID8/IFwiL1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdERhc2hib2FyZC5tZXRhPy5sYWJlbCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3REYXNoYm9hcmQubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7TG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTaWRlYmFyIGlzQ29sbGFwc2VkPXtoYXNDb2xsYXBzZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUmVzaXphYmxlUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDxSZXNpemFibGVIYW5kbGUgd2l0aEhhbmRsZSBjbGFzc05hbWU9XCJiZy1ib3JkZXIvNDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8UmVzaXphYmxlUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaXplPXtsYXlvdXRbMV19XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5TaXplPXsyNX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInhsOm1heC1oLWR2aCBoLWZ1bGwgIW92ZXJmbG93LXktYXV0byBmbGV4IGZsZXgtY29sIG92ZXJmbG93LXgtaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3RpY2t5IHRvcC0wIHotNTAgcHktMiBoLTE0IHB4LTQgZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWJvcmRlci80MCBiZy1iYWNrZ3JvdW5kLzk1IGJhY2tkcm9wLWJsdXIgc3VwcG9ydHMtW2JhY2tkcm9wLWZpbHRlcl06YmctYmFja2dyb3VuZC82MFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZiYXI/LnJpZ2h0U2lkZSAmJiBcImp1c3RpZnktYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge25hdmJhcj8ubGVmdFNpZGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmF2YmFyPy5sZWZ0U2lkZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmF2YmFyPy5yaWdodFNpZGUgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7PE1vZGVUb2dnbGUgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmF2YmFyPy5yaWdodFNpZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNb2RlVG9nZ2xlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZ3JvdyBweC02IHB5LTRcIj57Y2hpbGRyZW59PC9tYWluPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Zvb3RlciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJweC02IHB5LTQgYm9yZGVyLXQgYm9yZGVyLWJvcmRlci80MCBzdGlja3kgYm90dG9tLTAgYmctYmFja2dyb3VuZCB0ZXh0LXByaW1hcnkgZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj57Zm9vdGVyfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9SZXNpemFibGVQYW5lbD5cbiAgICAgICAgICAgICAgICA8L1Jlc2l6YWJsZVBhbmVsR3JvdXA+XG4gICAgICAgICAgICA8L0Jhc2VMYXlvdXQ+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5EZWZhdWx0TGF5b3V0LmRpc3BsYXlOYW1lID0gXCJEZWZhdWx0TGF5b3V0XCI7XG4iLCAiaW1wb3J0IHsgTm90aWZpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuZXhwb3J0IGNvbnN0IG5vdGlmaWNhdGlvblByb3ZpZGVyOiBOb3RpZmljYXRpb25Qcm92aWRlciA9IHtcbiAgICBvcGVuOiAoeyBrZXksIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB0eXBlIH0pID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICB0b2FzdC5zdWNjZXNzKG1lc3NhZ2UsIHsgZGVzY3JpcHRpb24sIGlkOiBrZXkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgICAgICB0b2FzdC5lcnJvcihtZXNzYWdlLCB7IGRlc2NyaXB0aW9uLCBpZDoga2V5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IFwicHJvZ3Jlc3NcIikge1xuICAgICAgICAgICAgdG9hc3QubG9hZGluZyhtZXNzYWdlLCB7IGRlc2NyaXB0aW9uLCBpZDoga2V5IH0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBjbG9zZTogKGtleSkgPT4gdG9hc3QuZGlzbWlzcyhrZXkpLFxufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdGlmaWNhdGlvblByb3ZpZGVyID0gKCk6IE5vdGlmaWNhdGlvblByb3ZpZGVyID0+IHtcbiAgICByZXR1cm4gbm90aWZpY2F0aW9uUHJvdmlkZXI7XG59O1xuIiwgImltcG9ydCB7XG4gICAgQWNjZXNzQ29udHJvbENvbnRleHQsXG4gICAgQ2FuUmV0dXJuVHlwZSxcbiAgICB1c2VDYW4sXG4gICAgdXNlTmF2aWdhdGlvbixcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG59IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBHZXRFZGl0VXJsUmV0dXJuVHlwZSA9IENhblJldHVyblR5cGUgJiB7XG4gICAgdXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlR2V0RWRpdFVybCA9IChcbiAgICByZXNvdXJjZTogc3RyaW5nLFxuICAgIHJlY29yZEl0ZW1JZDogc3RyaW5nLFxuICAgIG1ldGE/OiBhbnksXG4pOiBHZXRFZGl0VXJsUmV0dXJuVHlwZSA9PiB7XG4gICAgY29uc3QgYWNjZXNzQ29udHJvbENvbnRleHQgPSB1c2VDb250ZXh0KEFjY2Vzc0NvbnRyb2xDb250ZXh0KTtcbiAgICBjb25zdCBhY2Nlc3NDb250cm9sRW5hYmxlZCA9XG4gICAgICAgIGFjY2Vzc0NvbnRyb2xDb250ZXh0Lm9wdGlvbnMuYnV0dG9ucy5lbmFibGVBY2Nlc3NDb250cm9sO1xuXG4gICAgY29uc3QgaGlkZUlmVW5hdXRob3JpemVkID1cbiAgICAgICAgYWNjZXNzQ29udHJvbENvbnRleHQub3B0aW9ucy5idXR0b25zLmhpZGVJZlVuYXV0aG9yaXplZDtcblxuICAgIGNvbnN0IHsgZWRpdFVybDogZ2VuZXJhdGVFZGl0VXJsIH0gPSB1c2VOYXZpZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB7IGlkLCByZXNvdXJjZTogX3Jlc291cmNlIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZSk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHVzZUNhbih7XG4gICAgICAgIHJlc291cmNlOiByZXNvdXJjZSxcbiAgICAgICAgYWN0aW9uOiBcImVkaXRcIixcbiAgICAgICAgcGFyYW1zOiB7IGlkOiByZWNvcmRJdGVtSWQsIHJlc291cmNlOiBfcmVzb3VyY2UgfSxcbiAgICAgICAgcXVlcnlPcHRpb25zOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBhY2Nlc3NDb250cm9sRW5hYmxlZCxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHVzZVRyYW5zbGF0ZSgpO1xuXG4gICAgY29uc3QgcmVhc29uID0gKCkgPT4ge1xuICAgICAgICBpZiAoZGF0YT8uY2FuKSByZXR1cm4gXCJcIjtcbiAgICAgICAgZWxzZSBpZiAoZGF0YT8ucmVhc29uKSByZXR1cm4gZGF0YS5yZWFzb247XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgICAgXCJidXR0b25zLm5vdEFjY2Vzc1RpdGxlXCIsXG4gICAgICAgICAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2Vzc1wiLFxuICAgICAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZWRpdFVybCA9XG4gICAgICAgIHJlc291cmNlICYmIChyZWNvcmRJdGVtSWQgPz8gaWQpXG4gICAgICAgICAgICA/IGdlbmVyYXRlRWRpdFVybChyZXNvdXJjZSwgcmVjb3JkSXRlbUlkISA/PyBpZCEsIG1ldGEpXG4gICAgICAgICAgICA6IFwiXCI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYW46ICFCb29sZWFuKGFjY2Vzc0NvbnRyb2xFbmFibGVkICYmIGhpZGVJZlVuYXV0aG9yaXplZCAmJiAhZGF0YT8uY2FuKSxcbiAgICAgICAgcmVhc29uOiByZWFzb24oKSxcbiAgICAgICAgdXJsOiBlZGl0VXJsLFxuICAgIH07XG59O1xuIiwgImltcG9ydCB7XG4gICAgQWNjZXNzQ29udHJvbENvbnRleHQsXG4gICAgQ2FuUmV0dXJuVHlwZSxcbiAgICB1c2VDYW4sXG4gICAgdXNlTmF2aWdhdGlvbixcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG59IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBHZXRTaG93VXJsUmV0dXJuVHlwZSA9IENhblJldHVyblR5cGUgJiB7XG4gICAgdXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlR2V0U2hvd1VybCA9IChcbiAgICByZXNvdXJjZTogc3RyaW5nLFxuICAgIHJlY29yZEl0ZW1JZDogc3RyaW5nLFxuICAgIG1ldGE/OiBhbnksXG4pOiBHZXRTaG93VXJsUmV0dXJuVHlwZSA9PiB7XG4gICAgY29uc3QgYWNjZXNzQ29udHJvbENvbnRleHQgPSB1c2VDb250ZXh0KEFjY2Vzc0NvbnRyb2xDb250ZXh0KTtcbiAgICBjb25zdCBhY2Nlc3NDb250cm9sRW5hYmxlZCA9XG4gICAgICAgIGFjY2Vzc0NvbnRyb2xDb250ZXh0Lm9wdGlvbnMuYnV0dG9ucy5lbmFibGVBY2Nlc3NDb250cm9sO1xuXG4gICAgY29uc3QgaGlkZUlmVW5hdXRob3JpemVkID1cbiAgICAgICAgYWNjZXNzQ29udHJvbENvbnRleHQub3B0aW9ucy5idXR0b25zLmhpZGVJZlVuYXV0aG9yaXplZDtcblxuICAgIGNvbnN0IHsgc2hvd1VybDogZ2VuZXJhdGVTaG93VXJsIH0gPSB1c2VOYXZpZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB7IGlkLCByZXNvdXJjZTogX3Jlc291cmNlIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZSk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHVzZUNhbih7XG4gICAgICAgIHJlc291cmNlOiByZXNvdXJjZSxcbiAgICAgICAgYWN0aW9uOiBcInNob3dcIixcbiAgICAgICAgcGFyYW1zOiB7IGlkOiByZWNvcmRJdGVtSWQsIHJlc291cmNlOiBfcmVzb3VyY2UgfSxcbiAgICAgICAgcXVlcnlPcHRpb25zOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBhY2Nlc3NDb250cm9sRW5hYmxlZCxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHVzZVRyYW5zbGF0ZSgpO1xuXG4gICAgY29uc3QgcmVhc29uID0gKCkgPT4ge1xuICAgICAgICBpZiAoZGF0YT8uY2FuKSByZXR1cm4gXCJcIjtcbiAgICAgICAgZWxzZSBpZiAoZGF0YT8ucmVhc29uKSByZXR1cm4gZGF0YS5yZWFzb247XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgICAgXCJidXR0b25zLm5vdEFjY2Vzc1RpdGxlXCIsXG4gICAgICAgICAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2Vzc1wiLFxuICAgICAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2hvd1VybCA9XG4gICAgICAgIHJlc291cmNlICYmIChyZWNvcmRJdGVtSWQgfHwgaWQpXG4gICAgICAgICAgICA/IGdlbmVyYXRlU2hvd1VybChyZXNvdXJjZSwgcmVjb3JkSXRlbUlkISA/PyBpZCEsIG1ldGEpXG4gICAgICAgICAgICA6IFwiXCI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYW46ICFCb29sZWFuKGFjY2Vzc0NvbnRyb2xFbmFibGVkICYmIGhpZGVJZlVuYXV0aG9yaXplZCAmJiAhZGF0YT8uY2FuKSxcbiAgICAgICAgcmVhc29uOiByZWFzb24oKSxcbiAgICAgICAgdXJsOiBzaG93VXJsLFxuICAgIH07XG59O1xuIiwgImltcG9ydCB7XG4gICAgQWNjZXNzQ29udHJvbENvbnRleHQsXG4gICAgQ2FuUmV0dXJuVHlwZSxcbiAgICBwaWNrTm90RGVwcmVjYXRlZCxcbiAgICB1c2VDYW4sXG4gICAgdXNlRGVsZXRlLFxuICAgIHVzZU11dGF0aW9uTW9kZSxcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VSZXNvdXJjZVBhcmFtcyxcbiAgICB1c2VUcmFuc2xhdGUsXG4gICAgdXNlV2FybkFib3V0Q2hhbmdlLFxufSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBNdXRhdGVPcHRpb25zIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIERlbGV0ZUhlbHBlclJldHVyblR5cGUgPSBDYW5SZXR1cm5UeXBlICYge1xuICAgIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgICBtdXRhdGU6IChlPzogTXV0YXRlT3B0aW9uczx1bmtub3duLCB1bmtub3duLCB1bmtub3duLCB1bmtub3duPikgPT4gYW55OyAvLyBUT0RPOiBVc2VEZWxldGVSZXR1cm5UeXBlIGZpeFxufTtcblxuZXhwb3J0IGNvbnN0IHVzZURlbGV0ZUhlbHBlciA9IChcbiAgICByZXNvdXJjZTogc3RyaW5nLFxuICAgIHJlY29yZEl0ZW1JZDogc3RyaW5nLFxuICAgIG1ldGE/OiBhbnksXG4pOiBEZWxldGVIZWxwZXJSZXR1cm5UeXBlID0+IHtcbiAgICBjb25zdCBhY2Nlc3NDb250cm9sQ29udGV4dCA9IHVzZUNvbnRleHQoQWNjZXNzQ29udHJvbENvbnRleHQpO1xuXG4gICAgY29uc3QgYWNjZXNzQ29udHJvbEVuYWJsZWQgPVxuICAgICAgICBhY2Nlc3NDb250cm9sQ29udGV4dC5vcHRpb25zLmJ1dHRvbnMuZW5hYmxlQWNjZXNzQ29udHJvbDtcblxuICAgIGNvbnN0IGhpZGVJZlVuYXV0aG9yaXplZCA9XG4gICAgICAgIGFjY2Vzc0NvbnRyb2xDb250ZXh0Lm9wdGlvbnMuYnV0dG9ucy5oaWRlSWZVbmF1dGhvcml6ZWQ7XG5cbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcblxuICAgIGNvbnN0IGlkID0gdXNlUmVzb3VyY2VQYXJhbXMoKTtcblxuICAgIGNvbnN0IHsgcmVzb3VyY2U6IF9yZXNvdXJjZSwgaWRlbnRpZmllciB9ID0gdXNlUmVzb3VyY2UocmVzb3VyY2UpO1xuXG4gICAgY29uc3QgeyBtdXRhdGlvbk1vZGUgfSA9IHVzZU11dGF0aW9uTW9kZSgpO1xuXG4gICAgY29uc3QgeyBtdXRhdGUsIGlzTG9hZGluZyB9ID0gdXNlRGVsZXRlKCk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHVzZUNhbih7XG4gICAgICAgIHJlc291cmNlOiBfcmVzb3VyY2U/Lm5hbWUsXG4gICAgICAgIGFjdGlvbjogXCJkZWxldGVcIixcbiAgICAgICAgcGFyYW1zOiB7IGlkOiByZWNvcmRJdGVtSWQgPz8gaWQsIHJlc291cmNlOiBfcmVzb3VyY2UgfSxcbiAgICAgICAgcXVlcnlPcHRpb25zOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBhY2Nlc3NDb250cm9sRW5hYmxlZCxcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlYXNvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKGRhdGE/LmNhbikgcmV0dXJuIFwiXCI7XG4gICAgICAgIGVsc2UgaWYgKGRhdGE/LnJlYXNvbikgcmV0dXJuIGRhdGEucmVhc29uO1xuICAgICAgICBlbHNlIHJldHVybiB0cmFuc2xhdGUoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2Vzc1wiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgeyBzZXRXYXJuV2hlbiB9ID0gdXNlV2FybkFib3V0Q2hhbmdlKCk7XG5cbiAgICBjb25zdCBvbkRlbGV0ZU11dGF0ZSA9IChcbiAgICAgICAgb3B0aW9ucz86IE11dGF0ZU9wdGlvbnM8dW5rbm93biwgdW5rbm93biwgdW5rbm93biwgdW5rbm93bj4sXG4gICAgKTogYW55ID0+IHtcbiAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xFbmFibGVkICYmIGhpZGVJZlVuYXV0aG9yaXplZCAmJiAhZGF0YT8uY2FuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChyZWNvcmRJdGVtSWQgPz8gaWQpICYmIGlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIHNldFdhcm5XaGVuKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiBtdXRhdGUoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogcmVjb3JkSXRlbUlkID8/IGlkID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbk1vZGUsXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHBpY2tOb3REZXByZWNhdGVkKG1ldGEpLFxuICAgICAgICAgICAgICAgICAgICBtZXRhRGF0YTogcGlja05vdERlcHJlY2F0ZWQobWV0YSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhbjogIUJvb2xlYW4oYWNjZXNzQ29udHJvbEVuYWJsZWQgJiYgaGlkZUlmVW5hdXRob3JpemVkICYmICFkYXRhPy5jYW4pLFxuICAgICAgICByZWFzb246IHJlYXNvbigpLFxuICAgICAgICBtdXRhdGU6IG9uRGVsZXRlTXV0YXRlLFxuICAgICAgICBpc0xvYWRpbmcsXG4gICAgfTtcbn07XG4iLCAiaW1wb3J0IHtcbiAgICBCYWNrRnVuY3Rpb24sXG4gICAgdXNlQmFjayxcbiAgICB1c2VOYXZpZ2F0aW9uLFxuICAgIHVzZVJlc291cmNlLFxuICAgIHVzZVJvdXRlclR5cGUsXG59IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IHVzZU9uQmFjayA9ICgpOiBCYWNrRnVuY3Rpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHJvdXRlclR5cGUgPSB1c2VSb3V0ZXJUeXBlKCk7XG4gICAgY29uc3QgYmFjayA9IHVzZUJhY2soKTtcbiAgICBjb25zdCB7IGdvQmFjayB9ID0gdXNlTmF2aWdhdGlvbigpO1xuICAgIGNvbnN0IHsgYWN0aW9uIH0gPSB1c2VSZXNvdXJjZSgpO1xuXG4gICAgY29uc3Qgb25CYWNrID1cbiAgICAgICAgYWN0aW9uICE9PSBcImxpc3RcIiB8fCB0eXBlb2YgYWN0aW9uICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgICA/IHJvdXRlclR5cGUgPT09IFwibGVnYWN5XCJcbiAgICAgICAgICAgICAgICA/IGdvQmFja1xuICAgICAgICAgICAgICAgIDogYmFja1xuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gb25CYWNrO1xufTtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgQ29uZmlybURpYWxvZyB9IGZyb20gXCJAL2NvbXBvbmVudHMvY29uZmlybVwiO1xuaW1wb3J0IHsgdXNlRGVsZXRlSGVscGVyLCB1c2VPbkJhY2sgfSBmcm9tIFwiQC9ob29rc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRlIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IFJlYWN0LCB7XG4gICAgUHJvcHNXaXRoQ2hpbGRyZW4sXG4gICAgY3JlYXRlQ29udGV4dCxcbiAgICB1c2VDYWxsYmFjayxcbiAgICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgRGVsZXRlRGF0YVR5cGUgPSB7XG4gICAgdG9vZ2xlOiBib29sZWFuO1xuICAgIHJvdzogYW55O1xuICAgIHJlc291cmNlOiBzdHJpbmc7XG4gICAgcmVkaXJlY3RCYWNrPzogYm9vbGVhbjtcbiAgICBvbkFmdGVySGFuZGxlPzogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQ29udGV4dFR5cGUge1xuICAgIGRhdGE6IERlbGV0ZURhdGFUeXBlO1xuICAgIHVwZGF0ZURhdGE6IChkYXRhOiBEZWxldGVEYXRhVHlwZSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERlbGV0ZUFjdGlvbk1vZGFsKHByb3BzOiBEZWxldGVDb250ZXh0VHlwZSkge1xuICAgIGNvbnN0IGJhY2sgPSB1c2VPbkJhY2soKTtcbiAgICBjb25zdCB7IGNhbiwgaXNMb2FkaW5nLCBtdXRhdGUgfSA9IHVzZURlbGV0ZUhlbHBlcihcbiAgICAgICAgcHJvcHMuZGF0YT8ucmVzb3VyY2UsXG4gICAgICAgIHByb3BzLmRhdGE/LnJvdz8uaWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHVzZVRyYW5zbGF0ZSgpO1xuXG4gICAgY29uc3Qgb25EZWxldGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmIChjYW4pIHtcbiAgICAgICAgICAgIHJldHVybiBtdXRhdGUoe1xuICAgICAgICAgICAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNSZWRpcmVjdEJhY2sgPSBwcm9wcz8uZGF0YT8ucmVkaXJlY3RCYWNrID8/IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbkFmdGVySGFuZGxlID0gcHJvcHM/LmRhdGE/Lm9uQWZ0ZXJIYW5kbGU7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy51cGRhdGVEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2dsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3c6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RCYWNrOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJIYW5kbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVkaXJlY3RCYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrPy4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbkFmdGVySGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkFmdGVySGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sIFtjYW4sIG11dGF0ZSwgcHJvcHMsIGJhY2tdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb25maXJtRGlhbG9nXG4gICAgICAgICAgICBvcGVuPXtjYW4gJiYgcHJvcHM/LmRhdGE/LnRvb2dsZX1cbiAgICAgICAgICAgIGxvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgIHRpdGxlPXt0cmFuc2xhdGUoXCJBcmUgeW91IHN1cmU/XCIpfVxuICAgICAgICAgICAgZGVzY3JpcHRpb249e3RyYW5zbGF0ZShcIlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuXCIpfVxuICAgICAgICAgICAgb2tUZXh0PXt0cmFuc2xhdGUoXCJEZWxldGVcIil9XG4gICAgICAgICAgICBjYW5jZWxUZXh0PXt0cmFuc2xhdGUoXCJDYW5jZWxcIil9XG4gICAgICAgICAgICBva0J1dHRvblZhcmlhbnQ9e1wiZGVzdHJ1Y3RpdmVcIn1cbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy51cGRhdGVEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2dsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3c6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25Db25maXJtPXtvbkRlbGV0ZX1cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5jb25zdCBEZWxldGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxEZWxldGVDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuY29uc3QgRGVsZXRlUHJvdmlkZXI6IFJlYWN0LkZDPFByb3BzV2l0aENoaWxkcmVuPiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZTxEZWxldGVEYXRhVHlwZT4oe1xuICAgICAgICByb3c6IHVuZGVmaW5lZCxcbiAgICAgICAgcmVzb3VyY2U6IFwiXCIsXG4gICAgICAgIHRvb2dsZTogZmFsc2UsXG4gICAgICAgIG9uQWZ0ZXJIYW5kbGU6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHVwZGF0ZURhdGEgPSAoZGF0YTogRGVsZXRlRGF0YVR5cGUpID0+IHtcbiAgICAgICAgc2V0RGF0YShkYXRhKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPERlbGV0ZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgZGF0YSwgdXBkYXRlRGF0YSB9fT5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDxEZWxldGVBY3Rpb25Nb2RhbFxuICAgICAgICAgICAgICAgIGRhdGE9e2RhdGEgYXMgRGVsZXRlRGF0YVR5cGV9XG4gICAgICAgICAgICAgICAgdXBkYXRlRGF0YT17dXBkYXRlRGF0YX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvRGVsZXRlQ29udGV4dC5Qcm92aWRlcj5cbiAgICApO1xufTtcblxuZXhwb3J0IHsgRGVsZXRlQ29udGV4dCwgRGVsZXRlUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgTG9hZGVyID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBSZWFjdC5TVkdQcm9wczxTVkdTVkdFbGVtZW50Pj4oXG4gICAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwibXgtYXV0byBpbmxpbmVcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyMCAzMFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTVcIiByPVwiMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luPVwiMHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY01vZGU9XCJsaW5lYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZHVyPVwiMC44c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMTU7OTsxNVwiXG4gICAgICAgICAgICAgICAgICAgID48L2FuaW1hdGU+XG4gICAgICAgICAgICAgICAgICAgIDxhbmltYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwiZmlsbC1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luPVwiMHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY01vZGU9XCJsaW5lYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZHVyPVwiMC44c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjE7LjU7MVwiXG4gICAgICAgICAgICAgICAgICAgID48L2FuaW1hdGU+XG4gICAgICAgICAgICAgICAgPC9jaXJjbGU+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjYwXCIgY3k9XCIxNVwiIHI9XCI5XCIgZmlsbE9wYWNpdHk9XCIwLjNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luPVwiMHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY01vZGU9XCJsaW5lYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZHVyPVwiMC44c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiOVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdG89XCI5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjk7MTU7OVwiXG4gICAgICAgICAgICAgICAgICAgID48L2FuaW1hdGU+XG4gICAgICAgICAgICAgICAgICAgIDxhbmltYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwiZmlsbC1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luPVwiMHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsY01vZGU9XCJsaW5lYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZHVyPVwiMC44c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0bz1cIjAuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIuNTsxOy41XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYW5pbWF0ZT5cbiAgICAgICAgICAgICAgICA8L2NpcmNsZT5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTA1XCIgY3k9XCIxNVwiIHI9XCIxNVwiPlxuICAgICAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjTW9kZT1cImxpbmVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIwLjhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIxNTs5OzE1XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYW5pbWF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJmaWxsLW9wYWNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjTW9kZT1cImxpbmVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIwLjhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0bz1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMTsuNTsxXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYW5pbWF0ZT5cbiAgICAgICAgICAgICAgICA8L2NpcmNsZT5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICApO1xuICAgIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCAiaW1wb3J0IExvYWRlciBmcm9tIFwiQC9jb21wb25lbnRzL2xvYWRlclwiO1xuaW1wb3J0IHtcbiAgICBUYWJsZUJvZHksXG4gICAgVGFibGVDZWxsLFxuICAgIFRhYmxlSGVhZCxcbiAgICBUYWJsZUhlYWRlcixcbiAgICBUYWJsZVJvdyxcbiAgICBUYWJsZSBhcyBUYWJsZVVpLFxufSBmcm9tIFwiQC91aS90YWJsZVwiO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRlbnRQcm9wcyB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0IHsgQmFzZU9wdGlvbiwgQmFzZVJlY29yZCwgSHR0cEVycm9yIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBVc2VUYWJsZVByb3BzLFxuICAgIFVzZVRhYmxlUmV0dXJuVHlwZSxcbiAgICB1c2VUYWJsZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7XG4gICAgQ2VsbENvbnRleHQsXG4gICAgQ29sdW1uLFxuICAgIENvbHVtbkRlZixcbiAgICBDb2x1bW5EZWZUZW1wbGF0ZSxcbiAgICBUYWJsZU9wdGlvbnNSZXNvbHZlZCxcbiAgICBmbGV4UmVuZGVyLFxufSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgUmVhY3QsIHtcbiAgICBGQyxcbiAgICBSZWFjdEVsZW1lbnQsXG4gICAgdXNlQ2FsbGJhY2ssXG4gICAgdXNlRWZmZWN0LFxuICAgIHVzZU1lbW8sXG4gICAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUm93QWN0aW9uLCBSb3dBY3Rpb25zIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiB9IGZyb20gXCIuL2FjdGlvbnMvZWRpdFwiO1xuaW1wb3J0IHsgU2hvd0FjdGlvbiB9IGZyb20gXCIuL2FjdGlvbnMvc2hvd1wiO1xuaW1wb3J0IHtcbiAgICBUYWJsZUZpbHRlckRhdGVSYW5nZVBpY2tlckZpbHRlcixcbiAgICBUYWJsZUZpbHRlckRyb3Bkb3duLFxuICAgIFRhYmxlRmlsdGVyU2VhcmNoQ29sdW1uLFxufSBmcm9tIFwiLi9maWVsZHNcIjtcbmltcG9ydCB7IENoZWNrQWxsIH0gZnJvbSBcIi4vZmllbGRzL2NoZWNrYWxsXCI7XG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSBcIi4vZmllbGRzL3BhZ2luYXRpb25cIjtcbmltcG9ydCB7IFNvcnRBY3Rpb24gfSBmcm9tIFwiLi9maWVsZHMvc29ydFwiO1xuaW1wb3J0IHsgRGF0YVRhYmxlVG9vbGJhciB9IGZyb20gXCIuL3Rvb2xiYXJcIjtcbmltcG9ydCB7IERlbGV0ZUFjdGlvbiB9IGZyb20gXCIuL2FjdGlvbnMvZGVsZXRlXCI7XG5pbXBvcnQgeyBEZWxldGVQcm92aWRlciB9IGZyb20gXCJAL3Byb3ZpZGVyc1wiO1xuXG5leHBvcnQgdHlwZSBUYWJsZUxpc3RGaWx0ZXJPcHRpb24gPSBCYXNlT3B0aW9uICYge1xuICAgIGljb24/OiBSZWFjdC5Db21wb25lbnRUeXBlPHsgY2xhc3NOYW1lPzogc3RyaW5nIH0+O1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGVGaWx0ZXJQcm9wczxURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBCYXNlUmVjb3JkPiA9IHtcbiAgICBjb2x1bW46IENvbHVtbjxURGF0YT47XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgbnVtYmVyT2ZNb250aHM/OiBudW1iZXI7XG4gICAgYWxpZ24/OiBQb3BvdmVyQ29udGVudFByb3BzW1wiYWxpZ25cIl07XG4gICAgb3B0aW9ucz86IFRhYmxlTGlzdEZpbHRlck9wdGlvbltdO1xufTtcblxuZXhwb3J0IHR5cGUgQ29sdW1uUHJvcHM8XG4gICAgVERhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gQmFzZVJlY29yZCxcbiAgICBUVmFsdWUgPSB1bmtub3duLFxuICAgIFRFcnJvciBleHRlbmRzIEh0dHBFcnJvciA9IEh0dHBFcnJvcixcbj4gPSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBhY2Nlc3NvcktleTogc3RyaW5nO1xuICAgIGVuYWJsZVNvcnRpbmc/OiBib29sZWFuO1xuICAgIGVuYWJsZUhpZGluZz86IGJvb2xlYW47XG4gICAgaGVhZGVyPzpcbiAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgfCBGQzx7XG4gICAgICAgICAgICAgIHRhYmxlOiBVc2VUYWJsZVJldHVyblR5cGU8VERhdGEsIFRFcnJvcj47XG4gICAgICAgICAgfT47XG4gICAgY2VsbD86IENvbHVtbkRlZlRlbXBsYXRlPENlbGxDb250ZXh0PFREYXRhLCBUVmFsdWU+PjtcbiAgICBjaGlsZHJlbj86IFJlYWN0RWxlbWVudDtcbiAgICBmaWx0ZXI/OiBGQzxUYWJsZUZpbHRlclByb3BzPFREYXRhPj47XG59O1xuXG50eXBlIEN1c3RvbUNvbHVtbkRlZjxcbiAgICBURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBCYXNlUmVjb3JkLFxuICAgIFRFcnJvciBleHRlbmRzIEh0dHBFcnJvciA9IEh0dHBFcnJvcixcbj4gPSBDb2x1bW5EZWY8VERhdGEsIFRFcnJvcj4gJiBQaWNrPENvbHVtblByb3BzPFREYXRhLCBURXJyb3I+LCBcImZpbHRlclwiPjtcblxuZXhwb3J0IHR5cGUgVGFibGVQcm9wczxcbiAgICBURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBCYXNlUmVjb3JkLFxuICAgIFRFcnJvciBleHRlbmRzIEh0dHBFcnJvciA9IEh0dHBFcnJvcixcbj4gPSBQYXJ0aWFsPFVzZVRhYmxlUHJvcHM8VERhdGEsIFRFcnJvciwgVERhdGE+PiAmIHtcbiAgICBjaGlsZHJlbj86IFJlYWN0RWxlbWVudDxDb2x1bW5Qcm9wczxURGF0YSwgVEVycm9yPj5bXTtcbiAgICBzaG93SGVhZGVyPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZTxcbiAgICBUUXVlcnlGbkRhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gQmFzZVJlY29yZCxcbiAgICBURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBUUXVlcnlGbkRhdGEsXG4gICAgVEVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gSHR0cEVycm9yLFxuPih7XG4gICAgY2hpbGRyZW4sXG4gICAgc2hvd0hlYWRlciA9IHRydWUsXG4gICAgY29sdW1ucyA9IFtdLFxuICAgIC4uLnByb3BzXG59OiBUYWJsZVByb3BzPFREYXRhLCBURXJyb3I+KSB7XG4gICAgY29uc3QgbWFwQ29sdW1uID0gdXNlQ2FsbGJhY2soXG4gICAgICAgICh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGFjY2Vzc29yS2V5LFxuICAgICAgICAgICAgaGVhZGVyLFxuICAgICAgICAgICAgZW5hYmxlU29ydGluZyxcbiAgICAgICAgICAgIGVuYWJsZUhpZGluZyxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIGNlbGwsXG4gICAgICAgIH06IENvbHVtblByb3BzPFREYXRhLCBURXJyb3I+KTogQ29sdW1uRGVmPFREYXRhPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW46IGFueSA9IHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBoZWFkZXIsXG4gICAgICAgICAgICAgICAgYWNjZXNzb3JLZXksXG4gICAgICAgICAgICAgICAgZW5hYmxlU29ydGluZzogZW5hYmxlU29ydGluZyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBlbmFibGVIaWRpbmc6IGVuYWJsZUhpZGluZyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBlbmFibGVDb2x1bW5GaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgZW5hYmxlUmVzaXppbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5bXCJjZWxsXCJdID0gY2VsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgICAgfSxcbiAgICAgICAgW10sXG4gICAgKTtcblxuICAgIGNvbHVtbnMgPSB1c2VNZW1vPENvbHVtbkRlZjxURGF0YT5bXT4oKCkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgIHJldHVybiAoY2hpbGRyZW4gYXMgUmVhY3RFbGVtZW50W10pXG4gICAgICAgICAgICAgICAgLm1hcCgodmFsdWU6IFJlYWN0RWxlbWVudCkgPT4gdmFsdWUucHJvcHMpXG4gICAgICAgICAgICAgICAgLm1hcChtYXBDb2x1bW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH0sIFtjaGlsZHJlbiwgbWFwQ29sdW1uXSk7XG5cbiAgICBjb25zdCB0YWJsZSA9IHVzZVRhYmxlKHtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0YWJsZU9wdGlvbnMgPSB1c2VNZW1vPFRhYmxlT3B0aW9uc1Jlc29sdmVkPFREYXRhPj4oXG4gICAgICAgICgpID0+IHRhYmxlLm9wdGlvbnMsXG4gICAgICAgIFt0YWJsZV0sXG4gICAgKTtcblxuICAgIGNvbnN0IGlzRmlsdGVyYWJsZSA9IHVzZU1lbW88Ym9vbGVhbj4oXG4gICAgICAgICgpID0+XG4gICAgICAgICAgICBCb29sZWFuKFxuICAgICAgICAgICAgICAgIHRhYmxlT3B0aW9ucy5lbmFibGVDb2x1bW5GaWx0ZXJzIHx8IHRhYmxlT3B0aW9ucz8uZW5hYmxlRmlsdGVycyxcbiAgICAgICAgICAgICksXG4gICAgICAgIFt0YWJsZU9wdGlvbnNdLFxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RGVsZXRlUHJvdmlkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICAgIDxEYXRhVGFibGVUb29sYmFyIHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlVWk+XG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0hlYWRlciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFibGUuZ2V0SGVhZGVyR3JvdXBzKCkubWFwKChoZWFkZXJHcm91cCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkRlZiA9IGhlYWRlci5jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2x1bW5EZWYgYXMgQ3VzdG9tQ29sdW1uRGVmPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWQga2V5PXtoZWFkZXIuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC14LTIuNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmlzUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmbGV4UmVuZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2x1bW5EZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RhYmxlT3B0aW9ucy5lbmFibGVTb3J0aW5nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWYuZW5hYmxlU29ydGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNvcnRBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNGaWx0ZXJhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWY/LmZpbHRlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uRGVmLmZpbHRlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBoZWFkZXIuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgJHtjb2x1bW5EZWYuaGVhZGVyfSBGaWx0ZXJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFibGUucmVmaW5lQ29yZS50YWJsZVF1ZXJ5LmlzTG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtMjQgdGV4dC1jZW50ZXIgdGV4dC1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExvYWRlciBjbGFzc05hbWU9XCJoLTQgdGV4dC1wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiB0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3M/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93OiBhbnkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc3RhdGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cuZ2V0SXNTZWxlY3RlZCgpICYmIFwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRWaXNpYmxlQ2VsbHMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChjZWxsOiBhbnkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NlbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNvbHVtbi5jb2x1bW5EZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jZWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sU3Bhbj17Y29sdW1ucy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC0yNCB0ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gcmVzdWx0cy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPC9UYWJsZVVpPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxQYWdpbmF0aW9uIHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0RlbGV0ZVByb3ZpZGVyPlxuICAgICk7XG59XG5cbmNvbnN0IFRhYmxlQ29sdW1uID0gPFxuICAgIFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQsXG4gICAgVEVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gSHR0cEVycm9yLFxuPihcbiAgICBwcm9wczogQ29sdW1uUHJvcHM8VERhdGEsIFRFcnJvcj4sXG4pID0+IHtcbiAgICByZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59O1xuXG5UYWJsZS5Db2x1bW4gPSBUYWJsZUNvbHVtbjtcblRhYmxlLkNoZWNrQWxsID0gQ2hlY2tBbGw7XG5UYWJsZS5BY3Rpb25zID0gUm93QWN0aW9ucztcblRhYmxlLkFjdGlvbiA9IFJvd0FjdGlvbjtcblRhYmxlLkVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uO1xuVGFibGUuU2hvd0FjdGlvbiA9IFNob3dBY3Rpb247XG5UYWJsZS5EZWxldGVBY3Rpb24gPSBEZWxldGVBY3Rpb247XG5UYWJsZS5GaWx0ZXIgPSB7XG4gICAgRGF0ZVJhbmdlUGlja2VyOiBUYWJsZUZpbHRlckRhdGVSYW5nZVBpY2tlckZpbHRlcixcbiAgICBEcm9wZG93bjogVGFibGVGaWx0ZXJEcm9wZG93bixcbiAgICBTZWFyY2g6IFRhYmxlRmlsdGVyU2VhcmNoQ29sdW1uLFxufTtcblxuVGFibGUuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG4iLCAiXCJ1c2UgY2xpZW50XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gICAgRHJvcGRvd25NZW51LFxuICAgIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gICAgRHJvcGRvd25NZW51SXRlbSxcbiAgICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxufSBmcm9tIFwiQC91aS9kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcIkAvY29tcG9uZW50cy9saW5rXCI7XG5pbXBvcnQgeyBEb3RzSG9yaXpvbnRhbEljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5pbXBvcnQgeyBGQywgUHJvcHNXaXRoQ2hpbGRyZW4sIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbnRlcmZhY2UgUm93QWN0aW9uc1Byb3BzIHtcbiAgICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IHR5cGUgUm93QWN0aW9uUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbiAmIHtcbiAgICB0bz86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGljb24/OiBSZWFjdE5vZGU7XG4gICAgb25DbGljaz86IChldmVudDogYW55KSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IFJvd0FjdGlvbjogRkM8Um93QWN0aW9uUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPERyb3Bkb3duTWVudUl0ZW1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgIGFzQ2hpbGQ9eyEoIXByb3BzLnRvIHx8ICghcHJvcHMudG8gJiYgIXByb3BzLmNoaWxkcmVuKSl9XG4gICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAgICB7cHJvcHMuYXNDaGlsZCA/IChcbiAgICAgICAgICAgICAgICBwcm9wcy5jaGlsZHJlblxuICAgICAgICAgICAgKSA6IHByb3BzLnRvID8gKFxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9e3Byb3BzLnRvfSB0aXRsZT17cHJvcHMudGl0bGV9PlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuaWNvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1yLTJcIj57cHJvcHMuaWNvbn08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMudGl0bGV9XG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuaWNvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1yLTJcIj57cHJvcHMuaWNvbn08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMudGl0bGV9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L0Ryb3Bkb3duTWVudUl0ZW0+XG4gICAgKTtcbn07XG5cblJvd0FjdGlvbi5kaXNwbGF5TmFtZSA9IFwiUm93QWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBSb3dBY3Rpb25zKHsgY2hpbGRyZW4gfTogUm93QWN0aW9uc1Byb3BzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwiaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8RG90c0hvcml6b250YWxJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+T3BlbiBtZW51PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249XCJlbmRcIiBjbGFzc05hbWU9XCJ3LVsxNjBweF1cIj5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBSb3dBY3Rpb25Qcm9wcyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgdXNlR2V0RWRpdFVybCB9IGZyb20gXCJAL2hvb2tzXCI7XG5cbnR5cGUgRWRpdEFjdGlvblByb3BzID0gUm93QWN0aW9uUHJvcHMgJiB7XG4gICAgcm93OiBhbnk7XG4gICAgcmVzb3VyY2U6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEVkaXRBY3Rpb24oe1xuICAgIHJvdyxcbiAgICByZXNvdXJjZSxcbiAgICB0aXRsZSxcbiAgICBkaXNhYmxlZCxcbiAgICAuLi5wcm9wc1xufTogRWRpdEFjdGlvblByb3BzKSB7XG4gICAgY29uc3QgZWRpdCA9IHVzZUdldEVkaXRVcmwocmVzb3VyY2UsIHJvdy5pZCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8Um93QWN0aW9uXG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICBkaXNhYmxlZD17IWVkaXQuY2FuIHx8IGRpc2FibGVkfVxuICAgICAgICAgICAgdGl0bGU9eyFlZGl0Py5jYW4gPyBlZGl0Py5yZWFzb24gOiB0aXRsZX1cbiAgICAgICAgICAgIHRvPXtlZGl0LnVybH1cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5FZGl0QWN0aW9uLmRpc3BsYXlOYW1lID0gXCJFZGl0QWN0aW9uXCI7XG4iLCAiaW1wb3J0IHR5cGUgeyBSb3dBY3Rpb25Qcm9wcyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgdXNlR2V0U2hvd1VybCB9IGZyb20gXCJAL2hvb2tzXCI7XG5cbnR5cGUgU2hvd0FjdGlvblByb3BzID0gUm93QWN0aW9uUHJvcHMgJiB7XG4gICAgcm93OiBhbnk7XG4gICAgcmVzb3VyY2U6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNob3dBY3Rpb24oe1xuICAgIHJvdyxcbiAgICByZXNvdXJjZSxcbiAgICB0aXRsZSxcbiAgICBkaXNhYmxlZCxcbiAgICAuLi5wcm9wc1xufTogU2hvd0FjdGlvblByb3BzKSB7XG4gICAgY29uc3QgZGV0YWlsID0gdXNlR2V0U2hvd1VybChyZXNvdXJjZSwgcm93LmlkKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxSb3dBY3Rpb25cbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgIGRpc2FibGVkPXshZGV0YWlsLmNhbiB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgIHRpdGxlPXshZGV0YWlsPy5jYW4gPyBkZXRhaWw/LnJlYXNvbiA6IHRpdGxlfVxuICAgICAgICAgICAgdG89e2RldGFpbC51cmx9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuU2hvd0FjdGlvbi5kaXNwbGF5TmFtZSA9IFwiU2hvd0FjdGlvblwiO1xuIiwgImltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJkYXRlLWZuc1wiO1xuaW1wb3J0IHsgRmlsdGVySWNvbiwgRmlsdGVyWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gXCJyZWFjdC1kYXktcGlja2VyXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGVGaWx0ZXJQcm9wcyB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcbmltcG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyVHJpZ2dlciB9IGZyb20gXCJAL3VpL3BvcG92ZXJcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIkAvdWkvc2VwYXJhdG9yXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCJAL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCJAL3VpL2NhbGVuZGFyXCI7XG5pbXBvcnQgeyBCYXNlUmVjb3JkIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVGFibGVGaWx0ZXJEYXRlUmFuZ2VQaWNrZXJGaWx0ZXI8XG4gICAgVCBleHRlbmRzIEJhc2VSZWNvcmQgPSBCYXNlUmVjb3JkLFxuPih7XG4gICAgY29sdW1uLFxuICAgIHRpdGxlLFxuICAgIG51bWJlck9mTW9udGhzID0gMixcbiAgICBhbGlnbiA9IFwic3RhcnRcIixcbn06IFBpY2s8VGFibGVGaWx0ZXJQcm9wczxUPiwgXCJjb2x1bW5cIiB8IFwidGl0bGVcIiB8IFwibnVtYmVyT2ZNb250aHNcIiB8IFwiYWxpZ25cIj4pIHtcbiAgICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2UgfCB1bmRlZmluZWQ+KHtcbiAgICAgICAgZnJvbTogdW5kZWZpbmVkLFxuICAgICAgICB0bzogdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gbmV3IFNldChjb2x1bW4/LmdldEZpbHRlclZhbHVlKCkgYXMgc3RyaW5nW10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVzID0gT2JqZWN0LnZhbHVlcyhkYXRlKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICBpZiAoZGF0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgZGF0ZXMubWFwKChkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA/IGZvcm1hdChkYXRlLCBcInl5eXktTU0tZGRcIikudG9TdHJpbmcoKSA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtjb2x1bW4sIGRhdGVdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxQb3BvdmVyPlxuICAgICAgICAgICAgPFBvcG92ZXJUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLXgtMC41XCI+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTUgYm9yZGVyLWRhc2hlZCBweC0xIHB5LTIuNVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJJY29uIGNsYXNzTmFtZT17Y24oXCJoLTMuNSB3LTMuNVwiKX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlPy5mcm9tID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uPVwidmVydGljYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXgtMiBoLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1zbSBwLTEgaC0zLjUgdGV4dC14cyBmb250LW5vcm1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLnRvID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoZGF0ZS5mcm9tLCBcIkxMTCBkZCwgeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChkYXRlLnRvLCBcIkxMTCBkZCwgeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5qb2luKFwiIFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KGRhdGUuZnJvbSwgXCJMTEwgZGQsIHlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlcy5zaXplID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC01IGJvcmRlci1kYXNoZWQgcHgtMSBweS0yLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREYXRlKHsgZnJvbTogdW5kZWZpbmVkLCB0bzogdW5kZWZpbmVkIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbHRlclggY2xhc3NOYW1lPXtjbihcImgtMy41IHctMy41XCIpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGNsYXNzTmFtZT1cInctYXV0byBwLTBcIiBhbGlnbj17YWxpZ259PlxuICAgICAgICAgICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgbW9kZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1vbnRoPXtuZXcgRGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3NldERhdGV9XG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mTW9udGhzPXtudW1iZXJPZk1vbnRoc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlcy5zaXplID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2VwYXJhdG9yIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC04IGJvcmRlci1kYXNoZWQgcHgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uc2V0RmlsdGVyVmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERhdGUoeyBmcm9tOiB1bmRlZmluZWQsIHRvOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsdGVyWCBzaXplPXsxNn0gY2xhc3NOYW1lPVwibXItMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsZWFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgIDwvUG9wb3Zlcj5cbiAgICApO1xufVxuIiwgImltcG9ydCB7IENoZWNrSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IEZpbHRlckljb24sIEZpbHRlclggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlRmlsdGVyUHJvcHMgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiQC91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCB7IFNlcGFyYXRvciB9IGZyb20gXCJAL3VpL3NlcGFyYXRvclwiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiQC91aS9iYWRnZVwiO1xuaW1wb3J0IHtcbiAgICBDb21tYW5kLFxuICAgIENvbW1hbmRFbXB0eSxcbiAgICBDb21tYW5kR3JvdXAsXG4gICAgQ29tbWFuZElucHV0LFxuICAgIENvbW1hbmRJdGVtLFxuICAgIENvbW1hbmRMaXN0LFxuICAgIENvbW1hbmRTZXBhcmF0b3IsXG59IGZyb20gXCJAL3VpL2NvbW1hbmRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlRmlsdGVyRHJvcGRvd24oe1xuICAgIGNvbHVtbixcbiAgICB0aXRsZSxcbiAgICBvcHRpb25zLFxuICAgIGFsaWduID0gXCJzdGFydFwiLFxufTogVGFibGVGaWx0ZXJQcm9wcykge1xuICAgIGNvbnN0IGZhY2V0cyA9IGNvbHVtbj8uZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcygpO1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gbmV3IFNldChjb2x1bW4/LmdldEZpbHRlclZhbHVlKCkgYXMgc3RyaW5nW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFBvcG92ZXI+XG4gICAgICAgICAgICA8UG9wb3ZlclRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAteC0wLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNSBib3JkZXItZGFzaGVkIHB4LTEgcHktMi41XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gY2xhc3NOYW1lPXtjbihcImgtMy41IHctMy41XCIpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzPy5zaXplID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteC0yIGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLXNtIHAtMSBoLTMuNSB0ZXh0LXhzIGZvbnQtbm9ybWFsIGxnOmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlcy5zaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBzcGFjZS14LTEgbGc6ZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNpemUgPiAyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1zbSBwLTEgdGV4dC14cyBoLTMuNSBmb250LW5vcm1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMuc2l6ZX0gc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlcy5oYXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChvcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gcC0xIHRleHQteHMgaC0zLjUgZm9udC1ub3JtYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMuc2l6ZSA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNSBib3JkZXItZGFzaGVkIHB4LTEgcHktMi41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uc2V0RmlsdGVyVmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJYIGNsYXNzTmFtZT17Y24oXCJoLTMuNSB3LTMuNVwiKX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Qb3BvdmVyVHJpZ2dlcj5cbiAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBjbGFzc05hbWU9XCJ3LVsyMDBweF0gcC0wXCIgYWxpZ249e2FsaWdufT5cbiAgICAgICAgICAgICAgICA8Q29tbWFuZD5cbiAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRJbnB1dCBwbGFjZWhvbGRlcj17dGl0bGV9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxDb21tYW5kTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kRW1wdHk+Tm8gcmVzdWx0cyBmb3VuZC48L0NvbW1hbmRFbXB0eT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kR3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbnM/Lm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlcy5oYXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29tbWFuZEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMuZGVsZXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlcy5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uc2V0RmlsdGVyVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibXItMiBmbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtc20gYm9yZGVyIGJvcmRlci1wcmltYXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJvcGFjaXR5LTUwIFsmX3N2Z106aW52aXNpYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwiaC00IHctNFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b3B0aW9uLmljb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uLmljb24gY2xhc3NOYW1lPVwibXItMiBoLTQgdy00IHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57b3B0aW9uLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmFjZXRzPy5nZXQob3B0aW9uLnZhbHVlKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLWF1dG8gZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmb250LW1vbm8gdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZhY2V0cy5nZXQob3B0aW9uLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NvbW1hbmRJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Db21tYW5kR3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMuc2l6ZSA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kU2VwYXJhdG9yIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kR3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29tbWFuZEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImp1c3RpZnktY2VudGVyIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGVhciBmaWx0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NvbW1hbmRJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NvbW1hbmRHcm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZExpc3Q+XG4gICAgICAgICAgICAgICAgPC9Db21tYW5kPlxuICAgICAgICAgICAgPC9Qb3BvdmVyQ29udGVudD5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICk7XG59XG4iLCAiaW1wb3J0IHsgRmlsdGVySWNvbiwgRmlsdGVyWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVGaWx0ZXJQcm9wcyB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIkAvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9pbnB1dFwiO1xuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIkAvdWkvc2VwYXJhdG9yXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZUZpbHRlclNlYXJjaENvbHVtbih7XG4gICAgY29sdW1uLFxuICAgIHRpdGxlLFxuICAgIGFsaWduID0gXCJzdGFydFwiLFxufTogVGFibGVGaWx0ZXJQcm9wcykge1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBjb2x1bW4/LmdldEZpbHRlclZhbHVlKCkgYXMgc3RyaW5nO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFBvcG92ZXI+XG4gICAgICAgICAgICA8UG9wb3ZlclRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAteC0wLjVcIj5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWUgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC01IGJvcmRlci1kYXNoZWQgcHgtMSBweS0yLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbHRlclggY2xhc3NOYW1lPXtjbihcImgtMy41IHctMy41XCIpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCBib3JkZXItZGFzaGVkIHB4LTEgcHktMi41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsdGVySWNvbiBjbGFzc05hbWU9e2NuKFwiaC0zLjUgdy0zLjVcIil9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICA8UG9wb3ZlckNvbnRlbnRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LVsyMDBweF0gcC0wIG92ZXJmbG93LWhpZGRlbiBib3JkZXItMCByaW5nLTBcIlxuICAgICAgICAgICAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgcHgtMyB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBiZy1wb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTUgMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtci0yIGgtNCB3LTQgc2hyaW5rLTAgb3BhY2l0eS01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMCA2LjVDMTAgOC40MzMgOC40MzMgMTAgNi41IDEwQzQuNTY3IDEwIDMgOC40MzMgMyA2LjVDMyA0LjU2NyA0LjU2NyAzIDYuNSAzQzguNDMzIDMgMTAgNC41NjcgMTAgNi41Wk05LjMwODg0IDEwLjAxNTlDOC41MzkwMSAxMC42MzE4IDcuNTYyNTEgMTEgNi41IDExQzQuMDE0NzIgMTEgMiA4Ljk4NTI4IDIgNi41QzIgNC4wMTQ3MiA0LjAxNDcyIDIgNi41IDJDOC45ODUyOCAyIDExIDQuMDE0NzIgMTEgNi41QzExIDcuNTYyNTEgMTAuNjMxOCA4LjUzOTAxIDEwLjAxNTkgOS4zMDg4NEwxMi44NTM2IDEyLjE0NjRDMTMuMDQ4OCAxMi4zNDE3IDEzLjA0ODggMTIuNjU4MyAxMi44NTM2IDEyLjg1MzZDMTIuNjU4MyAxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi4xNDY0IDEyLjg1MzZMOS4zMDg4NCAxMC4wMTU5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17c2VsZWN0ZWRWYWx1ZSA/PyBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LnNldEZpbHRlclZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaC0xMCBib3JkZXItMCBmb2N1cy12aXNpYmxlOnJpbmctMCByaW5nLTAgcm91bmRlZC1tZCBiZy10cmFuc3BhcmVudCBweS0zIHRleHQtc20gb3V0bGluZS1ub25lIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBzaGFkb3ctbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC04IGJvcmRlci1kYXNoZWQgcHgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbHRlclggc2l6ZT17MTZ9IGNsYXNzTmFtZT1cIm1yLTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgIDwvUG9wb3Zlcj5cbiAgICApO1xufVxuIiwgImltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jaGVja2JveFwiO1xuaW1wb3J0IHsgRG90c1ZlcnRpY2FsSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7XG4gICAgRHJvcGRvd25NZW51LFxuICAgIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gICAgRHJvcGRvd25NZW51SXRlbSxcbiAgICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gICAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIkAvdWkvZHJvcGRvd24tbWVudVwiO1xuXG5pbXBvcnQgeyBCYXNlUmVjb3JkLCBIdHRwRXJyb3IgfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBVc2VUYWJsZVJldHVyblR5cGUgfSBmcm9tIFwiQHJlZmluZWRldi9yZWFjdC10YWJsZVwiO1xuXG5pbXBvcnQgeyBGQywgZm9yd2FyZFJlZiwgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBDaGVja0FsbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveD4gJlxuICAgIFByb3BzV2l0aENoaWxkcmVuPHtcbiAgICAgICAgdGFibGU6IFVzZVRhYmxlUmV0dXJuVHlwZTxCYXNlUmVjb3JkLCBIdHRwRXJyb3I+O1xuICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gICAgICAgIH1bXTtcbiAgICB9PjtcblxuZXhwb3J0IGNvbnN0IENoZWNrQWxsOiBGQzxDaGVja0FsbFByb3BzPiA9IGZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3g+LFxuICAgIENoZWNrQWxsUHJvcHNcbj4oKHsgdGFibGUsIGNoaWxkcmVuLCBvcHRpb25zIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgdGFibGUuZ2V0SXNTb21lUm93c1NlbGVjdGVkKClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGFibGUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnRvZ2dsZUFsbFBhZ2VSb3dzU2VsZWN0ZWQoISF2YWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidHJhbnNsYXRlLXktWzJweF1cIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgYWxsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB7Y2hpbGRyZW4gfHxcbiAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheShvcHRpb25zKSAmJiBvcHRpb25zLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5nZXRJc1NvbWVSb3dzU2VsZWN0ZWQoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17XCJpY29uXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e1wiZ2hvc3RcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtMCB3LTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvdHNWZXJ0aWNhbEljb24gY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUxhYmVsPkJ1bGsgQWN0aW9uczwvRHJvcGRvd25NZW51TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVNlcGFyYXRvciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHshY2hpbGRyZW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMubWFwKChvcHRpb24sIGtleSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17b3B0aW9uLm9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgPC8+XG4gICAgKTtcbn0pO1xuXG5DaGVja0FsbC5kaXNwbGF5TmFtZSA9IFwiQ2hlY2tBbGxcIjtcbiIsICJpbXBvcnQge1xuICAgIENoZXZyb25MZWZ0SWNvbixcbiAgICBDaGV2cm9uUmlnaHRJY29uLFxuICAgIERvdWJsZUFycm93TGVmdEljb24sXG4gICAgRG91YmxlQXJyb3dSaWdodEljb24sXG59IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IFVzZVRhYmxlUmV0dXJuVHlwZSBhcyBUYWJsZSB9IGZyb20gXCJAcmVmaW5lZGV2L3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IEJhc2VSZWNvcmQgfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQge1xuICAgIFNlbGVjdCxcbiAgICBTZWxlY3RDb250ZW50LFxuICAgIFNlbGVjdEl0ZW0sXG4gICAgU2VsZWN0VHJpZ2dlcixcbiAgICBTZWxlY3RWYWx1ZSxcbn0gZnJvbSBcIkAvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCBSZWFjdCwgeyBGQyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbnRlcmZhY2UgRGF0YVRhYmxlUGFnaW5hdGlvblByb3BzPFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQ+IHtcbiAgICB0YWJsZTogVGFibGU8VERhdGE+O1xufVxuXG5leHBvcnQgY29uc3QgUGFnaW5hdGlvbiA9IDxURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBCYXNlUmVjb3JkPih7XG4gICAgdGFibGUsXG59OiBEYXRhVGFibGVQYWdpbmF0aW9uUHJvcHM8VERhdGE+KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGdhcC15LTQgc20tZ2FwLXktMCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgIHt0YWJsZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWwoKS5yb3dzLmxlbmd0aH0gb2Z7XCIgXCJ9XG4gICAgICAgICAgICAgICAge3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKS5yb3dzLmxlbmd0aH0gcm93KHMpIHNlbGVjdGVkLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggcmVsYXRpdmUgZmxleC1jb2wtcmV2ZXJzZSBnYXAteS00IHNtOmdhcC15LTAgc206ZmxleC1yb3cgaXRlbXMtY2VudGVyIHNwYWNlLXgtNiBsZzpzcGFjZS14LThcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+Um93cyBwZXIgcGFnZTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Ake3RhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbi5wYWdlU2l6ZX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0UGFnZVNpemUoTnVtYmVyKHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJoLTggdy1bNzBweF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0VmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uLnBhZ2VTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1sxMCwgMjAsIDMwLCA0MCwgNTBdLm1hcCgocGFnZVNpemUpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17cGFnZVNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YCR7cGFnZVNpemV9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhZ2VTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCB3LWZpdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICBQYWdlIHt0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZUluZGV4ICsgMX0gb2Z7XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgIHt0YWJsZS5nZXRQYWdlQ291bnQoKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRkZW4gaC04IHctOCBwLTAgbGc6ZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+R28gdG8gZmlyc3QgcGFnZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3VibGVBcnJvd0xlZnRJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC04IHctOCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+R28gdG8gcHJldmlvdXMgcGFnZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdEljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTggdy04IHAtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5uZXh0UGFnZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+R28gdG8gbmV4dCBwYWdlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25SaWdodEljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRkZW4gaC04IHctOCBwLTAgbGc6ZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleCh0YWJsZS5nZXRQYWdlQ291bnQoKSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5HbyB0byBsYXN0IHBhZ2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RG91YmxlQXJyb3dSaWdodEljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5QYWdpbmF0aW9uLmRpc3BsYXlOYW1lID0gXCJQYWdpbmF0aW9uXCI7XG4iLCAiaW1wb3J0IHsgQ2FyZXREb3duSWNvbiwgQ2FyZXRVcEljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlRmlsdGVyUHJvcHMgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEJhc2VSZWNvcmQgfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5cbmV4cG9ydCBjb25zdCBTb3J0QWN0aW9uID0gPFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQ+KHtcbiAgY29sdW1uLFxufTogUGljazxUYWJsZUZpbHRlclByb3BzPFREYXRhPiwgXCJjb2x1bW5cIj4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIGNvbHVtbj8udG9nZ2xlU29ydGluZyhjb2x1bW4/LmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIpO1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIDxDYXJldFVwSWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcIi1tYi0xLjUgdy01IGgtNVwiLFxuICAgICAgICAgICAgY29sdW1uPy5nZXRJc1NvcnRlZCgpID09PSBcImFzY1wiID8gXCJ0ZXh0LWZvcmVncm91bmRcIiA6IFwidGV4dC1pbnB1dFwiXG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgICAgPENhcmV0RG93bkljb25cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCItbXQtMS41IHctNSBoLTVcIixcbiAgICAgICAgICAgIGNvbHVtbj8uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJkZXNjXCIgPyBcInRleHQtZm9yZWdyb3VuZFwiIDogXCJ0ZXh0LWlucHV0XCJcbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgIlwidXNlIGNsaWVudFwiO1xuaW1wb3J0IHsgRHJvcGRvd25NZW51VHJpZ2dlciB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgTWl4ZXJIb3Jpem9udGFsSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICAgIERyb3Bkb3duTWVudSxcbiAgICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gICAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG59IGZyb20gXCJAL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IEZDLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmludGVyZmFjZSBEYXRhVGFibGVWaWV3T3B0aW9uc1Byb3BzPFREYXRhPiB7XG4gICAgdGFibGU6IFRhYmxlPFREYXRhPjtcbn1cblxuZXhwb3J0IGNvbnN0IERhdGFUYWJsZVZpZXdPcHRpb25zID0gPFREYXRhLD4oe1xuICAgIHRhYmxlLFxufTogRGF0YVRhYmxlVmlld09wdGlvbnNQcm9wczxURGF0YT4pOiBSZXR1cm5UeXBlPFxuICAgIEZDPERhdGFUYWJsZVZpZXdPcHRpb25zUHJvcHM8VERhdGE+PlxuPiA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGFibGVcbiAgICAgICAgICAgIC5nZXRBbGxDb2x1bW5zKClcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNvbHVtbikgPT5cbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGNvbHVtbi5hY2Nlc3NvckZuICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5nZXRDYW5IaWRlKCksXG4gICAgICAgICAgICApO1xuICAgIH0sIFt0YWJsZV0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLWF1dG8gaGlkZGVuIGgtOCBsZzpmbGV4XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxNaXhlckhvcml6b250YWxJY29uIGNsYXNzTmFtZT1cIm1yLTIgaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFZpZXdcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50IGFsaWduPVwiZW5kXCIgY2xhc3NOYW1lPVwidy1bMTUwcHhdXCI+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUxhYmVsPlRvZ2dsZSBjb2x1bW5zPC9Ecm9wZG93bk1lbnVMYWJlbD5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51U2VwYXJhdG9yIC8+XG4gICAgICAgICAgICAgICAge2NvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDaGVja2JveEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjYXBpdGFsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtjb2x1bW4uZ2V0SXNWaXNpYmxlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi50b2dnbGVWaXNpYmlsaXR5KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29sdW1uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDaGVja2JveEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICk7XG59O1xuXG5EYXRhVGFibGVWaWV3T3B0aW9ucy5kaXNwbGF5TmFtZSA9IFwiRGF0YVRhYmxlVmlld09wdGlvbnNcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IERhdGFUYWJsZVZpZXdPcHRpb25zIH0gZnJvbSBcIi4vdGFibGUtdmlldy1vcHRpb25zLWRyb3Bkb3duXCI7XG5cbmludGVyZmFjZSBEYXRhVGFibGVUb29sYmFyUHJvcHM8VERhdGE+IHtcbiAgdGFibGU6IFRhYmxlPFREYXRhPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFUYWJsZVRvb2xiYXI8VERhdGE+KHtcbiAgdGFibGUsXG59OiBEYXRhVGFibGVUb29sYmFyUHJvcHM8VERhdGE+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPjwvZGl2PlxuICAgICAgPERhdGFUYWJsZVZpZXdPcHRpb25zIHRhYmxlPXt0YWJsZX0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VEZWxldGVIZWxwZXIgfSBmcm9tIFwiQC9ob29rc1wiO1xuaW1wb3J0IHsgRGVsZXRlQ29udGV4dCB9IGZyb20gXCJAL3Byb3ZpZGVyc1wiO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBSb3dBY3Rpb25Qcm9wcyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tIFwiLlwiO1xuXG50eXBlIERlbGV0ZUFjdGlvblByb3BzID0gUm93QWN0aW9uUHJvcHMgJiB7XG4gICAgcm93OiBhbnk7XG4gICAgcmVzb3VyY2U6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIG9uQWZ0ZXJIYW5kbGU/OiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIERlbGV0ZUFjdGlvbih7XG4gICAgcm93LFxuICAgIHJlc291cmNlLFxuICAgIHRpdGxlLFxuICAgIGRpc2FibGVkLFxuICAgIG9uQWZ0ZXJIYW5kbGUsXG4gICAgLi4ucHJvcHNcbn06IERlbGV0ZUFjdGlvblByb3BzKSB7XG4gICAgY29uc3QgeyBjYW4sIHJlYXNvbiB9ID0gdXNlRGVsZXRlSGVscGVyKHJlc291cmNlLCByb3cuaWQpO1xuICAgIGNvbnN0IGRlbGV0ZUNvbnRleHQgPSB1c2VDb250ZXh0KERlbGV0ZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFJvd0FjdGlvblxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW4gfHwgZGlzYWJsZWR9XG4gICAgICAgICAgICB0aXRsZT17IWNhbiA/IHJlYXNvbiA6IHRpdGxlfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBkZWxldGVDb250ZXh0Py51cGRhdGVEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgdG9vZ2xlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvbkFmdGVySGFuZGxlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuRGVsZXRlQWN0aW9uLmRpc3BsYXlOYW1lID0gXCJEZWxldGVBY3Rpb25cIjtcbiJdLAogICJtYXBwaW5ncyI6ICJrb0JBQUEsSUFBQUEsR0FBQSxHQUFBQyxHQUFBRCxHQUFBLGlCQUFBRSxHQUFBLGdCQUFBQyxHQUFBLGFBQUFDLEdBQUEsa0JBQUFDLEdBQUEsaUJBQUFDLEdBQUEsZUFBQUMsR0FBQSxrQkFBQUMsR0FBQSxzQkFBQUMsR0FBQSxpQkFBQUMsR0FBQSxrQkFBQUMsR0FBQSxtQkFBQUMsR0FBQSxlQUFBQyxHQUFBLGFBQUFDLEdBQUEsaUJBQUFDLEdBQUEsVUFBQUMsR0FBQSxTQUFBQyxHQUFBLGlCQUFBQyxHQUFBLFNBQUFDLEVBQUEsZUFBQUMsR0FBQSxhQUFBQyxHQUFBLGVBQUFDLEdBQUEsZUFBQUMsR0FBQSxrQkFBQUMsR0FBQSxlQUFBQyxHQUFBLFdBQUFDLEdBQUEsZUFBQUMsR0FBQSxhQUFBQyxHQUFBLFlBQUFDLEdBQUEsVUFBQUMsR0FBQSx5QkFBQUMsR0FBQSw0QkFBQUMsS0FBQSxlQUFBQyxHQUFBakMsSUNBQSxJQUFBa0MsR0FBcUIsZ0NBQ3JCQyxHQUFrQyxvQ0FDbENDLEdBQXVCLG9CQ0Z2QixJQUFBQyxHQUFzQyxnQkFDdENDLEdBQXdCLDBCQUVqQixTQUFTQyxLQUFNQyxFQUFzQixDQUN4QyxTQUFPLGVBQVEsU0FBS0EsQ0FBTSxDQUFDLENBQy9CLENBRmdCQyxFQUFBRixFQUFBLE1DRmhCLElBQUFHLEdBQTJDLHdCQUMzQ0MsR0FBa0Isb0JBS05DLEdBQUEsNkJBSENDLEdBQWMsR0FBQUMsUUFBTSxXQUM3QixDQUFDLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLE9BRWxCLFFBQUMsa0JBQ0csSUFBS0EsRUFDTCxVQUFXQyxFQUFHLHVCQUF3QkgsQ0FBUyxFQUM5QyxHQUFHQyxFQUNSLENBR1osRUZtRDZCLElBQUFHLEdBQUEs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SixFQUNKLEVBQ0FiLEVBQU0sWUFBWSxFQUFFLE1BQU0sT0FDMUJBLEVBQU0sWUFBWSxFQUFFLEtBQUssSUFBS2MsTUFDMUIsT0FBQ1AsR0FBQSxDQUVHLGFBQ0lPLEVBQUksY0FBYyxHQUFLLFdBRzFCLFNBQUFBLEVBQ0ksZ0JBQWdCLEVBQ2hCLElBQUtqQixNQUNGLE9BQUNlLEdBQUEsQ0FFRyxVQUFVLGNBRVQsMkJBQ0dmLEVBQUssT0FBTyxVQUNQLEtBQ0xBLEVBQUssV0FBVyxDQUNwQixHQVBLQSxFQUFLLEVBUWQsQ0FDSCxHQWxCQWlCLEVBQUksRUFtQmIsQ0FDSCxLQUVELE9BQUNQLEdBQUEsQ0FDRyxtQkFBQ0ssR0FBQSxDQUNHLFFBQVN4QixFQUFRLE9BQ2pCLFVBQVUsbUJBQ2IsdUJBRUQsRUFDSixFQUVSLEdBQ0osRUFDSixLQUNBLE9BQUMyQixHQUFBLENBQVcsTUFBT2YsRUFBTyxHQUM5QixFQUNKLENBRVIsQ0ExS2dCZ0IsRUFBQS9CLEdBQUEsU0E0S2hCLElBQU1nQyxHQUFjRCxFQUloQjNCLEdBRU9BLEVBQU0sU0FORyxlQVNwQkosR0FBTSxPQUFTZ0MsR0FDZmhDLEdBQU0sU0FBV2lDLEdBQ2pCakMsR0FBTSxRQUFVa0MsR0FDaEJsQyxHQUFNLE9BQVNtQyxHQUNmbkMsR0FBTSxXQUFhb0MsR0FDbkJwQyxHQUFNLFdBQWFxQyxHQUNuQnJDLEdBQU0sYUFBZXNDLEdBQ3JCdEMsR0FBTSxPQUFTLENBQ1gsZ0JBQWlCdUMsR0FDakIsU0FBVUMsR0FDVixPQUFRQyxFQUNaLEVBRUF6QyxHQUFNLFlBQWMiLAogICJuYW1lcyI6IFsic3JjX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiQnJlYWRjcnVtYnMiLCAiQ2xvbmVCdXR0b24iLCAiQ29tYm9ib3giLCAiQ29uZmlybURpYWxvZyIsICJDcmVhdGVCdXR0b24iLCAiQ3JlYXRlUGFnZSIsICJEZWZhdWx0TGF5b3V0IiwgIkRlbGV0ZUFjdGlvbk1vZGFsIiwgIkRlbGV0ZUJ1dHRvbiIsICJEZWxldGVDb250ZXh0IiwgIkRlbGV0ZVByb3ZpZGVyIiwgIkVkaXRCdXR0b24iLCAiRWRpdFBhZ2UiLCAiRXhwb3J0QnV0dG9uIiwgIkZpZWxkIiwgIkZvcm0iLCAiSW1wb3J0QnV0dG9uIiwgIkxpbmsiLCAiTGlzdEJ1dHRvbiIsICJMaXN0UGFnZSIsICJNb2RlVG9nZ2xlIiwgIlBhZ2VIZWFkZXIiLCAiUmVmcmVzaEJ1dHRvbiIsICJTYXZlQnV0dG9uIiwgIlNlbGVjdCIsICJTaG93QnV0dG9uIiwgIlNob3dQYWdlIiwgIlNpZGViYXIiLCAiVGFibGUiLCAibm90aWZpY2F0aW9uUHJvdmlkZXIiLCAidXNlTm90aWZpY2F0aW9uUHJvdmlkZXIiLCAiX190b0NvbW1vbkpTIiwgImltcG9ydF9yZWFjdF9zbG90IiwgImltcG9ydF9jbGFzc192YXJpYW5jZV9hdXRob3JpdHkiLCAiUmVhY3QiLCAiaW1wb3J0X2Nsc3giLCAiaW1wb3J0X3RhaWx3aW5kX21lcmdlIiwgImNuIiwgImlucHV0cyIsICJfX25hbWUiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkxvYWRpbmdJY29uIiwgIlJlYWN0IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImJ1dHRvblZhcmlhbnRzIiwgIkJ1dHRvbiIsICJjbGFzc05hbWUiLCAidmFyaWFudCIsICJzaXplIiwgImljb24iLCAibG9hZGluZyIsICJhc0NoaWxkIiwgImNoaWxkcmVuIiwgImRpc2FibGVkIiwgInByb3BzIiwgInJlZiIsICJJY29uIiwgIkxvYWRpbmdJY29uIiwgImNuIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkNsb25lQnV0dG9uIiwgIl9fbmFtZSIsICJyZXNvdXJjZSIsICJyZWNvcmRJdGVtSWQiLCAiaGlkZVRleHQiLCAiYWNjZXNzQ29udHJvbCIsICJtZXRhIiwgIm9uQ2xpY2siLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAidG8iLCAiTGlua0NvbXBvbmVudCIsICJsYWJlbCIsICJkaXNhYmxlZCIsICJoaWRkZW4iLCAidGl0bGUiLCAiZSIsICJCdXR0b24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ3JlYXRlQnV0dG9uIiwgIl9fbmFtZSIsICJyZXNvdXJjZSIsICJoaWRlVGV4dCIsICJhY2Nlc3NDb250cm9sIiwgIm1ldGEiLCAib25DbGljayIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJoaWRkZW4iLCAiZGlzYWJsZWQiLCAibGFiZWwiLCAidGl0bGUiLCAiTGlua0NvbXBvbmVudCIsICJ0byIsICJlIiwgIkJ1dHRvbiIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgIlJlYWN0IiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJpbXBvcnRfcmVhY3Rfc2xvdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQnJlYWRjcnVtYiIsICJwcm9wcyIsICJyZWYiLCAiQnJlYWRjcnVtYkxpc3QiLCAiY2xhc3NOYW1lIiwgImNuIiwgIkJyZWFkY3J1bWJJdGVtIiwgIkJyZWFkY3J1bWJMaW5rIiwgImFzQ2hpbGQiLCAiQnJlYWRjcnVtYlBhZ2UiLCAiQnJlYWRjcnVtYlNlcGFyYXRvciIsICJfX25hbWUiLCAiY2hpbGRyZW4iLCAiQnJlYWRjcnVtYkVsbGlwc2lzIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcmVhY3Rfc2xvdCIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkxpbmsiLCAiY2hpbGRyZW4iLCAiaHJlZiIsICJ0aXRsZSIsICJjbGFzc05hbWUiLCAiYXNDaGlsZCIsICJyZWYiLCAiTGVnYWN5TGluayIsICJyb3V0ZXJUeXBlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkJyZWFkY3J1bWJzIiwgIl9fbmFtZSIsICJzaG93SG9tZSIsICJtZXRhIiwgImJyZWFkY3J1bWJzIiwgImhhc0Rhc2hib2FyZCIsICJyZXNvdXJjZXMiLCAiZGFzaGJvYXJkUmVzb3VyY2UiLCAicm9vdFJvdXRlUmVzb3VyY2UiLCAiQnJlYWRDcnVtYkl0ZW1zIiwgImxhYmVsIiwgImhyZWYiLCAia2V5IiwgIkJyZWFkY3J1bWJJdGVtIiwgIkJyZWFkY3J1bWJMaW5rIiwgIkxpbmsiLCAiQnJlYWRjcnVtYlBhZ2UiLCAiQnJlYWRjcnVtYlNlcGFyYXRvciIsICJCcmVhZGNydW1iIiwgIkJyZWFkY3J1bWJMaXN0IiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJBbGVydERpYWxvZ1ByaW1pdGl2ZSIsICJSZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQWxlcnREaWFsb2ciLCAiQWxlcnREaWFsb2dUcmlnZ2VyIiwgIkFsZXJ0RGlhbG9nUG9ydGFsIiwgIkFsZXJ0RGlhbG9nT3ZlcmxheSIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkFsZXJ0RGlhbG9nQ29udGVudCIsICJBbGVydERpYWxvZ0hlYWRlciIsICJfX25hbWUiLCAiQWxlcnREaWFsb2dGb290ZXIiLCAiQWxlcnREaWFsb2dUaXRsZSIsICJBbGVydERpYWxvZ0Rlc2NyaXB0aW9uIiwgIkFsZXJ0RGlhbG9nQWN0aW9uIiwgInZhcmlhbnQiLCAic2l6ZSIsICJidXR0b25WYXJpYW50cyIsICJBbGVydERpYWxvZ0NhbmNlbCIsICJpbXBvcnRfY2xhc3NfdmFyaWFuY2VfYXV0aG9yaXR5IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJiYWRnZVZhcmlhbnRzIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIl9fbmFtZSIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X3JlYWN0X2RheV9waWNrZXIiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkNhbGVuZGFyIiwgImNsYXNzTmFtZSIsICJjbGFzc05hbWVzIiwgInNob3dPdXRzaWRlRGF5cyIsICJwcm9wcyIsICJjbiIsICJidXR0b25WYXJpYW50cyIsICJfX25hbWUiLCAiUmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkNhcmQiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJDYXJkSGVhZGVyIiwgIkNhcmRUaXRsZSIsICJDYXJkRGVzY3JpcHRpb24iLCAiQ2FyZENvbnRlbnQiLCAiQ2FyZEZvb3RlciIsICJSZWFjdCIsICJDaGVja2JveFByaW1pdGl2ZSIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiUmVhY3QiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9jbWRrIiwgIlJlYWN0IiwgIkRpYWxvZ1ByaW1pdGl2ZSIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkRpYWxvZ1BvcnRhbCIsICJEaWFsb2dPdmVybGF5IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiRGlhbG9nQ29udGVudCIsICJjaGlsZHJlbiIsICJEaWFsb2dQb3J0YWwiLCAiRGlhbG9nSGVhZGVyIiwgIl9fbmFtZSIsICJEaWFsb2dGb290ZXIiLCAiRGlhbG9nVGl0bGUiLCAiRGlhbG9nRGVzY3JpcHRpb24iLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkNvbW1hbmQiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJDb21tYW5kUHJpbWl0aXZlIiwgImNuIiwgIkNvbW1hbmRJbnB1dCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgIkNvbW1hbmRQcmltaXRpdmUiLCAiY24iLCAiQ29tbWFuZExpc3QiLCAiQ29tbWFuZEVtcHR5IiwgIkNvbW1hbmRHcm91cCIsICJDb21tYW5kU2VwYXJhdG9yIiwgIkNvbW1hbmRJdGVtIiwgIkNvbW1hbmRTaG9ydGN1dCIsICJfX25hbWUiLCAiUmVhY3QiLCAiRHJvcGRvd25NZW51UHJpbWl0aXZlIiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkRyb3Bkb3duTWVudVN1YkNvbnRlbnQiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJzaWRlT2Zmc2V0IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiRHJvcGRvd25NZW51UmFkaW9JdGVtIiwgIkRyb3Bkb3duTWVudUxhYmVsIiwgIkRyb3Bkb3duTWVudVNlcGFyYXRvciIsICJEcm9wZG93bk1lbnVTaG9ydGN1dCIsICJfX25hbWUiLCAiUmVhY3QiLCAiaW1wb3J0X3JlYWN0X3Nsb3QiLCAiaW1wb3J0X3JlYWN0X2hvb2tfZm9ybSIsICJSZWFjdCIsICJMYWJlbFByaW1pdGl2ZSIsICJpbXBvcnRfY2xhc3NfdmFyaWFuY2VfYXV0aG9yaXR5IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJsYWJlbFZhcmlhbnRzIiwgIkxhYmVsIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkZvcm0iLCAiRm9ybUZpZWxkQ29udGV4dCIsICJGb3JtRmllbGQiLCAiX19uYW1lIiwgInByb3BzIiwgInVzZUZvcm1GaWVsZCIsICJmaWVsZENvbnRleHQiLCAiaXRlbUNvbnRleHQiLCAiRm9ybUl0ZW1Db250ZXh0IiwgImdldEZpZWxkU3RhdGUiLCAiZm9ybVN0YXRlIiwgImZpZWxkU3RhdGUiLCAiaWQiLCAiRm9ybUl0ZW0iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJjbiIsICJGb3JtTGFiZWwiLCAiZXJyb3IiLCAiZm9ybUl0ZW1JZCIsICJMYWJlbCIsICJGb3JtQ29udHJvbCIsICJmb3JtRGVzY3JpcHRpb25JZCIsICJmb3JtTWVzc2FnZUlkIiwgIkZvcm1EZXNjcmlwdGlvbiIsICJGb3JtTWVzc2FnZSIsICJjaGlsZHJlbiIsICJib2R5IiwgIlJlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiUmVhY3QiLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJQb3BvdmVyQ29udGVudCIsICJjbGFzc05hbWUiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgIlJlc2l6YWJsZVByaW1pdGl2ZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiUmVzaXphYmxlUGFuZWxHcm91cCIsICJfX25hbWUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgImNuIiwgIlJlc2l6YWJsZVBhbmVsIiwgIlJlc2l6YWJsZUhhbmRsZSIsICJ3aXRoSGFuZGxlIiwgIlJlYWN0IiwgIlNjcm9sbEFyZWFQcmltaXRpdmUiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlNjcm9sbEFyZWEiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTY3JvbGxCYXIiLCAib3JpZW50YXRpb24iLCAiUmVhY3QiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgIlNlbGVjdFByaW1pdGl2ZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiU2VsZWN0IiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdFRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTZWxlY3RTY3JvbGxVcEJ1dHRvbiIsICJTZWxlY3RTY3JvbGxEb3duQnV0dG9uIiwgIlNlbGVjdENvbnRlbnQiLCAicG9zaXRpb24iLCAiU2VsZWN0TGFiZWwiLCAiU2VsZWN0SXRlbSIsICJTZWxlY3RTZXBhcmF0b3IiLCAiUmVhY3QiLCAiU2VwYXJhdG9yUHJpbWl0aXZlIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTZXBhcmF0b3IiLCAiY2xhc3NOYW1lIiwgIm9yaWVudGF0aW9uIiwgImRlY29yYXRpdmUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImltcG9ydF9uZXh0X3RoZW1lcyIsICJpbXBvcnRfc29ubmVyIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJUb2FzdGVyIiwgIl9fbmFtZSIsICJwcm9wcyIsICJ0aGVtZSIsICJTb25uZXIiLCAiUmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgIlJlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJUZXh0YXJlYSIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlJlYWN0IiwgIlRvb2x0aXBQcmltaXRpdmUiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImNsYXNzTmFtZSIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJjbiIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkNvbWJvYm94IiwgInByb3BzIiwgInJlZiIsICJvcGVuIiwgInNldE9wZW4iLCAidmFsdWUiLCAiX19uYW1lIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiRm9ybUNvbnRyb2wiLCAiQnV0dG9uIiwgImNuIiwgIm9wdGlvbiIsICJQb3BvdmVyQ29udGVudCIsICJDb21tYW5kIiwgIkNvbW1hbmRJbnB1dCIsICJDb21tYW5kTGlzdCIsICJDb21tYW5kRW1wdHkiLCAiQ29tbWFuZEdyb3VwIiwgIlNjcm9sbEFyZWEiLCAiQ29tbWFuZEl0ZW0iLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkNvbmZpcm1EaWFsb2ciLCAiX19uYW1lIiwgImNoaWxkcmVuIiwgInRpdGxlIiwgImRlc2NyaXB0aW9uIiwgIm9rVGV4dCIsICJjYW5jZWxUZXh0IiwgIm9rQnV0dG9uU2l6ZSIsICJjYW5jZWxCdXR0b25TaXplIiwgIm9rQnV0dG9uVmFyaWFudCIsICJjYW5jZWxCdXR0b25WYXJpYW50IiwgImxvYWRpbmciLCAib2tJY29uU2lkZSIsICJjYW5jZWxJY29uU2lkZSIsICJvbkNvbmZpcm0iLCAib2tJY29uIiwgImNhbmNlbEljb24iLCAib3BlbiIsICJvbk9wZW5DaGFuZ2UiLCAiZGVmYXVsdE9wZW4iLCAiQ2FuY2VsSWNvbiIsICJPa0ljb24iLCAiTG9hZGluZ0ljb24iLCAiQWxlcnREaWFsb2ciLCAiQWxlcnREaWFsb2dUcmlnZ2VyIiwgIkFsZXJ0RGlhbG9nQ29udGVudCIsICJBbGVydERpYWxvZ0hlYWRlciIsICJBbGVydERpYWxvZ1RpdGxlIiwgIkFsZXJ0RGlhbG9nRGVzY3JpcHRpb24iLCAiQWxlcnREaWFsb2dGb290ZXIiLCAiQWxlcnREaWFsb2dDYW5jZWwiLCAiQWxlcnREaWFsb2dBY3Rpb24iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJGaWVsZCIsICJfX25hbWUiLCAicHJvcHMiLCAiRm9ybUZpZWxkIiwgImZpZWxkIiwgIkZvcm1JdGVtIiwgImNuIiwgIkZvcm1MYWJlbCIsICJGb3JtQ29udHJvbCIsICJGb3JtRGVzY3JpcHRpb24iLCAiRm9ybU1lc3NhZ2UiLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJGb3JtIiwgIl9fbmFtZSIsICJmb3JtUHJvcHMiLCAiaXNXYXRjaGFibGUiLCAic2F2ZUJ1dHRvblByb3BzIiwgInByb3BzIiwgIndhdGNoYWJsZSIsICJfcmVzb3VyY2UiLCAiYWN0aW9uIiwgInJvdXRlclR5cGUiLCAiYmFjayIsICJnb0JhY2siLCAib25CYWNrIiwgIm9uU3VibWl0IiwgIl9kYXRhIiwgIkNhcmQiLCAiQ2FyZENvbnRlbnQiLCAiQ2FyZEZvb3RlciIsICJCdXR0b24iLCAiU2F2ZUJ1dHRvbiIsICJpbXBvcnRfbmV4dF90aGVtZXMiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJNb2RlVG9nZ2xlIiwgIl9fbmFtZSIsICJzZXRUaGVtZSIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJCdXR0b24iLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnVJdGVtIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJQYWdlSGVhZGVyIiwgIl9fbmFtZSIsICJleHRyYSIsICJwcm9wcyIsICJjbiIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlNlbGVjdCIsICJwcm9wcyIsICJyZWYiLCAidHJpZ2dlclJlZiIsICJSZWFjdCIsICJGb3JtQ29udHJvbCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAib3B0aW9uIiwgImtleSIsICJTZWxlY3RJdGVtIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdF91c2UiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTaWRlYmFyIiwgIl9fbmFtZSIsICJpc0NvbGxhcHNlZCIsICJtZW51SXRlbXMiLCAicmVzb3VyY2VQYXJhbXMiLCAicGF0aG5hbWUiLCAiY3VycmVudFBhdGhuYW1lIiwgIkdldEljb24iLCAiaXRlbSIsICJpY29uIiwgIlJlYWN0IiwgImkiLCAia2V5IiwgInBhdGhzIiwgImlzQWN0aXZlIiwgInBhdGgiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJMaW5rIiwgImNuIiwgImJ1dHRvblZhcmlhbnRzIiwgIlRvb2x0aXBDb250ZW50IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJEZWxldGVCdXR0b24iLCAiX19uYW1lIiwgInJlc291cmNlIiwgInJlY29yZEl0ZW1JZCIsICJvblN1Y2Nlc3MiLCAibXV0YXRpb25Nb2RlUHJvcCIsICJjb25maXJtVGl0bGUiLCAiY29uZmlybURlc2NyaXB0aW9uIiwgInN1Y2Nlc3NOb3RpZmljYXRpb24iLCAiZXJyb3JOb3RpZmljYXRpb24iLCAiaGlkZVRleHQiLCAiYWNjZXNzQ29udHJvbCIsICJtZXRhIiwgImRhdGFQcm92aWRlck5hbWUiLCAiY29uZmlybU9rVGV4dCIsICJjb25maXJtQ2FuY2VsVGV4dCIsICJpbnZhbGlkYXRlcyIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJ0aXRsZSIsICJsYWJlbCIsICJoaWRkZW4iLCAiZGlzYWJsZWQiLCAibG9hZGluZyIsICJkZWZhdWx0Q29uZmlybVRpdGxlIiwgImRlZmF1bHRDb25maXJtT2tMYWJlbCIsICJkZWZhdWx0Q2FuY2VsTGFiZWwiLCAib25Db25maXJtIiwgIkNvbmZpcm1EaWFsb2ciLCAiQnV0dG9uIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkVkaXRCdXR0b24iLCAiX19uYW1lIiwgInJlc291cmNlIiwgInJlY29yZEl0ZW1JZCIsICJoaWRlVGV4dCIsICJhY2Nlc3NDb250cm9sIiwgIm1ldGEiLCAib25DbGljayIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJoaWRkZW4iLCAiZGlzYWJsZWQiLCAibGFiZWwiLCAidGl0bGUiLCAiTGlua0NvbXBvbmVudCIsICJ0byIsICJlIiwgIkJ1dHRvbiIsICJpbXBvcnRfcmVhY3Rfc2xvdCIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJFeHBvcnRCdXR0b24iLCAiX19uYW1lIiwgImhpZGVUZXh0IiwgInJlc291cmNlIiwgInJlY29yZEl0ZW1JZCIsICJhY2Nlc3NDb250cm9sIiwgImFjY2VzcyIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJsYWJlbCIsICJDb20iLCAiQnV0dG9uIiwgImltcG9ydF9yZWFjdF9zbG90IiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkltcG9ydEJ1dHRvbiIsICJfX25hbWUiLCAiaGlkZVRleHQiLCAicmVzb3VyY2UiLCAib25DaGFuZ2UiLCAiYWNjZXB0IiwgInJlY29yZEl0ZW1JZCIsICJhY2Nlc3NDb250cm9sIiwgImFjY2VzcyIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJsYWJlbCIsICJDb20iLCAib25DbGljayIsICJlbCIsICJlIiwgIkJ1dHRvbiIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJMaXN0QnV0dG9uIiwgIl9fbmFtZSIsICJyZXNvdXJjZU5hbWVGcm9tUHJvcHMiLCAiaGlkZVRleHQiLCAiYWNjZXNzQ29udHJvbCIsICJtZXRhIiwgImNoaWxkcmVuIiwgIm9uQ2xpY2siLCAicHJvcHMiLCAiaGlkZGVuIiwgImRpc2FibGVkIiwgImxhYmVsIiwgInRpdGxlIiwgIkxpbmtDb21wb25lbnQiLCAidG8iLCAiZSIsICJCdXR0b24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiUmVmcmVzaEJ1dHRvbiIsICJfX25hbWUiLCAicmVzb3VyY2UiLCAicmVjb3JkSXRlbUlkIiwgImhpZGVUZXh0IiwgImRhdGFQcm92aWRlck5hbWUiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAib25DbGljayIsICJsYWJlbCIsICJsb2FkaW5nIiwgIkJ1dHRvbiIsICJpbXBvcnRfcmVhY3Rfc2xvdCIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTYXZlQnV0dG9uIiwgIl9fbmFtZSIsICJoaWRlVGV4dCIsICJjaGlsZHJlbiIsICJhY2Nlc3NDb250cm9sIiwgImFjY2VzcyIsICJyZXNvdXJjZSIsICJyZWNvcmRJdGVtSWQiLCAicHJvcHMiLCAibGFiZWwiLCAiQ29tIiwgIkJ1dHRvbiIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTaG93QnV0dG9uIiwgIl9fbmFtZSIsICJyZXNvdXJjZU5hbWVGcm9tUHJvcHMiLCAicmVjb3JkSXRlbUlkIiwgImhpZGVUZXh0IiwgImFjY2Vzc0NvbnRyb2wiLCAibWV0YSIsICJjaGlsZHJlbiIsICJvbkNsaWNrIiwgInByb3BzIiwgInRvIiwgImxhYmVsIiwgInRpdGxlIiwgImhpZGRlbiIsICJkaXNhYmxlZCIsICJMaW5rQ29tcG9uZW50IiwgImUiLCAiQnV0dG9uIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ3JlYXRlUGFnZSIsICJfX25hbWUiLCAidGl0bGUiLCAicmVzb3VyY2VGcm9tUHJvcHMiLCAiYnJlYWRjcnVtYkZyb21Qcm9wcyIsICJleHRyYSIsICJjaGlsZHJlbiIsICJ0cmFuc2xhdGUiLCAiZ2xvYmFsQnJlYWRjcnVtYiIsICJnZXRVc2VyRnJpZW5kbHlOYW1lIiwgInJlc291cmNlIiwgImlkZW50aWZpZXIiLCAiYnJlYWRjcnVtYiIsICJQYWdlSGVhZGVyIiwgIkJyZWFkY3J1bWJzIiwgIkxpc3RCdXR0b24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJFZGl0UGFnZSIsICJfX25hbWUiLCAidGl0bGUiLCAicmVzb3VyY2UiLCAiZXh0cmEiLCAiYnJlYWRjcnVtYkZyb21Qcm9wcyIsICJjaGlsZHJlbiIsICJ0cmFuc2xhdGUiLCAiZ2xvYmFsQnJlYWRjcnVtYiIsICJsaXN0IiwgImdldFVzZXJGcmllbmRseU5hbWUiLCAiX3Jlc291cmNlIiwgImlkZW50aWZpZXIiLCAiYnJlYWRjcnVtYiIsICJQYWdlSGVhZGVyIiwgIkJyZWFkY3J1bWJzIiwgIlNob3dCdXR0b24iLCAiRGVsZXRlQnV0dG9uIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiTGlzdFBhZ2UiLCAiX19uYW1lIiwgInRpdGxlIiwgInJlc291cmNlRnJvbVByb3BzIiwgImJyZWFkY3J1bWJGcm9tUHJvcHMiLCAiY3JlYXRlQnV0dG9uUHJvcHMiLCAiY2xhc3NOYW1lIiwgImlzQ3JlYXRlIiwgImV4dHJhIiwgImNoaWxkcmVuIiwgInRyYW5zbGF0ZSIsICJnbG9iYWxCcmVhZGNydW1iIiwgImdldFVzZXJGcmllbmRseU5hbWUiLCAicmVzb3VyY2UiLCAiaWRlbnRpZmllciIsICJicmVhZGNydW1iIiwgIlBhZ2VIZWFkZXIiLCAiQnJlYWRjcnVtYnMiLCAiQ3JlYXRlQnV0dG9uIiwgImNuIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiUm93IiwgIl9fbmFtZSIsICJ0aXRsZSIsICJjaGlsZHJlbiIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiU2hvd1BhZ2UiLCAiX19uYW1lIiwgInRpdGxlIiwgInJlc291cmNlRnJvbVByb3BzIiwgImJyZWFkY3J1bWJGcm9tUHJvcHMiLCAiaXNFZGl0IiwgImlzRGVsZXRlIiwgImV4dHJhIiwgImNoaWxkcmVuIiwgInRyYW5zbGF0ZSIsICJnbG9iYWxCcmVhZGNydW1iIiwgImdldFVzZXJGcmllbmRseU5hbWUiLCAicmVzb3VyY2UiLCAiaWRlbnRpZmllciIsICJsaXN0IiwgImJyZWFkY3J1bWIiLCAiUGFnZUhlYWRlciIsICJCcmVhZGNydW1icyIsICJFZGl0QnV0dG9uIiwgIkRlbGV0ZUJ1dHRvbiIsICJSb3ciLCAiaW1wb3J0X25leHRfdGhlbWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJUaGVtZVByb3ZpZGVyIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIk5leHRUaGVtZXNQcm92aWRlciIsICJfX25hbWUiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkJhc2VMYXlvdXQiLCAiX19uYW1lIiwgImF0dHJpYnV0ZSIsICJkZWZhdWx0VGhlbWUiLCAiZW5hYmxlU3lzdGVtIiwgImRpc2FibGVUcmFuc2l0aW9uT25DaGFuZ2UiLCAiZW5hYmxlQ29sb3JTY2hlbWUiLCAiZm9yY2VkVGhlbWUiLCAibm9uY2UiLCAic3RvcmFnZUtleSIsICJ0aGVtZXMiLCAidmFsdWUiLCAiY2hpbGRyZW4iLCAiVGhlbWVQcm92aWRlciIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9hc3RlciIsICJiYXNlX2RlZmF1bHQiLCAiUmVhY3QiLCAicXVlcmllc0RpZENoYW5nZSIsICJwcmV2UXVlcmllcyIsICJuZXh0UXVlcmllcyIsICJuZXh0UXVlcmllc0FyciIsICJwcmV2UXVlcmllc0FyciIsICJxIiwgImkiLCAicHJldktleXMiLCAibiIsICJfX25hbWUiLCAiX3JlZiIsICJjdXJyIiwgImtleSIsICJpbml0IiwgInF1ZXJpZXMiLCAicXVlcnlLZXlzIiwgInN0YXRlIiwgIm5hbWUiLCAibXFsIiwgInJlZHVjZXIiLCAiYWN0aW9uIiwgIl9yZWYyIiwgInByZXYiLCAidXNlTWVkaWFRdWVyaWVzIiwgInF1ZXJ5TWFwIiwgImRpc3BhdGNoIiwgIl9yZWYzIiwgIl9yZWY0IiwgIm1xIiwgImNhbGxiYWNrIiwgImNhbGxiYWNrcyIsICJfcmVmNSIsICJtYXRjaGVzIiwgIm1hdGNoVmFsdWVzIiwgInVzZU1lZGlhUXVlcnkiLCAicXVlcnkiLCAiZ2V0T2JqIiwgImNhY2hlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiRGVmYXVsdExheW91dCIsICJfX25hbWUiLCAiY2hpbGRyZW4iLCAiZGVmYXVsdExheW91dCIsICJkZWZhdWx0Q29sbGFwc2VkIiwgIm5hdkNvbGxhcHNlZFNpemUiLCAibmF2YmFyIiwgImZvb3RlciIsICJsb2dvIiwgImF0dHJpYnV0ZSIsICJkZWZhdWx0VGhlbWUiLCAiZW5hYmxlU3lzdGVtIiwgImRpc2FibGVUcmFuc2l0aW9uT25DaGFuZ2UiLCAiZW5hYmxlQ29sb3JTY2hlbWUiLCAiZm9yY2VkVGhlbWUiLCAibm9uY2UiLCAic3RvcmFnZUtleSIsICJ0aGVtZXMiLCAidmFsdWUiLCAicmVzb3VyY2VzIiwgImZpcnN0RGFzaGJvYXJkIiwgInhzIiwgInVzZU1lZGlhUXVlcnkiLCAic20iLCAibWQiLCAibGciLCAiaXNDb2xsYXBzZWQiLCAic2V0SXNDb2xsYXBzZWQiLCAibGF5b3V0IiwgIlNpZGViYXJTaXplcyIsICJoYXNDb2xsYXBzZWQiLCAiTG9nbyIsICJjb21wb25lbnQiLCAiYmFzZV9kZWZhdWx0IiwgIlJlc2l6YWJsZVBhbmVsR3JvdXAiLCAic2l6ZXMiLCAiUmVzaXphYmxlUGFuZWwiLCAiY29sbGFwc2VkIiwgImNuIiwgIkxpbmsiLCAiU2lkZWJhciIsICJSZXNpemFibGVIYW5kbGUiLCAiTW9kZVRvZ2dsZSIsICJpbXBvcnRfc29ubmVyIiwgIm5vdGlmaWNhdGlvblByb3ZpZGVyIiwgIl9fbmFtZSIsICJrZXkiLCAibWVzc2FnZSIsICJkZXNjcmlwdGlvbiIsICJ0eXBlIiwgInVzZU5vdGlmaWNhdGlvblByb3ZpZGVyIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdCIsICJ1c2VHZXRFZGl0VXJsIiwgIl9fbmFtZSIsICJyZXNvdXJjZSIsICJyZWNvcmRJdGVtSWQiLCAibWV0YSIsICJhY2Nlc3NDb250cm9sQ29udGV4dCIsICJhY2Nlc3NDb250cm9sRW5hYmxlZCIsICJoaWRlSWZVbmF1dGhvcml6ZWQiLCAiZ2VuZXJhdGVFZGl0VXJsIiwgImlkIiwgIl9yZXNvdXJjZSIsICJkYXRhIiwgInRyYW5zbGF0ZSIsICJyZWFzb24iLCAiZWRpdFVybCIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfcmVhY3QiLCAidXNlR2V0U2hvd1VybCIsICJfX25hbWUiLCAicmVzb3VyY2UiLCAicmVjb3JkSXRlbUlkIiwgIm1ldGEiLCAiYWNjZXNzQ29udHJvbENvbnRleHQiLCAiYWNjZXNzQ29udHJvbEVuYWJsZWQiLCAiaGlkZUlmVW5hdXRob3JpemVkIiwgImdlbmVyYXRlU2hvd1VybCIsICJpZCIsICJfcmVzb3VyY2UiLCAiZGF0YSIsICJ0cmFuc2xhdGUiLCAicmVhc29uIiwgInNob3dVcmwiLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgInVzZURlbGV0ZUhlbHBlciIsICJfX25hbWUiLCAicmVzb3VyY2UiLCAicmVjb3JkSXRlbUlkIiwgIm1ldGEiLCAiYWNjZXNzQ29udHJvbENvbnRleHQiLCAiYWNjZXNzQ29udHJvbEVuYWJsZWQiLCAiaGlkZUlmVW5hdXRob3JpemVkIiwgInRyYW5zbGF0ZSIsICJpZCIsICJfcmVzb3VyY2UiLCAiaWRlbnRpZmllciIsICJtdXRhdGlvbk1vZGUiLCAibXV0YXRlIiwgImlzTG9hZGluZyIsICJkYXRhIiwgInJlYXNvbiIsICJzZXRXYXJuV2hlbiIsICJvbkRlbGV0ZU11dGF0ZSIsICJvcHRpb25zIiwgImltcG9ydF9jb3JlIiwgInVzZU9uQmFjayIsICJfX25hbWUiLCAicm91dGVyVHlwZSIsICJiYWNrIiwgImdvQmFjayIsICJhY3Rpb24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJEZWxldGVBY3Rpb25Nb2RhbCIsICJwcm9wcyIsICJiYWNrIiwgInVzZU9uQmFjayIsICJjYW4iLCAiaXNMb2FkaW5nIiwgIm11dGF0ZSIsICJ1c2VEZWxldGVIZWxwZXIiLCAidHJhbnNsYXRlIiwgIm9uRGVsZXRlIiwgImlzUmVkaXJlY3RCYWNrIiwgIm9uQWZ0ZXJIYW5kbGUiLCAiQ29uZmlybURpYWxvZyIsICJfX25hbWUiLCAiRGVsZXRlQ29udGV4dCIsICJEZWxldGVQcm92aWRlciIsICJjaGlsZHJlbiIsICJkYXRhIiwgInNldERhdGEiLCAidXBkYXRlRGF0YSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkxvYWRlciIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImxvYWRlcl9kZWZhdWx0IiwgImltcG9ydF9yZWFjdF90YWJsZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJSb3dBY3Rpb24iLCAiX19uYW1lIiwgInByb3BzIiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiTGluayIsICJSb3dBY3Rpb25zIiwgImNoaWxkcmVuIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJFZGl0QWN0aW9uIiwgInJvdyIsICJyZXNvdXJjZSIsICJ0aXRsZSIsICJkaXNhYmxlZCIsICJwcm9wcyIsICJlZGl0IiwgInVzZUdldEVkaXRVcmwiLCAiUm93QWN0aW9uIiwgIl9fbmFtZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiU2hvd0FjdGlvbiIsICJyb3ciLCAicmVzb3VyY2UiLCAidGl0bGUiLCAiZGlzYWJsZWQiLCAicHJvcHMiLCAiZGV0YWlsIiwgInVzZUdldFNob3dVcmwiLCAiUm93QWN0aW9uIiwgIl9fbmFtZSIsICJpbXBvcnRfZGF0ZV9mbnMiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRhYmxlRmlsdGVyRGF0ZVJhbmdlUGlja2VyRmlsdGVyIiwgImNvbHVtbiIsICJ0aXRsZSIsICJudW1iZXJPZk1vbnRocyIsICJhbGlnbiIsICJkYXRlIiwgInNldERhdGUiLCAic2VsZWN0ZWRWYWx1ZXMiLCAiZGF0ZXMiLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJCdXR0b24iLCAiY24iLCAiU2VwYXJhdG9yIiwgIkJhZGdlIiwgImUiLCAiUG9wb3ZlckNvbnRlbnQiLCAiQ2FsZW5kYXIiLCAiX19uYW1lIiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJUYWJsZUZpbHRlckRyb3Bkb3duIiwgImNvbHVtbiIsICJ0aXRsZSIsICJvcHRpb25zIiwgImFsaWduIiwgImZhY2V0cyIsICJzZWxlY3RlZFZhbHVlcyIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIkJ1dHRvbiIsICJjbiIsICJTZXBhcmF0b3IiLCAiQmFkZ2UiLCAib3B0aW9uIiwgImUiLCAiUG9wb3ZlckNvbnRlbnQiLCAiQ29tbWFuZCIsICJDb21tYW5kSW5wdXQiLCAiQ29tbWFuZExpc3QiLCAiQ29tbWFuZEVtcHR5IiwgIkNvbW1hbmRHcm91cCIsICJpc1NlbGVjdGVkIiwgIkNvbW1hbmRJdGVtIiwgImZpbHRlclZhbHVlcyIsICJDb21tYW5kU2VwYXJhdG9yIiwgIl9fbmFtZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJUYWJsZUZpbHRlclNlYXJjaENvbHVtbiIsICJjb2x1bW4iLCAidGl0bGUiLCAiYWxpZ24iLCAic2VsZWN0ZWRWYWx1ZSIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIkJ1dHRvbiIsICJlIiwgImNuIiwgIlBvcG92ZXJDb250ZW50IiwgIklucHV0IiwgIlNlcGFyYXRvciIsICJfX25hbWUiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ2hlY2tBbGwiLCAidGFibGUiLCAiY2hpbGRyZW4iLCAib3B0aW9ucyIsICJyZWYiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQnV0dG9uIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIm9wdGlvbiIsICJrZXkiLCAiRHJvcGRvd25NZW51SXRlbSIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlBhZ2luYXRpb24iLCAiX19uYW1lIiwgInRhYmxlIiwgIlNlbGVjdCIsICJ2YWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAicGFnZVNpemUiLCAiU2VsZWN0SXRlbSIsICJCdXR0b24iLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTb3J0QWN0aW9uIiwgIl9fbmFtZSIsICJjb2x1bW4iLCAiY24iLCAiaW1wb3J0X3JlYWN0X2Ryb3Bkb3duX21lbnUiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiRGF0YVRhYmxlVmlld09wdGlvbnMiLCAiX19uYW1lIiwgInRhYmxlIiwgImNvbHVtbnMiLCAiY29sdW1uIiwgIkRyb3Bkb3duTWVudSIsICJCdXR0b24iLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnVMYWJlbCIsICJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCAiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIiwgInZhbHVlIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJEYXRhVGFibGVUb29sYmFyIiwgInRhYmxlIiwgIkRhdGFUYWJsZVZpZXdPcHRpb25zIiwgIl9fbmFtZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkRlbGV0ZUFjdGlvbiIsICJyb3ciLCAicmVzb3VyY2UiLCAidGl0bGUiLCAiZGlzYWJsZWQiLCAib25BZnRlckhhbmRsZSIsICJwcm9wcyIsICJjYW4iLCAicmVhc29uIiwgInVzZURlbGV0ZUhlbHBlciIsICJkZWxldGVDb250ZXh0IiwgIkRlbGV0ZUNvbnRleHQiLCAiUm93QWN0aW9uIiwgIl9fbmFtZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiVGFibGUiLCAiY2hpbGRyZW4iLCAic2hvd0hlYWRlciIsICJjb2x1bW5zIiwgInByb3BzIiwgIm1hcENvbHVtbiIsICJpZCIsICJhY2Nlc3NvcktleSIsICJoZWFkZXIiLCAiZW5hYmxlU29ydGluZyIsICJlbmFibGVIaWRpbmciLCAiZmlsdGVyIiwgImNlbGwiLCAiY29sdW1uIiwgInZhbHVlIiwgInRhYmxlIiwgInRhYmxlT3B0aW9ucyIsICJpc0ZpbHRlcmFibGUiLCAiRGVsZXRlUHJvdmlkZXIiLCAiRGF0YVRhYmxlVG9vbGJhciIsICJUYWJsZUhlYWRlciIsICJoZWFkZXJHcm91cCIsICJUYWJsZVJvdyIsICJjb2x1bW5EZWYiLCAiVGFibGVIZWFkIiwgIlNvcnRBY3Rpb24iLCAiVGFibGVCb2R5IiwgIlRhYmxlQ2VsbCIsICJsb2FkZXJfZGVmYXVsdCIsICJyb3ciLCAiUGFnaW5hdGlvbiIsICJfX25hbWUiLCAiVGFibGVDb2x1bW4iLCAiQ2hlY2tBbGwiLCAiUm93QWN0aW9ucyIsICJSb3dBY3Rpb24iLCAiRWRpdEFjdGlvbiIsICJTaG93QWN0aW9uIiwgIkRlbGV0ZUFjdGlvbiIsICJUYWJsZUZpbHRlckRhdGVSYW5nZVBpY2tlckZpbHRlciIsICJUYWJsZUZpbHRlckRyb3Bkb3duIiwgIlRhYmxlRmlsdGVyU2VhcmNoQ29sdW1uIl0KfQo= \ No newline at end of file +"use strict";var e,r=Object.create,a=Object.defineProperty,t=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,n=(e,r)=>a(e,"name",{value:r,configurable:!0}),o=(e,r,i,n)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let o of s(r))!l.call(e,o)&&o!==i&&a(e,o,{get:()=>r[o],enumerable:!(n=t(r,o))||n.enumerable});return e},d=(e,t,s)=>(s=null!=e?r(i(e)):{},o(!t&&e&&e.__esModule?s:a(s,"default",{value:e,enumerable:!0}),e)),c={};((e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})})(c,{BaseLayout:()=>ws,Breadcrumbs:()=>ee,CloneButton:()=>k,Combobox:()=>Xa,ConfirmDialog:()=>et,CreateButton:()=>D,CreatePage:()=>ss,DefaultLayout:()=>Ls,DeleteActionModal:()=>ei,DeleteButton:()=>wt,DeleteContext:()=>ri,DeleteProvider:()=>ai,EditButton:()=>kt,EditPage:()=>os,ExportButton:()=>Tt,Field:()=>tt,Form:()=>nt,ImportButton:()=>At,Link:()=>J,ListButton:()=>Vt,ListPage:()=>ms,ModeToggle:()=>ut,PageHeader:()=>xt,RefreshButton:()=>Ut,SaveButton:()=>Xt,Select:()=>ht,ShowButton:()=>es,ShowPage:()=>js,Sidebar:()=>Nt,Table:()=>Ji,notificationProvider:()=>Ms,useNotificationProvider:()=>Os}),module.exports=(e=c,o(a({},"__esModule",{value:!0}),e));var u=require("@radix-ui/react-slot"),m=require("class-variance-authority"),x=d(require("react")),f=require("clsx"),p=require("tailwind-merge");function h(...e){return(0,p.twMerge)((0,f.clsx)(e))}n(h,"cn");var g=require("lucide-react"),j=d(require("react")),b=require("react/jsx-runtime"),v=j.default.forwardRef((({className:e,...r},a)=>(0,b.jsx)(g.RefreshCwIcon,{ref:a,className:h("h-4 w-4 animate-spin",e),...r}))),N=require("react/jsx-runtime"),y=(0,m.cva)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),w=x.forwardRef((({className:e,variant:r,size:a,icon:t=null,loading:s=!1,asChild:i=!1,children:l,disabled:n,...o},d)=>{n=n||s;let c=x.useMemo((()=>x.isValidElement(t)?t:s?(0,N.jsx)(v,{className:"mr-2"}):null),[t,s]);return(0,N.jsx)(i?u.Slot:"button",{className:h(y({variant:r,size:a,className:e})),ref:d,disabled:n,...o,children:"icon"===a?s?(0,N.jsx)(v,{}):l:(0,N.jsxs)(N.Fragment,{children:[c,l]})})}));w.displayName="Button";var C=require("@refinedev/core"),q=require("lucide-react"),S=require("react/jsx-runtime"),k=n((({resource:e,recordItemId:r,hideText:a=!1,accessControl:t,meta:s,onClick:i,children:l,...n})=>{let{to:o,LinkComponent:d,label:c,disabled:u,hidden:m,title:x}=(0,C.useCloneButton)({id:r,resource:e,accessControl:t,meta:s});return m?null:(0,S.jsx)(d,{to:o,replace:!1,onClick:e=>{u?e.preventDefault():i&&(e.preventDefault(),i(e))},children:(0,S.jsx)(w,{disabled:u,title:x,icon:(0,S.jsx)(q.CopyPlus,{className:"mr-2 w-4 h-4"}),...n,children:!a&&(l??c)})})}),"CloneButton");k.displayName="CloneButton";var R=require("@refinedev/core"),I=require("lucide-react"),z=require("react/jsx-runtime"),D=n((({resource:e,hideText:r=!1,accessControl:a,meta:t,onClick:s,children:i,...l})=>{let{hidden:n,disabled:o,label:d,title:c,LinkComponent:u,to:m}=(0,R.useCreateButton)({resource:e,accessControl:a,meta:t});return n?null:(0,z.jsx)(u,{to:m,replace:!1,onClick:e=>{o?e.preventDefault():s&&(e.preventDefault(),s(e))},children:(0,z.jsx)(w,{disabled:o,title:c,icon:(0,z.jsx)(I.SquarePlusIcon,{className:"mr-2 w-4 h-4"}),...l,children:!r&&(i??d)})})}),"CreateButton");D.displayName="CreateButton";var T=require("@refinedev/core"),B=require("lucide-react"),F=d(require("react")),P=require("@radix-ui/react-icons"),L=require("@radix-ui/react-slot"),A=require("react/jsx-runtime"),M=F.forwardRef((({...e},r)=>(0,A.jsx)("nav",{ref:r,"aria-label":"breadcrumb",...e})));M.displayName="Breadcrumb";var O=F.forwardRef((({className:e,...r},a)=>(0,A.jsx)("ol",{ref:a,className:h("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",e),...r})));O.displayName="BreadcrumbList";var E=F.forwardRef((({className:e,...r},a)=>(0,A.jsx)("li",{ref:a,className:h("inline-flex items-center gap-1.5",e),...r})));E.displayName="BreadcrumbItem";var V=F.forwardRef((({asChild:e,className:r,...a},t)=>(0,A.jsx)(e?L.Slot:"a",{ref:t,className:h("transition-colors hover:text-foreground",r),...a})));V.displayName="BreadcrumbLink";var _=F.forwardRef((({className:e,...r},a)=>(0,A.jsx)("span",{ref:a,role:"link","aria-disabled":"true","aria-current":"page",className:h("font-normal text-foreground",e),...r})));_.displayName="BreadcrumbPage";var H=n((({children:e,className:r,...a})=>(0,A.jsx)("li",{role:"presentation","aria-hidden":"true",className:h("[&>svg]:size-3.5",r),...a,children:e??(0,A.jsx)(P.ChevronRightIcon,{})})),"BreadcrumbSeparator");H.displayName="BreadcrumbSeparator";var $=n((({className:e,...r})=>(0,A.jsxs)("span",{role:"presentation","aria-hidden":"true",className:h("flex h-9 w-9 items-center justify-center",e),...r,children:[(0,A.jsx)(P.DotsHorizontalIcon,{className:"h-4 w-4"}),(0,A.jsx)("span",{className:"sr-only",children:"More"})]})),"BreadcrumbEllipsis");$.displayName="BreadcrumbElipssis";var U=require("@refinedev/core"),Q=require("react"),G=require("@radix-ui/react-slot"),W=require("@refinedev/core"),K=require("react"),X=require("react/jsx-runtime"),J=(0,K.forwardRef)((({children:e,href:r,title:a,className:t,asChild:s},i)=>{let{Link:l}=(0,W.useRouterContext)(),n=(0,W.useRouterType)(),o=(0,W.useLink)();return(0,X.jsx)(s?G.Slot:"legacy"===n?l:o,{ref:i,to:r,className:t,title:a,children:e})}));J.displayName="Link";var Y=require("lucide-react"),Z=require("react/jsx-runtime"),ee=n((({showHome:e=!0,meta:r})=>{let{breadcrumbs:a}=(0,U.useBreadcrumb)({meta:r}),{hasDashboard:t}=(0,U.useRefineContext)(),{resources:s}=(0,U.useResource)(),i=s[0],l=(0,U.matchResourceFromRoute)("/",s),n=a.map((({label:e,href:r},t)=>(0,Z.jsxs)(Q.Fragment,{children:[(0,Z.jsx)(E,{children:r?(0,Z.jsx)(V,{asChild:!0,href:"#x",children:(0,Z.jsx)(J,{href:r,children:e})}):(0,Z.jsx)(_,{children:e})}),t(0,se.jsx)(ae.Overlay,{className:h("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...r,ref:a})));oe.displayName=ae.Overlay.displayName;var de=te.forwardRef((({className:e,...r},a)=>(0,se.jsxs)(ne,{children:[(0,se.jsx)(oe,{}),(0,se.jsx)(ae.Content,{ref:a,className:h("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r})]})));de.displayName=ae.Content.displayName;var ce=n((({className:e,...r})=>(0,se.jsx)("div",{className:h("flex flex-col space-y-2 text-center sm:text-left",e),...r})),"AlertDialogHeader");ce.displayName="AlertDialogHeader";var ue=n((({className:e,...r})=>(0,se.jsx)("div",{className:h("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...r})),"AlertDialogFooter");ue.displayName="AlertDialogFooter";var me=te.forwardRef((({className:e,...r},a)=>(0,se.jsx)(ae.Title,{ref:a,className:h("text-lg font-semibold",e),...r})));me.displayName=ae.Title.displayName;var xe=te.forwardRef((({className:e,...r},a)=>(0,se.jsx)(ae.Description,{ref:a,className:h("text-sm text-muted-foreground",e),...r})));xe.displayName=ae.Description.displayName;var fe=te.forwardRef((({className:e,variant:r="default",size:a="default",...t},s)=>(0,se.jsx)(ae.Action,{ref:s,className:h(y({variant:r,size:a}),e),...t})));fe.displayName=ae.Action.displayName;var pe=te.forwardRef((({className:e,variant:r="outline",size:a="default",...t},s)=>(0,se.jsx)(ae.Cancel,{ref:s,className:h(y({variant:r,size:a}),"mt-2 sm:mt-0",e),...t})));pe.displayName=ae.Cancel.displayName;var he=require("class-variance-authority"),ge=require("react/jsx-runtime"),je=(0,he.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function be({className:e,variant:r,...a}){return(0,ge.jsx)("div",{className:h(je({variant:r}),e),...a})}n(be,"Badge");var ve=require("@radix-ui/react-icons"),Ne=require("react-day-picker"),ye=require("react/jsx-runtime");function we({className:e,classNames:r,showOutsideDays:a=!0,...t}){return(0,ye.jsx)(Ne.DayPicker,{showOutsideDays:a,className:h("p-3",e),classNames:{months:"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",month:"space-y-4",caption:"flex justify-center pt-1 relative items-center",caption_label:"text-sm font-medium",nav:"space-x-1 flex items-center",nav_button:h(y({variant:"outline"}),"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-y-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:h("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md","range"===t.mode?"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md":"[&:has([aria-selected])]:rounded-md"),day:h(y({variant:"ghost"}),"h-8 w-8 p-0 font-normal aria-selected:opacity-100"),day_range_start:"day-range-start",day_range_end:"day-range-end",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...r},components:{IconLeft:n((()=>(0,ye.jsx)(ve.ChevronLeftIcon,{className:"h-4 w-4"})),"IconLeft"),IconRight:n((()=>(0,ye.jsx)(ve.ChevronRightIcon,{className:"h-4 w-4"})),"IconRight")},...t})}n(we,"Calendar"),we.displayName="Calendar";var Ce=d(require("react")),qe=require("react/jsx-runtime"),Se=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("rounded-xl border bg-card text-card-foreground shadow",e),...r})));Se.displayName="Card";var ke=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("flex flex-col space-y-1.5 p-6",e),...r})));ke.displayName="CardHeader";var Re=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("h3",{ref:a,className:h("font-semibold leading-none tracking-tight",e),...r})));Re.displayName="CardTitle";var Ie=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("p",{ref:a,className:h("text-sm text-muted-foreground",e),...r})));Ie.displayName="CardDescription";var ze=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("p-6 pt-0",e),...r})));ze.displayName="CardContent";var De=Ce.forwardRef((({className:e,...r},a)=>(0,qe.jsx)("div",{ref:a,className:h("flex items-center p-6 pt-0",e),...r})));De.displayName="CardFooter";var Te=d(require("react")),Be=d(require("@radix-ui/react-checkbox")),Fe=require("@radix-ui/react-icons"),Pe=require("react/jsx-runtime"),Le=Te.forwardRef((({className:e,...r},a)=>(0,Pe.jsx)(Be.Root,{ref:a,className:h("peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...r,children:(0,Pe.jsx)(Be.Indicator,{className:h("flex items-center justify-center text-current"),children:(0,Pe.jsx)(Fe.CheckIcon,{className:"h-4 w-4"})})})));Le.displayName=Be.Root.displayName;var Ae=d(require("react")),Me=require("@radix-ui/react-icons"),Oe=require("cmdk"),Ee=d(require("react")),Ve=d(require("@radix-ui/react-dialog")),_e=require("@radix-ui/react-icons"),He=require("react/jsx-runtime"),$e=Ve.Portal,Ue=Ee.forwardRef((({className:e,...r},a)=>(0,He.jsx)(Ve.Overlay,{ref:a,className:h("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...r})));Ue.displayName=Ve.Overlay.displayName;var Qe=Ee.forwardRef((({className:e,children:r,...a},t)=>(0,He.jsxs)($e,{children:[(0,He.jsx)(Ue,{}),(0,He.jsxs)(Ve.Content,{ref:t,className:h("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...a,children:[r,(0,He.jsxs)(Ve.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,He.jsx)(_e.Cross2Icon,{className:"h-4 w-4"}),(0,He.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})));Qe.displayName=Ve.Content.displayName;var Ge=n((({className:e,...r})=>(0,He.jsx)("div",{className:h("flex flex-col space-y-1.5 text-center sm:text-left",e),...r})),"DialogHeader");Ge.displayName="DialogHeader";var We=n((({className:e,...r})=>(0,He.jsx)("div",{className:h("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...r})),"DialogFooter");We.displayName="DialogFooter";var Ke=Ee.forwardRef((({className:e,...r},a)=>(0,He.jsx)(Ve.Title,{ref:a,className:h("text-lg font-semibold leading-none tracking-tight",e),...r})));Ke.displayName=Ve.Title.displayName;var Xe=Ee.forwardRef((({className:e,...r},a)=>(0,He.jsx)(Ve.Description,{ref:a,className:h("text-sm text-muted-foreground",e),...r})));Xe.displayName=Ve.Description.displayName;var Je=require("react/jsx-runtime"),Ye=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command,{ref:a,className:h("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...r})));Ye.displayName=Oe.Command.displayName;var Ze=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,Je.jsx)(Me.MagnifyingGlassIcon,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),(0,Je.jsx)(Oe.Command.Input,{ref:a,className:h("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...r})]})));Ze.displayName=Oe.Command.Input.displayName;var er=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.List,{ref:a,className:h("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...r})));er.displayName=Oe.Command.List.displayName;var rr=Ae.forwardRef(((e,r)=>(0,Je.jsx)(Oe.Command.Empty,{ref:r,className:"py-6 text-center text-sm",...e})));rr.displayName=Oe.Command.Empty.displayName;var ar=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.Group,{ref:a,className:h("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...r})));ar.displayName=Oe.Command.Group.displayName;var tr=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.Separator,{ref:a,className:h("-mx-1 h-px bg-border",e),...r})));tr.displayName=Oe.Command.Separator.displayName;var sr=Ae.forwardRef((({className:e,...r},a)=>(0,Je.jsx)(Oe.Command.Item,{ref:a,className:h("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50",e),...r})));sr.displayName=Oe.Command.Item.displayName;var ir=n((({className:e,...r})=>(0,Je.jsx)("span",{className:h("ml-auto text-xs tracking-widest text-muted-foreground",e),...r})),"CommandShortcut");ir.displayName="CommandShortcut";var lr=d(require("react")),nr=d(require("@radix-ui/react-dropdown-menu")),or=require("@radix-ui/react-icons"),dr=require("react/jsx-runtime"),cr=nr.Root,ur=nr.Trigger,mr=lr.forwardRef((({className:e,inset:r,children:a,...t},s)=>(0,dr.jsxs)(nr.SubTrigger,{ref:s,className:h("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",r&&"pl-8",e),...t,children:[a,(0,dr.jsx)(or.ChevronRightIcon,{className:"ml-auto h-4 w-4"})]})));mr.displayName=nr.SubTrigger.displayName;var xr=lr.forwardRef((({className:e,...r},a)=>(0,dr.jsx)(nr.SubContent,{ref:a,className:h("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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),...r})));xr.displayName=nr.SubContent.displayName;var fr=lr.forwardRef((({className:e,sideOffset:r=4,...a},t)=>(0,dr.jsx)(nr.Portal,{children:(0,dr.jsx)(nr.Content,{ref:t,sideOffset:r,className:h("z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md","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),...a})})));fr.displayName=nr.Content.displayName;var pr=lr.forwardRef((({className:e,inset:r,...a},t)=>(0,dr.jsx)(nr.Item,{ref:t,className:h("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r&&"pl-8",e),...a})));pr.displayName=nr.Item.displayName;var hr=lr.forwardRef((({className:e,children:r,checked:a,...t},s)=>(0,dr.jsxs)(nr.CheckboxItem,{ref:s,className:h("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:a,...t,children:[(0,dr.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,dr.jsx)(nr.ItemIndicator,{children:(0,dr.jsx)(or.CheckIcon,{className:"h-4 w-4"})})}),r]})));hr.displayName=nr.CheckboxItem.displayName;var gr=lr.forwardRef((({className:e,children:r,...a},t)=>(0,dr.jsxs)(nr.RadioItem,{ref:t,className:h("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...a,children:[(0,dr.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,dr.jsx)(nr.ItemIndicator,{children:(0,dr.jsx)(or.DotFilledIcon,{className:"h-4 w-4 fill-current"})})}),r]})));gr.displayName=nr.RadioItem.displayName;var jr=lr.forwardRef((({className:e,inset:r,...a},t)=>(0,dr.jsx)(nr.Label,{ref:t,className:h("px-2 py-1.5 text-sm font-semibold",r&&"pl-8",e),...a})));jr.displayName=nr.Label.displayName;var br=lr.forwardRef((({className:e,...r},a)=>(0,dr.jsx)(nr.Separator,{ref:a,className:h("-mx-1 my-1 h-px bg-muted",e),...r})));br.displayName=nr.Separator.displayName;var vr=n((({className:e,...r})=>(0,dr.jsx)("span",{className:h("ml-auto text-xs tracking-widest opacity-60",e),...r})),"DropdownMenuShortcut");vr.displayName="DropdownMenuShortcut";var Nr=d(require("react")),yr=require("@radix-ui/react-slot"),wr=require("react-hook-form"),Cr=d(require("react")),qr=d(require("@radix-ui/react-label")),Sr=require("class-variance-authority"),kr=require("react/jsx-runtime"),Rr=(0,Sr.cva)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Ir=Cr.forwardRef((({className:e,...r},a)=>(0,kr.jsx)(qr.Root,{ref:a,className:h(Rr(),e),...r})));Ir.displayName=qr.Root.displayName;var zr=require("react/jsx-runtime"),Dr=wr.FormProvider,Tr=Nr.createContext({}),Br=n((({...e})=>(0,zr.jsx)(Tr.Provider,{value:{name:e.name},children:(0,zr.jsx)(wr.Controller,{...e})})),"FormField"),Fr=n((()=>{let e=Nr.useContext(Tr),r=Nr.useContext(Pr),{getFieldState:a,formState:t}=(0,wr.useFormContext)(),s=a(e.name,t);if(!e)throw new Error("useFormField should be used within ");let{id:i}=r;return{id:i,name:e.name,formItemId:`${i}-form-item`,formDescriptionId:`${i}-form-item-description`,formMessageId:`${i}-form-item-message`,...s}}),"useFormField"),Pr=Nr.createContext({}),Lr=Nr.forwardRef((({className:e,...r},a)=>{let t=Nr.useId();return(0,zr.jsx)(Pr.Provider,{value:{id:t},children:(0,zr.jsx)("div",{ref:a,className:h("space-y-2",e),...r})})}));Lr.displayName="FormItem";var Ar=Nr.forwardRef((({className:e,...r},a)=>{let{error:t,formItemId:s}=Fr();return(0,zr.jsx)(Ir,{ref:a,className:h(t&&"text-destructive",e),htmlFor:s,...r})}));Ar.displayName="FormLabel";var Mr=Nr.forwardRef((({...e},r)=>{let{error:a,formItemId:t,formDescriptionId:s,formMessageId:i}=Fr();return(0,zr.jsx)(yr.Slot,{ref:r,id:t,"aria-describedby":a?`${s} ${i}`:`${s}`,"aria-invalid":!!a,...e})}));Mr.displayName="FormControl";var Or=Nr.forwardRef((({className:e,...r},a)=>{let{formDescriptionId:t}=Fr();return(0,zr.jsx)("p",{ref:a,id:t,className:h("text-[0.8rem] text-muted-foreground",e),...r})}));Or.displayName="FormDescription";var Er=Nr.forwardRef((({className:e,children:r,...a},t)=>{let{error:s,formMessageId:i}=Fr(),l=s?String(s?.message):r;return l?(0,zr.jsx)("p",{ref:t,id:i,className:h("text-[0.8rem] font-medium text-destructive",e),...a,children:l}):null}));Er.displayName="FormMessage";var Vr=d(require("react")),_r=require("react/jsx-runtime"),Hr=Vr.forwardRef((({className:e,type:r,...a},t)=>(0,_r.jsx)("input",{type:r,className:h("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",e),ref:t,...a})));Hr.displayName="Input";var $r=d(require("react")),Ur=d(require("@radix-ui/react-popover")),Qr=require("react/jsx-runtime"),Gr=Ur.Root,Wr=Ur.Trigger,Kr=$r.forwardRef((({className:e,align:r="center",sideOffset:a=4,...t},s)=>(0,Qr.jsx)(Ur.Portal,{children:(0,Qr.jsx)(Ur.Content,{ref:s,align:r,sideOffset:a,className:h("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md 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),...t})})));Kr.displayName=Ur.Content.displayName;var Xr=require("@radix-ui/react-icons"),Jr=d(require("react-resizable-panels")),Yr=require("react/jsx-runtime"),Zr=n((({className:e,...r})=>(0,Yr.jsx)(Jr.PanelGroup,{className:h("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",e),...r})),"ResizablePanelGroup"),ea=Jr.Panel,ra=n((({withHandle:e,className:r,...a})=>(0,Yr.jsx)(Jr.PanelResizeHandle,{className:h("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",r),...a,children:e&&(0,Yr.jsx)("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:(0,Yr.jsx)(Xr.DragHandleDots2Icon,{className:"h-2.5 w-2.5"})})})),"ResizableHandle"),aa=d(require("react")),ta=d(require("@radix-ui/react-scroll-area")),sa=require("react/jsx-runtime"),ia=aa.forwardRef((({className:e,children:r,...a},t)=>(0,sa.jsxs)(ta.Root,{ref:t,className:h("relative overflow-hidden",e),...a,children:[(0,sa.jsx)(ta.Viewport,{className:"h-full w-full rounded-[inherit]",children:r}),(0,sa.jsx)(la,{}),(0,sa.jsx)(ta.Corner,{})]})));ia.displayName=ta.Root.displayName;var la=aa.forwardRef((({className:e,orientation:r="vertical",...a},t)=>(0,sa.jsx)(ta.ScrollAreaScrollbar,{ref:t,orientation:r,className:h("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...a,children:(0,sa.jsx)(ta.ScrollAreaThumb,{className:"relative flex-1 rounded-full bg-border"})})));la.displayName=ta.ScrollAreaScrollbar.displayName;var na=d(require("react")),oa=require("@radix-ui/react-icons"),da=d(require("@radix-ui/react-select")),ca=require("react/jsx-runtime"),ua=da.Root,ma=da.Value,xa=na.forwardRef((({className:e,children:r,...a},t)=>(0,ca.jsxs)(da.Trigger,{ref:t,className:h("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...a,children:[r,(0,ca.jsx)(da.Icon,{asChild:!0,children:(0,ca.jsx)(oa.CaretSortIcon,{className:"h-4 w-4 opacity-50"})})]})));xa.displayName=da.Trigger.displayName;var fa=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.ScrollUpButton,{ref:a,className:h("flex cursor-default items-center justify-center py-1",e),...r,children:(0,ca.jsx)(oa.ChevronUpIcon,{})})));fa.displayName=da.ScrollUpButton.displayName;var pa=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.ScrollDownButton,{ref:a,className:h("flex cursor-default items-center justify-center py-1",e),...r,children:(0,ca.jsx)(oa.ChevronDownIcon,{})})));pa.displayName=da.ScrollDownButton.displayName;var ha=na.forwardRef((({className:e,children:r,position:a="popper",...t},s)=>(0,ca.jsx)(da.Portal,{children:(0,ca.jsxs)(da.Content,{ref:s,className:h("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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","popper"===a&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:a,...t,children:[(0,ca.jsx)(fa,{}),(0,ca.jsx)(da.Viewport,{className:h("p-1","popper"===a&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),(0,ca.jsx)(pa,{})]})})));ha.displayName=da.Content.displayName;var ga=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.Label,{ref:a,className:h("px-2 py-1.5 text-sm font-semibold",e),...r})));ga.displayName=da.Label.displayName;var ja=na.forwardRef((({className:e,children:r,...a},t)=>(0,ca.jsxs)(da.Item,{ref:t,className:h("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...a,children:[(0,ca.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,ca.jsx)(da.ItemIndicator,{children:(0,ca.jsx)(oa.CheckIcon,{className:"h-4 w-4"})})}),(0,ca.jsx)(da.ItemText,{children:r})]})));ja.displayName=da.Item.displayName;var ba=na.forwardRef((({className:e,...r},a)=>(0,ca.jsx)(da.Separator,{ref:a,className:h("-mx-1 my-1 h-px bg-muted",e),...r})));ba.displayName=da.Separator.displayName;var va=d(require("react")),Na=d(require("@radix-ui/react-separator")),ya=require("react/jsx-runtime"),wa=va.forwardRef((({className:e,orientation:r="horizontal",decorative:a=!0,...t},s)=>(0,ya.jsx)(Na.Root,{ref:s,decorative:a,orientation:r,className:h("shrink-0 bg-border","horizontal"===r?"h-[1px] w-full":"h-full w-[1px]",e),...t})));wa.displayName=Na.Root.displayName;var Ca=require("next-themes"),qa=require("sonner"),Sa=require("react/jsx-runtime"),ka=n((({...e})=>{let{theme:r="system"}=(0,Ca.useTheme)();return(0,Sa.jsx)(qa.Toaster,{theme:r,className:"toaster 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})}),"Toaster"),Ra=d(require("react")),Ia=require("react/jsx-runtime"),za=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("div",{className:"relative w-full overflow-auto",children:(0,Ia.jsx)("table",{ref:a,className:h("w-full caption-bottom text-sm",e),...r})})));za.displayName="Table";var Da=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("thead",{ref:a,className:h("[&_tr]:border-b",e),...r})));Da.displayName="TableHeader";var Ta=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("tbody",{ref:a,className:h("[&_tr:last-child]:border-0",e),...r})));Ta.displayName="TableBody";var Ba=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("tfoot",{ref:a,className:h("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...r})));Ba.displayName="TableFooter";var Fa=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("tr",{ref:a,className:h("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...r})));Fa.displayName="TableRow";var Pa=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("th",{ref:a,className:h("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...r})));Pa.displayName="TableHead";var La=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("td",{ref:a,className:h("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...r})));La.displayName="TableCell";var Aa=Ra.forwardRef((({className:e,...r},a)=>(0,Ia.jsx)("caption",{ref:a,className:h("mt-4 text-sm text-muted-foreground",e),...r})));Aa.displayName="TableCaption";var Ma=d(require("react")),Oa=require("react/jsx-runtime"),Ea=Ma.forwardRef((({className:e,...r},a)=>(0,Oa.jsx)("textarea",{className:h("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",e),ref:a,...r})));Ea.displayName="Textarea";var Va=d(require("react")),_a=d(require("@radix-ui/react-tooltip")),Ha=require("react/jsx-runtime"),$a=_a.Provider,Ua=_a.Root,Qa=_a.Trigger,Ga=Va.forwardRef((({className:e,sideOffset:r=4,...a},t)=>(0,Ha.jsx)(_a.Content,{ref:t,sideOffset:r,className:h("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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),...a})));Ga.displayName=_a.Content.displayName;var Wa=require("react"),Ka=require("react/jsx-runtime"),Xa=(0,Wa.forwardRef)((({...e},r)=>{let[a,t]=(0,Wa.useState)(!1),s=n((()=>"object"==typeof e.value&&"id"in e.value?e.value.id:e.value),"value");return(0,Ka.jsxs)(Gr,{open:a,onOpenChange:t,children:[(0,Ka.jsx)(Wr,{asChild:!0,children:(0,Ka.jsx)(Mr,{children:(0,Ka.jsxs)(w,{disabled:e.disabled,variant:"outline",role:"combobox","aria-expanded":a,className:h("w-full sm:w-[250px] flex justify-between",!s()&&"text-muted-foreground"),children:[s()?e.options?.find((e=>e.value===s()))?.label:e.placeholder??"Select",(0,Ka.jsx)(re.CaretSortIcon,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})})}),(0,Ka.jsx)(Kr,{className:"w-full max-w-full sm:w-[250px] p-0",children:(0,Ka.jsxs)(Ye,{className:"rounded-lg border shadow-md",ref:r,children:[(0,Ka.jsx)(Ze,{placeholder:"Type a command or search..."}),(0,Ka.jsxs)(er,{children:[(0,Ka.jsx)(rr,{children:"No results found."}),(0,Ka.jsx)(ar,{heading:"Suggestions",children:(0,Ka.jsx)(ia,{className:"max-h-52 overflow-y-auto",children:e.options?.map((r=>(0,Ka.jsxs)(sr,{value:r.label,onSelect:()=>{e.onChange?.(r.value),t(!1)},children:[r.label,(0,Ka.jsx)(re.CheckIcon,{className:h("ml-auto h-4 w-4",r.value===s()?"opacity-100":"opacity-0")})]},r.value)))})})]})]})})]})}));Xa.displayName="Combobox";var Ja=require("lucide-react"),Ya=require("react"),Za=require("react/jsx-runtime"),et=n((({children:e,title:r="Are you sure?",description:a="This action cannot be undone.",okText:t="Ok",cancelText:s="Cancel",okButtonSize:i="default",cancelButtonSize:l="default",okButtonVariant:n="default",cancelButtonVariant:o="outline",loading:d=!1,okIconSide:c="left",cancelIconSide:u="left",onConfirm:m,okIcon:x,cancelIcon:f,open:p,onOpenChange:h,defaultOpen:g})=>{let j=(0,Ya.useMemo)((()=>(0,Ya.isValidElement)(f)?f:(0,Za.jsx)(Ja.XIcon,{className:"mr-2 h-4 w-4"})),[f]),b=(0,Ya.useMemo)((()=>d?(0,Za.jsx)(v,{className:"mr-2"}):(0,Ya.isValidElement)(x)?x:(0,Za.jsx)(Ja.CheckIcon,{className:"mr-2 h-4 w-4"})),[x,d]);return(0,Za.jsxs)(ie,{open:p,onOpenChange:h,defaultOpen:g,children:[(0,Za.jsx)(le,{asChild:!0,children:e}),(0,Za.jsxs)(de,{children:[(0,Za.jsxs)(ce,{children:[(0,Za.jsx)(me,{children:r}),(0,Za.jsx)(xe,{children:a})]}),(0,Za.jsxs)(ue,{children:[(0,Za.jsxs)(pe,{variant:o,size:l,disabled:d,children:["left"===u&&j,s,"right"===u&&j]}),(0,Za.jsxs)(fe,{variant:n,size:i,disabled:d,onClick:m,children:["left"===c&&b,t,"right"===c&&b]})]})]})]})}),"ConfirmDialog");et.displayName="ConfirmDialog";var rt=require("react"),at=require("react/jsx-runtime"),tt=n((e=>(0,at.jsx)(Br,{control:e.control,name:e.name,render:({field:r})=>(0,at.jsxs)(Lr,{className:h(e.className,e.isCheckbox?"flex flex-row items-center space-x-3 space-y-0":""),children:[!e.isCheckbox&&(0,at.jsx)(Ar,{children:e.label}),(0,at.jsx)(Mr,{children:(0,rt.cloneElement)(e.children,{...r,...e.children.props})}),e.isCheckbox&&(0,at.jsx)(Ar,{className:"text-sm font-normal",children:e.label}),e.description&&(0,at.jsx)(Or,{children:e.description}),(0,at.jsx)(Er,{})]})})),"Field"),st=require("@refinedev/core"),it=require("react"),lt=require("react/jsx-runtime"),nt=n((({formProps:e,isWatchable:r,saveButtonProps:a,...t})=>{let s=(0,it.useRef)(!1),{resource:i,action:l}=(0,st.useParsed)(),n=(0,st.useRouterType)(),o=(0,st.useBack)(),{goBack:d}=(0,st.useNavigation)(),c="list"!==l||typeof l<"u"?"legacy"===n?d:o:void 0;r&&!s.current&&(s.current=!0,t.watch());let u=t.handleSubmit((e=>{t.refineCore.onFinish(t.getValues()).then()}));return(0,lt.jsx)(Dr,{...t,children:(0,lt.jsx)("form",{...e,onSubmit:u,children:(0,lt.jsxs)(Se,{className:"border-border/40 shadow-sm",children:[(0,lt.jsx)(ze,{className:"pt-6 space-y-4",children:t.children}),(0,lt.jsxs)(De,{className:"flex justify-end gap-x-4",children:[(0,lt.jsx)(w,{type:"button",onClick:c,disabled:t.refineCore.formLoading,variant:"outline",children:"Cancel"}),(0,lt.jsx)(Xt,{type:"submit",loading:t.refineCore.formLoading,...a})]})]})})})}),"Form"),ot=require("next-themes"),dt=require("@radix-ui/react-icons"),ct=require("react/jsx-runtime"),ut=n((()=>{let{setTheme:e}=(0,ot.useTheme)();return(0,ct.jsxs)(cr,{children:[(0,ct.jsx)(ur,{asChild:!0,children:(0,ct.jsxs)(w,{variant:"ghost",size:"icon",children:[(0,ct.jsx)(dt.SunIcon,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),(0,ct.jsx)(dt.MoonIcon,{className:"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"}),(0,ct.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}),(0,ct.jsxs)(fr,{align:"end",children:[(0,ct.jsx)(pr,{onClick:()=>e("light"),children:"Light"}),(0,ct.jsx)(pr,{onClick:()=>e("dark"),children:"Dark"}),(0,ct.jsx)(pr,{onClick:()=>e("system"),children:"System"})]})]})}),"ModeToggle"),mt=require("react/jsx-runtime"),xt=n((({extra:e,...r})=>(0,mt.jsx)("div",{className:"w-full",children:(0,mt.jsxs)("div",{className:h("flex h-20 items-end lg:justify-between",r.className,!r.breadcrumb&&"h-auto"),children:[(0,mt.jsxs)("div",{className:"min-w-0 flex-1",children:[r.breadcrumb,(0,mt.jsx)("div",{className:"inline-flex flex-row items-center gap-x-4 mt-3",children:(0,mt.jsxs)("div",{className:"inline-flex flex-col",children:[(0,mt.jsx)("h2",{className:"text-2xl font-bold leading-7 text-black dark:text-white sm:truncate sm:text-3xl sm:tracking-tight",children:r.title}),r.subTitle&&(0,mt.jsx)("div",{className:"mt-2 flex items-center text-sm text-gray-300",children:r.subTitle})]})})]}),(0,mt.jsx)("div",{className:"flex lg:ml-4 lg:mt-0",children:e})]})})),"PageHeader"),ft=d(require("react")),pt=require("react/jsx-runtime"),ht=(0,ft.forwardRef)((({...e},r)=>{let a=ft.default.useRef(null);return(0,pt.jsxs)(ua,{disabled:e.disabled||0===e.options?.length,onValueChange:e.onChange,defaultValue:e.value,value:e.value,children:[(0,pt.jsx)(Mr,{children:(0,pt.jsx)(xa,{ref:a,children:(0,pt.jsx)(ma,{placeholder:e.placeholder??"Select"})})}),(0,pt.jsx)(ha,{style:{width:a.current?.offsetWidth},ref:r,children:e.options?.map(((e,r)=>(0,pt.jsx)(ja,{value:e.value,children:e.label},r)))})]})}));ht.displayName="Select";var gt=require("@refinedev/core"),jt=require("react-use"),bt=d(require("react")),vt=require("react/jsx-runtime"),Nt=n((({isCollapsed:e})=>{let{menuItems:r}=(0,gt.useMenu)(),a=(0,gt.useResourceParams)(),{pathname:t}=(0,jt.useLocation)(),s=String(t),i=n((e=>{let r=e.meta?.icon;return bt.default.isValidElement(r)?bt.default.cloneElement(r,{className:"mr-2 w-4 h-4"}):null}),"GetIcon");return(0,vt.jsx)("div",{"data-collapsed":e,className:"group flex flex-col gap-4 py-2 justify-between h-[94dvh] xl:h-[84dvh] data-[collapsed=true]:py-2",children:(0,vt.jsx)("nav",{className:"grid gap-1 px-2 group-[[data-collapsed=true]]:justify-center group-[[data-collapsed=true]]:px-2",children:r.filter((e=>!e.meta?.hide)).map(((r,t)=>{let l=[r.list?.toString(),r.create?.toString(),r.edit?.toString()?.replace(":id",a.id),r.show?.toString()?.replace(":id",a.id)].filter(Boolean),n=l.includes(s)||l.some((e=>e?.startsWith(s)||s.startsWith(e)));return e?(0,vt.jsxs)(Ua,{delayDuration:0,children:[(0,vt.jsx)(Qa,{asChild:!0,children:(0,vt.jsxs)(J,{href:r.list?.toString()??"/#",title:r.meta?.title??r.name,className:h(y({variant:"ghost"}),"justify-start",n?"bg-primary text-primary-foreground hover:bg-primary/80 hover:text-primary-foreground":""),children:[r.meta?.icon,(0,vt.jsxs)("span",{className:"sr-only",children:[r.meta?.title??r.label," ",r.list?"List":"Create"]})]},t)}),(0,vt.jsxs)(Ga,{side:"right",className:"flex items-center gap-4",children:[r.label,r.meta?.label&&(0,vt.jsx)("span",{className:"ml-auto text-muted-foreground",children:r.meta?.label})]})]},t):(0,vt.jsxs)(J,{href:r.list?.toString()??"/#",title:r.meta?.title??r.name,className:h(y({variant:"ghost"}),"justify-start",n?"bg-primary text-primary-foreground hover:bg-primary/80 hover:text-primary-foreground":""),children:[i(r),r.meta?.title??r.name]},t)}))})})}),"Sidebar");Nt.displayName="Sidebar";var yt=require("react/jsx-runtime"),wt=n((({resource:e,recordItemId:r,onSuccess:a,mutationMode:t,confirmTitle:s,confirmDescription:i,successNotification:l,errorNotification:n,hideText:o=!1,accessControl:d,meta:c,dataProviderName:u,confirmOkText:m,confirmCancelText:x,invalidates:f,children:p,...h})=>{let{title:g,label:j,hidden:b,disabled:v,loading:N,confirmTitle:y,confirmOkLabel:C,cancelLabel:q,onConfirm:S}=(0,T.useDeleteButton)({resource:e,id:r,dataProviderName:u,invalidates:f,meta:c,onSuccess:a,mutationMode:t,errorNotification:n,successNotification:l,accessControl:d});return b?null:(0,yt.jsx)(et,{okText:m??C,cancelText:x??q,okButtonVariant:"destructive",cancelButtonVariant:"outline",title:s??y,description:i,loading:N,onConfirm:S,children:(0,yt.jsx)(w,{disabled:v,title:g,loading:N,icon:(0,yt.jsx)(B.Trash2Icon,{className:"mr-2 w-4 h-4"}),...h,children:!o&&(p??j)})})}),"DeleteButton");wt.displayName="DeleteButton";var Ct=require("@refinedev/core"),qt=require("lucide-react"),St=require("react/jsx-runtime"),kt=n((({resource:e,recordItemId:r,hideText:a=!1,accessControl:t,meta:s,onClick:i,children:l,...n})=>{let{hidden:o,disabled:d,label:c,title:u,LinkComponent:m,to:x}=(0,Ct.useEditButton)({resource:e,id:r,accessControl:t,meta:s});return o?null:(0,St.jsx)(m,{to:x,replace:!1,onClick:e=>{d?e.preventDefault():i&&(e.preventDefault(),i(e))},children:(0,St.jsx)(w,{disabled:d,title:u,icon:(0,St.jsx)(qt.SquarePenIcon,{className:"mr-2 w-4 h-4"}),...n,children:!a&&(l??c)})})}),"EditButton");kt.displayName="EditButton";var Rt=require("@radix-ui/react-slot"),It=require("@refinedev/core"),zt=require("lucide-react"),Dt=require("react/jsx-runtime"),Tt=n((({hideText:e=!1,resource:r,recordItemId:a,accessControl:t,access:s,children:i,...l})=>{let{label:n}=(0,It.useExportButton)(),o=t?.enabled?It.CanAccess:Rt.Slot;return t?.hideIfUnauthorized&&t.enabled?null:(0,Dt.jsx)(o,{params:{id:a},resource:r,action:"export",...s,children:(0,Dt.jsx)(w,{icon:(0,Dt.jsx)(zt.ShareIcon,{className:"mr-2 w-4 h-4"}),...l,children:!e&&(i??n)})})}),"ExportButton");Tt.displayName="ExportButton";var Bt=require("@radix-ui/react-slot"),Ft=require("@refinedev/core"),Pt=require("lucide-react"),Lt=require("react/jsx-runtime"),At=n((({hideText:e=!1,resource:r,onChange:a,accept:t="image/*,application/*",recordItemId:s,accessControl:i,access:l,children:o,...d})=>{let{label:c}=(0,Ft.useImportButton)(),u=i?.enabled?Ft.CanAccess:Bt.Slot,m=n((()=>{let e=document.createElement("input");e.type="file",e.accept=t,e.onchange=r=>{r.target instanceof HTMLInputElement&&(a(Array.from(r.target.files??[])),e.remove())},e.click()}),"onClick");return i?.hideIfUnauthorized&&i.enabled?null:(0,Lt.jsx)(u,{params:{id:s},resource:r,action:"import",...l,children:(0,Lt.jsx)(w,{onClick:m,icon:(0,Lt.jsx)(Pt.ImportIcon,{className:"mr-2 w-4 h-4"}),...d,children:!e&&(o??c)})})}),"ImportButton");At.displayName="ImportButton";var Mt=require("@refinedev/core"),Ot=require("lucide-react"),Et=require("react/jsx-runtime"),Vt=n((({resource:e,hideText:r=!1,accessControl:a,meta:t,children:s,onClick:i,...l})=>{let{hidden:n,disabled:o,label:d,title:c,LinkComponent:u,to:m}=(0,Mt.useListButton)({resource:e,accessControl:a,meta:t});return n?null:(0,Et.jsx)(u,{to:m,replace:!1,onClick:e=>{o?e.preventDefault():i&&(e.preventDefault(),i(e))},children:(0,Et.jsx)(w,{disabled:o,title:c,icon:(0,Et.jsx)(Ot.ListIcon,{className:"mr-2 w-4 h-4"}),...l,children:!r&&(s??d)})})}),"ListButton");Vt.displayName="ListButton";var _t=require("@refinedev/core"),Ht=require("lucide-react"),$t=require("react/jsx-runtime"),Ut=n((({resource:e,recordItemId:r,hideText:a=!1,dataProviderName:t,children:s,...i})=>{let{onClick:l,label:n,loading:o}=(0,_t.useRefreshButton)({resource:e,id:r,dataProviderName:t});return(0,$t.jsx)(w,{onClick:l,loading:o,icon:(0,$t.jsx)(Ht.RefreshCwIcon,{className:"mr-2 w-4 h-4"}),...i,children:!a&&(s??n)})}),"RefreshButton");Ut.displayName="RefreshButton";var Qt=require("@radix-ui/react-slot"),Gt=require("@refinedev/core"),Wt=require("lucide-react"),Kt=require("react/jsx-runtime"),Xt=n((({hideText:e=!1,children:r,accessControl:a,access:t,resource:s,recordItemId:i,...l})=>{let{label:n}=(0,Gt.useSaveButton)(),o=a?.enabled?Gt.CanAccess:Qt.Slot;return a?.hideIfUnauthorized&&a.enabled?null:(0,Kt.jsx)(o,{params:{id:i},resource:s,action:"save",...t,children:(0,Kt.jsx)(w,{icon:(0,Kt.jsx)(Wt.SaveIcon,{className:"mr-2 w-4 h-4"}),...l,children:!e&&(r??n)})})}),"SaveButton");Xt.displayName="SaveButton";var Jt=require("@refinedev/core"),Yt=require("lucide-react"),Zt=require("react/jsx-runtime"),es=n((({resource:e,recordItemId:r,hideText:a=!1,accessControl:t,meta:s,children:i,onClick:l,...n})=>{let{to:o,label:d,title:c,hidden:u,disabled:m,LinkComponent:x}=(0,Jt.useShowButton)({resource:e,id:r,accessControl:t,meta:s});return u?null:(0,Zt.jsx)(x,{to:o,replace:!1,onClick:e=>{m?e.preventDefault():l&&(e.preventDefault(),l(e))},children:(0,Zt.jsx)(w,{icon:(0,Zt.jsx)(Yt.EyeIcon,{className:"mr-2 w-4 h-4"}),title:c,disabled:m,...n,children:!a&&(i??d)})})}),"ShowButton");es.displayName="ShowButton";var rs=require("@refinedev/core"),as=require("react"),ts=require("react/jsx-runtime"),ss=n((({title:e,resource:r,breadcrumb:a,extra:t,children:s})=>{let i=(0,rs.useTranslate)(),{options:{breadcrumb:l}={}}=(0,rs.useRefineContext)(),n=(0,rs.useUserFriendlyName)(),{resource:o,identifier:d}=(0,rs.useResource)(r),c=typeof a>"u"?l:a;return(0,ts.jsxs)(ts.Fragment,{children:[(0,ts.jsx)(xt,{title:e??i(`${d}.titles.List`,`Create ${n(o?.meta?.label??d,"singular")}`),isBack:!0,breadcrumb:(0,as.isValidElement)(c)?c:(0,ts.jsx)(ee,{}),extra:t??(0,ts.jsx)(ts.Fragment,{children:(0,ts.jsx)(Vt,{resource:r})})}),(0,ts.jsx)("div",{className:"pt-4 !mt-0",children:s})]})}),"CreatePage");ss.displayName="CreatePage";var is=require("@refinedev/core"),ls=require("react"),ns=require("react/jsx-runtime"),os=n((({title:e,resource:r,extra:a,breadcrumb:t,children:s})=>{let i=(0,is.useTranslate)(),{options:{breadcrumb:l}={}}=(0,is.useRefineContext)(),{list:n}=(0,is.useNavigation)(),o=(0,is.useUserFriendlyName)(),{resource:d,identifier:c}=(0,is.useResource)(r),u=typeof t>"u"?l:t;return(0,ns.jsxs)(ns.Fragment,{children:[(0,ns.jsx)(xt,{title:e??i(`${c}.titles.List`,`Edit ${o(d?.meta?.label??c,"plural")}`),isBack:!0,breadcrumb:(0,ls.isValidElement)(u)?u:(0,ns.jsx)(ee,{}),extra:a??(0,ns.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-2",children:[(0,ns.jsx)(es,{resource:r}),(0,ns.jsx)(wt,{resource:r,onSuccess:()=>{n(d?.name)}})]})}),(0,ns.jsx)("div",{className:"pt-4",children:s})]})}),"EditPage");os.displayName="EditPage";var ds=require("@refinedev/core"),cs=require("react"),us=require("react/jsx-runtime"),ms=n((({title:e,resource:r,breadcrumb:a,createButtonProps:t,className:s,isCreate:i=!0,extra:l,children:n})=>{let o=(0,ds.useTranslate)(),{options:{breadcrumb:d}={}}=(0,ds.useRefineContext)(),c=(0,ds.useUserFriendlyName)(),{resource:u,identifier:m}=(0,ds.useResource)(r),x=typeof a>"u"?d:a;return(0,us.jsxs)(us.Fragment,{children:[(0,us.jsx)(xt,{title:e??o(`${m}.titles.List`,`List ${c(u?.meta?.label??m,"plural")}`),breadcrumb:(0,cs.isValidElement)(x)?x:(0,us.jsx)(ee,{}),extra:l??(0,us.jsx)(us.Fragment,{children:(0,us.jsx)("div",{className:"inline-flex flex-row gap-4",children:i&&(0,us.jsx)(D,{...t,resource:t?.resource??m})})})}),(0,us.jsx)("div",{className:h("pt-2 sm:pt-4 !mt-0",s),children:n})]})}),"ListPage");ms.displayName="ListPage";var xs=require("@refinedev/core"),fs=require("react"),ps=require("react/jsx-runtime"),hs=n((({title:e,children:r})=>(0,ps.jsx)(ps.Fragment,{children:(0,ps.jsx)("dl",{className:"flex flex-wrap",children:(0,ps.jsxs)("div",{className:"flex-auto pt-4",children:[(0,ps.jsx)("dt",{className:"scroll-m-20 text-xs font-semibold tracking-tight",children:e}),(0,ps.jsx)("dd",{className:"mt-1 text-base font-normal text-foreground leading-7",children:r})]})})})),"Row"),gs=require("react/jsx-runtime"),js=n((({title:e,resource:r,breadcrumb:a,isEdit:t=!0,isDelete:s=!0,extra:i,children:l})=>{let n=(0,xs.useTranslate)(),{options:{breadcrumb:o}={}}=(0,xs.useRefineContext)(),d=(0,xs.useUserFriendlyName)(),{resource:c,identifier:u}=(0,xs.useResource)(r),{list:m}=(0,xs.useNavigation)(),x=typeof a>"u"?o:a;return(0,gs.jsxs)(gs.Fragment,{children:[(0,gs.jsx)(xt,{title:e??n(`${u}.titles.List`,`Show ${d(c?.meta?.label??u,"singular")}`),breadcrumb:(0,fs.isValidElement)(x)?x:(0,gs.jsx)(ee,{}),isBack:!0,extra:i??(0,gs.jsxs)("div",{className:"inline-flex items-center gap-x-2",children:[t&&(0,gs.jsx)(kt,{resource:r}),s&&(0,gs.jsx)(wt,{resource:r,onSuccess:()=>{m(c?.name)}})]})}),(0,gs.jsx)("div",{className:"relative pt-4 !mt-0",children:l})]})}),"ShowPage");js.Row=hs,js.displayName="ShowPage";var bs=require("next-themes"),vs=require("react/jsx-runtime");function Ns({children:e,...r}){return(0,vs.jsx)(bs.ThemeProvider,{...r,children:e})}n(Ns,"ThemeProvider");var ys=require("react/jsx-runtime"),ws=n((({attribute:e,defaultTheme:r,enableSystem:a,disableTransitionOnChange:t,enableColorScheme:s,forcedTheme:i,nonce:l,storageKey:n,themes:o,value:d,children:c})=>(0,ys.jsx)(Ns,{attribute:e??"class",defaultTheme:r??"system",enableSystem:a??!0,disableTransitionOnChange:t??!1,enableColorScheme:s??!0,forcedTheme:i,nonce:l,storageKey:n,themes:o,value:d,children:(0,ys.jsxs)($a,{delayDuration:0,skipDelayDuration:0,disableHoverableContent:!0,children:[c,(0,ys.jsx)(ka,{})]})})),"BaseLayout");ws.displayName="BaseLayout";var Cs=d(require("react"));function qs(e,r){if(r===e)return!1;let a=Object.values(r),t=Object.values(e);if(a.length!==t.length||a.some(((e,r)=>e!==t[r])))return!0;let s=Object.keys(e);return Object.keys(r).some(((e,r)=>e!==s[r]))}function Ss(e,r){return e.matches[r]=!1,e.mediaQueries[r]={},e}function ks(e){let r=Object.keys(e);return typeof window>"u"?r.reduce(Ss,{mediaQueries:{},matches:{}}):r.reduce(((r,a)=>{let t=window.matchMedia(e[a]);return r.mediaQueries[a]=t,r.matches[a]=t.matches,r}),{mediaQueries:{},matches:{}})}function Rs(e,r){function a(r,a){return r[a]=e.mediaQueries[a].matches,r}switch(n(a,"_ref2"),r.type){case"updateMatches":return{matches:Object.keys(e.mediaQueries).reduce(a,{}),mediaQueries:e.mediaQueries};case"setQueries":return ks(r.queries)}}function Is(e){let r=Cs.useRef(e),[a,t]=Cs.useReducer(Rs,e,ks);function s(){return t({type:"updateMatches"})}function i(e){let r=s;return typeof e.addListener<"u"?e.addListener(r):e.addEventListener("change",r),r}Cs.useEffect((()=>{qs(e,r.current)&&(t({type:"setQueries",queries:e}),r.current=e)}),[e]),n(s,"_ref3"),n(i,"_ref4"),Cs.useEffect((()=>{let e=Object.values(a.mediaQueries),r=e.map(i);function t(e,a){typeof e.addListener<"u"?e.removeListener(r[a]):e.removeEventListener("change",r[a])}return n(t,"_ref5"),()=>{e.forEach(t)}}),[a.mediaQueries]);let{matches:l}=a,o=Cs.useMemo((()=>Object.values(l)),[l]);return{matches:l,matchesAny:o.some(Boolean),matchesAll:o.length>0&&o.every(Boolean)}}function zs(e){return Is(Ts(e)).matchesAll}n(qs,"queriesDidChange"),n(Ss,"_ref"),n(ks,"init"),n(Rs,"reducer"),n(Is,"useMediaQueries"),n(zs,"useMediaQuery");var Ds={};function Ts(e){return void 0===Ds[e]&&(Ds[e]={default:e}),Ds[e]}n(Ts,"getObj");var Bs=require("@refinedev/core"),Fs=require("react"),Ps=require("react/jsx-runtime"),Ls=n((({children:e,defaultLayout:r,defaultCollapsed:a=!1,navCollapsedSize:t,navbar:s,footer:i,logo:l,attribute:n,defaultTheme:o,enableSystem:d,disableTransitionOnChange:c,enableColorScheme:u,forcedTheme:m,nonce:x,storageKey:f,themes:p,value:g})=>{let{resources:j}=(0,Bs.useResource)(),b=j?.[0],v=zs("only screen and (max-width: 579.999px)"),N=zs("only screen and (min-width: 640px) and (max-width: 767.999px)"),y=zs("only screen and (min-width: 768px) and (max-width: 1023.999px)"),w=zs("only screen and (min-width: 1024px)"),[C,q]=(0,Fs.useState)(v??a),S=(0,Fs.useMemo)((()=>r||(v?[15,85]:N?[20,80]:y?[25,75]:[15,85])),[r,v,N,y]),k=(0,Fs.useMemo)((()=>w?{minSize:11,maxSize:15}:y?{minSize:15,maxSize:25}:N?{minSize:20,maxSize:30}:{minSize:15,maxSize:15}),[N,y,w]),R=(0,Fs.useMemo)((()=>C||v||N||y),[C,y,N,v]),I=(0,Fs.useMemo)((()=>{if(!l)return null;if(!R&&(0,Fs.isValidElement)(l.default))return(0,Fs.cloneElement)(l.default,{className:"w-auto h-8"});let e=R?l.collapsed:l.default;return(0,Fs.isValidElement)(e)?(0,Fs.cloneElement)(e,{className:"w-auto h-8"}):null}),[l,r,R]);return(0,Ps.jsx)(Ps.Fragment,{children:(0,Ps.jsx)(ws,{attribute:n,defaultTheme:o,enableSystem:d,disableTransitionOnChange:c,enableColorScheme:u,forcedTheme:m,nonce:x,storageKey:f,themes:p,value:g,children:(0,Ps.jsxs)(Zr,{direction:"horizontal",onLayout:e=>{document.cookie=`react-resizable-panels:layout=${JSON.stringify(e)}`},className:"h-full items-stretch",children:[(0,Ps.jsxs)(ea,{defaultSize:S[0],collapsedSize:t,collapsible:!0,minSize:k.minSize,maxSize:k.maxSize,onExpand:()=>{let e=v;q(e),document.cookie=`react-resizable-panels:collapsed=${JSON.stringify(e)}`},onCollapse:()=>{q(!0),document.cookie=`react-resizable-panels:collapsed=${JSON.stringify(!0)}`},className:h(R&&"min-w-[50px] transition-all duration-300 ease-in-out"),children:[(0,Ps.jsx)("div",{className:h("flex py-1.5 max-h-14 items-center border-b border-border/40 justify-center",R&&"px-2"),children:(0,Ps.jsx)(J,{href:b.list?.toString()??"/",className:"inline-flex items-center justify-center",title:b.meta?.label??b.name,children:I})}),(0,Ps.jsx)(Nt,{isCollapsed:R})]}),(0,Ps.jsx)(ra,{withHandle:!0,className:"bg-border/40"}),(0,Ps.jsxs)(ea,{defaultSize:S[1],minSize:25,className:"xl:max-h-dvh h-full !overflow-y-auto flex flex-col overflow-x-hidden",children:[(0,Ps.jsxs)("header",{className:h("sticky top-0 z-50 py-2 h-14 px-4 flex justify-end items-center border-b border-border/40 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",s?.rightSide&&"justify-between"),children:[s?.leftSide&&(0,Ps.jsx)("div",{className:"flex items-center justify-start flex-1",children:s?.leftSide}),s?.rightSide?(0,Ps.jsxs)("div",{className:"flex items-center justify-end flex-1",children:[(0,Ps.jsx)(ut,{}),s?.rightSide]}):(0,Ps.jsx)(ut,{})]}),(0,Ps.jsx)("main",{className:"grow px-6 py-4",children:e}),i&&(0,Ps.jsx)("footer",{className:"px-6 py-4 border-t border-border/40 sticky bottom-0 bg-background text-primary flex flex-row items-center",children:(0,Ps.jsx)("div",{className:"w-full",children:i})})]})]})})})}),"DefaultLayout");Ls.displayName="DefaultLayout";var As=require("sonner"),Ms={open:n((({key:e,message:r,description:a,type:t})=>{"success"===t&&As.toast.success(r,{description:a,id:e}),"error"===t&&As.toast.error(r,{description:a,id:e}),"progress"===t&&As.toast.loading(r,{description:a,id:e})}),"open"),close:n((e=>As.toast.dismiss(e)),"close")},Os=n((()=>Ms),"useNotificationProvider"),Es=require("@refinedev/core"),Vs=require("react"),_s=n(((e,r,a)=>{let t=(0,Vs.useContext)(Es.AccessControlContext),s=t.options.buttons.enableAccessControl,i=t.options.buttons.hideIfUnauthorized,{editUrl:l}=(0,Es.useNavigation)(),{id:o,resource:d}=(0,Es.useResource)(e),{data:c}=(0,Es.useCan)({resource:e,action:"edit",params:{id:r,resource:d},queryOptions:{enabled:s}}),u=(0,Es.useTranslate)(),m=n((()=>c?.can?"":c?.reason?c.reason:u("buttons.notAccessTitle","You don't have permission to access")),"reason"),x=e&&(r??o)?l(e,r??o,a):"";return{can:!(s&&i&&!c?.can),reason:m(),url:x}}),"useGetEditUrl"),Hs=require("@refinedev/core"),$s=require("react"),Us=n(((e,r,a)=>{let t=(0,$s.useContext)(Hs.AccessControlContext),s=t.options.buttons.enableAccessControl,i=t.options.buttons.hideIfUnauthorized,{showUrl:l}=(0,Hs.useNavigation)(),{id:o,resource:d}=(0,Hs.useResource)(e),{data:c}=(0,Hs.useCan)({resource:e,action:"show",params:{id:r,resource:d},queryOptions:{enabled:s}}),u=(0,Hs.useTranslate)(),m=n((()=>c?.can?"":c?.reason?c.reason:u("buttons.notAccessTitle","You don't have permission to access")),"reason"),x=e&&(r||o)?l(e,r??o,a):"";return{can:!(s&&i&&!c?.can),reason:m(),url:x}}),"useGetShowUrl"),Qs=require("@refinedev/core"),Gs=require("react"),Ws=n(((e,r,a)=>{let t=(0,Gs.useContext)(Qs.AccessControlContext),s=t.options.buttons.enableAccessControl,i=t.options.buttons.hideIfUnauthorized,l=(0,Qs.useTranslate)(),o=(0,Qs.useResourceParams)(),{resource:d,identifier:c}=(0,Qs.useResource)(e),{mutationMode:u}=(0,Qs.useMutationMode)(),{mutate:m,isLoading:x}=(0,Qs.useDelete)(),{data:f}=(0,Qs.useCan)({resource:d?.name,action:"delete",params:{id:r??o,resource:d},queryOptions:{enabled:s}}),p=n((()=>f?.can?"":f?.reason?f.reason:l("You don't have permission to access")),"reason"),{setWarnWhen:h}=(0,Qs.useWarnAboutChange)(),g=n((e=>{if((!s||!i||f?.can)&&(r??o)&&c)return h(!1),m({id:r??o??"",resource:c,mutationMode:u,meta:(0,Qs.pickNotDeprecated)(a),metaData:(0,Qs.pickNotDeprecated)(a)},e)}),"onDeleteMutate");return{can:!(s&&i&&!f?.can),reason:p(),mutate:g,isLoading:x}}),"useDeleteHelper"),Ks=require("@refinedev/core"),Xs=n((()=>{let e=(0,Ks.useRouterType)(),r=(0,Ks.useBack)(),{goBack:a}=(0,Ks.useNavigation)(),{action:t}=(0,Ks.useResource)();return"list"!==t||typeof t<"u"?"legacy"===e?a:r:void 0}),"useOnBack"),Js=require("@refinedev/core"),Ys=require("react"),Zs=require("react/jsx-runtime");function ei(e){let r=Xs(),{can:a,isLoading:t,mutate:s}=Ws(e.data?.resource,e.data?.row?.id),i=(0,Js.useTranslate)(),l=(0,Ys.useCallback)((()=>{if(a)return s({onSuccess(){let a=e?.data?.redirectBack??!1,t=e?.data?.onAfterHandle;e?.updateData({toogle:!1,row:void 0,resource:"",redirectBack:!1,onAfterHandle:void 0}),a&&r?.(),t&&t()}})}),[a,s,e,r]);return(0,Zs.jsx)(et,{open:a&&e?.data?.toogle,loading:t,title:i("Are you sure?"),description:i("This action cannot be undone."),okText:i("Delete"),cancelText:i("Cancel"),okButtonVariant:"destructive",onOpenChange:()=>{t||e?.updateData({toogle:!1,row:void 0,resource:""})},onConfirm:l})}n(ei,"DeleteActionModal");var ri=(0,Ys.createContext)(void 0),ai=n((({children:e})=>{let[r,a]=(0,Ys.useState)({row:void 0,resource:"",toogle:!1,onAfterHandle:void 0}),t=n((e=>{a(e)}),"updateData");return(0,Zs.jsxs)(ri.Provider,{value:{data:r,updateData:t},children:[e,(0,Zs.jsx)(ei,{data:r,updateData:t})]})}),"DeleteProvider"),ti=require("react"),si=require("react/jsx-runtime"),ii=(0,ti.forwardRef)((({className:e,...r},a)=>(0,si.jsxs)("svg",{ref:a,xmlns:"http://www.w3.org/2000/svg",className:h("mx-auto inline",e),viewBox:"0 0 120 30",fill:"currentColor",...r,children:[(0,si.jsxs)("circle",{cx:"15",cy:"15",r:"15",children:[(0,si.jsx)("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:"15",repeatCount:"indefinite",to:"15",values:"15;9;15"}),(0,si.jsx)("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:"1",repeatCount:"indefinite",to:"1",values:"1;.5;1"})]}),(0,si.jsxs)("circle",{cx:"60",cy:"15",r:"9",fillOpacity:"0.3",children:[(0,si.jsx)("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:"9",repeatCount:"indefinite",to:"9",values:"9;15;9"}),(0,si.jsx)("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:"0.5",repeatCount:"indefinite",to:"0.5",values:".5;1;.5"})]}),(0,si.jsxs)("circle",{cx:"105",cy:"15",r:"15",children:[(0,si.jsx)("animate",{attributeName:"r",begin:"0s",calcMode:"linear",dur:"0.8s",from:"15",repeatCount:"indefinite",to:"15",values:"15;9;15"}),(0,si.jsx)("animate",{attributeName:"fill-opacity",begin:"0s",calcMode:"linear",dur:"0.8s",from:"1",repeatCount:"indefinite",to:"1",values:"1;.5;1"})]})]}))),li=ii,ni=require("@refinedev/react-table"),oi=require("@tanstack/react-table"),di=require("react"),ci=require("@radix-ui/react-icons"),ui=require("react/jsx-runtime"),mi=n((e=>(0,ui.jsx)(pr,{disabled:e.disabled,asChild:!(!e.to||!e.to&&!e.children),onClick:e.onClick,children:e.asChild?e.children:e.to?(0,ui.jsxs)(J,{href:e.to,title:e.title,children:[e.icon?(0,ui.jsx)("span",{className:"mr-2",children:e.icon}):null,e.title]}):(0,ui.jsxs)(ui.Fragment,{children:[e.icon?(0,ui.jsx)("span",{className:"mr-2",children:e.icon}):null,e.title]})})),"RowAction");function xi({children:e}){return(0,ui.jsxs)(cr,{children:[(0,ui.jsx)(ur,{asChild:!0,children:(0,ui.jsxs)(w,{variant:"ghost",size:"icon",children:[(0,ui.jsx)(ci.DotsHorizontalIcon,{className:"h-4 w-4"}),(0,ui.jsx)("span",{className:"sr-only",children:"Open menu"})]})}),(0,ui.jsx)(fr,{align:"end",className:"w-[160px]",children:e})]})}mi.displayName="RowAction",n(xi,"RowActions");var fi=require("react/jsx-runtime");function pi({row:e,resource:r,title:a,disabled:t,...s}){let i=_s(r,e.id);return(0,fi.jsx)(mi,{...s,disabled:!i.can||t,title:i?.can?a:i?.reason,to:i.url})}n(pi,"EditAction"),pi.displayName="EditAction";var hi=require("react/jsx-runtime");function gi({row:e,resource:r,title:a,disabled:t,...s}){let i=Us(r,e.id);return(0,hi.jsx)(mi,{...s,disabled:!i.can||t,title:i?.can?a:i?.reason,to:i.url})}n(gi,"ShowAction"),gi.displayName="ShowAction";var ji=require("date-fns"),bi=require("lucide-react"),vi=require("react"),Ni=require("react/jsx-runtime");function yi({column:e,title:r,numberOfMonths:a=2,align:t="start"}){let[s,i]=(0,vi.useState)({from:void 0,to:void 0}),l=new Set(e?.getFilterValue());return(0,vi.useEffect)((()=>{if(s){let r=Object.values(s).filter(Boolean);r.length&&e?.setFilterValue(r.map((e=>e?(0,ji.format)(e,"yyyy-MM-dd").toString():"")))}}),[e,s]),(0,Ni.jsxs)(Gr,{children:[(0,Ni.jsx)(Wr,{asChild:!0,children:(0,Ni.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-0.5",children:[(0,Ni.jsxs)(w,{title:r,variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",children:[(0,Ni.jsx)(bi.FilterIcon,{className:h("h-3.5 w-3.5")}),s?.from?(0,Ni.jsxs)(Ni.Fragment,{children:[(0,Ni.jsx)(wa,{orientation:"vertical",className:"mx-2 h-4"}),(0,Ni.jsx)(be,{variant:"secondary",className:"rounded-sm p-1 h-3.5 text-xs font-normal",children:s.to?(0,Ni.jsx)(Ni.Fragment,{children:[(0,ji.format)(s.from,"LLL dd, y"),(0,ji.format)(s.to,"LLL dd, y")].join(" ")}):(0,ji.format)(s.from,"LLL dd, y")})]}):null]}),l.size>0&&(0,Ni.jsx)(w,{variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",onClick:r=>{r.preventDefault(),e?.setFilterValue(void 0),i({from:void 0,to:void 0})},children:(0,Ni.jsx)(bi.FilterX,{className:h("h-3.5 w-3.5")})})]})}),(0,Ni.jsxs)(Kr,{className:"w-auto p-0",align:t,children:[(0,Ni.jsx)(we,{initialFocus:!0,mode:"range",defaultMonth:new Date,selected:s,onSelect:i,numberOfMonths:a}),l.size>0&&(0,Ni.jsxs)(Ni.Fragment,{children:[(0,Ni.jsx)(wa,{}),(0,Ni.jsx)("div",{className:"flex flex-row items-center justify-center py-3",children:(0,Ni.jsxs)(w,{variant:"outline",size:"sm",className:"h-8 border-dashed px-2",onClick:()=>{e?.setFilterValue(void 0),i({from:void 0,to:void 0})},children:[(0,Ni.jsx)(bi.FilterX,{size:16,className:"mr-2"}),"Clear"]})})]})]})]})}n(yi,"TableFilterDateRangePickerFilter");var wi=require("@radix-ui/react-icons"),Ci=require("lucide-react"),qi=require("react/jsx-runtime");function Si({column:e,title:r,options:a,align:t="start"}){let s=e?.getFacetedUniqueValues(),i=new Set(e?.getFilterValue());return(0,qi.jsxs)(Gr,{children:[(0,qi.jsx)(Wr,{asChild:!0,children:(0,qi.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-0.5",children:[(0,qi.jsxs)(w,{title:r,variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",children:[(0,qi.jsx)(Ci.FilterIcon,{className:h("h-3.5 w-3.5")}),i?.size>0&&(0,qi.jsxs)(qi.Fragment,{children:[(0,qi.jsx)(wa,{orientation:"vertical",className:"mx-2 h-4"}),(0,qi.jsx)(be,{variant:"secondary",className:"rounded-sm p-1 h-3.5 text-xs font-normal lg:hidden",children:i.size}),(0,qi.jsx)("div",{className:"hidden space-x-1 lg:flex",children:i.size>2?(0,qi.jsxs)(be,{variant:"secondary",className:"rounded-sm p-1 text-xs h-3.5 font-normal",children:[i.size," selected"]}):a?.filter((e=>i.has(e.value))).map((e=>(0,qi.jsx)(be,{variant:"secondary",className:"rounded-sm p-1 text-xs h-3.5 font-normal",children:e.label},e.value)))})]})]}),i.size>0&&(0,qi.jsx)(w,{variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",onClick:r=>{r.preventDefault(),e?.setFilterValue(void 0)},children:(0,qi.jsx)(Ci.FilterX,{className:h("h-3.5 w-3.5")})})]})}),(0,qi.jsx)(Kr,{className:"w-[200px] p-0",align:t,children:(0,qi.jsxs)(Ye,{children:[(0,qi.jsx)(Ze,{placeholder:r}),(0,qi.jsxs)(er,{children:[(0,qi.jsx)(rr,{children:"No results found."}),(0,qi.jsx)(ar,{children:a?.map((r=>{let a=i.has(r.value);return(0,qi.jsxs)(sr,{onSelect:()=>{a?i.delete(r.value):i.add(r.value);let t=Array.from(i);e?.setFilterValue(t.length?t:void 0)},children:[(0,qi.jsx)("div",{className:h("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",a?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:(0,qi.jsx)(wi.CheckIcon,{className:h("h-4 w-4")})}),r.icon&&(0,qi.jsx)(r.icon,{className:"mr-2 h-4 w-4 text-muted-foreground"}),(0,qi.jsx)("span",{children:r.label}),s?.get(r.value)&&(0,qi.jsx)("span",{className:"ml-auto flex h-4 w-4 items-center justify-center font-mono text-xs",children:s.get(r.value)})]},r.value)}))}),i.size>0&&(0,qi.jsxs)(qi.Fragment,{children:[(0,qi.jsx)(tr,{}),(0,qi.jsx)(ar,{children:(0,qi.jsx)(sr,{onSelect:()=>e?.setFilterValue(void 0),className:"justify-center text-center",children:"Clear filters"})})]})]})]})})]})}n(Si,"TableFilterDropdown");var ki=require("lucide-react"),Ri=require("react/jsx-runtime");function Ii({column:e,title:r,align:a="start"}){let t=e?.getFilterValue();return(0,Ri.jsxs)(Gr,{children:[(0,Ri.jsx)(Wr,{asChild:!0,children:(0,Ri.jsx)("div",{className:"inline-flex flex-row items-center gap-x-0.5",children:t?(0,Ri.jsx)(w,{variant:"outline",size:"sm",className:"h-5 border-dashed px-1 py-2.5",onClick:r=>{r.preventDefault(),e?.setFilterValue(void 0)},children:(0,Ri.jsx)(ki.FilterX,{className:h("h-3.5 w-3.5")})}):(0,Ri.jsx)(w,{title:r,variant:"outline",size:"sm",className:"h-4 border-dashed px-1 py-2.5",children:(0,Ri.jsx)(ki.FilterIcon,{className:h("h-3.5 w-3.5")})})})}),(0,Ri.jsx)(Kr,{className:"w-[200px] p-0 overflow-hidden border-0 ring-0",align:a,children:(0,Ri.jsxs)("div",{className:"relative",children:[(0,Ri.jsxs)("div",{className:"flex flex-row items-center px-3 text-popover-foreground bg-popover",children:[(0,Ri.jsx)("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"mr-2 h-4 w-4 shrink-0 opacity-50",children:(0,Ri.jsx)("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})}),(0,Ri.jsx)(Hr,{defaultValue:t??"",onChange:r=>{e?.setFilterValue(r.target.value)},className:h("h-10 border-0 focus-visible:ring-0 ring-0 rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground shadow-none disabled:cursor-not-allowed disabled:opacity-50"),placeholder:r})]}),t&&(0,Ri.jsxs)(Ri.Fragment,{children:[(0,Ri.jsx)(wa,{}),(0,Ri.jsx)("div",{className:"flex flex-row items-center justify-center py-3",children:(0,Ri.jsxs)(w,{variant:"outline",size:"sm",className:"h-8 border-dashed px-2",onClick:()=>{e?.setFilterValue(void 0)},children:[(0,Ri.jsx)(ki.FilterX,{size:16,className:"mr-2"}),"Clear"]})})]})]})})]})}n(Ii,"TableFilterSearchColumn");var zi=require("@radix-ui/react-icons"),Di=require("react"),Ti=require("react/jsx-runtime"),Bi=(0,Di.forwardRef)((({table:e,children:r,options:a},t)=>(0,Ti.jsxs)(Ti.Fragment,{children:[(0,Ti.jsx)(Le,{ref:t,checked:e.getIsSomeRowsSelected()?"indeterminate":e.getIsAllPageRowsSelected(),onCheckedChange:r=>e.toggleAllPageRowsSelected(!!r),className:"translate-y-[2px]","aria-label":"Select all"}),r||Array.isArray(a)&&a.length&&(0,Ti.jsxs)(cr,{children:[(0,Ti.jsx)(ur,{asChild:!0,children:(0,Ti.jsx)(w,{disabled:!(e.getIsSomeRowsSelected()||e.getIsAllPageRowsSelected()),size:"icon",variant:"ghost",className:"px-0 w-5",children:(0,Ti.jsx)(zi.DotsVerticalIcon,{className:"w-4 h-4"})})}),(0,Ti.jsxs)(fr,{align:"start",children:[(0,Ti.jsx)(jr,{children:"Bulk Actions"}),(0,Ti.jsx)(br,{}),!r&&Array.isArray(a)&&a?.length>0?a.map(((e,r)=>(0,Ti.jsx)(pr,{onSelect:e.onClick,children:e.label},r))):r]})]})]})));Bi.displayName="CheckAll";var Fi=require("@radix-ui/react-icons"),Pi=require("react/jsx-runtime"),Li=n((({table:e})=>(0,Pi.jsxs)("div",{className:"flex flex-col sm:flex-row gap-y-4 sm-gap-y-0 items-center justify-between",children:[(0,Pi.jsxs)("div",{className:"flex-1 text-sm text-muted-foreground",children:[e.getFilteredSelectedRowModel().rows.length," of"," ",e.getFilteredRowModel().rows.length," row(s) selected."]}),(0,Pi.jsxs)("div",{className:"flex relative flex-col-reverse gap-y-4 sm:gap-y-0 sm:flex-row items-center space-x-6 lg:space-x-8",children:[(0,Pi.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,Pi.jsx)("p",{className:"text-sm font-medium",children:"Rows per page"}),(0,Pi.jsxs)(ua,{value:`${e.getState().pagination.pageSize}`,onValueChange:r=>{e.setPageSize(Number(r))},children:[(0,Pi.jsx)(xa,{className:"h-8 w-[70px]",children:(0,Pi.jsx)(ma,{placeholder:e.getState().pagination.pageSize})}),(0,Pi.jsx)(ha,{children:[10,20,30,40,50].map((e=>(0,Pi.jsx)(ja,{value:`${e}`,children:e},e)))})]})]}),(0,Pi.jsxs)("div",{className:"flex w-fit items-center justify-center text-sm font-medium",children:["Page ",e.getState().pagination.pageIndex+1," of"," ",e.getPageCount()]}),(0,Pi.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,Pi.jsxs)(w,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[(0,Pi.jsx)("span",{className:"sr-only",children:"Go to first page"}),(0,Pi.jsx)(Fi.DoubleArrowLeftIcon,{className:"h-4 w-4"})]}),(0,Pi.jsxs)(w,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[(0,Pi.jsx)("span",{className:"sr-only",children:"Go to previous page"}),(0,Pi.jsx)(Fi.ChevronLeftIcon,{className:"h-4 w-4"})]}),(0,Pi.jsxs)(w,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[(0,Pi.jsx)("span",{className:"sr-only",children:"Go to next page"}),(0,Pi.jsx)(Fi.ChevronRightIcon,{className:"h-4 w-4"})]}),(0,Pi.jsxs)(w,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[(0,Pi.jsx)("span",{className:"sr-only",children:"Go to last page"}),(0,Pi.jsx)(Fi.DoubleArrowRightIcon,{className:"h-4 w-4"})]})]})]})]})),"Pagination");Li.displayName="Pagination";var Ai=require("@radix-ui/react-icons"),Mi=require("react/jsx-runtime"),Oi=n((({column:e})=>(0,Mi.jsx)("div",{className:"cursor-pointer",onClick:()=>{e?.toggleSorting("asc"===e?.getIsSorted())},children:(0,Mi.jsxs)("div",{className:"inline-flex flex-col",children:[(0,Mi.jsx)(Ai.CaretUpIcon,{className:h("-mb-1.5 w-5 h-5","asc"===e?.getIsSorted()?"text-foreground":"text-input")}),(0,Mi.jsx)(Ai.CaretDownIcon,{className:h("-mt-1.5 w-5 h-5","desc"===e?.getIsSorted()?"text-foreground":"text-input")})]})})),"SortAction"),Ei=require("@radix-ui/react-dropdown-menu"),Vi=require("@radix-ui/react-icons"),_i=require("react"),Hi=require("react/jsx-runtime"),$i=n((({table:e})=>{let r=(0,_i.useMemo)((()=>e.getAllColumns().filter((e=>typeof e.accessorFn<"u"&&e.getCanHide()))),[e]);return(0,Hi.jsxs)(cr,{children:[(0,Hi.jsx)(Ei.DropdownMenuTrigger,{asChild:!0,children:(0,Hi.jsxs)(w,{variant:"outline",size:"sm",className:"ml-auto hidden h-8 lg:flex",children:[(0,Hi.jsx)(Vi.MixerHorizontalIcon,{className:"mr-2 h-4 w-4"}),"View"]})}),(0,Hi.jsxs)(fr,{align:"end",className:"w-[150px]",children:[(0,Hi.jsx)(jr,{children:"Toggle columns"}),(0,Hi.jsx)(br,{}),r.map((e=>(0,Hi.jsx)(hr,{className:"capitalize",checked:e.getIsVisible(),onCheckedChange:r=>e.toggleVisibility(r),children:e.id},e.id)))]})]})}),"DataTableViewOptions");$i.displayName="DataTableViewOptions";var Ui=require("react/jsx-runtime");function Qi({table:e}){return(0,Ui.jsxs)("div",{className:"flex items-center justify-between",children:[(0,Ui.jsx)("div",{className:"flex flex-1 items-center space-x-2"}),(0,Ui.jsx)($i,{table:e})]})}n(Qi,"DataTableToolbar");var Gi=require("react"),Wi=require("react/jsx-runtime");function Ki({row:e,resource:r,title:a,disabled:t,onAfterHandle:s,...i}){let{can:l,reason:n}=Ws(r,e.id),o=(0,Gi.useContext)(ri);return(0,Wi.jsx)(mi,{...i,disabled:!l||t,title:l?a:n,onClick:()=>o?.updateData({row:e,resource:r,toogle:!0,onAfterHandle:s})})}n(Ki,"DeleteAction"),Ki.displayName="DeleteAction";var Xi=require("react/jsx-runtime");function Ji({children:e,showHeader:r=!0,columns:a=[],...t}){let s=(0,di.useCallback)((({id:e,accessorKey:r,header:a,enableSorting:t,enableHiding:s,filter:i,cell:l})=>{let n={id:e,header:a,accessorKey:r,enableSorting:t??!1,enableHiding:s??!1,enableColumnFilter:!0,enableResizing:!0,filter:i};return l&&(n.cell=l),n}),[]);a=(0,di.useMemo)((()=>Array.isArray(e)?e.map((e=>e.props)).map(s):[]),[e,s]);let i=(0,ni.useTable)({columns:a,...t}),l=(0,di.useMemo)((()=>i.options),[i]),n=(0,di.useMemo)((()=>!(!l.enableColumnFilters&&!l?.enableFilters)),[l]);return(0,Xi.jsx)(ai,{children:(0,Xi.jsxs)("div",{className:"space-y-4",children:[(0,Xi.jsx)(Qi,{table:i}),(0,Xi.jsx)("div",{className:"rounded-md border border-border",children:(0,Xi.jsxs)(za,{children:[r&&(0,Xi.jsx)(Da,{children:i.getHeaderGroups().map((e=>(0,Xi.jsx)(Fa,{children:e.headers.map((e=>{let r=e.column.columnDef;return(0,Xi.jsx)(Pa,{children:(0,Xi.jsxs)("div",{className:"inline-flex flex-row items-center gap-x-2.5",children:[e.isPlaceholder?null:(0,oi.flexRender)(e.column.columnDef.header,e.getContext()),l.enableSorting&&r.enableSorting&&(0,Xi.jsx)(Oi,{column:e.column}),n&&r?.filter&&r.filter({column:e.column,title:`${r.header} Filter`})]})},e.id)}))},e.id)))}),(0,Xi.jsx)(Ta,{children:i.refineCore.tableQuery.isLoading?(0,Xi.jsx)(Fa,{children:(0,Xi.jsx)(La,{colSpan:a.length,className:"h-24 text-center text-nowrap",children:(0,Xi.jsx)("div",{className:"flex items-center justify-center flex-row",children:(0,Xi.jsx)(li,{className:"h-4 text-primary"})})})}):i.getRowModel().rows?.length?i.getRowModel().rows.map((e=>(0,Xi.jsx)(Fa,{"data-state":e.getIsSelected()&&"selected",children:e.getVisibleCells().map((e=>(0,Xi.jsx)(La,{className:"text-nowrap",children:(0,oi.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)))},e.id))):(0,Xi.jsx)(Fa,{children:(0,Xi.jsx)(La,{colSpan:a.length,className:"h-24 text-center",children:"No results."})})})]})}),(0,Xi.jsx)(Li,{table:i})]})})}n(Ji,"Table");var Yi=n((e=>e.children),"TableColumn");Ji.Column=Yi,Ji.CheckAll=Bi,Ji.Actions=xi,Ji.Action=mi,Ji.EditAction=pi,Ji.ShowAction=gi,Ji.DeleteAction=Ki,Ji.Filter={DateRangePicker:yi,Dropdown:Si,Search:Ii},Ji.displayName="Table";//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy91aS9idXR0b24udHN4IiwgIi4uL3NyYy9saWIvdXRpbHMudHMiLCAiLi4vc3JjL3VpL2xvYWRpbmcudHN4IiwgIi4uL3NyYy9idXR0b25zL2Nsb25lLnRzeCIsICIuLi9zcmMvYnV0dG9ucy9jcmVhdGUudHN4IiwgIi4uL3NyYy9idXR0b25zL2RlbGV0ZS50c3giLCAiLi4vc3JjL3VpL2JyZWFkY3J1bWIudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL2JyZWFkY3J1bWJzLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9saW5rLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9jb21ib2JveC50c3giLCAiLi4vc3JjL3VpL2FsZXJ0LWRpYWxvZy50c3giLCAiLi4vc3JjL3VpL2JhZGdlLnRzeCIsICIuLi9zcmMvdWkvY2FsZW5kYXIudHN4IiwgIi4uL3NyYy91aS9jYXJkLnRzeCIsICIuLi9zcmMvdWkvY2hlY2tib3gudHN4IiwgIi4uL3NyYy91aS9jb21tYW5kLnRzeCIsICIuLi9zcmMvdWkvZGlhbG9nLnRzeCIsICIuLi9zcmMvdWkvZHJvcGRvd24tbWVudS50c3giLCAiLi4vc3JjL3VpL2Zvcm0udHN4IiwgIi4uL3NyYy91aS9sYWJlbC50c3giLCAiLi4vc3JjL3VpL2lucHV0LnRzeCIsICIuLi9zcmMvdWkvcG9wb3Zlci50c3giLCAiLi4vc3JjL3VpL3Jlc2l6YWJsZS50c3giLCAiLi4vc3JjL3VpL3Njcm9sbC1hcmVhLnRzeCIsICIuLi9zcmMvdWkvc2VsZWN0LnRzeCIsICIuLi9zcmMvdWkvc2VwYXJhdG9yLnRzeCIsICIuLi9zcmMvdWkvc29ubmVyLnRzeCIsICIuLi9zcmMvdWkvdGFibGUudHN4IiwgIi4uL3NyYy91aS90ZXh0YXJlYS50c3giLCAiLi4vc3JjL3VpL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL2NvbmZpcm0udHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL2ZpZWxkLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9mb3JtLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9tb2RlVG9nZ2xlLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9wYWdlSGVhZGVyLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9zZWxlY3QudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL3NpZGViYXIudHN4IiwgIi4uL3NyYy9idXR0b25zL2VkaXQudHN4IiwgIi4uL3NyYy9idXR0b25zL2V4cG9ydC50c3giLCAiLi4vc3JjL2J1dHRvbnMvaW1wb3J0LnRzeCIsICIuLi9zcmMvYnV0dG9ucy9saXN0LnRzeCIsICIuLi9zcmMvYnV0dG9ucy9yZWZyZXNoLnRzeCIsICIuLi9zcmMvYnV0dG9ucy9zYXZlLnRzeCIsICIuLi9zcmMvYnV0dG9ucy9zaG93LnRzeCIsICIuLi9zcmMvY3VyZHMvY3JlYXRlLnRzeCIsICIuLi9zcmMvY3VyZHMvZWRpdC50c3giLCAiLi4vc3JjL2N1cmRzL2xpc3QudHN4IiwgIi4uL3NyYy9jdXJkcy9zaG93L2luZGV4LnRzeCIsICIuLi9zcmMvY3VyZHMvc2hvdy9yb3cudHN4IiwgIi4uL3NyYy9wcm92aWRlcnMvdGhlbWUtcHJvdmlkZXIudHN4IiwgIi4uL3NyYy9sYXlvdXRzL2Jhc2UudHN4IiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AcmVhY3QtaG9vay9tZWRpYS1xdWVyeS9kaXN0L21vZHVsZS9pbmRleC5qcyIsICIuLi9zcmMvbGF5b3V0cy9kZWZhdWx0LnRzeCIsICIuLi9zcmMvcHJvdmlkZXJzL25vdGlmaWNhdGlvblByb3ZpZGVyLnRzIiwgIi4uL3NyYy9ob29rcy91c2VHZXRFZGl0VXJsLnRzeCIsICIuLi9zcmMvaG9va3MvdXNlR2V0U2hvd1VybC50c3giLCAiLi4vc3JjL2hvb2tzL3VzZURlbGV0ZUhlbHBlci50c3giLCAiLi4vc3JjL2hvb2tzL3VzZU9uQmFjay50c3giLCAiLi4vc3JjL3Byb3ZpZGVycy9kZWxldGVQcm92aWRlci50c3giLCAiLi4vc3JjL2NvbXBvbmVudHMvbG9hZGVyLnRzeCIsICIuLi9zcmMvdGFibGUvaW5kZXgudHN4IiwgIi4uL3NyYy90YWJsZS9hY3Rpb25zL2luZGV4LnRzeCIsICIuLi9zcmMvdGFibGUvYWN0aW9ucy9lZGl0LnRzeCIsICIuLi9zcmMvdGFibGUvYWN0aW9ucy9zaG93LnRzeCIsICIuLi9zcmMvdGFibGUvZmllbGRzL3RhYmxlLWZpbHRlci1kYXRlLXJhbmdlLXBpY2tlci50c3giLCAiLi4vc3JjL3RhYmxlL2ZpZWxkcy90YWJsZS1maWx0ZXItZHJvcGRvd24udHN4IiwgIi4uL3NyYy90YWJsZS9maWVsZHMvdGFibGUtZmlsdGVyLXNlYXJjaC1jb2x1bW4udHN4IiwgIi4uL3NyYy90YWJsZS9maWVsZHMvY2hlY2thbGwudHN4IiwgIi4uL3NyYy90YWJsZS9maWVsZHMvcGFnaW5hdGlvbi50c3giLCAiLi4vc3JjL3RhYmxlL2ZpZWxkcy9zb3J0LnRzeCIsICIuLi9zcmMvdGFibGUvdG9vbGJhci90YWJsZS12aWV3LW9wdGlvbnMtZHJvcGRvd24udHN4IiwgIi4uL3NyYy90YWJsZS90b29sYmFyL2luZGV4LnRzeCIsICIuLi9zcmMvdGFibGUvYWN0aW9ucy9kZWxldGUudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBmcm9tIFwiLi9idXR0b25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jdXJkc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGF5b3V0c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvdmlkZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YWJsZVwiO1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBMb2FkaW5nSWNvbiB9IGZyb20gXCIuL2xvYWRpbmdcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgIHtcbiAgICAgICAgdmFyaWFudHM6IHtcbiAgICAgICAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgc2hhZG93IGhvdmVyOmJnLXByaW1hcnkvOTBcIixcbiAgICAgICAgICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICAgICAgICAgICAgXCJiZy1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgc2hhZG93LXNtIGhvdmVyOmJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgICAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICAgICAgICAgICAgXCJib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgc2hhZG93LXNtIGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OlxuICAgICAgICAgICAgICAgICAgICBcImJnLXNlY29uZGFyeSB0ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIHNoYWRvdy1zbSBob3ZlcjpiZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgICAgICAgICBnaG9zdDogXCJob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgICAgICAgIGxpbms6IFwidGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaXplOiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogXCJoLTkgcHgtNCBweS0yXCIsXG4gICAgICAgICAgICAgICAgc206IFwiaC04IHJvdW5kZWQtbWQgcHgtMyB0ZXh0LXhzXCIsXG4gICAgICAgICAgICAgICAgbGc6IFwiaC0xMCByb3VuZGVkLW1kIHB4LThcIixcbiAgICAgICAgICAgICAgICBpY29uOiBcImgtOSB3LTlcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICAgICAgfSxcbiAgICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICAgIGV4dGVuZHMgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgICAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gICAgYXNDaGlsZD86IGJvb2xlYW47XG4gICAgbG9hZGluZz86IGJvb2xlYW47XG4gICAgaWNvbj86IFJlYWN0LlJlYWN0RWxlbWVudDxTVkdTVkdFbGVtZW50Pjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAgIChcbiAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgdmFyaWFudCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBpY29uID0gbnVsbCxcbiAgICAgICAgICAgIGxvYWRpbmcgPSBmYWxzZSxcbiAgICAgICAgICAgIGFzQ2hpbGQgPSBmYWxzZSxcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9LFxuICAgICAgICByZWYsXG4gICAgKSA9PiB7XG4gICAgICAgIGRpc2FibGVkID0gZGlzYWJsZWQgfHwgbG9hZGluZztcbiAgICAgICAgY29uc3QgSWNvbiA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGljb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGljb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbG9hZGluZyA/IDxMb2FkaW5nSWNvbiBjbGFzc05hbWU9XCJtci0yXCIgLz4gOiBudWxsO1xuICAgICAgICB9LCBbaWNvbiwgbG9hZGluZ10pO1xuICAgICAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbXBcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX1cbiAgICAgICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtzaXplID09PSBcImljb25cIiA/IChcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQ29tcD5cbiAgICAgICAgKTtcbiAgICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgeyBjbHN4LCB0eXBlIENsYXNzVmFsdWUgfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgdHdNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufVxuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBMdWNpZGVQcm9wcywgUmVmcmVzaEN3SWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IExvYWRpbmdJY29uID0gUmVhY3QuZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oXG4gICAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxSZWZyZXNoQ3dJY29uXG4gICAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcImgtNCB3LTQgYW5pbWF0ZS1zcGluXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICB9LFxuKTtcbiIsICJpbXBvcnQgeyBDbG9uZUJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlQ2xvbmVCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBDb3B5UGx1cyB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IENsb25lQnV0dG9uOiBGQzxDbG9uZUJ1dHRvblByb3BzPiA9ICh7XG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIG9uQ2xpY2ssXG4gICAgY2hpbGRyZW4sXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IHRvLCBMaW5rQ29tcG9uZW50LCBsYWJlbCwgZGlzYWJsZWQsIGhpZGRlbiwgdGl0bGUgfSA9XG4gICAgICAgIHVzZUNsb25lQnV0dG9uKHtcbiAgICAgICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgICAgICByZXNvdXJjZTogcmVzb3VyY2UsXG4gICAgICAgICAgICBhY2Nlc3NDb250cm9sOiBhY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgbWV0YTogbWV0YSxcbiAgICAgICAgfSk7XG5cbiAgICBpZiAoaGlkZGVuKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxMaW5rQ29tcG9uZW50XG4gICAgICAgICAgICB0bz17dG99XG4gICAgICAgICAgICByZXBsYWNlPXtmYWxzZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhlOiBSZWFjdC5Qb2ludGVyRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2soZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgICAgICAgICAgaWNvbj17PENvcHlQbHVzIGNsYXNzTmFtZT1cIm1yLTIgdy00IGgtNFwiIC8+fVxuICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9MaW5rQ29tcG9uZW50PlxuICAgICk7XG59O1xuXG5DbG9uZUJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQ2xvbmVCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBDcmVhdGVCdXR0b25Qcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZUNyZWF0ZUJ1dHRvbiB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IFNxdWFyZVBsdXNJY29uIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBGQyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlQnV0dG9uOiBGQzxDcmVhdGVCdXR0b25Qcm9wcz4gPSAoe1xuICAgIHJlc291cmNlLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIG9uQ2xpY2ssXG4gICAgY2hpbGRyZW4sXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IGhpZGRlbiwgZGlzYWJsZWQsIGxhYmVsLCB0aXRsZSwgTGlua0NvbXBvbmVudCwgdG8gfSA9XG4gICAgICAgIHVzZUNyZWF0ZUJ1dHRvbih7XG4gICAgICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgICAgIGFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICBtZXRhLFxuICAgICAgICB9KTtcblxuICAgIGlmIChoaWRkZW4pIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxMaW5rQ29tcG9uZW50XG4gICAgICAgICAgICB0bz17dG99XG4gICAgICAgICAgICByZXBsYWNlPXtmYWxzZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhlOiBSZWFjdC5Qb2ludGVyRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2soZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgICAgICAgICAgaWNvbj17PFNxdWFyZVBsdXNJY29uIGNsYXNzTmFtZT1cIm1yLTIgdy00IGgtNFwiIC8+fVxuICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9MaW5rQ29tcG9uZW50PlxuICAgICk7XG59O1xuXG5DcmVhdGVCdXR0b24uZGlzcGxheU5hbWUgPSBcIkNyZWF0ZUJ1dHRvblwiO1xuIiwgImltcG9ydCB7IERlbGV0ZUJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlRGVsZXRlQnV0dG9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgVHJhc2gySWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbmZpcm1EaWFsb2cgfSBmcm9tIFwiQC9jb21wb25lbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVCdXR0b246IEZDPERlbGV0ZUJ1dHRvblByb3BzPiA9ICh7XG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIG9uU3VjY2VzcyxcbiAgICBtdXRhdGlvbk1vZGU6IG11dGF0aW9uTW9kZVByb3AsXG4gICAgY29uZmlybVRpdGxlLFxuICAgIGNvbmZpcm1EZXNjcmlwdGlvbixcbiAgICBzdWNjZXNzTm90aWZpY2F0aW9uLFxuICAgIGVycm9yTm90aWZpY2F0aW9uLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIGRhdGFQcm92aWRlck5hbWUsXG4gICAgY29uZmlybU9rVGV4dCxcbiAgICBjb25maXJtQ2FuY2VsVGV4dCxcbiAgICBpbnZhbGlkYXRlcyxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBoaWRkZW4sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBjb25maXJtVGl0bGU6IGRlZmF1bHRDb25maXJtVGl0bGUsXG4gICAgICAgIGNvbmZpcm1Pa0xhYmVsOiBkZWZhdWx0Q29uZmlybU9rTGFiZWwsXG4gICAgICAgIGNhbmNlbExhYmVsOiBkZWZhdWx0Q2FuY2VsTGFiZWwsXG4gICAgICAgIG9uQ29uZmlybSxcbiAgICB9ID0gdXNlRGVsZXRlQnV0dG9uKHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgIGRhdGFQcm92aWRlck5hbWUsXG4gICAgICAgIGludmFsaWRhdGVzLFxuICAgICAgICBtZXRhLFxuICAgICAgICBvblN1Y2Nlc3MsXG4gICAgICAgIG11dGF0aW9uTW9kZTogbXV0YXRpb25Nb2RlUHJvcCxcbiAgICAgICAgZXJyb3JOb3RpZmljYXRpb24sXG4gICAgICAgIHN1Y2Nlc3NOb3RpZmljYXRpb24sXG4gICAgICAgIGFjY2Vzc0NvbnRyb2wsXG4gICAgfSk7XG5cbiAgICBpZiAoaGlkZGVuKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb25maXJtRGlhbG9nXG4gICAgICAgICAgICBva1RleHQ9e2NvbmZpcm1Pa1RleHQgPz8gZGVmYXVsdENvbmZpcm1Pa0xhYmVsfVxuICAgICAgICAgICAgY2FuY2VsVGV4dD17Y29uZmlybUNhbmNlbFRleHQgPz8gZGVmYXVsdENhbmNlbExhYmVsfVxuICAgICAgICAgICAgb2tCdXR0b25WYXJpYW50PXtcImRlc3RydWN0aXZlXCJ9XG4gICAgICAgICAgICBjYW5jZWxCdXR0b25WYXJpYW50PXtcIm91dGxpbmVcIn1cbiAgICAgICAgICAgIHRpdGxlPXtjb25maXJtVGl0bGUgPz8gZGVmYXVsdENvbmZpcm1UaXRsZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtjb25maXJtRGVzY3JpcHRpb259XG4gICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25Db25maXJtPXtvbkNvbmZpcm19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgICAgICAgaWNvbj17PFRyYXNoMkljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHshaGlkZVRleHQgJiYgKGNoaWxkcmVuID8/IGxhYmVsKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0NvbmZpcm1EaWFsb2c+XG4gICAgKTtcbn07XG5cbkRlbGV0ZUJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiRGVsZXRlQnV0dG9uXCI7XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IENoZXZyb25SaWdodEljb24sIERvdHNIb3Jpem9udGFsSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIlxuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgQnJlYWRjcnVtYiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8XCJuYXZcIj4gJiB7XG4gICAgc2VwYXJhdG9yPzogUmVhY3QuUmVhY3ROb2RlXG4gIH1cbj4oKHsgLi4ucHJvcHMgfSwgcmVmKSA9PiA8bmF2IHJlZj17cmVmfSBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiIHsuLi5wcm9wc30gLz4pXG5CcmVhZGNydW1iLmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iXCJcblxuY29uc3QgQnJlYWRjcnVtYkxpc3QgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MT0xpc3RFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8XCJvbFwiPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8b2xcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBicmVhay13b3JkcyB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBzbTpnYXAtMi41XCIsXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5CcmVhZGNydW1iTGlzdC5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYkxpc3RcIlxuXG5jb25zdCBCcmVhZGNydW1iSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxMSUVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjxcImxpXCI+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxsaVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5CcmVhZGNydW1iSXRlbS5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYkl0ZW1cIlxuXG5jb25zdCBCcmVhZGNydW1iTGluayA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxBbmNob3JFbGVtZW50LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8XCJhXCI+ICYge1xuICAgIGFzQ2hpbGQ/OiBib29sZWFuXG4gIH1cbj4oKHsgYXNDaGlsZCwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJhXCJcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJ0cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59KVxuQnJlYWRjcnVtYkxpbmsuZGlzcGxheU5hbWUgPSBcIkJyZWFkY3J1bWJMaW5rXCJcblxuY29uc3QgQnJlYWRjcnVtYlBhZ2UgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MU3BhbkVsZW1lbnQsXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjxcInNwYW5cIj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHNwYW5cbiAgICByZWY9e3JlZn1cbiAgICByb2xlPVwibGlua1wiXG4gICAgYXJpYS1kaXNhYmxlZD1cInRydWVcIlxuICAgIGFyaWEtY3VycmVudD1cInBhZ2VcIlxuICAgIGNsYXNzTmFtZT17Y24oXCJmb250LW5vcm1hbCB0ZXh0LWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQnJlYWRjcnVtYlBhZ2UuZGlzcGxheU5hbWUgPSBcIkJyZWFkY3J1bWJQYWdlXCJcblxuY29uc3QgQnJlYWRjcnVtYlNlcGFyYXRvciA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImxpXCI+KSA9PiAoXG4gIDxsaVxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3NOYW1lPXtjbihcIlsmPnN2Z106c2l6ZS0zLjVcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW4gPz8gPENoZXZyb25SaWdodEljb24gLz59XG4gIDwvbGk+XG4pXG5CcmVhZGNydW1iU2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gXCJCcmVhZGNydW1iU2VwYXJhdG9yXCJcblxuY29uc3QgQnJlYWRjcnVtYkVsbGlwc2lzID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJzcGFuXCI+KSA9PiAoXG4gIDxzcGFuXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzc05hbWU9e2NuKFwiZmxleCBoLTkgdy05IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxEb3RzSG9yaXpvbnRhbEljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPk1vcmU8L3NwYW4+XG4gIDwvc3Bhbj5cbilcbkJyZWFkY3J1bWJFbGxpcHNpcy5kaXNwbGF5TmFtZSA9IFwiQnJlYWRjcnVtYkVsaXBzc2lzXCJcblxuZXhwb3J0IHtcbiAgQnJlYWRjcnVtYixcbiAgQnJlYWRjcnVtYkxpc3QsXG4gIEJyZWFkY3J1bWJJdGVtLFxuICBCcmVhZGNydW1iTGluayxcbiAgQnJlYWRjcnVtYlBhZ2UsXG4gIEJyZWFkY3J1bWJTZXBhcmF0b3IsXG4gIEJyZWFkY3J1bWJFbGxpcHNpcyxcbn1cbiIsICJpbXBvcnQge1xuICAgIEJyZWFkY3J1bWIsXG4gICAgQnJlYWRjcnVtYkl0ZW0sXG4gICAgQnJlYWRjcnVtYkxpbmssXG4gICAgQnJlYWRjcnVtYkxpc3QsXG4gICAgQnJlYWRjcnVtYlBhZ2UsXG4gICAgQnJlYWRjcnVtYlNlcGFyYXRvcixcbn0gZnJvbSBcIkAvdWkvYnJlYWRjcnVtYlwiO1xuaW1wb3J0IHtcbiAgICBtYXRjaFJlc291cmNlRnJvbVJvdXRlLFxuICAgIHVzZUJyZWFkY3J1bWIsXG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgUmVmaW5lQnJlYWRjcnVtYlByb3BzIH0gZnJvbSBcIkByZWZpbmVkZXYvdWktdHlwZXNcIjtcbmltcG9ydCB7IEZDLCBGcmFnbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmtcIjtcbmltcG9ydCB7IEhvbWVJY29uIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuZXhwb3J0IHR5cGUgQnJlYWRjcnVtYlByb3BzID0gUmVmaW5lQnJlYWRjcnVtYlByb3BzO1xuXG5leHBvcnQgY29uc3QgQnJlYWRjcnVtYnM6IEZDPEJyZWFkY3J1bWJQcm9wcz4gPSAoeyBzaG93SG9tZSA9IHRydWUsIG1ldGEgfSkgPT4ge1xuICAgIGNvbnN0IHsgYnJlYWRjcnVtYnMgfSA9IHVzZUJyZWFkY3J1bWIoe1xuICAgICAgICBtZXRhLFxuICAgIH0pO1xuXG4gICAgY29uc3QgeyBoYXNEYXNoYm9hcmQgfSA9IHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IHsgcmVzb3VyY2VzIH0gPSB1c2VSZXNvdXJjZSgpO1xuXG4gICAgY29uc3QgZGFzaGJvYXJkUmVzb3VyY2UgPSByZXNvdXJjZXNbMF07XG5cbiAgICBjb25zdCByb290Um91dGVSZXNvdXJjZSA9IG1hdGNoUmVzb3VyY2VGcm9tUm91dGUoXCIvXCIsIHJlc291cmNlcyk7XG5cbiAgICBjb25zdCBCcmVhZENydW1iSXRlbXMgPSBicmVhZGNydW1icy5tYXAoKHsgbGFiZWwsIGhyZWYgfSwga2V5KSA9PiAoXG4gICAgICAgIDxGcmFnbWVudCBrZXk9e2tleX0+XG4gICAgICAgICAgICA8QnJlYWRjcnVtYkl0ZW0+XG4gICAgICAgICAgICAgICAge2hyZWYgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxCcmVhZGNydW1iTGluayBhc0NoaWxkIGhyZWY9e2AjeGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPExpbmsgaHJlZj17aHJlZn0+e2xhYmVsfTwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9CcmVhZGNydW1iTGluaz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8QnJlYWRjcnVtYlBhZ2U+e2xhYmVsfTwvQnJlYWRjcnVtYlBhZ2U+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQnJlYWRjcnVtYkl0ZW0+XG4gICAgICAgICAgICB7a2V5IDwgYnJlYWRjcnVtYnMubGVuZ3RoIC0gMSAmJiA8QnJlYWRjcnVtYlNlcGFyYXRvciAvPn1cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICApKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxCcmVhZGNydW1iPlxuICAgICAgICAgICAgPEJyZWFkY3J1bWJMaXN0PlxuICAgICAgICAgICAgICAgIHtzaG93SG9tZSB8fCBoYXNEYXNoYm9hcmQgfHwgcm9vdFJvdXRlUmVzb3VyY2UuZm91bmQgPyAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnJlYWRjcnVtYkl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJyZWFkY3J1bWJMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2Rhc2hib2FyZFJlc291cmNlLmxpc3Q/LnRvU3RyaW5nKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkUmVzb3VyY2U/Lm1ldGE/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRSZXNvdXJjZS5uYW1lID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRhc2hib2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtkYXNoYm9hcmRSZXNvdXJjZS5saXN0Py50b1N0cmluZygpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFJlc291cmNlPy5tZXRhPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFJlc291cmNlLm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRhc2hib2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkYXNoYm9hcmRSZXNvdXJjZT8ubWV0YT8uaWNvbiA/PyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvbWVJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnJlYWRjcnVtYkxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JyZWFkY3J1bWJJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJyZWFkY3J1bWJTZXBhcmF0b3IgLz5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAge0JyZWFkQ3J1bWJJdGVtc31cbiAgICAgICAgICAgIDwvQnJlYWRjcnVtYkxpc3Q+XG4gICAgICAgIDwvQnJlYWRjcnVtYj5cbiAgICApO1xufTtcbiIsICJpbXBvcnQgeyBMYXlvdXRSZXNvdXJjZSB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyB1c2VMaW5rLCB1c2VSb3V0ZXJDb250ZXh0LCB1c2VSb3V0ZXJUeXBlIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIExpbmtQcm9wcyA9IExheW91dFJlc291cmNlW1wibGlua1wiXSAmIHtcbiAgICBhc0NoaWxkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBMaW5rID0gZm9yd2FyZFJlZjxIVE1MQW5jaG9yRWxlbWVudCwgTGlua1Byb3BzPihcbiAgICAoeyBjaGlsZHJlbiwgaHJlZiwgdGl0bGUsIGNsYXNzTmFtZSwgYXNDaGlsZCB9LCByZWYpID0+IHtcbiAgICAgICAgY29uc3QgeyBMaW5rOiBMZWdhY3lMaW5rIH0gPSB1c2VSb3V0ZXJDb250ZXh0KCk7XG4gICAgICAgIGNvbnN0IHJvdXRlclR5cGUgPSB1c2VSb3V0ZXJUeXBlKCk7XG4gICAgICAgIGNvbnN0IExpbmsgPSB1c2VMaW5rKCk7XG5cbiAgICAgICAgY29uc3QgQWN0aXZlTGluayA9IHJvdXRlclR5cGUgPT09IFwibGVnYWN5XCIgPyBMZWdhY3lMaW5rIDogTGluaztcbiAgICAgICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogQWN0aXZlTGluaztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbXAgcmVmPXtyZWZ9IHRvPXtocmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gdGl0bGU9e3RpdGxlfT5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L0NvbXA+XG4gICAgICAgICk7XG4gICAgfSxcbik7XG5cbkxpbmsuZGlzcGxheU5hbWUgPSBcIkxpbmtcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHtcbiAgICBDYWxlbmRhckljb24sXG4gICAgRW52ZWxvcGVDbG9zZWRJY29uLFxuICAgIEZhY2VJY29uLFxuICAgIEdlYXJJY29uLFxuICAgIFBlcnNvbkljb24sXG4gICAgUm9ja2V0SWNvbixcbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHsgQ2FyZXRTb3J0SWNvbiwgQ2hlY2tJY29uIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHtcbiAgICBCdXR0b24sXG4gICAgQ29tbWFuZCxcbiAgICBDb21tYW5kRW1wdHksXG4gICAgQ29tbWFuZEdyb3VwLFxuICAgIENvbW1hbmRJbnB1dCxcbiAgICBDb21tYW5kSXRlbSxcbiAgICBDb21tYW5kTGlzdCxcbiAgICBDb21tYW5kU2VwYXJhdG9yLFxuICAgIENvbW1hbmRTaG9ydGN1dCxcbiAgICBGb3JtQ29udHJvbCxcbiAgICBQb3BvdmVyLFxuICAgIFBvcG92ZXJDb250ZW50LFxuICAgIFBvcG92ZXJUcmlnZ2VyLFxuICAgIFNjcm9sbEFyZWEsXG59IGZyb20gXCJAL3VpXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9uLCBCYXNlUmVjb3JkLCBVc2VTZWxlY3RSZXR1cm5UeXBlIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICB1c2VTdGF0ZSxcbiAgICB0eXBlIEVsZW1lbnRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIENvbWJvYm94UHJvcHMgPSBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbW1hbmQ+ICZcbiAgICBQaWNrPFVzZVNlbGVjdFJldHVyblR5cGU8QmFzZU9wdGlvbiwgYW55PiwgXCJvcHRpb25zXCI+ICYge1xuICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICAgICAgZW1wdHlNZXNzYWdlPzogc3RyaW5nO1xuICAgICAgICBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSA9PiB2b2lkO1xuICAgICAgICB2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IEJhc2VSZWNvcmQ7XG4gICAgICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICB9O1xuXG5leHBvcnQgY29uc3QgQ29tYm9ib3ggPSBmb3J3YXJkUmVmPEVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmQ+LCBDb21ib2JveFByb3BzPihcbiAgICAoeyAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAgICAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wcy52YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBcImlkXCIgaW4gcHJvcHMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLnZhbHVlIGFzIEJhc2VSZWNvcmQpLmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJvcHMudmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxQb3BvdmVyIG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17b3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInctZnVsbCBzbTp3LVsyNTBweF0gZmxleCBqdXN0aWZ5LWJldHdlZW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXZhbHVlKCkgJiYgXCJ0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHMub3B0aW9ucz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHMucGxhY2Vob2xkZXIgPz8gXCJTZWxlY3RcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZXRTb3J0SWNvbiBjbGFzc05hbWU9XCJtbC0yIGgtNCB3LTQgc2hyaW5rLTAgb3BhY2l0eS01MFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBjbGFzc05hbWU9XCJ3LWZ1bGwgbWF4LXctZnVsbCBzbTp3LVsyNTBweF0gcC0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxDb21tYW5kIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIHNoYWRvdy1tZFwiIHJlZj17cmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kSW5wdXQgcGxhY2Vob2xkZXI9XCJUeXBlIGEgY29tbWFuZCBvciBzZWFyY2guLi5cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRMaXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kRW1wdHk+Tm8gcmVzdWx0cyBmb3VuZC48L0NvbW1hbmRFbXB0eT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29tbWFuZEdyb3VwIGhlYWRpbmc9XCJTdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2Nyb2xsQXJlYSBjbGFzc05hbWU9XCJtYXgtaC01MiBvdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5vcHRpb25zPy5tYXAoKG9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm9uQ2hhbmdlPy4ob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1sLWF1dG8gaC00IHctNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwib3BhY2l0eS0wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TY3JvbGxBcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZEdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Db21tYW5kTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPC9Db21tYW5kPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICk7XG4gICAgfSxcbik7XG5cbkNvbWJvYm94LmRpc3BsYXlOYW1lID0gXCJDb21ib2JveFwiO1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0ICogYXMgQWxlcnREaWFsb2dQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1hbGVydC1kaWFsb2dcIjtcbmltcG9ydCB7IFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwic3JjL3VpL2J1dHRvblwiO1xuXG5jb25zdCBBbGVydERpYWxvZyA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nVHJpZ2dlciA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nUG9ydGFsID0gQWxlcnREaWFsb2dQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBBbGVydERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8QWxlcnREaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJmaXhlZCBpbnNldC0wIHotNTAgYmctYmxhY2svODAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTBcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ092ZXJsYXkuZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5PdmVybGF5LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBBbGVydERpYWxvZ0NvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8QWxlcnREaWFsb2dQb3J0YWw+XG4gICAgICAgIDxBbGVydERpYWxvZ092ZXJsYXkgLz5cbiAgICAgICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICBcImZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIHotNTAgZ3JpZCB3LWZ1bGwgbWF4LXctbGcgdHJhbnNsYXRlLXgtWy01MCVdIHRyYW5zbGF0ZS15LVstNTAlXSBnYXAtNCBib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnIGR1cmF0aW9uLTIwMCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tbGVmdC0xLzIgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tdG9wLVs0OCVdIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tbGVmdC0xLzIgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS10b3AtWzQ4JV0gc206cm91bmRlZC1sZ1wiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgPC9BbGVydERpYWxvZ1BvcnRhbD5cbikpO1xuQWxlcnREaWFsb2dDb250ZW50LmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dIZWFkZXIgPSAoe1xuICAgIGNsYXNzTmFtZSxcbiAgICAuLi5wcm9wc1xufTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMiB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnRcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuQWxlcnREaWFsb2dIZWFkZXIuZGlzcGxheU5hbWUgPSBcIkFsZXJ0RGlhbG9nSGVhZGVyXCI7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nRm9vdGVyID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgLi4ucHJvcHNcbn06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiZmxleCBmbGV4LWNvbC1yZXZlcnNlIHNtOmZsZXgtcm93IHNtOmp1c3RpZnktZW5kIHNtOnNwYWNlLXgtMlwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbik7XG5BbGVydERpYWxvZ0Zvb3Rlci5kaXNwbGF5TmFtZSA9IFwiQWxlcnREaWFsb2dGb290ZXJcIjtcblxuY29uc3QgQWxlcnREaWFsb2dUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGU+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLlRpdGxlXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1sZyBmb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ1RpdGxlLmRpc3BsYXlOYW1lID0gQWxlcnREaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nRGVzY3JpcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkRlc2NyaXB0aW9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ0Rlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID1cbiAgICBBbGVydERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgQWxlcnREaWFsb2dBY3Rpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj4gJlxuICAgICAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkFjdGlvbj4gJlxuICAgICAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPlxuPigoeyBjbGFzc05hbWUsIHZhcmlhbnQgPSBcImRlZmF1bHRcIiwgc2l6ZSA9IFwiZGVmYXVsdFwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8QWxlcnREaWFsb2dQcmltaXRpdmUuQWN0aW9uXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgYnV0dG9uVmFyaWFudHMoe1xuICAgICAgICAgICAgICAgIHZhcmlhbnQsXG4gICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbikpO1xuQWxlcnREaWFsb2dBY3Rpb24uZGlzcGxheU5hbWUgPSBBbGVydERpYWxvZ1ByaW1pdGl2ZS5BY3Rpb24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IEFsZXJ0RGlhbG9nQ2FuY2VsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+ICZcbiAgICAgICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBbGVydERpYWxvZ1ByaW1pdGl2ZS5DYW5jZWw+ICZcbiAgICAgICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCB2YXJpYW50ID0gXCJvdXRsaW5lXCIsIHNpemUgPSBcImRlZmF1bHRcIiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbFxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSB9KSxcbiAgICAgICAgICAgIFwibXQtMiBzbTptdC0wXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5BbGVydERpYWxvZ0NhbmNlbC5kaXNwbGF5TmFtZSA9IEFsZXJ0RGlhbG9nUHJpbWl0aXZlLkNhbmNlbC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgICBBbGVydERpYWxvZyxcbiAgICBBbGVydERpYWxvZ0FjdGlvbixcbiAgICBBbGVydERpYWxvZ0NhbmNlbCxcbiAgICBBbGVydERpYWxvZ0NvbnRlbnQsXG4gICAgQWxlcnREaWFsb2dEZXNjcmlwdGlvbixcbiAgICBBbGVydERpYWxvZ0Zvb3RlcixcbiAgICBBbGVydERpYWxvZ0hlYWRlcixcbiAgICBBbGVydERpYWxvZ092ZXJsYXksXG4gICAgQWxlcnREaWFsb2dQb3J0YWwsXG4gICAgQWxlcnREaWFsb2dUaXRsZSxcbiAgICBBbGVydERpYWxvZ1RyaWdnZXIsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgYmFkZ2VWYXJpYW50cyA9IGN2YShcbiAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgcHgtMi41IHB5LTAuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJpbmcgZm9jdXM6cmluZy1vZmZzZXQtMlwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBcImJvcmRlci10cmFuc3BhcmVudCBiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHNoYWRvdyBob3ZlcjpiZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTpcbiAgICAgICAgICBcImJvcmRlci10cmFuc3BhcmVudCBiZy1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJib3JkZXItdHJhbnNwYXJlbnQgYmctZGVzdHJ1Y3RpdmUgdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHNoYWRvdyBob3ZlcjpiZy1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICBvdXRsaW5lOiBcInRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfVxuKVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBiYWRnZVZhcmlhbnRzPiB7fVxuXG5mdW5jdGlvbiBCYWRnZSh7IGNsYXNzTmFtZSwgdmFyaWFudCwgLi4ucHJvcHMgfTogQmFkZ2VQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApXG59XG5cbmV4cG9ydCB7IEJhZGdlLCBiYWRnZVZhcmlhbnRzIH1cbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDaGV2cm9uTGVmdEljb24sIENoZXZyb25SaWdodEljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5pbXBvcnQgeyBEYXlQaWNrZXIgfSBmcm9tIFwicmVhY3QtZGF5LXBpY2tlclwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwic3JjL3VpL2J1dHRvblwiO1xuXG5leHBvcnQgdHlwZSBDYWxlbmRhclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERheVBpY2tlcj47XG5cbmZ1bmN0aW9uIENhbGVuZGFyKHtcbiAgICBjbGFzc05hbWUsXG4gICAgY2xhc3NOYW1lcyxcbiAgICBzaG93T3V0c2lkZURheXMgPSB0cnVlLFxuICAgIC4uLnByb3BzXG59OiBDYWxlbmRhclByb3BzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPERheVBpY2tlclxuICAgICAgICAgICAgc2hvd091dHNpZGVEYXlzPXtzaG93T3V0c2lkZURheXN9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicC0zXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgICAgICAgICAgbW9udGhzOiBcImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgc3BhY2UteS00IHNtOnNwYWNlLXgtNCBzbTpzcGFjZS15LTBcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCJzcGFjZS15LTRcIixcbiAgICAgICAgICAgICAgICBjYXB0aW9uOiBcImZsZXgganVzdGlmeS1jZW50ZXIgcHQtMSByZWxhdGl2ZSBpdGVtcy1jZW50ZXJcIixcbiAgICAgICAgICAgICAgICBjYXB0aW9uX2xhYmVsOiBcInRleHQtc20gZm9udC1tZWRpdW1cIixcbiAgICAgICAgICAgICAgICBuYXY6IFwic3BhY2UteC0xIGZsZXggaXRlbXMtY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgbmF2X2J1dHRvbjogY24oXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudDogXCJvdXRsaW5lXCIgfSksXG4gICAgICAgICAgICAgICAgICAgIFwiaC03IHctNyBiZy10cmFuc3BhcmVudCBwLTAgb3BhY2l0eS01MCBob3ZlcjpvcGFjaXR5LTEwMFwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbmF2X2J1dHRvbl9wcmV2aW91czogXCJhYnNvbHV0ZSBsZWZ0LTFcIixcbiAgICAgICAgICAgICAgICBuYXZfYnV0dG9uX25leHQ6IFwiYWJzb2x1dGUgcmlnaHQtMVwiLFxuICAgICAgICAgICAgICAgIHRhYmxlOiBcInctZnVsbCBib3JkZXItY29sbGFwc2Ugc3BhY2UteS0xXCIsXG4gICAgICAgICAgICAgICAgaGVhZF9yb3c6IFwiZmxleFwiLFxuICAgICAgICAgICAgICAgIGhlYWRfY2VsbDpcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgcm91bmRlZC1tZCB3LTggZm9udC1ub3JtYWwgdGV4dC1bMC44cmVtXVwiLFxuICAgICAgICAgICAgICAgIHJvdzogXCJmbGV4IHctZnVsbCBtdC0yXCIsXG4gICAgICAgICAgICAgICAgY2VsbDogY24oXG4gICAgICAgICAgICAgICAgICAgIFwicmVsYXRpdmUgcC0wIHRleHQtY2VudGVyIHRleHQtc20gZm9jdXMtd2l0aGluOnJlbGF0aXZlIGZvY3VzLXdpdGhpbjp6LTIwIFsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpiZy1hY2NlbnQgWyY6aGFzKFthcmlhLXNlbGVjdGVkXS5kYXktb3V0c2lkZSldOmJnLWFjY2VudC81MCBbJjpoYXMoW2FyaWEtc2VsZWN0ZWRdLmRheS1yYW5nZS1lbmQpXTpyb3VuZGVkLXItbWRcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMubW9kZSA9PT0gXCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiWyY6aGFzKD4uZGF5LXJhbmdlLWVuZCldOnJvdW5kZWQtci1tZCBbJjpoYXMoPi5kYXktcmFuZ2Utc3RhcnQpXTpyb3VuZGVkLWwtbWQgZmlyc3Q6WyY6aGFzKFthcmlhLXNlbGVjdGVkXSldOnJvdW5kZWQtbC1tZCBsYXN0OlsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpyb3VuZGVkLXItbWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlsmOmhhcyhbYXJpYS1zZWxlY3RlZF0pXTpyb3VuZGVkLW1kXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkYXk6IGNuKFxuICAgICAgICAgICAgICAgICAgICBidXR0b25WYXJpYW50cyh7IHZhcmlhbnQ6IFwiZ2hvc3RcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgXCJoLTggdy04IHAtMCBmb250LW5vcm1hbCBhcmlhLXNlbGVjdGVkOm9wYWNpdHktMTAwXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkYXlfcmFuZ2Vfc3RhcnQ6IFwiZGF5LXJhbmdlLXN0YXJ0XCIsXG4gICAgICAgICAgICAgICAgZGF5X3JhbmdlX2VuZDogXCJkYXktcmFuZ2UtZW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X3NlbGVjdGVkOlxuICAgICAgICAgICAgICAgICAgICBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBmb2N1czpiZy1wcmltYXJ5IGZvY3VzOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X3RvZGF5OiBcImJnLWFjY2VudCB0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X291dHNpZGU6XG4gICAgICAgICAgICAgICAgICAgIFwiZGF5LW91dHNpZGUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG9wYWNpdHktNTAgIGFyaWEtc2VsZWN0ZWQ6YmctYWNjZW50LzUwIGFyaWEtc2VsZWN0ZWQ6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGFyaWEtc2VsZWN0ZWQ6b3BhY2l0eS0zMFwiLFxuICAgICAgICAgICAgICAgIGRheV9kaXNhYmxlZDogXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgb3BhY2l0eS01MFwiLFxuICAgICAgICAgICAgICAgIGRheV9yYW5nZV9taWRkbGU6XG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZDpiZy1hY2NlbnQgYXJpYS1zZWxlY3RlZDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgZGF5X2hpZGRlbjogXCJpbnZpc2libGVcIixcbiAgICAgICAgICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgICAgICBJY29uTGVmdDogKCkgPT4gPENoZXZyb25MZWZ0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz4sXG4gICAgICAgICAgICAgICAgSWNvblJpZ2h0OiAoKSA9PiA8Q2hldnJvblJpZ2h0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz4sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgICk7XG59XG5DYWxlbmRhci5kaXNwbGF5TmFtZSA9IFwiQ2FsZW5kYXJcIjtcblxuZXhwb3J0IHsgQ2FsZW5kYXIgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmNvbnN0IENhcmQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJyb3VuZGVkLXhsIGJvcmRlciBiZy1jYXJkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIHNoYWRvd1wiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ2FyZC5kaXNwbGF5TmFtZSA9IFwiQ2FyZFwiXG5cbmNvbnN0IENhcmRIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSBwLTZcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ2FyZEhlYWRlci5kaXNwbGF5TmFtZSA9IFwiQ2FyZEhlYWRlclwiXG5cbmNvbnN0IENhcmRUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxoM1xuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5DYXJkVGl0bGUuZGlzcGxheU5hbWUgPSBcIkNhcmRUaXRsZVwiXG5cbmNvbnN0IENhcmREZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MUGFyYWdyYXBoRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHBcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ2FyZERlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID0gXCJDYXJkRGVzY3JpcHRpb25cIlxuXG5jb25zdCBDYXJkQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInAtNiBwdC0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpXG5DYXJkQ29udGVudC5kaXNwbGF5TmFtZSA9IFwiQ2FyZENvbnRlbnRcIlxuXG5jb25zdCBDYXJkRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcImZsZXggaXRlbXMtY2VudGVyIHAtNiBwdC0wXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcbkNhcmRGb290ZXIuZGlzcGxheU5hbWUgPSBcIkNhcmRGb290ZXJcIlxuXG5leHBvcnQgeyBDYXJkLCBDYXJkSGVhZGVyLCBDYXJkRm9vdGVyLCBDYXJkVGl0bGUsIENhcmREZXNjcmlwdGlvbiwgQ2FyZENvbnRlbnQgfVxuIiwgIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCJcbmltcG9ydCB7IENoZWNrSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwZWVyIGgtNCB3LTQgc2hyaW5rLTAgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLXByaW1hcnkgc2hhZG93IGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOmJnLXByaW1hcnkgZGF0YS1bc3RhdGU9Y2hlY2tlZF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvclxuICAgICAgY2xhc3NOYW1lPXtjbihcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtY3VycmVudFwiKX1cbiAgICA+XG4gICAgICA8Q2hlY2tJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKVxuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lXG5cbmV4cG9ydCB7IENoZWNrYm94IH1cbiIsICJcInVzZSBjbGllbnRcIlxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgdHlwZSBEaWFsb2dQcm9wcyB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlhbG9nXCJcbmltcG9ydCB7IE1hZ25pZnlpbmdHbGFzc0ljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCJcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZFByaW1pdGl2ZSB9IGZyb20gXCJjbWRrXCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuaW1wb3J0IHsgRGlhbG9nLCBEaWFsb2dDb250ZW50IH0gZnJvbSBcInNyYy91aS9kaWFsb2dcIlxuXG5jb25zdCBDb21tYW5kID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZT5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmVcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJmbGV4IGgtZnVsbCB3LWZ1bGwgZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYmctcG9wb3ZlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZFwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuQ29tbWFuZC5kaXNwbGF5TmFtZSA9IENvbW1hbmRQcmltaXRpdmUuZGlzcGxheU5hbWVcblxuaW50ZXJmYWNlIENvbW1hbmREaWFsb2dQcm9wcyBleHRlbmRzIERpYWxvZ1Byb3BzIHt9XG5cbmNvbnN0IENvbW1hbmREaWFsb2cgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfTogQ29tbWFuZERpYWxvZ1Byb3BzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERpYWxvZyB7Li4ucHJvcHN9PlxuICAgICAgPERpYWxvZ0NvbnRlbnQgY2xhc3NOYW1lPVwib3ZlcmZsb3ctaGlkZGVuIHAtMFwiPlxuICAgICAgICA8Q29tbWFuZCBjbGFzc05hbWU9XCJbJl9bY21kay1ncm91cC1oZWFkaW5nXV06cHgtMiBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06Zm9udC1tZWRpdW0gWyZfW2NtZGstZ3JvdXAtaGVhZGluZ11dOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBbJl9bY21kay1ncm91cF06bm90KFtoaWRkZW5dKV9+W2NtZGstZ3JvdXBdXTpwdC0wIFsmX1tjbWRrLWdyb3VwXV06cHgtMiBbJl9bY21kay1pbnB1dC13cmFwcGVyXV9zdmddOmgtNSBbJl9bY21kay1pbnB1dC13cmFwcGVyXV9zdmddOnctNSBbJl9bY21kay1pbnB1dF1dOmgtMTIgWyZfW2NtZGstaXRlbV1dOnB4LTIgWyZfW2NtZGstaXRlbV1dOnB5LTMgWyZfW2NtZGstaXRlbV1fc3ZnXTpoLTUgWyZfW2NtZGstaXRlbV1fc3ZnXTp3LTVcIj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvQ29tbWFuZD5cbiAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICA8L0RpYWxvZz5cbiAgKVxufVxuXG5jb25zdCBDb21tYW5kSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb21tYW5kUHJpbWl0aXZlLklucHV0PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb21tYW5kUHJpbWl0aXZlLklucHV0PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGJvcmRlci1iIHB4LTNcIiBjbWRrLWlucHV0LXdyYXBwZXI9XCJcIj5cbiAgICA8TWFnbmlmeWluZ0dsYXNzSWNvbiBjbGFzc05hbWU9XCJtci0yIGgtNCB3LTQgc2hyaW5rLTAgb3BhY2l0eS01MFwiIC8+XG4gICAgPENvbW1hbmRQcmltaXRpdmUuSW5wdXRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJmbGV4IGgtMTAgdy1mdWxsIHJvdW5kZWQtbWQgYmctdHJhbnNwYXJlbnQgcHktMyB0ZXh0LXNtIG91dGxpbmUtbm9uZSBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvZGl2PlxuKSlcblxuQ29tbWFuZElucHV0LmRpc3BsYXlOYW1lID0gQ29tbWFuZFByaW1pdGl2ZS5JbnB1dC5kaXNwbGF5TmFtZVxuXG5jb25zdCBDb21tYW5kTGlzdCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmRQcmltaXRpdmUuTGlzdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5MaXN0PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29tbWFuZFByaW1pdGl2ZS5MaXN0XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIm1heC1oLVszMDBweF0gb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblxuQ29tbWFuZExpc3QuZGlzcGxheU5hbWUgPSBDb21tYW5kUHJpbWl0aXZlLkxpc3QuZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZEVtcHR5ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5FbXB0eT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5FbXB0eT5cbj4oKHByb3BzLCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmUuRW1wdHlcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9XCJweS02IHRleHQtY2VudGVyIHRleHQtc21cIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5cbkNvbW1hbmRFbXB0eS5kaXNwbGF5TmFtZSA9IENvbW1hbmRQcmltaXRpdmUuRW1wdHkuZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZEdyb3VwID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5Hcm91cD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5Hcm91cD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmUuR3JvdXBcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJvdmVyZmxvdy1oaWRkZW4gcC0xIHRleHQtZm9yZWdyb3VuZCBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06cHgtMiBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06cHktMS41IFsmX1tjbWRrLWdyb3VwLWhlYWRpbmddXTp0ZXh0LXhzIFsmX1tjbWRrLWdyb3VwLWhlYWRpbmddXTpmb250LW1lZGl1bSBbJl9bY21kay1ncm91cC1oZWFkaW5nXV06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5cbkNvbW1hbmRHcm91cC5kaXNwbGF5TmFtZSA9IENvbW1hbmRQcmltaXRpdmUuR3JvdXAuZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmRQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb21tYW5kUHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbW1hbmRQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIi1teC0xIGgtcHggYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcbkNvbW1hbmRTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBDb21tYW5kUHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZVxuXG5jb25zdCBDb21tYW5kSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbW1hbmRQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29tbWFuZFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29tbWFuZFByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIG91dGxpbmUtbm9uZSBkYXRhLVtkaXNhYmxlZD10cnVlXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW3NlbGVjdGVkPXRydWVdOmJnLWFjY2VudCBkYXRhLVtzZWxlY3RlZD10cnVlXTp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkPXRydWVdOm9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblxuQ29tbWFuZEl0ZW0uZGlzcGxheU5hbWUgPSBDb21tYW5kUHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWVcblxuY29uc3QgQ29tbWFuZFNob3J0Y3V0ID0gKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcIm1sLWF1dG8gdGV4dC14cyB0cmFja2luZy13aWRlc3QgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5Db21tYW5kU2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkNvbW1hbmRTaG9ydGN1dFwiXG5cbmV4cG9ydCB7XG4gIENvbW1hbmQsXG4gIENvbW1hbmREaWFsb2csXG4gIENvbW1hbmRJbnB1dCxcbiAgQ29tbWFuZExpc3QsXG4gIENvbW1hbmRFbXB0eSxcbiAgQ29tbWFuZEdyb3VwLFxuICBDb21tYW5kSXRlbSxcbiAgQ29tbWFuZFNob3J0Y3V0LFxuICBDb21tYW5kU2VwYXJhdG9yLFxufVxuIiwgIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgKiBhcyBEaWFsb2dQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaWFsb2dcIlxuaW1wb3J0IHsgQ3Jvc3MySWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmNvbnN0IERpYWxvZyA9IERpYWxvZ1ByaW1pdGl2ZS5Sb290XG5cbmNvbnN0IERpYWxvZ1RyaWdnZXIgPSBEaWFsb2dQcmltaXRpdmUuVHJpZ2dlclxuXG5jb25zdCBEaWFsb2dQb3J0YWwgPSBEaWFsb2dQcmltaXRpdmUuUG9ydGFsXG5cbmNvbnN0IERpYWxvZ0Nsb3NlID0gRGlhbG9nUHJpbWl0aXZlLkNsb3NlXG5cbmNvbnN0IERpYWxvZ092ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLk92ZXJsYXk+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEaWFsb2dQcmltaXRpdmUuT3ZlcmxheVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcImZpeGVkIGluc2V0LTAgei01MCBiZy1ibGFjay84MCAgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTBcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcbkRpYWxvZ092ZXJsYXkuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuT3ZlcmxheS5kaXNwbGF5TmFtZVxuXG5jb25zdCBEaWFsb2dDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1BvcnRhbD5cbiAgICA8RGlhbG9nT3ZlcmxheSAvPlxuICAgIDxEaWFsb2dQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcImZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIHotNTAgZ3JpZCB3LWZ1bGwgbWF4LXctbGcgdHJhbnNsYXRlLXgtWy01MCVdIHRyYW5zbGF0ZS15LVstNTAlXSBnYXAtNCBib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnIGR1cmF0aW9uLTIwMCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tbGVmdC0xLzIgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tdG9wLVs0OCVdIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tbGVmdC0xLzIgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS10b3AtWzQ4JV0gc206cm91bmRlZC1sZ1wiLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPERpYWxvZ1ByaW1pdGl2ZS5DbG9zZSBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC00IHRvcC00IHJvdW5kZWQtc20gb3BhY2l0eS03MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICA8Q3Jvc3MySWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgPC9EaWFsb2dQcmltaXRpdmUuQ2xvc2U+XG4gICAgPC9EaWFsb2dQcmltaXRpdmUuQ29udGVudD5cbiAgPC9EaWFsb2dQb3J0YWw+XG4pKVxuRGlhbG9nQ29udGVudC5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lXG5cbmNvbnN0IERpYWxvZ0hlYWRlciA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnRcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKVxuRGlhbG9nSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJEaWFsb2dIZWFkZXJcIlxuXG5jb25zdCBEaWFsb2dGb290ZXIgPSAoe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcImZsZXggZmxleC1jb2wtcmV2ZXJzZSBzbTpmbGV4LXJvdyBzbTpqdXN0aWZ5LWVuZCBzbTpzcGFjZS14LTJcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKVxuRGlhbG9nRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJEaWFsb2dGb290ZXJcIlxuXG5jb25zdCBEaWFsb2dUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5UaXRsZT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRGlhbG9nUHJpbWl0aXZlLlRpdGxlPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RGlhbG9nUHJpbWl0aXZlLlRpdGxlXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwidGV4dC1sZyBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuRGlhbG9nVGl0bGUuZGlzcGxheU5hbWUgPSBEaWFsb2dQcmltaXRpdmUuVGl0bGUuZGlzcGxheU5hbWVcblxuY29uc3QgRGlhbG9nRGVzY3JpcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEaWFsb2dQcmltaXRpdmUuRGVzY3JpcHRpb24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5EaWFsb2dEZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9IERpYWxvZ1ByaW1pdGl2ZS5EZXNjcmlwdGlvbi5kaXNwbGF5TmFtZVxuXG5leHBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ1BvcnRhbCxcbiAgRGlhbG9nT3ZlcmxheSxcbiAgRGlhbG9nVHJpZ2dlcixcbiAgRGlhbG9nQ2xvc2UsXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0hlYWRlcixcbiAgRGlhbG9nRm9vdGVyLFxuICBEaWFsb2dUaXRsZSxcbiAgRGlhbG9nRGVzY3JpcHRpb24sXG59XG4iLCAiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICogYXMgRHJvcGRvd25NZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHtcbiAgICBDaGVja0ljb24sXG4gICAgQ2hldnJvblJpZ2h0SWNvbixcbiAgICBEb3RGaWxsZWRJY29uLFxufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgICAgIGluc2V0PzogYm9vbGVhbjtcbiAgICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcImZsZXggY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIHJvdW5kZWQtc20gcHgtMiBweS0xLjUgdGV4dC1zbSBvdXRsaW5lLW5vbmUgZm9jdXM6YmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOmJnLWFjY2VudFwiLFxuICAgICAgICAgICAgaW5zZXQgJiYgXCJwbC04XCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPENoZXZyb25SaWdodEljb24gY2xhc3NOYW1lPVwibWwtYXV0byBoLTQgdy00XCIgLz5cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID1cbiAgICBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJ6LTUwIG1pbi13LVs4cmVtXSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYmctcG9wb3ZlciBwLTEgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9XG4gICAgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICAgIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgIFwiei01MCBtaW4tdy1bOHJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctcG9wb3ZlciBwLTEgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LW1kXCIsXG4gICAgICAgICAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnNsaWRlLWluLWZyb20tYm90dG9tLTJcIixcbiAgICAgICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAvPlxuICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgICAgIGluc2V0PzogYm9vbGVhbjtcbiAgICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweC0yIHB5LTEuNSB0ZXh0LXNtIG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MFwiLFxuICAgICAgICAgICAgaW5zZXQgJiYgXCJwbC04XCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicmVsYXRpdmUgZmxleCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweS0xLjUgcGwtOCBwci0yIHRleHQtc20gb3V0bGluZS1ub25lIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMiBmbGV4IGgtMy41IHctMy41IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIDxDaGVja0ljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9XG4gICAgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJyZWxhdGl2ZSBmbGV4IGN1cnNvci1kZWZhdWx0IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtIHB5LTEuNSBwbC04IHByLTIgdGV4dC1zbSBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6YmctYWNjZW50IGZvY3VzOnRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTBcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJzb2x1dGUgbGVmdC0yIGZsZXggaC0zLjUgdy0zLjUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgPERvdEZpbGxlZEljb24gY2xhc3NOYW1lPVwiaC00IHctNCBmaWxsLWN1cnJlbnRcIiAvPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgICAgIGluc2V0PzogYm9vbGVhbjtcbiAgICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInB4LTIgcHktMS41IHRleHQtc20gZm9udC1zZW1pYm9sZFwiLFxuICAgICAgICAgICAgaW5zZXQgJiYgXCJwbC04XCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXCItbXgtMSBteS0xIGgtcHggYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgLi4ucHJvcHNcbn06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICBcIm1sLWF1dG8gdGV4dC14cyB0cmFja2luZy13aWRlc3Qgb3BhY2l0eS02MFwiLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgKTtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgICBEcm9wZG93bk1lbnUsXG4gICAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgICBEcm9wZG93bk1lbnVDb250ZW50LFxuICAgIERyb3Bkb3duTWVudUl0ZW0sXG4gICAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICAgIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gICAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gICAgRHJvcGRvd25NZW51R3JvdXAsXG4gICAgRHJvcGRvd25NZW51UG9ydGFsLFxuICAgIERyb3Bkb3duTWVudVN1YixcbiAgICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxuICAgIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gICAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiXCJ1c2UgY2xpZW50XCJcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIlxuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiXG5pbXBvcnQge1xuICBDb250cm9sbGVyLFxuICBDb250cm9sbGVyUHJvcHMsXG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIEZvcm1Qcm92aWRlcixcbiAgdXNlRm9ybUNvbnRleHQsXG59IGZyb20gXCJyZWFjdC1ob29rLWZvcm1cIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCJzcmMvdWkvbGFiZWxcIlxuXG5jb25zdCBGb3JtID0gRm9ybVByb3ZpZGVyXG5cbnR5cGUgRm9ybUZpZWxkQ29udGV4dFZhbHVlPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz5cbj4gPSB7XG4gIG5hbWU6IFROYW1lXG59XG5cbmNvbnN0IEZvcm1GaWVsZENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEZvcm1GaWVsZENvbnRleHRWYWx1ZT4oXG4gIHt9IGFzIEZvcm1GaWVsZENvbnRleHRWYWx1ZVxuKVxuXG5jb25zdCBGb3JtRmllbGQgPSA8XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPlxuPih7XG4gIC4uLnByb3BzXG59OiBDb250cm9sbGVyUHJvcHM8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8Rm9ybUZpZWxkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBuYW1lOiBwcm9wcy5uYW1lIH19PlxuICAgICAgPENvbnRyb2xsZXIgey4uLnByb3BzfSAvPlxuICAgIDwvRm9ybUZpZWxkQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5jb25zdCB1c2VGb3JtRmllbGQgPSAoKSA9PiB7XG4gIGNvbnN0IGZpZWxkQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRm9ybUZpZWxkQ29udGV4dClcbiAgY29uc3QgaXRlbUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZvcm1JdGVtQ29udGV4dClcbiAgY29uc3QgeyBnZXRGaWVsZFN0YXRlLCBmb3JtU3RhdGUgfSA9IHVzZUZvcm1Db250ZXh0KClcblxuICBjb25zdCBmaWVsZFN0YXRlID0gZ2V0RmllbGRTdGF0ZShmaWVsZENvbnRleHQubmFtZSwgZm9ybVN0YXRlKVxuXG4gIGlmICghZmllbGRDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlRm9ybUZpZWxkIHNob3VsZCBiZSB1c2VkIHdpdGhpbiA8Rm9ybUZpZWxkPlwiKVxuICB9XG5cbiAgY29uc3QgeyBpZCB9ID0gaXRlbUNvbnRleHRcblxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIG5hbWU6IGZpZWxkQ29udGV4dC5uYW1lLFxuICAgIGZvcm1JdGVtSWQ6IGAke2lkfS1mb3JtLWl0ZW1gLFxuICAgIGZvcm1EZXNjcmlwdGlvbklkOiBgJHtpZH0tZm9ybS1pdGVtLWRlc2NyaXB0aW9uYCxcbiAgICBmb3JtTWVzc2FnZUlkOiBgJHtpZH0tZm9ybS1pdGVtLW1lc3NhZ2VgLFxuICAgIC4uLmZpZWxkU3RhdGUsXG4gIH1cbn1cblxudHlwZSBGb3JtSXRlbUNvbnRleHRWYWx1ZSA9IHtcbiAgaWQ6IHN0cmluZ1xufVxuXG5jb25zdCBGb3JtSXRlbUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEZvcm1JdGVtQ29udGV4dFZhbHVlPihcbiAge30gYXMgRm9ybUl0ZW1Db250ZXh0VmFsdWVcbilcblxuY29uc3QgRm9ybUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IGlkID0gUmVhY3QudXNlSWQoKVxuXG4gIHJldHVybiAoXG4gICAgPEZvcm1JdGVtQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBpZCB9fT5cbiAgICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJzcGFjZS15LTJcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICAgIDwvRm9ybUl0ZW1Db250ZXh0LlByb3ZpZGVyPlxuICApXG59KVxuRm9ybUl0ZW0uZGlzcGxheU5hbWUgPSBcIkZvcm1JdGVtXCJcblxuY29uc3QgRm9ybUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgeyBlcnJvciwgZm9ybUl0ZW1JZCB9ID0gdXNlRm9ybUZpZWxkKClcblxuICByZXR1cm4gKFxuICAgIDxMYWJlbFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKGVycm9yICYmIFwidGV4dC1kZXN0cnVjdGl2ZVwiLCBjbGFzc05hbWUpfVxuICAgICAgaHRtbEZvcj17Zm9ybUl0ZW1JZH1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59KVxuRm9ybUxhYmVsLmRpc3BsYXlOYW1lID0gXCJGb3JtTGFiZWxcIlxuXG5jb25zdCBGb3JtQ29udHJvbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNsb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNsb3Q+XG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICBjb25zdCB7IGVycm9yLCBmb3JtSXRlbUlkLCBmb3JtRGVzY3JpcHRpb25JZCwgZm9ybU1lc3NhZ2VJZCB9ID0gdXNlRm9ybUZpZWxkKClcblxuICByZXR1cm4gKFxuICAgIDxTbG90XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGlkPXtmb3JtSXRlbUlkfVxuICAgICAgYXJpYS1kZXNjcmliZWRieT17XG4gICAgICAgICFlcnJvclxuICAgICAgICAgID8gYCR7Zm9ybURlc2NyaXB0aW9uSWR9YFxuICAgICAgICAgIDogYCR7Zm9ybURlc2NyaXB0aW9uSWR9ICR7Zm9ybU1lc3NhZ2VJZH1gXG4gICAgICB9XG4gICAgICBhcmlhLWludmFsaWQ9eyEhZXJyb3J9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufSlcbkZvcm1Db250cm9sLmRpc3BsYXlOYW1lID0gXCJGb3JtQ29udHJvbFwiXG5cbmNvbnN0IEZvcm1EZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MUGFyYWdyYXBoRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgeyBmb3JtRGVzY3JpcHRpb25JZCB9ID0gdXNlRm9ybUZpZWxkKClcblxuICByZXR1cm4gKFxuICAgIDxwXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGlkPXtmb3JtRGVzY3JpcHRpb25JZH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJ0ZXh0LVswLjhyZW1dIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn0pXG5Gb3JtRGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSBcIkZvcm1EZXNjcmlwdGlvblwiXG5cbmNvbnN0IEZvcm1NZXNzYWdlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFBhcmFncmFwaEVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxQYXJhZ3JhcGhFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3QgeyBlcnJvciwgZm9ybU1lc3NhZ2VJZCB9ID0gdXNlRm9ybUZpZWxkKClcbiAgY29uc3QgYm9keSA9IGVycm9yID8gU3RyaW5nKGVycm9yPy5tZXNzYWdlKSA6IGNoaWxkcmVuXG5cbiAgaWYgKCFib2R5KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPHBcbiAgICAgIHJlZj17cmVmfVxuICAgICAgaWQ9e2Zvcm1NZXNzYWdlSWR9XG4gICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1bMC44cmVtXSBmb250LW1lZGl1bSB0ZXh0LWRlc3RydWN0aXZlXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2JvZHl9XG4gICAgPC9wPlxuICApXG59KVxuRm9ybU1lc3NhZ2UuZGlzcGxheU5hbWUgPSBcIkZvcm1NZXNzYWdlXCJcblxuZXhwb3J0IHtcbiAgdXNlRm9ybUZpZWxkLFxuICBGb3JtLFxuICBGb3JtSXRlbSxcbiAgRm9ybUxhYmVsLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybURlc2NyaXB0aW9uLFxuICBGb3JtTWVzc2FnZSxcbiAgRm9ybUZpZWxkLFxufVxuIiwgIlwidXNlIGNsaWVudFwiXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgKiBhcyBMYWJlbFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWxhYmVsXCJcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6b3BhY2l0eS03MFwiXG4pXG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJlxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuTGFiZWwuZGlzcGxheU5hbWUgPSBMYWJlbFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lXG5cbmV4cG9ydCB7IExhYmVsIH1cbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRQcm9wc1xuICBleHRlbmRzIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4ge31cblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIElucHV0UHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHR5cGUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcImZsZXggaC05IHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItaW5wdXQgYmctdHJhbnNwYXJlbnQgcHgtMyBweS0xIHRleHQtc20gc2hhZG93LXNtIHRyYW5zaXRpb24tY29sb3JzIGZpbGU6Ym9yZGVyLTAgZmlsZTpiZy10cmFuc3BhcmVudCBmaWxlOnRleHQtc20gZmlsZTpmb250LW1lZGl1bSBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTEgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKVxuICB9XG4pXG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIlxuXG5leHBvcnQgeyBJbnB1dCB9XG4iLCAiXCJ1c2UgY2xpZW50XCJcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuXG5jb25zdCBQb3BvdmVyID0gUG9wb3ZlclByaW1pdGl2ZS5Sb290XG5cbmNvbnN0IFBvcG92ZXJUcmlnZ2VyID0gUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvclxuXG5jb25zdCBQb3BvdmVyQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJ6LTUwIHctNzIgcm91bmRlZC1tZCBib3JkZXIgYmctcG9wb3ZlciBwLTQgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LW1kIG91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnNsaWRlLWluLWZyb20tYm90dG9tLTJcIixcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKVxuUG9wb3ZlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWVcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH1cbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgRHJhZ0hhbmRsZURvdHMySWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCAqIGFzIFJlc2l6YWJsZVByaW1pdGl2ZSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbEdyb3VwID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBSZXNpemFibGVQcmltaXRpdmUuUGFuZWxHcm91cD4pID0+IChcbiAgICA8UmVzaXphYmxlUHJpbWl0aXZlLlBhbmVsR3JvdXBcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiZmxleCBoLWZ1bGwgdy1mdWxsIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06ZmxleC1jb2xcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuXG5jb25zdCBSZXNpemFibGVQYW5lbCA9IFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbDtcblxuY29uc3QgUmVzaXphYmxlSGFuZGxlID0gKHtcbiAgICB3aXRoSGFuZGxlLFxuICAgIGNsYXNzTmFtZSxcbiAgICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZT4gJiB7XG4gICAgd2l0aEhhbmRsZT86IGJvb2xlYW47XG59KSA9PiAoXG4gICAgPFJlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJyZWxhdGl2ZSBmbGV4IHctcHggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJvcmRlciBhZnRlcjphYnNvbHV0ZSBhZnRlcjppbnNldC15LTAgYWZ0ZXI6bGVmdC0xLzIgYWZ0ZXI6dy0xIGFmdGVyOi10cmFuc2xhdGUteC0xLzIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTEgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0xIGRhdGEtW3BhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06aC1weCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOnctZnVsbCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOmxlZnQtMCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOmgtMSBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOnctZnVsbCBkYXRhLVtwYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVyOi10cmFuc2xhdGUteS0xLzIgZGF0YS1bcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcjp0cmFuc2xhdGUteC0wIFsmW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXT5kaXZdOnJvdGF0ZS05MFwiLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgICB7d2l0aEhhbmRsZSAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInotMTAgZmxleCBoLTQgdy0zIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLXNtIGJvcmRlciBiZy1ib3JkZXJcIj5cbiAgICAgICAgICAgICAgICA8RHJhZ0hhbmRsZURvdHMySWNvbiBjbGFzc05hbWU9XCJoLTIuNSB3LTIuNVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICA8L1Jlc2l6YWJsZVByaW1pdGl2ZS5QYW5lbFJlc2l6ZUhhbmRsZT5cbik7XG5cbmV4cG9ydCB7IFJlc2l6YWJsZVBhbmVsR3JvdXAsIFJlc2l6YWJsZVBhbmVsLCBSZXNpemFibGVIYW5kbGUgfTtcbiIsICJcInVzZSBjbGllbnRcIlxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0ICogYXMgU2Nyb2xsQXJlYVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNjcm9sbC1hcmVhXCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIlxuXG5jb25zdCBTY3JvbGxBcmVhID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2Nyb2xsQXJlYVByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTY3JvbGxBcmVhUHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2Nyb2xsQXJlYVByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxTY3JvbGxBcmVhUHJpbWl0aXZlLlZpZXdwb3J0IGNsYXNzTmFtZT1cImgtZnVsbCB3LWZ1bGwgcm91bmRlZC1baW5oZXJpdF1cIj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1Njcm9sbEFyZWFQcmltaXRpdmUuVmlld3BvcnQ+XG4gICAgPFNjcm9sbEJhciAvPlxuICAgIDxTY3JvbGxBcmVhUHJpbWl0aXZlLkNvcm5lciAvPlxuICA8L1Njcm9sbEFyZWFQcmltaXRpdmUuUm9vdD5cbikpXG5TY3JvbGxBcmVhLmRpc3BsYXlOYW1lID0gU2Nyb2xsQXJlYVByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lXG5cbmNvbnN0IFNjcm9sbEJhciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNjcm9sbEFyZWFQcmltaXRpdmUuU2Nyb2xsQXJlYVNjcm9sbGJhcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2Nyb2xsQXJlYVByaW1pdGl2ZS5TY3JvbGxBcmVhU2Nyb2xsYmFyPlxuPigoeyBjbGFzc05hbWUsIG9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNjcm9sbEFyZWFQcmltaXRpdmUuU2Nyb2xsQXJlYVNjcm9sbGJhclxuICAgIHJlZj17cmVmfVxuICAgIG9yaWVudGF0aW9uPXtvcmllbnRhdGlvbn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJmbGV4IHRvdWNoLW5vbmUgc2VsZWN0LW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIixcbiAgICAgIG9yaWVudGF0aW9uID09PSBcInZlcnRpY2FsXCIgJiZcbiAgICAgICAgXCJoLWZ1bGwgdy0yLjUgYm9yZGVyLWwgYm9yZGVyLWwtdHJhbnNwYXJlbnQgcC1bMXB4XVwiLFxuICAgICAgb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmXG4gICAgICAgIFwiaC0yLjUgZmxleC1jb2wgYm9yZGVyLXQgYm9yZGVyLXQtdHJhbnNwYXJlbnQgcC1bMXB4XVwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8U2Nyb2xsQXJlYVByaW1pdGl2ZS5TY3JvbGxBcmVhVGh1bWIgY2xhc3NOYW1lPVwicmVsYXRpdmUgZmxleC0xIHJvdW5kZWQtZnVsbCBiZy1ib3JkZXJcIiAvPlxuICA8L1Njcm9sbEFyZWFQcmltaXRpdmUuU2Nyb2xsQXJlYVNjcm9sbGJhcj5cbikpXG5TY3JvbGxCYXIuZGlzcGxheU5hbWUgPSBTY3JvbGxBcmVhUHJpbWl0aXZlLlNjcm9sbEFyZWFTY3JvbGxiYXIuZGlzcGxheU5hbWVcblxuZXhwb3J0IHsgU2Nyb2xsQXJlYSwgU2Nyb2xsQmFyIH1cbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICAgIENhcmV0U29ydEljb24sXG4gICAgQ2hlY2tJY29uLFxuICAgIENoZXZyb25Eb3duSWNvbixcbiAgICBDaGV2cm9uVXBJY29uLFxufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5pbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zZWxlY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcblxuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuY29uc3QgU2VsZWN0VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxTZWxlY3RQcmltaXRpdmUuVHJpZ2dlclxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiZmxleCBoLTkgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLXRyYW5zcGFyZW50IHB4LTMgcHktMiB0ZXh0LXNtIHNoYWRvdy1zbSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctcmluZyBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCBbJj5zcGFuXTpsaW5lLWNsYW1wLTFcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgICAgICAgIDxDYXJldFNvcnRJY29uIGNsYXNzTmFtZT1cImgtNCB3LTQgb3BhY2l0eS01MFwiIC8+XG4gICAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj5cbikpO1xuU2VsZWN0VHJpZ2dlci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxVcEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIDxDaGV2cm9uVXBJY29uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcImZsZXggY3Vyc29yLWRlZmF1bHQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTFcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgICAgPENoZXZyb25Eb3duSWNvbiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPVxuICAgIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICAgICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgXCJyZWxhdGl2ZSB6LTUwIG1heC1oLTk2IG1pbi13LVs4cmVtXSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYmctcG9wb3ZlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBzaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgXCJkYXRhLVtzaWRlPWJvdHRvbV06dHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOi10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOi10cmFuc2xhdGUteS0xXCIsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgICAgPFNlbGVjdFNjcm9sbFVwQnV0dG9uIC8+XG4gICAgICAgICAgICA8U2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgXCJwLTFcIixcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gdy1mdWxsIG1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldXCIsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgICAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICAgIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXCJweC0yIHB5LTEuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgXCJyZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItZGVmYXVsdCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbSBweS0xLjUgcGwtMiBwci04IHRleHQtc20gb3V0bGluZS1ub25lIGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpvcGFjaXR5LTUwXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTIgZmxleCBoLTMuNSB3LTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgICAgICAgICA8Q2hlY2tJY29uIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtPlxuKSk7XG5TZWxlY3RJdGVtLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gICAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwiLW14LTEgbXktMSBoLXB4IGJnLW11dGVkXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICAgIFNlbGVjdCxcbiAgICBTZWxlY3RHcm91cCxcbiAgICBTZWxlY3RWYWx1ZSxcbiAgICBTZWxlY3RUcmlnZ2VyLFxuICAgIFNlbGVjdENvbnRlbnQsXG4gICAgU2VsZWN0TGFiZWwsXG4gICAgU2VsZWN0SXRlbSxcbiAgICBTZWxlY3RTZXBhcmF0b3IsXG4gICAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gICAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCAiXCJ1c2UgY2xpZW50XCJcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCAqIGFzIFNlcGFyYXRvclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNlcGFyYXRvclwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgU2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VwYXJhdG9yUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlcGFyYXRvclByaW1pdGl2ZS5Sb290PlxuPihcbiAgKFxuICAgIHsgY2xhc3NOYW1lLCBvcmllbnRhdGlvbiA9IFwiaG9yaXpvbnRhbFwiLCBkZWNvcmF0aXZlID0gdHJ1ZSwgLi4ucHJvcHMgfSxcbiAgICByZWZcbiAgKSA9PiAoXG4gICAgPFNlcGFyYXRvclByaW1pdGl2ZS5Sb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGRlY29yYXRpdmU9e2RlY29yYXRpdmV9XG4gICAgICBvcmllbnRhdGlvbj17b3JpZW50YXRpb259XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInNocmluay0wIGJnLWJvcmRlclwiLFxuICAgICAgICBvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcImgtWzFweF0gdy1mdWxsXCIgOiBcImgtZnVsbCB3LVsxcHhdXCIsXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG4pXG5TZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZXBhcmF0b3JQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZVxuXG5leHBvcnQgeyBTZXBhcmF0b3IgfVxuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJuZXh0LXRoZW1lc1wiO1xuaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIgfSBmcm9tIFwic29ubmVyXCI7XG5cbnR5cGUgVG9hc3RlclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNvbm5lcj47XG5cbmNvbnN0IFRvYXN0ZXIgPSAoeyAuLi5wcm9wcyB9OiBUb2FzdGVyUHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lID0gXCJzeXN0ZW1cIiB9ID0gdXNlVGhlbWUoKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxTb25uZXJcbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZSBhcyBUb2FzdGVyUHJvcHNbXCJ0aGVtZVwiXX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRvYXN0ZXIgZ3JvdXBcIlxuICAgICAgICAgICAgdG9hc3RPcHRpb25zPXt7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lczoge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdDogXCJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnXCIsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25CdXR0b246XG4gICAgICAgICAgICAgICAgICAgICAgICBcImdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJncm91cC1bLnRvYXN0XTpiZy1tdXRlZCBncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgLz5cbiAgICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RlciB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgPHRhYmxlXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJ3LWZ1bGwgY2FwdGlvbi1ib3R0b20gdGV4dC1zbVwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvZGl2PlxuKSlcblRhYmxlLmRpc3BsYXlOYW1lID0gXCJUYWJsZVwiXG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJbJl90cl06Ym9yZGVyLWJcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSlcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiXG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRib2R5XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOmJvcmRlci0wXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCJcblxuY29uc3QgVGFibGVGb290ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0Zm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcImJvcmRlci10IGJnLW11dGVkLzUwIGZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OmJvcmRlci1iLTBcIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiXG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlUm93RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwiYm9yZGVyLWIgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOmJnLW11dGVkXCIsXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpXG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9IFwiVGFibGVSb3dcIlxuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPHRoXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwiaC0xMCBweC0yIHRleHQtbGVmdCBhbGlnbi1taWRkbGUgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wIFsmPltyb2xlPWNoZWNrYm94XV06dHJhbnNsYXRlLXktWzJweF1cIixcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSlcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCJcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQsXG4gIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDx0ZFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInAtMiBhbGlnbi1taWRkbGUgWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTAgWyY+W3JvbGU9Y2hlY2tib3hdXTp0cmFuc2xhdGUteS1bMnB4XVwiLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIlxuXG5jb25zdCBUYWJsZUNhcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxjYXB0aW9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcIm10LTQgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKVxuVGFibGVDYXB0aW9uLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNhcHRpb25cIlxuXG5leHBvcnQge1xuICBUYWJsZSxcbiAgVGFibGVIZWFkZXIsXG4gIFRhYmxlQm9keSxcbiAgVGFibGVGb290ZXIsXG4gIFRhYmxlSGVhZCxcbiAgVGFibGVSb3csXG4gIFRhYmxlQ2VsbCxcbiAgVGFibGVDYXB0aW9uLFxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCJcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0YXJlYVByb3BzXG4gIGV4dGVuZHMgUmVhY3QuVGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50PiB7fVxuXG5jb25zdCBUZXh0YXJlYSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgVGV4dGFyZWFQcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwiZmxleCBtaW4taC1bNjBweF0gdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSBzaGFkb3ctc20gcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxuKVxuVGV4dGFyZWEuZGlzcGxheU5hbWUgPSBcIlRleHRhcmVhXCJcblxuZXhwb3J0IHsgVGV4dGFyZWEgfVxuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAqIGFzIFRvb2x0aXBQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10b29sdGlwXCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PixcbiAgICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPFRvb2x0aXBQcmltaXRpdmUuQ29udGVudFxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiei01MCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBiZy1wcmltYXJ5IHB4LTMgcHktMS41IHRleHQteHMgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgYW5pbWF0ZS1pbiBmYWRlLWluLTAgem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgdHlwZSB7IENvbmZpcm1EaWFsb2dQcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQge1xuICAgIEFsZXJ0RGlhbG9nLFxuICAgIEFsZXJ0RGlhbG9nQWN0aW9uLFxuICAgIEFsZXJ0RGlhbG9nQ2FuY2VsLFxuICAgIEFsZXJ0RGlhbG9nQ29udGVudCxcbiAgICBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uLFxuICAgIEFsZXJ0RGlhbG9nRm9vdGVyLFxuICAgIEFsZXJ0RGlhbG9nSGVhZGVyLFxuICAgIEFsZXJ0RGlhbG9nVGl0bGUsXG4gICAgQWxlcnREaWFsb2dUcmlnZ2VyLFxufSBmcm9tIFwiQC91aS9hbGVydC1kaWFsb2dcIjtcbmltcG9ydCB7IExvYWRpbmdJY29uIH0gZnJvbSBcIkAvdWkvbG9hZGluZ1wiO1xuaW1wb3J0IHsgQ2hlY2tJY29uLCBYSWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEZDLCBpc1ZhbGlkRWxlbWVudCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgQ29uZmlybURpYWxvZzogRkM8Q29uZmlybURpYWxvZ1Byb3BzPiA9ICh7XG4gICAgY2hpbGRyZW4sXG4gICAgdGl0bGUgPSBcIkFyZSB5b3Ugc3VyZT9cIixcbiAgICBkZXNjcmlwdGlvbiA9IFwiVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5cIixcbiAgICBva1RleHQgPSBcIk9rXCIsXG4gICAgY2FuY2VsVGV4dCA9IFwiQ2FuY2VsXCIsXG4gICAgb2tCdXR0b25TaXplID0gXCJkZWZhdWx0XCIsXG4gICAgY2FuY2VsQnV0dG9uU2l6ZSA9IFwiZGVmYXVsdFwiLFxuICAgIG9rQnV0dG9uVmFyaWFudCA9IFwiZGVmYXVsdFwiLFxuICAgIGNhbmNlbEJ1dHRvblZhcmlhbnQgPSBcIm91dGxpbmVcIixcbiAgICBsb2FkaW5nID0gZmFsc2UsXG4gICAgb2tJY29uU2lkZSA9IFwibGVmdFwiLFxuICAgIGNhbmNlbEljb25TaWRlID0gXCJsZWZ0XCIsXG4gICAgb25Db25maXJtLFxuICAgIG9rSWNvbixcbiAgICBjYW5jZWxJY29uLFxuICAgIG9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIGRlZmF1bHRPcGVuLFxufSkgPT4ge1xuICAgIGNvbnN0IENhbmNlbEljb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KGNhbmNlbEljb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FuY2VsSWNvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiA8WEljb24gY2xhc3NOYW1lPVwibXItMiBoLTQgdy00XCIgLz47XG4gICAgfSwgW2NhbmNlbEljb25dKTtcblxuICAgIGNvbnN0IE9rSWNvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAobG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nSWNvbiBjbGFzc05hbWU9XCJtci0yXCIgLz47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KG9rSWNvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBva0ljb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gPENoZWNrSWNvbiBjbGFzc05hbWU9XCJtci0yIGgtNCB3LTRcIiAvPjtcbiAgICB9LCBbb2tJY29uLCBsb2FkaW5nXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8QWxlcnREaWFsb2dcbiAgICAgICAgICAgIG9wZW49e29wZW59XG4gICAgICAgICAgICBvbk9wZW5DaGFuZ2U9e29uT3BlbkNoYW5nZX1cbiAgICAgICAgICAgIGRlZmF1bHRPcGVuPXtkZWZhdWx0T3Blbn1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEFsZXJ0RGlhbG9nVHJpZ2dlciBhc0NoaWxkPntjaGlsZHJlbn08L0FsZXJ0RGlhbG9nVHJpZ2dlcj5cbiAgICAgICAgICAgIDxBbGVydERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0RGlhbG9nSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnREaWFsb2dUaXRsZT57dGl0bGV9PC9BbGVydERpYWxvZ1RpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnREaWFsb2dEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydERpYWxvZ0Rlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgIDwvQWxlcnREaWFsb2dIZWFkZXI+XG4gICAgICAgICAgICAgICAgPEFsZXJ0RGlhbG9nRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnREaWFsb2dDYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e2NhbmNlbEJ1dHRvblZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXtjYW5jZWxCdXR0b25TaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5jZWxJY29uU2lkZSA9PT0gXCJsZWZ0XCIgJiYgQ2FuY2VsSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5jZWxUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAge2NhbmNlbEljb25TaWRlID09PSBcInJpZ2h0XCIgJiYgQ2FuY2VsSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydERpYWxvZ0NhbmNlbD5cbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0RGlhbG9nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtva0J1dHRvblZhcmlhbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXtva0J1dHRvblNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ29uZmlybX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge29rSWNvblNpZGUgPT09IFwibGVmdFwiICYmIE9rSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtva1RleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICB7b2tJY29uU2lkZSA9PT0gXCJyaWdodFwiICYmIE9rSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydERpYWxvZ0FjdGlvbj5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0RGlhbG9nRm9vdGVyPlxuICAgICAgICAgICAgPC9BbGVydERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgIDwvQWxlcnREaWFsb2c+XG4gICAgKTtcbn07XG5cbkNvbmZpcm1EaWFsb2cuZGlzcGxheU5hbWUgPSBcIkNvbmZpcm1EaWFsb2dcIjtcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHtcbiAgICBGb3JtRmllbGQsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybURlc2NyaXB0aW9uLFxuICAgIEZvcm1JdGVtLFxuICAgIEZvcm1MYWJlbCxcbiAgICBGb3JtTWVzc2FnZSxcbn0gZnJvbSBcIkAvdWlcIjtcbmltcG9ydCB7IFJlYWN0RWxlbWVudCwgY2xvbmVFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICAgIENvbnRyb2xsZXJSZW5kZXJQcm9wcyxcbiAgICBGaWVsZFBhdGgsXG4gICAgRmllbGRWYWx1ZXMsXG4gICAgVXNlQ29udHJvbGxlclByb3BzLFxufSBmcm9tIFwicmVhY3QtaG9vay1mb3JtXCI7XG5cbmV4cG9ydCB0eXBlIEZpZWxkUHJvcHM8XG4gICAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4+ID0gVXNlQ29udHJvbGxlclByb3BzPFRGaWVsZFZhbHVlcywgVE5hbWU+ICYge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBpc0NoZWNrYm94PzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbjogUmVhY3RFbGVtZW50PHtcbiAgICAgICAgZmllbGQ6IENvbnRyb2xsZXJSZW5kZXJQcm9wczxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICB9Pjtcbn07XG5leHBvcnQgY29uc3QgRmllbGQgPSAocHJvcHM6IEZpZWxkUHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8Rm9ybUZpZWxkXG4gICAgICAgICAgICBjb250cm9sPXtwcm9wcy5jb250cm9sfVxuICAgICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cbiAgICAgICAgICAgIHJlbmRlcj17KHsgZmllbGQgfTogeyBmaWVsZDogYW55IH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8Rm9ybUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmlzQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBzcGFjZS15LTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IXByb3BzLmlzQ2hlY2tib3ggJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtTGFiZWw+e3Byb3BzLmxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xvbmVFbGVtZW50KHByb3BzLmNoaWxkcmVuLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcy5jaGlsZHJlbi5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuaXNDaGVja2JveCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1MYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1EZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybU1lc3NhZ2UgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICApO1xufTtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBTYXZlQnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uLCBDYXJkLCBDYXJkQ29udGVudCwgQ2FyZEZvb3RlciwgRm9ybSBhcyBGb3JtVUkgfSBmcm9tIFwiQC91aVwiO1xuaW1wb3J0IHtcbiAgICB1c2VCYWNrLFxuICAgIHVzZU5hdmlnYXRpb24sXG4gICAgdXNlUGFyc2VkLFxuICAgIHVzZVJvdXRlclR5cGUsXG4gICAgdHlwZSBCYXNlUmVjb3JkLFxuICAgIHR5cGUgSHR0cEVycm9yLFxufSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IFVzZUZvcm1SZXR1cm5UeXBlIH0gZnJvbSBcIkByZWZpbmVkZXYvcmVhY3QtaG9vay1mb3JtXCI7XG5pbXBvcnQge1xuICAgIEZDLFxuICAgIHVzZVJlZixcbiAgICB0eXBlIERldGFpbGVkSFRNTFByb3BzLFxuICAgIHR5cGUgRm9ybUhUTUxBdHRyaWJ1dGVzLFxuICAgIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdHlwZSBGaWVsZFZhbHVlcyB9IGZyb20gXCJyZWFjdC1ob29rLWZvcm1cIjtcbmltcG9ydCB7IFNhdmVCdXR0b24gfSBmcm9tIFwiLi4vYnV0dG9uc1wiO1xuXG50eXBlIE5hdGl2ZUZvcm1Qcm9wcyA9IE9taXQ8XG4gICAgRGV0YWlsZWRIVE1MUHJvcHM8Rm9ybUhUTUxBdHRyaWJ1dGVzPEhUTUxGb3JtRWxlbWVudD4sIEhUTUxGb3JtRWxlbWVudD4sXG4gICAgXCJvblN1Ym1pdFwiXG4+O1xuXG5leHBvcnQgdHlwZSBGb3JtUHJvcHM8XG4gICAgVFF1ZXJ5Rm5EYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQsXG4gICAgVEVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gSHR0cEVycm9yLFxuICAgIFRWYXJpYWJsZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICAgIFRDb250ZXh0IGV4dGVuZHMgb2JqZWN0ID0ge30sXG4gICAgVERhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gVFF1ZXJ5Rm5EYXRhLFxuICAgIFRSZXNwb25zZSBleHRlbmRzIEJhc2VSZWNvcmQgPSBURGF0YSxcbiAgICBUUmVzcG9uc2VFcnJvciBleHRlbmRzIEh0dHBFcnJvciA9IFRFcnJvcixcbj4gPSBQcm9wc1dpdGhDaGlsZHJlbiAmXG4gICAgVXNlRm9ybVJldHVyblR5cGU8XG4gICAgICAgIFRRdWVyeUZuRGF0YSxcbiAgICAgICAgVEVycm9yLFxuICAgICAgICBUVmFyaWFibGVzLFxuICAgICAgICBUQ29udGV4dCxcbiAgICAgICAgVERhdGEsXG4gICAgICAgIFRSZXNwb25zZSxcbiAgICAgICAgVFJlc3BvbnNlRXJyb3JcbiAgICA+ICYge1xuICAgICAgICBmb3JtUHJvcHM/OiBOYXRpdmVGb3JtUHJvcHM7XG4gICAgICAgIGlzV2F0Y2hhYmxlPzogYm9vbGVhbjtcbiAgICB9O1xuXG5leHBvcnQgY29uc3QgRm9ybSA9IDxcbiAgICBUUXVlcnlGbkRhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gQmFzZVJlY29yZCxcbiAgICBURXJyb3IgZXh0ZW5kcyBIdHRwRXJyb3IgPSBIdHRwRXJyb3IsXG4gICAgVFZhcmlhYmxlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gICAgVENvbnRleHQgZXh0ZW5kcyBvYmplY3QgPSB7fSxcbiAgICBURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBUUXVlcnlGbkRhdGEsXG4gICAgVFJlc3BvbnNlIGV4dGVuZHMgQmFzZVJlY29yZCA9IFREYXRhLFxuICAgIFRSZXNwb25zZUVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gVEVycm9yLFxuPih7XG4gICAgZm9ybVByb3BzLFxuICAgIGlzV2F0Y2hhYmxlLFxuICAgIHNhdmVCdXR0b25Qcm9wcyxcbiAgICAuLi5wcm9wc1xufTogRm9ybVByb3BzPFxuICAgIFRRdWVyeUZuRGF0YSxcbiAgICBURXJyb3IsXG4gICAgVFZhcmlhYmxlcyxcbiAgICBUQ29udGV4dCxcbiAgICBURGF0YSxcbiAgICBUUmVzcG9uc2UsXG4gICAgVFJlc3BvbnNlRXJyb3Jcbj4pID0+IHtcbiAgICBjb25zdCB3YXRjaGFibGUgPSB1c2VSZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGNvbnN0IHsgcmVzb3VyY2U6IF9yZXNvdXJjZSwgYWN0aW9uIH0gPSB1c2VQYXJzZWQoKTtcbiAgICBjb25zdCByb3V0ZXJUeXBlID0gdXNlUm91dGVyVHlwZSgpO1xuICAgIGNvbnN0IGJhY2sgPSB1c2VCYWNrKCk7XG4gICAgY29uc3QgeyBnb0JhY2sgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IG9uQmFjayA9XG4gICAgICAgIGFjdGlvbiAhPT0gXCJsaXN0XCIgfHwgdHlwZW9mIGFjdGlvbiAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgPyByb3V0ZXJUeXBlID09PSBcImxlZ2FjeVwiXG4gICAgICAgICAgICAgICAgPyBnb0JhY2tcbiAgICAgICAgICAgICAgICA6IGJhY2tcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGlzV2F0Y2hhYmxlICYmICF3YXRjaGFibGUuY3VycmVudCkge1xuICAgICAgICB3YXRjaGFibGUuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHByb3BzLndhdGNoKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb25TdWJtaXQgPSBwcm9wcy5oYW5kbGVTdWJtaXQoKF9kYXRhOiBUVmFyaWFibGVzKSA9PiB7XG4gICAgICAgIHByb3BzLnJlZmluZUNvcmUub25GaW5pc2gocHJvcHMuZ2V0VmFsdWVzKCkpLnRoZW4oKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxGb3JtVUkgey4uLnByb3BzfT5cbiAgICAgICAgICAgIDxmb3JtIHsuLi5mb3JtUHJvcHN9IG9uU3VibWl0PXtvblN1Ym1pdH0+XG4gICAgICAgICAgICAgICAgPENhcmQgY2xhc3NOYW1lPVwiYm9yZGVyLWJvcmRlci80MCBzaGFkb3ctc21cIj5cbiAgICAgICAgICAgICAgICAgICAgPENhcmRDb250ZW50IGNsYXNzTmFtZT1cInB0LTYgc3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgIDwvQ2FyZENvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPENhcmRGb290ZXIgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAteC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25CYWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5yZWZpbmVDb3JlLmZvcm1Mb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8U2F2ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e3Byb3BzLnJlZmluZUNvcmUuZm9ybUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLnNhdmVCdXR0b25Qcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQ2FyZEZvb3Rlcj5cbiAgICAgICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvRm9ybVVJPlxuICAgICk7XG59O1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJuZXh0LXRoZW1lc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICAgIERyb3Bkb3duTWVudSxcbiAgICBEcm9wZG93bk1lbnVDb250ZW50LFxuICAgIERyb3Bkb3duTWVudUl0ZW0sXG4gICAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIkAvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgTW9vbkljb24sIFN1bkljb24gfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWljb25zXCI7XG5cbmV4cG9ydCBjb25zdCBNb2RlVG9nZ2xlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgc2V0VGhlbWUgfSA9IHVzZVRoZW1lKCk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwiaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8U3VuSWNvbiBjbGFzc05hbWU9XCJoLVsxLjJyZW1dIHctWzEuMnJlbV0gcm90YXRlLTAgc2NhbGUtMTAwIHRyYW5zaXRpb24tYWxsIGRhcms6LXJvdGF0ZS05MCBkYXJrOnNjYWxlLTBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8TW9vbkljb24gY2xhc3NOYW1lPVwiYWJzb2x1dGUgaC1bMS4ycmVtXSB3LVsxLjJyZW1dIHJvdGF0ZS05MCBzY2FsZS0wIHRyYW5zaXRpb24tYWxsIGRhcms6cm90YXRlLTAgZGFyazpzY2FsZS0xMDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+VG9nZ2xlIHRoZW1lPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249e1wiZW5kXCJ9PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IHNldFRoZW1lKFwibGlnaHRcIil9PlxuICAgICAgICAgICAgICAgICAgICBMaWdodFxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBzZXRUaGVtZShcImRhcmtcIil9PlxuICAgICAgICAgICAgICAgICAgICBEYXJrXG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IHNldFRoZW1lKFwic3lzdGVtXCIpfT5cbiAgICAgICAgICAgICAgICAgICAgU3lzdGVtXG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICApO1xufTtcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgUGFnZUhlYWRlclByb3BzIH0gZnJvbSBcIkAvdHlwZXMvcGFnZUhlYWRlclwiO1xuaW1wb3J0IHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IFBhZ2VIZWFkZXI6IEZDPFBhZ2VIZWFkZXJQcm9wcz4gPSAoeyBleHRyYSwgLi4ucHJvcHMgfSkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgXCJmbGV4IGgtMjAgaXRlbXMtZW5kIGxnOmp1c3RpZnktYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICFwcm9wcy5icmVhZGNydW1iICYmIFwiaC1hdXRvXCIsXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5icmVhZGNydW1ifVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAteC00IG10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIGxlYWRpbmctNyB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZSBzbTp0cnVuY2F0ZSBzbTp0ZXh0LTN4bCBzbTp0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuc3ViVGl0bGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuc3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGxnOm1sLTQgbGc6bXQtMFwiPntleHRyYX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHtcbiAgICBGb3JtQ29udHJvbCxcbiAgICBTZWxlY3RDb250ZW50LFxuICAgIFNlbGVjdEl0ZW0sXG4gICAgU2VsZWN0VHJpZ2dlcixcbiAgICBTZWxlY3QgYXMgU2VsZWN0VUksXG4gICAgU2VsZWN0VmFsdWUsXG59IGZyb20gXCJAL3VpXCI7XG5pbXBvcnQgdHlwZSB7XG4gICAgQ29udGVudCBhcyBTZWxlY3RDb250ZW50VHlwZSxcbiAgICBTZWxlY3RQcm9wcyBhcyBTZWxlY3RDb3JlUHJvcHMsXG59IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBTZWxlY3RQcm9wcyA9IFNlbGVjdENvcmVQcm9wcyAmIHtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBlbXB0eU1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBvcHRpb25zPzogQmFzZU9wdGlvbltdO1xufTtcblxuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IGZvcndhcmRSZWY8XG4gICAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0Q29udGVudFR5cGU+LFxuICAgIFNlbGVjdFByb3BzXG4+KCh7IC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxTZWxlY3RVSVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkIHx8IHByb3BzLm9wdGlvbnM/Lmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e3Byb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPEZvcm1Db250cm9sPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIHJlZj17dHJpZ2dlclJlZn0+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj17cHJvcHMucGxhY2Vob2xkZXIgPz8gXCJTZWxlY3RcIn0gLz5cbiAgICAgICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8L0Zvcm1Db250cm9sPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnRcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdHJpZ2dlclJlZi5jdXJyZW50Py5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwcm9wcy5vcHRpb25zPy5tYXAoKG9wdGlvbiwga2V5OiBudW1iZXIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtrZXl9IHZhbHVlPXtvcHRpb24udmFsdWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICA8L1NlbGVjdFVJPlxuICAgICk7XG59KTtcblxuU2VsZWN0LmRpc3BsYXlOYW1lID0gXCJTZWxlY3RcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcbmltcG9ydCB7IGJ1dHRvblZhcmlhbnRzIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiQC91aS90b29sdGlwXCI7XG5pbXBvcnQgeyB1c2VNZW51LCB1c2VSZXNvdXJjZVBhcmFtcyB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IHVzZUxvY2F0aW9uIH0gZnJvbSBcInJlYWN0LXVzZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmtcIjtcblxudHlwZSBOYXZQcm9wcyA9IHtcbiAgICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHsgaXNDb2xsYXBzZWQgfTogTmF2UHJvcHMpID0+IHtcbiAgICBjb25zdCB7IG1lbnVJdGVtcyB9ID0gdXNlTWVudSgpO1xuICAgIGNvbnN0IHJlc291cmNlUGFyYW1zID0gdXNlUmVzb3VyY2VQYXJhbXMoKTtcbiAgICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpO1xuXG4gICAgY29uc3QgY3VycmVudFBhdGhuYW1lID0gU3RyaW5nKHBhdGhuYW1lKTtcblxuICAgIGNvbnN0IEdldEljb24gPSAoaXRlbTogKHR5cGVvZiBtZW51SXRlbXMpWzBdKSA9PiB7XG4gICAgICAgIGNvbnN0IGljb24gPSBpdGVtLm1ldGE/Lmljb247XG4gICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChpY29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudDxhbnk+KGljb24sIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwibXItMiB3LTQgaC00XCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS1jb2xsYXBzZWQ9e2lzQ29sbGFwc2VkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAgZmxleCBmbGV4LWNvbCBnYXAtNCBweS0yIGp1c3RpZnktYmV0d2VlbiBoLVs5NGR2aF0geGw6aC1bODRkdmhdIGRhdGEtW2NvbGxhcHNlZD10cnVlXTpweS0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5hdiBjbGFzc05hbWU9XCJncmlkIGdhcC0xIHB4LTIgZ3JvdXAtW1tkYXRhLWNvbGxhcHNlZD10cnVlXV06anVzdGlmeS1jZW50ZXIgZ3JvdXAtW1tkYXRhLWNvbGxhcHNlZD10cnVlXV06cHgtMlwiPlxuICAgICAgICAgICAgICAgIHttZW51SXRlbXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaSkgPT4gIWkubWV0YT8uaGlkZSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRocyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxpc3Q/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jcmVhdGU/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnJlcGxhY2UoXCI6aWRcIiwgcmVzb3VyY2VQYXJhbXMuaWQgYXMgc3RyaW5nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNob3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ucmVwbGFjZShcIjppZFwiLCByZXNvdXJjZVBhcmFtcy5pZCBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuaW5jbHVkZXMoY3VycmVudFBhdGhuYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLnNvbWUoKHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg/LnN0YXJ0c1dpdGgoY3VycmVudFBhdGhuYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhdGhuYW1lLnN0YXJ0c1dpdGgocGF0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0NvbGxhcHNlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBrZXk9e2tleX0gZGVsYXlEdXJhdGlvbj17MH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtpdGVtLmxpc3Q/LnRvU3RyaW5nKCkgPz8gXCIvI1wifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtpdGVtLm1ldGE/LnRpdGxlID8/IGl0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25WYXJpYW50cyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50OiBcImdob3N0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImp1c3RpZnktc3RhcnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOmJnLXByaW1hcnkvODAgaG92ZXI6dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ubWV0YT8uaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLm1ldGE/LnRpdGxlID8/IGl0ZW0ubGFiZWx9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5saXN0ID8gXCJMaXN0XCIgOiBcIkNyZWF0ZVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLm1ldGE/LmxhYmVsICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtbC1hdXRvIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5tZXRhPy5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2l0ZW0ubGlzdD8udG9TdHJpbmcoKSA/PyBcIi8jXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtpdGVtLm1ldGE/LnRpdGxlID8/IGl0ZW0ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblZhcmlhbnRzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50OiBcImdob3N0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwianVzdGlmeS1zdGFydFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1wcmltYXJ5LzgwIGhvdmVyOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7R2V0SWNvbihpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0ubWV0YT8udGl0bGUgPz8gaXRlbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5TaWRlYmFyLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyXCI7XG4iLCAiaW1wb3J0IHsgRWRpdEJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlRWRpdEJ1dHRvbiB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IFNxdWFyZVBlbkljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZDIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBFZGl0QnV0dG9uOiBGQzxFZGl0QnV0dG9uUHJvcHM+ID0gKHtcbiAgICByZXNvdXJjZSxcbiAgICByZWNvcmRJdGVtSWQsXG4gICAgaGlkZVRleHQgPSBmYWxzZSxcbiAgICBhY2Nlc3NDb250cm9sLFxuICAgIG1ldGEsXG4gICAgb25DbGljayxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgaGlkZGVuLCBkaXNhYmxlZCwgbGFiZWwsIHRpdGxlLCBMaW5rQ29tcG9uZW50LCB0byB9ID0gdXNlRWRpdEJ1dHRvbihcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgICAgICBpZDogcmVjb3JkSXRlbUlkLFxuICAgICAgICAgICAgYWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChoaWRkZW4pIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPExpbmtDb21wb25lbnRcbiAgICAgICAgICAgIHRvPXt0b31cbiAgICAgICAgICAgIHJlcGxhY2U9e2ZhbHNlfVxuICAgICAgICAgICAgb25DbGljaz17KGU6IFJlYWN0LlBvaW50ZXJFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbGljayhlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICBpY29uPXs8U3F1YXJlUGVuSWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn1cbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyFoaWRlVGV4dCAmJiAoY2hpbGRyZW4gPz8gbGFiZWwpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvTGlua0NvbXBvbmVudD5cbiAgICApO1xufTtcblxuRWRpdEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiRWRpdEJ1dHRvblwiO1xuIiwgImltcG9ydCB7IEV4cG9ydEJ1dHRvblByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgQ2FuQWNjZXNzLCB1c2VFeHBvcnRCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBTaGFyZUljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IEV4cG9ydEJ1dHRvbjogRkM8RXhwb3J0QnV0dG9uUHJvcHM+ID0gKHtcbiAgICBoaWRlVGV4dCA9IGZhbHNlLFxuICAgIHJlc291cmNlLFxuICAgIHJlY29yZEl0ZW1JZCxcbiAgICBhY2Nlc3NDb250cm9sLFxuICAgIGFjY2VzcyxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWwgfSA9IHVzZUV4cG9ydEJ1dHRvbigpO1xuICAgIGNvbnN0IENvbSA9ICFhY2Nlc3NDb250cm9sPy5lbmFibGVkID8gU2xvdCA6IENhbkFjY2VzcztcblxuICAgIGlmIChhY2Nlc3NDb250cm9sPy5oaWRlSWZVbmF1dGhvcml6ZWQgJiYgYWNjZXNzQ29udHJvbC5lbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb21cbiAgICAgICAgICAgIHBhcmFtcz17e1xuICAgICAgICAgICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlfVxuICAgICAgICAgICAgYWN0aW9uPVwiZXhwb3J0XCJcbiAgICAgICAgICAgIHsuLi5hY2Nlc3N9XG4gICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b24gaWNvbj17PFNoYXJlSWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Db20+XG4gICAgKTtcbn07XG5cbkV4cG9ydEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiRXhwb3J0QnV0dG9uXCI7XG4iLCAiaW1wb3J0IHsgSW1wb3J0QnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBDYW5BY2Nlc3MsIHVzZUltcG9ydEJ1dHRvbiB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IEltcG9ydEljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZDIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBJbXBvcnRCdXR0b246IEZDPEltcG9ydEJ1dHRvblByb3BzPiA9ICh7XG4gICAgaGlkZVRleHQgPSBmYWxzZSxcbiAgICByZXNvdXJjZSxcbiAgICBvbkNoYW5nZSxcbiAgICBhY2NlcHQgPSBcImltYWdlLyosYXBwbGljYXRpb24vKlwiLFxuICAgIHJlY29yZEl0ZW1JZCxcbiAgICBhY2Nlc3NDb250cm9sLFxuICAgIGFjY2VzcyxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWwgfSA9IHVzZUltcG9ydEJ1dHRvbigpO1xuICAgIGNvbnN0IENvbSA9ICFhY2Nlc3NDb250cm9sPy5lbmFibGVkID8gU2xvdCA6IENhbkFjY2VzcztcblxuICAgIGNvbnN0IG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgICAgICBlbC50eXBlID0gXCJmaWxlXCI7XG4gICAgICAgIGVsLmFjY2VwdCA9IGFjY2VwdDtcbiAgICAgICAgZWwub25jaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKEFycmF5LmZyb20oZS50YXJnZXQuZmlsZXMgPz8gW10pKTtcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZWwuY2xpY2soKTtcbiAgICB9O1xuXG4gICAgaWYgKGFjY2Vzc0NvbnRyb2w/LmhpZGVJZlVuYXV0aG9yaXplZCAmJiBhY2Nlc3NDb250cm9sLmVuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPENvbVxuICAgICAgICAgICAgcGFyYW1zPXt7XG4gICAgICAgICAgICAgICAgaWQ6IHJlY29yZEl0ZW1JZCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICByZXNvdXJjZT17cmVzb3VyY2V9XG4gICAgICAgICAgICBhY3Rpb249XCJpbXBvcnRcIlxuICAgICAgICAgICAgey4uLmFjY2Vzc31cbiAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgICAgICAgICAgaWNvbj17PEltcG9ydEljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHshaGlkZVRleHQgJiYgKGNoaWxkcmVuID8/IGxhYmVsKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0NvbT5cbiAgICApO1xufTtcblxuSW1wb3J0QnV0dG9uLmRpc3BsYXlOYW1lID0gXCJJbXBvcnRCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBMaXN0QnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyB1c2VMaXN0QnV0dG9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgTGlzdEljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZDIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBMaXN0QnV0dG9uOiBGQzxMaXN0QnV0dG9uUHJvcHM+ID0gKHtcbiAgICByZXNvdXJjZTogcmVzb3VyY2VOYW1lRnJvbVByb3BzLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIGNoaWxkcmVuLFxuICAgIG9uQ2xpY2ssXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IGhpZGRlbiwgZGlzYWJsZWQsIGxhYmVsLCB0aXRsZSwgTGlua0NvbXBvbmVudCwgdG8gfSA9IHVzZUxpc3RCdXR0b24oXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZU5hbWVGcm9tUHJvcHMsXG4gICAgICAgICAgICBhY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGhpZGRlbikgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8TGlua0NvbXBvbmVudFxuICAgICAgICAgICAgdG89e3RvfVxuICAgICAgICAgICAgcmVwbGFjZT17ZmFsc2V9XG4gICAgICAgICAgICBvbkNsaWNrPXsoZTogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgIGljb249ezxMaXN0SWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn1cbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyFoaWRlVGV4dCAmJiAoY2hpbGRyZW4gPz8gbGFiZWwpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvTGlua0NvbXBvbmVudD5cbiAgICApO1xufTtcblxuTGlzdEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiTGlzdEJ1dHRvblwiO1xuIiwgImltcG9ydCB7IFJlZnJlc2hCdXR0b25Qcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZVJlZnJlc2hCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBSZWZyZXNoQ3dJY29uIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBGQyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgUmVmcmVzaEJ1dHRvbjogRkM8UmVmcmVzaEJ1dHRvblByb3BzPiA9ICh7XG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgZGF0YVByb3ZpZGVyTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICAuLi5wcm9wc1xufSkgPT4ge1xuICAgIGNvbnN0IHsgb25DbGljaywgbGFiZWwsIGxvYWRpbmcgfSA9IHVzZVJlZnJlc2hCdXR0b24oe1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgaWQ6IHJlY29yZEl0ZW1JZCxcbiAgICAgICAgZGF0YVByb3ZpZGVyTmFtZSxcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgICAgaWNvbj17PFJlZnJlc2hDd0ljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgID5cbiAgICAgICAgICAgIHshaGlkZVRleHQgJiYgKGNoaWxkcmVuID8/IGxhYmVsKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgKTtcbn07XG5cblJlZnJlc2hCdXR0b24uZGlzcGxheU5hbWUgPSBcIlJlZnJlc2hCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBTYXZlQnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBDYW5BY2Nlc3MsIHVzZVNhdmVCdXR0b24gfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgeyBTYXZlSWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IFNhdmVCdXR0b246IEZDPFNhdmVCdXR0b25Qcm9wcz4gPSAoe1xuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgY2hpbGRyZW4sXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBhY2Nlc3MsXG4gICAgcmVzb3VyY2UsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIC4uLnByb3BzXG59KSA9PiB7XG4gICAgY29uc3QgeyBsYWJlbCB9ID0gdXNlU2F2ZUJ1dHRvbigpO1xuICAgIGNvbnN0IENvbSA9ICFhY2Nlc3NDb250cm9sPy5lbmFibGVkID8gU2xvdCA6IENhbkFjY2VzcztcblxuICAgIGlmIChhY2Nlc3NDb250cm9sPy5oaWRlSWZVbmF1dGhvcml6ZWQgJiYgYWNjZXNzQ29udHJvbC5lbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb21cbiAgICAgICAgICAgIHBhcmFtcz17e1xuICAgICAgICAgICAgICAgIGlkOiByZWNvcmRJdGVtSWQsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlfVxuICAgICAgICAgICAgYWN0aW9uPVwic2F2ZVwiXG4gICAgICAgICAgICB7Li4uYWNjZXNzfVxuICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uIGljb249ezxTYXZlSWNvbiBjbGFzc05hbWU9XCJtci0yIHctNCBoLTRcIiAvPn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgICB7IWhpZGVUZXh0ICYmIChjaGlsZHJlbiA/PyBsYWJlbCl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Db20+XG4gICAgKTtcbn07XG5cblNhdmVCdXR0b24uZGlzcGxheU5hbWUgPSBcIlNhdmVCdXR0b25cIjtcbiIsICJpbXBvcnQgeyBTaG93QnV0dG9uUHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyB1c2VTaG93QnV0dG9uIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgRXllSWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IFNob3dCdXR0b246IEZDPFNob3dCdXR0b25Qcm9wcz4gPSAoe1xuICAgIHJlc291cmNlOiByZXNvdXJjZU5hbWVGcm9tUHJvcHMsXG4gICAgcmVjb3JkSXRlbUlkLFxuICAgIGhpZGVUZXh0ID0gZmFsc2UsXG4gICAgYWNjZXNzQ29udHJvbCxcbiAgICBtZXRhLFxuICAgIGNoaWxkcmVuLFxuICAgIG9uQ2xpY2ssXG4gICAgLi4ucHJvcHNcbn0pID0+IHtcbiAgICBjb25zdCB7IHRvLCBsYWJlbCwgdGl0bGUsIGhpZGRlbiwgZGlzYWJsZWQsIExpbmtDb21wb25lbnQgfSA9IHVzZVNob3dCdXR0b24oXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZU5hbWVGcm9tUHJvcHMsXG4gICAgICAgICAgICBpZDogcmVjb3JkSXRlbUlkLFxuICAgICAgICAgICAgYWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChoaWRkZW4pIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPExpbmtDb21wb25lbnRcbiAgICAgICAgICAgIHRvPXt0b31cbiAgICAgICAgICAgIHJlcGxhY2U9e2ZhbHNlfVxuICAgICAgICAgICAgb25DbGljaz17KGU6IFJlYWN0LlBvaW50ZXJFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbGljayhlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvbj17PEV5ZUljb24gY2xhc3NOYW1lPVwibXItMiB3LTQgaC00XCIgLz59XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyFoaWRlVGV4dCAmJiAoY2hpbGRyZW4gPz8gbGFiZWwpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvTGlua0NvbXBvbmVudD5cbiAgICApO1xufTtcblxuU2hvd0J1dHRvbi5kaXNwbGF5TmFtZSA9IFwiU2hvd0J1dHRvblwiO1xuIiwgImltcG9ydCB7IExpc3RCdXR0b24gfSBmcm9tIFwiQC9idXR0b25zXCI7XG5pbXBvcnQgeyBCcmVhZGNydW1icywgUGFnZUhlYWRlciB9IGZyb20gXCJAL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IENyZWF0ZVByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7XG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG4gICAgdXNlVXNlckZyaWVuZGx5TmFtZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IFJlYWN0LCB7IGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVBhZ2U6IFJlYWN0LkZDPENyZWF0ZVByb3BzPiA9ICh7XG4gICAgdGl0bGUsXG4gICAgcmVzb3VyY2U6IHJlc291cmNlRnJvbVByb3BzLFxuICAgIGJyZWFkY3J1bWI6IGJyZWFkY3J1bWJGcm9tUHJvcHMsXG4gICAgZXh0cmEsXG4gICAgY2hpbGRyZW4sXG59KTogUmV0dXJuVHlwZTxSZWFjdC5GQzxDcmVhdGVQcm9wcz4+ID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlLCBpZGVudGlmaWVyIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZUZyb21Qcm9wcyk7XG5cbiAgICBjb25zdCBicmVhZGNydW1iID1cbiAgICAgICAgdHlwZW9mIGJyZWFkY3J1bWJGcm9tUHJvcHMgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgID8gZ2xvYmFsQnJlYWRjcnVtYlxuICAgICAgICAgICAgOiBicmVhZGNydW1iRnJvbVByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxQYWdlSGVhZGVyXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtpZGVudGlmaWVyfS50aXRsZXMuTGlzdGAsXG4gICAgICAgICAgICAgICAgICAgICAgICBgQ3JlYXRlICR7Z2V0VXNlckZyaWVuZGx5TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZT8ubWV0YT8ubGFiZWwgPz8gaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNpbmd1bGFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICApfWAsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXNCYWNrXG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYj17XG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWRFbGVtZW50KGJyZWFkY3J1bWIpID8gYnJlYWRjcnVtYiA6IDxCcmVhZGNydW1icyAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBleHRyYT17XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhID8/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpc3RCdXR0b24gcmVzb3VyY2U9e3Jlc291cmNlRnJvbVByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdC00ICFtdC0wXCI+e2NoaWxkcmVuIGFzIFJlYWN0Tm9kZX08L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbkNyZWF0ZVBhZ2UuZGlzcGxheU5hbWUgPSBcIkNyZWF0ZVBhZ2VcIjtcbiIsICJpbXBvcnQgeyBEZWxldGVCdXR0b24sIFNob3dCdXR0b24gfSBmcm9tIFwiQC9idXR0b25zXCI7XG5pbXBvcnQgeyBCcmVhZGNydW1icywgUGFnZUhlYWRlciB9IGZyb20gXCJAL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVkaXRQcm9wcyB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQge1xuICAgIHVzZU5hdmlnYXRpb24sXG4gICAgdXNlUmVkaXJlY3Rpb25BZnRlclN1Ym1pc3Npb24sXG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG4gICAgdXNlVXNlckZyaWVuZGx5TmFtZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgRkMsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBFZGl0UGFnZTogRkM8RWRpdFByb3BzPiA9ICh7XG4gICAgdGl0bGUsXG4gICAgcmVzb3VyY2UsXG4gICAgZXh0cmEsXG4gICAgYnJlYWRjcnVtYjogYnJlYWRjcnVtYkZyb21Qcm9wcyxcbiAgICBjaGlsZHJlbixcbn0pID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcbiAgICBjb25zdCB7IGxpc3QgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlOiBfcmVzb3VyY2UsIGlkZW50aWZpZXIgfSA9IHVzZVJlc291cmNlKHJlc291cmNlKTtcblxuICAgIGNvbnN0IGJyZWFkY3J1bWIgPVxuICAgICAgICB0eXBlb2YgYnJlYWRjcnVtYkZyb21Qcm9wcyA9PT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgPyBnbG9iYWxCcmVhZGNydW1iXG4gICAgICAgICAgICA6IGJyZWFkY3J1bWJGcm9tUHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPFBhZ2VIZWFkZXJcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2lkZW50aWZpZXJ9LnRpdGxlcy5MaXN0YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBFZGl0ICR7Z2V0VXNlckZyaWVuZGx5TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVzb3VyY2U/Lm1ldGE/LmxhYmVsID8/IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwbHVyYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICl9YCxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0JhY2tcbiAgICAgICAgICAgICAgICBicmVhZGNydW1iPXtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEVsZW1lbnQoYnJlYWRjcnVtYikgPyBicmVhZGNydW1iIDogPEJyZWFkY3J1bWJzIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4dHJhPXtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEgPz8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaG93QnV0dG9uIHJlc291cmNlPXtyZXNvdXJjZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlPXtyZXNvdXJjZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KF9yZXNvdXJjZT8ubmFtZSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB0LTRcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5FZGl0UGFnZS5kaXNwbGF5TmFtZSA9IFwiRWRpdFBhZ2VcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgQ3JlYXRlQnV0dG9uIH0gZnJvbSBcIkAvYnV0dG9uc1wiO1xuaW1wb3J0IHsgQnJlYWRjcnVtYnMsIFBhZ2VIZWFkZXIgfSBmcm9tIFwiQC9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgTGlzdFByb3BzIH0gZnJvbSBcIkAvdHlwZXNcIjtcbmltcG9ydCB7XG4gICAgdXNlUmVmaW5lQ29udGV4dCxcbiAgICB1c2VSZXNvdXJjZSxcbiAgICB1c2VUcmFuc2xhdGUsXG4gICAgdXNlVXNlckZyaWVuZGx5TmFtZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgRkMsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBMaXN0UGFnZTogRkM8TGlzdFByb3BzPiA9ICh7XG4gICAgdGl0bGUsXG4gICAgcmVzb3VyY2U6IHJlc291cmNlRnJvbVByb3BzLFxuICAgIGJyZWFkY3J1bWI6IGJyZWFkY3J1bWJGcm9tUHJvcHMsXG4gICAgY3JlYXRlQnV0dG9uUHJvcHMsXG4gICAgY2xhc3NOYW1lLFxuICAgIGlzQ3JlYXRlID0gdHJ1ZSxcbiAgICBleHRyYSxcbiAgICBjaGlsZHJlbixcbn0pID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlLCBpZGVudGlmaWVyIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZUZyb21Qcm9wcyk7XG5cbiAgICBjb25zdCBicmVhZGNydW1iID1cbiAgICAgICAgdHlwZW9mIGJyZWFkY3J1bWJGcm9tUHJvcHMgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgID8gZ2xvYmFsQnJlYWRjcnVtYlxuICAgICAgICAgICAgOiBicmVhZGNydW1iRnJvbVByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxQYWdlSGVhZGVyXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtpZGVudGlmaWVyfS50aXRsZXMuTGlzdGAsXG4gICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCAke2dldFVzZXJGcmllbmRseU5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U/Lm1ldGE/LmxhYmVsID8/IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwbHVyYWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICl9YCxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhZGNydW1iPXtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEVsZW1lbnQoYnJlYWRjcnVtYikgPyBicmVhZGNydW1iIDogPEJyZWFkY3J1bWJzIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4dHJhPXtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmEgPz8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0NyZWF0ZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3JlYXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmNyZWF0ZUJ1dHRvblByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQnV0dG9uUHJvcHM/LnJlc291cmNlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHQtMiBzbTpwdC00ICFtdC0wXCIsIGNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcblxuTGlzdFBhZ2UuZGlzcGxheU5hbWUgPSBcIkxpc3RQYWdlXCI7XG4iLCAiaW1wb3J0IHsgRGVsZXRlQnV0dG9uLCBFZGl0QnV0dG9uIH0gZnJvbSBcIkAvYnV0dG9uc1wiO1xuaW1wb3J0IHsgQnJlYWRjcnVtYnMsIFBhZ2VIZWFkZXIgfSBmcm9tIFwiQC9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBTaG93UHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHtcbiAgICB1c2VOYXZpZ2F0aW9uLFxuICAgIHVzZVJlZmluZUNvbnRleHQsXG4gICAgdXNlUmVzb3VyY2UsXG4gICAgdXNlVHJhbnNsYXRlLFxuICAgIHVzZVVzZXJGcmllbmRseU5hbWUsXG59IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IEZDLCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUm93IH0gZnJvbSBcIi4vcm93XCI7XG5cbmV4cG9ydCBjb25zdCBTaG93UGFnZTogRkM8U2hvd1Byb3BzPiAmIHtcbiAgICBSb3c6IHR5cGVvZiBSb3c7XG59ID0gKHtcbiAgICB0aXRsZSxcbiAgICByZXNvdXJjZTogcmVzb3VyY2VGcm9tUHJvcHMsXG4gICAgYnJlYWRjcnVtYjogYnJlYWRjcnVtYkZyb21Qcm9wcyxcbiAgICBpc0VkaXQgPSB0cnVlLFxuICAgIGlzRGVsZXRlID0gdHJ1ZSxcbiAgICBleHRyYSxcbiAgICBjaGlsZHJlbixcbn0pID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB1c2VUcmFuc2xhdGUoKTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHsgYnJlYWRjcnVtYjogZ2xvYmFsQnJlYWRjcnVtYiB9ID0ge30gfSA9XG4gICAgICAgIHVzZVJlZmluZUNvbnRleHQoKTtcblxuICAgIGNvbnN0IGdldFVzZXJGcmllbmRseU5hbWUgPSB1c2VVc2VyRnJpZW5kbHlOYW1lKCk7XG5cbiAgICBjb25zdCB7IHJlc291cmNlLCBpZGVudGlmaWVyIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZUZyb21Qcm9wcyk7XG5cbiAgICBjb25zdCB7IGxpc3QgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IGJyZWFkY3J1bWIgPVxuICAgICAgICB0eXBlb2YgYnJlYWRjcnVtYkZyb21Qcm9wcyA9PT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgPyBnbG9iYWxCcmVhZGNydW1iXG4gICAgICAgICAgICA6IGJyZWFkY3J1bWJGcm9tUHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPFBhZ2VIZWFkZXJcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2lkZW50aWZpZXJ9LnRpdGxlcy5MaXN0YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBTaG93ICR7Z2V0VXNlckZyaWVuZGx5TmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZT8ubWV0YT8ubGFiZWwgPz8gaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNpbmd1bGFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICApfWAsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYj17XG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWRFbGVtZW50KGJyZWFkY3J1bWIpID8gYnJlYWRjcnVtYiA6IDxCcmVhZGNydW1icyAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0JhY2tcbiAgICAgICAgICAgICAgICBleHRyYT17XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhID8/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNFZGl0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVkaXRCdXR0b24gcmVzb3VyY2U9e3Jlc291cmNlRnJvbVByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzRGVsZXRlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlRnJvbVByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyZXNvdXJjZT8ubmFtZSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBwdC00ICFtdC0wXCI+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcblxuU2hvd1BhZ2UuUm93ID0gUm93O1xuU2hvd1BhZ2UuZGlzcGxheU5hbWUgPSBcIlNob3dQYWdlXCI7XG4iLCAiaW1wb3J0IHsgUHJvcHNXaXRoQ2hpbGRyZW4sIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgUm93ID0gKHtcbiAgICB0aXRsZSxcbiAgICBjaGlsZHJlbixcbn06IFJlcXVpcmVkPFxuICAgIFByb3BzV2l0aENoaWxkcmVuPHtcbiAgICAgICAgdGl0bGU6IHN0cmluZztcbiAgICB9PlxuPikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8ZGwgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtYXV0byBwdC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkdCBjbGFzc05hbWU9XCJzY3JvbGwtbS0yMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtZm9yZWdyb3VuZCBsZWFkaW5nLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIGFzIE5leHRUaGVtZXNQcm92aWRlciB9IGZyb20gXCJuZXh0LXRoZW1lc1wiO1xuaW1wb3J0IHsgdHlwZSBUaGVtZVByb3ZpZGVyUHJvcHMgfSBmcm9tIFwibmV4dC10aGVtZXMvZGlzdC90eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gVGhlbWVQcm92aWRlcih7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBUaGVtZVByb3ZpZGVyUHJvcHMpIHtcbiAgICByZXR1cm4gPE5leHRUaGVtZXNQcm92aWRlciB7Li4ucHJvcHN9PntjaGlsZHJlbn08L05leHRUaGVtZXNQcm92aWRlcj47XG59XG4iLCAiaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAL3Byb3ZpZGVycy90aGVtZS1wcm92aWRlclwiO1xuaW1wb3J0IHsgTGF5b3V0UHJvcHMgfSBmcm9tIFwiQC90eXBlc1wiO1xuaW1wb3J0IHsgVG9hc3RlciwgVG9vbHRpcFByb3ZpZGVyIH0gZnJvbSBcIkAvdWlcIjtcbmltcG9ydCB7IFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxcbiAgICBQaWNrPFxuICAgICAgICBMYXlvdXRQcm9wcyxcbiAgICAgICAgfCBcImF0dHJpYnV0ZVwiXG4gICAgICAgIHwgXCJkZWZhdWx0VGhlbWVcIlxuICAgICAgICB8IFwiZW5hYmxlU3lzdGVtXCJcbiAgICAgICAgfCBcImRpc2FibGVUcmFuc2l0aW9uT25DaGFuZ2VcIlxuICAgICAgICB8IFwiZW5hYmxlQ29sb3JTY2hlbWVcIlxuICAgICAgICB8IFwiZm9yY2VkVGhlbWVcIlxuICAgICAgICB8IFwibm9uY2VcIlxuICAgICAgICB8IFwic3RvcmFnZUtleVwiXG4gICAgICAgIHwgXCJ0aGVtZXNcIlxuICAgICAgICB8IFwidmFsdWVcIlxuICAgID5cbj47XG5cbmV4cG9ydCBjb25zdCBCYXNlTGF5b3V0ID0gKHtcbiAgICBhdHRyaWJ1dGUsXG4gICAgZGVmYXVsdFRoZW1lLFxuICAgIGVuYWJsZVN5c3RlbSxcbiAgICBkaXNhYmxlVHJhbnNpdGlvbk9uQ2hhbmdlLFxuICAgIGVuYWJsZUNvbG9yU2NoZW1lLFxuICAgIGZvcmNlZFRoZW1lLFxuICAgIG5vbmNlLFxuICAgIHN0b3JhZ2VLZXksXG4gICAgdGhlbWVzLFxuICAgIHZhbHVlLFxuICAgIGNoaWxkcmVuLFxufTogUHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8VGhlbWVQcm92aWRlclxuICAgICAgICAgICAgYXR0cmlidXRlPXthdHRyaWJ1dGUgPz8gXCJjbGFzc1wifVxuICAgICAgICAgICAgZGVmYXVsdFRoZW1lPXtkZWZhdWx0VGhlbWUgPz8gXCJzeXN0ZW1cIn1cbiAgICAgICAgICAgIGVuYWJsZVN5c3RlbT17ZW5hYmxlU3lzdGVtID8/IHRydWV9XG4gICAgICAgICAgICBkaXNhYmxlVHJhbnNpdGlvbk9uQ2hhbmdlPXtkaXNhYmxlVHJhbnNpdGlvbk9uQ2hhbmdlID8/IGZhbHNlfVxuICAgICAgICAgICAgZW5hYmxlQ29sb3JTY2hlbWU9e2VuYWJsZUNvbG9yU2NoZW1lID8/IHRydWV9XG4gICAgICAgICAgICBmb3JjZWRUaGVtZT17Zm9yY2VkVGhlbWV9XG4gICAgICAgICAgICBub25jZT17bm9uY2V9XG4gICAgICAgICAgICBzdG9yYWdlS2V5PXtzdG9yYWdlS2V5fVxuICAgICAgICAgICAgdGhlbWVzPXt0aGVtZXN9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgID5cbiAgICAgICAgICAgIDxUb29sdGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICBkZWxheUR1cmF0aW9uPXswfVxuICAgICAgICAgICAgICAgIHNraXBEZWxheUR1cmF0aW9uPXswfVxuICAgICAgICAgICAgICAgIGRpc2FibGVIb3ZlcmFibGVDb250ZW50PXt0cnVlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICA8VG9hc3RlciAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICApO1xufTtcblxuQmFzZUxheW91dC5kaXNwbGF5TmFtZSA9IFwiQmFzZUxheW91dFwiO1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gcXVlcmllc0RpZENoYW5nZShwcmV2UXVlcmllcywgbmV4dFF1ZXJpZXMpIHtcbiAgaWYgKG5leHRRdWVyaWVzID09PSBwcmV2UXVlcmllcykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBuZXh0UXVlcmllc0FyciA9IE9iamVjdC52YWx1ZXMobmV4dFF1ZXJpZXMpO1xuICBjb25zdCBwcmV2UXVlcmllc0FyciA9IE9iamVjdC52YWx1ZXMocHJldlF1ZXJpZXMpO1xuICBpZiAobmV4dFF1ZXJpZXNBcnIubGVuZ3RoICE9PSBwcmV2UXVlcmllc0Fyci5sZW5ndGgpIHJldHVybiB0cnVlO1xuICBpZiAobmV4dFF1ZXJpZXNBcnIuc29tZSgocSwgaSkgPT4gcSAhPT0gcHJldlF1ZXJpZXNBcnJbaV0pKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgcHJldktleXMgPSBPYmplY3Qua2V5cyhwcmV2UXVlcmllcyk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhuZXh0UXVlcmllcykuc29tZSgobiwgaSkgPT4gbiAhPT0gcHJldktleXNbaV0pO1xufVxuXG5mdW5jdGlvbiBfcmVmKGN1cnIsIGtleSkge1xuICBjdXJyLm1hdGNoZXNba2V5XSA9IGZhbHNlO1xuICBjdXJyLm1lZGlhUXVlcmllc1trZXldID0ge307XG4gIHJldHVybiBjdXJyO1xufVxuXG5mdW5jdGlvbiBpbml0KHF1ZXJpZXMpIHtcbiAgY29uc3QgcXVlcnlLZXlzID0gT2JqZWN0LmtleXMocXVlcmllcyk7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gcXVlcnlLZXlzLnJlZHVjZShfcmVmLCB7XG4gICAgbWVkaWFRdWVyaWVzOiB7fSxcbiAgICBtYXRjaGVzOiB7fVxuICB9KTtcbiAgcmV0dXJuIHF1ZXJ5S2V5cy5yZWR1Y2UoKHN0YXRlLCBuYW1lKSA9PiB7XG4gICAgY29uc3QgbXFsID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcmllc1tuYW1lXSk7XG4gICAgc3RhdGUubWVkaWFRdWVyaWVzW25hbWVdID0gbXFsO1xuICAgIHN0YXRlLm1hdGNoZXNbbmFtZV0gPSBtcWwubWF0Y2hlcztcbiAgICByZXR1cm4gc3RhdGU7XG4gIH0sIHtcbiAgICBtZWRpYVF1ZXJpZXM6IHt9LFxuICAgIG1hdGNoZXM6IHt9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgZnVuY3Rpb24gX3JlZjIocHJldiwga2V5KSB7XG4gICAgcHJldltrZXldID0gc3RhdGUubWVkaWFRdWVyaWVzW2tleV0ubWF0Y2hlcztcbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlICd1cGRhdGVNYXRjaGVzJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoZXM6IE9iamVjdC5rZXlzKHN0YXRlLm1lZGlhUXVlcmllcykucmVkdWNlKF9yZWYyLCB7fSksXG4gICAgICAgIG1lZGlhUXVlcmllczogc3RhdGUubWVkaWFRdWVyaWVzXG4gICAgICB9O1xuXG4gICAgY2FzZSAnc2V0UXVlcmllcyc6XG4gICAgICByZXR1cm4gaW5pdChhY3Rpb24ucXVlcmllcyk7XG4gIH1cbn1cbi8qKlxuICogQSBob29rIHRoYXQgcmV0dXJucyBhIFtgTWVkaWFRdWVyeU1hdGNoZXNgXSgjbWVkaWFxdWVyeW1hdGNoZXMpIG9iamVjdCB3aGljaCB3aWxsXG4gKiB0ZWxsIHlvdSBpZiBzcGVjaWZpYyBtZWRpYSBxdWVyaWVzIG1hdGNoZWQsIGFsbCBtZWRpYSBxdWVyaWVzIG1hdGNoZWQsIG9yXG4gKiBhbnkgbWVkaWEgcXVlcmllcyBtYXRjaGVkLiBNYXRjaGVzIGluIHRoaXMgaG9vayB3aWxsIGFsd2F5cyByZXR1cm4gYGZhbHNlYCB3aGVuXG4gKiByZW5kZXJpbmcgb24gdGhlIHNlcnZlci5cbiAqXG4gKiBAcGFyYW0gcXVlcnlNYXAgVGhlIG1lZGlhIHF1ZXJpZXMgeW91IHdhbnQgdG8gbWF0Y2ggYWdhaW5zdCBlLmcuIGB7c2NyZWVuOiBcInNjcmVlblwiLCB3aWR0aDogXCIobWluLXdpZHRoOiAxMmVtKVwifWBcbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZWRpYVF1ZXJpZXMocXVlcnlNYXApIHtcbiAgY29uc3QgcHJldlF1ZXJpZXMgPSBSZWFjdC51c2VSZWYocXVlcnlNYXApO1xuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IFJlYWN0LnVzZVJlZHVjZXIocmVkdWNlciwgcXVlcnlNYXAsIGluaXQpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChxdWVyaWVzRGlkQ2hhbmdlKHF1ZXJ5TWFwLCBwcmV2UXVlcmllcy5jdXJyZW50KSkge1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiAnc2V0UXVlcmllcycsXG4gICAgICAgIHF1ZXJpZXM6IHF1ZXJ5TWFwXG4gICAgICB9KTtcbiAgICAgIHByZXZRdWVyaWVzLmN1cnJlbnQgPSBxdWVyeU1hcDtcbiAgICB9XG4gIH0sIFtxdWVyeU1hcF0pO1xuXG4gIGZ1bmN0aW9uIF9yZWYzKCkge1xuICAgIHJldHVybiBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiAndXBkYXRlTWF0Y2hlcydcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9yZWY0KG1xKSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSBfcmVmMztcbiAgICBpZiAodHlwZW9mIG1xLmFkZExpc3RlbmVyICE9PSAndW5kZWZpbmVkJykgbXEuYWRkTGlzdGVuZXIoY2FsbGJhY2spO2Vsc2UgbXEuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2FsbGJhY2spO1xuICAgIHJldHVybiBjYWxsYmFjaztcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcXVlcmllcyA9IE9iamVjdC52YWx1ZXMoc3RhdGUubWVkaWFRdWVyaWVzKTtcbiAgICBjb25zdCBjYWxsYmFja3MgPSBxdWVyaWVzLm1hcChfcmVmNCk7XG5cbiAgICBmdW5jdGlvbiBfcmVmNShtcSwgaSkge1xuICAgICAgaWYgKHR5cGVvZiBtcS5hZGRMaXN0ZW5lciAhPT0gJ3VuZGVmaW5lZCcpIG1xLnJlbW92ZUxpc3RlbmVyKGNhbGxiYWNrc1tpXSk7ZWxzZSBtcS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjYWxsYmFja3NbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBxdWVyaWVzLmZvckVhY2goX3JlZjUpO1xuICAgIH07XG4gIH0sIFtzdGF0ZS5tZWRpYVF1ZXJpZXNdKTtcbiAgY29uc3Qge1xuICAgIG1hdGNoZXNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBtYXRjaFZhbHVlcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gT2JqZWN0LnZhbHVlcyhtYXRjaGVzKSwgW21hdGNoZXNdKTtcbiAgcmV0dXJuIHtcbiAgICBtYXRjaGVzLFxuICAgIG1hdGNoZXNBbnk6IG1hdGNoVmFsdWVzLnNvbWUoQm9vbGVhbiksXG4gICAgbWF0Y2hlc0FsbDogbWF0Y2hWYWx1ZXMubGVuZ3RoID4gMCAmJiBtYXRjaFZhbHVlcy5ldmVyeShCb29sZWFuKVxuICB9O1xufVxuLyoqXG4gKiBBIGhvb2sgdGhhdCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWVkaWEgcXVlcnkgbWF0Y2hlZCBhbmQgYGZhbHNlYCBpZiBub3QuIFRoaXNcbiAqIGhvb2sgd2lsbCBhbHdheXMgcmV0dXJuIGBmYWxzZWAgd2hlbiByZW5kZXJpbmcgb24gdGhlIHNlcnZlci5cbiAqXG4gKiBAcGFyYW0gcXVlcnkgVGhlIG1lZGlhIHF1ZXJ5IHlvdSB3YW50IHRvIG1hdGNoIGFnYWluc3QgZS5nLiBgXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTJlbSlcImBcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeSkge1xuICByZXR1cm4gdXNlTWVkaWFRdWVyaWVzKGdldE9iaihxdWVyeSkpLm1hdGNoZXNBbGw7XG59XG5jb25zdCBjYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBnZXRPYmoocXVlcnkpIHtcbiAgaWYgKGNhY2hlW3F1ZXJ5XSA9PT0gdm9pZCAwKSBjYWNoZVtxdWVyeV0gPSB7XG4gICAgZGVmYXVsdDogcXVlcnlcbiAgfTtcbiAgcmV0dXJuIGNhY2hlW3F1ZXJ5XTtcbn0iLCAiaW1wb3J0IHsgTW9kZVRvZ2dsZSwgU2lkZWJhciB9IGZyb20gXCJAL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiQC9jb21wb25lbnRzL2xpbmtcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IExheW91dFByb3BzLCBMb2dvVHlwZSB9IGZyb20gXCJAL3R5cGVzXCI7XG5pbXBvcnQge1xuICAgIFJlc2l6YWJsZUhhbmRsZSxcbiAgICBSZXNpemFibGVQYW5lbCxcbiAgICBSZXNpemFibGVQYW5lbEdyb3VwLFxufSBmcm9tIFwiQC91aS9yZXNpemFibGVcIjtcbmltcG9ydCB7IHVzZU1lZGlhUXVlcnkgfSBmcm9tIFwiQHJlYWN0LWhvb2svbWVkaWEtcXVlcnlcIjtcbmltcG9ydCB7IHVzZVJlc291cmNlIH0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgY2xvbmVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEJhc2VMYXlvdXQgfSBmcm9tIFwiLi9iYXNlXCI7XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0TGF5b3V0ID0gKHtcbiAgICBjaGlsZHJlbixcbiAgICBkZWZhdWx0TGF5b3V0LFxuICAgIGRlZmF1bHRDb2xsYXBzZWQgPSBmYWxzZSxcbiAgICBuYXZDb2xsYXBzZWRTaXplLFxuICAgIG5hdmJhcixcbiAgICBmb290ZXIsXG4gICAgbG9nbyxcbiAgICBhdHRyaWJ1dGUsXG4gICAgZGVmYXVsdFRoZW1lLFxuICAgIGVuYWJsZVN5c3RlbSxcbiAgICBkaXNhYmxlVHJhbnNpdGlvbk9uQ2hhbmdlLFxuICAgIGVuYWJsZUNvbG9yU2NoZW1lLFxuICAgIGZvcmNlZFRoZW1lLFxuICAgIG5vbmNlLFxuICAgIHN0b3JhZ2VLZXksXG4gICAgdGhlbWVzLFxuICAgIHZhbHVlLFxufTogTGF5b3V0UHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHJlc291cmNlcyB9ID0gdXNlUmVzb3VyY2UoKTtcblxuICAgIGNvbnN0IGZpcnN0RGFzaGJvYXJkID0gcmVzb3VyY2VzPy5bMF07XG5cbiAgICBjb25zdCB4cyA9IHVzZU1lZGlhUXVlcnkoXCJvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc5Ljk5OXB4KVwiKTtcbiAgICBjb25zdCBzbSA9IHVzZU1lZGlhUXVlcnkoXG4gICAgICAgIFwib25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSBhbmQgKG1heC13aWR0aDogNzY3Ljk5OXB4KVwiLFxuICAgICk7XG4gICAgY29uc3QgbWQgPSB1c2VNZWRpYVF1ZXJ5KFxuICAgICAgICBcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjMuOTk5cHgpXCIsXG4gICAgKTtcbiAgICBjb25zdCBsZyA9IHVzZU1lZGlhUXVlcnkoXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KVwiKTtcblxuICAgIGNvbnN0IFtpc0NvbGxhcHNlZCwgc2V0SXNDb2xsYXBzZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oXG4gICAgICAgIHhzID8/IGRlZmF1bHRDb2xsYXBzZWQsXG4gICAgKTtcblxuICAgIGNvbnN0IGxheW91dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoZGVmYXVsdExheW91dCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRMYXlvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHhzKSB7XG4gICAgICAgICAgICByZXR1cm4gWzE1LCA4NV07XG4gICAgICAgIH0gZWxzZSBpZiAoc20pIHtcbiAgICAgICAgICAgIHJldHVybiBbMjAsIDgwXTtcbiAgICAgICAgfSBlbHNlIGlmIChtZCkge1xuICAgICAgICAgICAgcmV0dXJuIFsyNSwgNzVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsxNSwgODVdO1xuICAgIH0sIFtkZWZhdWx0TGF5b3V0LCB4cywgc20sIG1kXSk7XG5cbiAgICBjb25zdCBTaWRlYmFyU2l6ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKGxnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pblNpemU6IDExLFxuICAgICAgICAgICAgICAgIG1heFNpemU6IDE1LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChtZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtaW5TaXplOiAxNSxcbiAgICAgICAgICAgICAgICBtYXhTaXplOiAyNSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoc20pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWluU2l6ZTogMjAsXG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogMzAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pblNpemU6IDE1LFxuICAgICAgICAgICAgbWF4U2l6ZTogMTUsXG4gICAgICAgIH07XG4gICAgfSwgW3NtLCBtZCwgbGddKTtcblxuICAgIGNvbnN0IGhhc0NvbGxhcHNlZCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gaXNDb2xsYXBzZWQgfHwgeHMgfHwgc20gfHwgbWQ7XG4gICAgfSwgW2lzQ29sbGFwc2VkLCBtZCwgc20sIHhzXSk7XG5cbiAgICBjb25zdCBMb2dvOiBMb2dvVHlwZSB8IHVuZGVmaW5lZCA9IHVzZU1lbW88TG9nb1R5cGUgfCB1bmRlZmluZWQ+KCgpOlxuICAgICAgICB8IExvZ29UeXBlXG4gICAgICAgIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgICAgaWYgKCFsb2dvKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQobG9nby5kZWZhdWx0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZUVsZW1lbnQ8TG9nb1R5cGU+KGxvZ28uZGVmYXVsdCwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwidy1hdXRvIGgtOFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gaGFzQ29sbGFwc2VkID8gbG9nby5jb2xsYXBzZWQgOiBsb2dvLmRlZmF1bHQ7XG4gICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChjb21wb25lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50PExvZ29UeXBlPihjb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwidy1hdXRvIGgtOFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LCBbbG9nbywgZGVmYXVsdExheW91dCwgaGFzQ29sbGFwc2VkXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPEJhc2VMYXlvdXRcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU9e2F0dHJpYnV0ZX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0VGhlbWU9e2RlZmF1bHRUaGVtZX1cbiAgICAgICAgICAgICAgICBlbmFibGVTeXN0ZW09e2VuYWJsZVN5c3RlbX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlVHJhbnNpdGlvbk9uQ2hhbmdlPXtkaXNhYmxlVHJhbnNpdGlvbk9uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGVuYWJsZUNvbG9yU2NoZW1lPXtlbmFibGVDb2xvclNjaGVtZX1cbiAgICAgICAgICAgICAgICBmb3JjZWRUaGVtZT17Zm9yY2VkVGhlbWV9XG4gICAgICAgICAgICAgICAgbm9uY2U9e25vbmNlfVxuICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXk9e3N0b3JhZ2VLZXl9XG4gICAgICAgICAgICAgICAgdGhlbWVzPXt0aGVtZXN9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxSZXNpemFibGVQYW5lbEdyb3VwXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgICAgICAgICAgICBvbkxheW91dD17KHNpemVzOiBudW1iZXJbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gYHJlYWN0LXJlc2l6YWJsZS1wYW5lbHM6bGF5b3V0PSR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtZnVsbCBpdGVtcy1zdHJldGNoXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxSZXNpemFibGVQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNpemU9e2xheW91dFswXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZFNpemU9e25hdkNvbGxhcHNlZFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzaWJsZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblNpemU9e1NpZGViYXJTaXplcy5taW5TaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2l6ZT17U2lkZWJhclNpemVzLm1heFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkV4cGFuZD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNlZCA9IHhzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzQ29sbGFwc2VkKGNvbGxhcHNlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gYHJlYWN0LXJlc2l6YWJsZS1wYW5lbHM6Y29sbGFwc2VkPSR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Db2xsYXBzZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNDb2xsYXBzZWQoY29sbGFwc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBgcmVhY3QtcmVzaXphYmxlLXBhbmVsczpjb2xsYXBzZWQ9JHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NvbGxhcHNlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1pbi13LVs1MHB4XSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZWFzZS1pbi1vdXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZsZXggcHktMS41IG1heC1oLTE0IGl0ZW1zLWNlbnRlciBib3JkZXItYiBib3JkZXItYm9yZGVyLzQwIGp1c3RpZnktY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NvbGxhcHNlZCAmJiBcInB4LTJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2ZpcnN0RGFzaGJvYXJkLmxpc3Q/LnRvU3RyaW5nKCkgPz8gXCIvXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGFzaGJvYXJkLm1ldGE/LmxhYmVsID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdERhc2hib2FyZC5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNpZGViYXIgaXNDb2xsYXBzZWQ9e2hhc0NvbGxhcHNlZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9SZXNpemFibGVQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPFJlc2l6YWJsZUhhbmRsZSB3aXRoSGFuZGxlIGNsYXNzTmFtZT1cImJnLWJvcmRlci80MFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxSZXNpemFibGVQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNpemU9e2xheW91dFsxXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblNpemU9ezI1fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwieGw6bWF4LWgtZHZoIGgtZnVsbCAhb3ZlcmZsb3cteS1hdXRvIGZsZXggZmxleC1jb2wgb3ZlcmZsb3cteC1oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzdGlja3kgdG9wLTAgei01MCBweS0yIGgtMTQgcHgtNCBmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBib3JkZXItYiBib3JkZXItYm9yZGVyLzQwIGJnLWJhY2tncm91bmQvOTUgYmFja2Ryb3AtYmx1ciBzdXBwb3J0cy1bYmFja2Ryb3AtZmlsdGVyXTpiZy1iYWNrZ3JvdW5kLzYwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmJhcj8ucmlnaHRTaWRlICYmIFwianVzdGlmeS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmF2YmFyPy5sZWZ0U2lkZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYXZiYXI/LmxlZnRTaWRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYXZiYXI/LnJpZ2h0U2lkZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHs8TW9kZVRvZ2dsZSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYXZiYXI/LnJpZ2h0U2lkZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1vZGVUb2dnbGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJncm93IHB4LTYgcHktNFwiPntjaGlsZHJlbn08L21haW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Zm9vdGVyICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9vdGVyIGNsYXNzTmFtZT1cInB4LTYgcHktNCBib3JkZXItdCBib3JkZXItYm9yZGVyLzQwIHN0aWNreSBib3R0b20tMCBiZy1iYWNrZ3JvdW5kIHRleHQtcHJpbWFyeSBmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPntmb290ZXJ9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1Jlc2l6YWJsZVBhbmVsPlxuICAgICAgICAgICAgICAgIDwvUmVzaXphYmxlUGFuZWxHcm91cD5cbiAgICAgICAgICAgIDwvQmFzZUxheW91dD5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbkRlZmF1bHRMYXlvdXQuZGlzcGxheU5hbWUgPSBcIkRlZmF1bHRMYXlvdXRcIjtcbiIsICJpbXBvcnQgeyBOb3RpZmljYXRpb25Qcm92aWRlciB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5leHBvcnQgY29uc3Qgbm90aWZpY2F0aW9uUHJvdmlkZXI6IE5vdGlmaWNhdGlvblByb3ZpZGVyID0ge1xuICAgIG9wZW46ICh7IGtleSwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHR5cGUgfSkgPT4ge1xuICAgICAgICBpZiAodHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MobWVzc2FnZSwgeyBkZXNjcmlwdGlvbiwgaWQ6IGtleSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgICAgIHRvYXN0LmVycm9yKG1lc3NhZ2UsIHsgZGVzY3JpcHRpb24sIGlkOiBrZXkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gXCJwcm9ncmVzc1wiKSB7XG4gICAgICAgICAgICB0b2FzdC5sb2FkaW5nKG1lc3NhZ2UsIHsgZGVzY3JpcHRpb24sIGlkOiBrZXkgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNsb3NlOiAoa2V5KSA9PiB0b2FzdC5kaXNtaXNzKGtleSksXG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm90aWZpY2F0aW9uUHJvdmlkZXIgPSAoKTogTm90aWZpY2F0aW9uUHJvdmlkZXIgPT4ge1xuICAgIHJldHVybiBub3RpZmljYXRpb25Qcm92aWRlcjtcbn07XG4iLCAiaW1wb3J0IHtcbiAgICBBY2Nlc3NDb250cm9sQ29udGV4dCxcbiAgICBDYW5SZXR1cm5UeXBlLFxuICAgIHVzZUNhbixcbiAgICB1c2VOYXZpZ2F0aW9uLFxuICAgIHVzZVJlc291cmNlLFxuICAgIHVzZVRyYW5zbGF0ZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIEdldEVkaXRVcmxSZXR1cm5UeXBlID0gQ2FuUmV0dXJuVHlwZSAmIHtcbiAgICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VHZXRFZGl0VXJsID0gKFxuICAgIHJlc291cmNlOiBzdHJpbmcsXG4gICAgcmVjb3JkSXRlbUlkOiBzdHJpbmcsXG4gICAgbWV0YT86IGFueSxcbik6IEdldEVkaXRVcmxSZXR1cm5UeXBlID0+IHtcbiAgICBjb25zdCBhY2Nlc3NDb250cm9sQ29udGV4dCA9IHVzZUNvbnRleHQoQWNjZXNzQ29udHJvbENvbnRleHQpO1xuICAgIGNvbnN0IGFjY2Vzc0NvbnRyb2xFbmFibGVkID1cbiAgICAgICAgYWNjZXNzQ29udHJvbENvbnRleHQub3B0aW9ucy5idXR0b25zLmVuYWJsZUFjY2Vzc0NvbnRyb2w7XG5cbiAgICBjb25zdCBoaWRlSWZVbmF1dGhvcml6ZWQgPVxuICAgICAgICBhY2Nlc3NDb250cm9sQ29udGV4dC5vcHRpb25zLmJ1dHRvbnMuaGlkZUlmVW5hdXRob3JpemVkO1xuXG4gICAgY29uc3QgeyBlZGl0VXJsOiBnZW5lcmF0ZUVkaXRVcmwgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IHsgaWQsIHJlc291cmNlOiBfcmVzb3VyY2UgfSA9IHVzZVJlc291cmNlKHJlc291cmNlKTtcblxuICAgIGNvbnN0IHsgZGF0YSB9ID0gdXNlQ2FuKHtcbiAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlLFxuICAgICAgICBhY3Rpb246IFwiZWRpdFwiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IHJlY29yZEl0ZW1JZCwgcmVzb3VyY2U6IF9yZXNvdXJjZSB9LFxuICAgICAgICBxdWVyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGFjY2Vzc0NvbnRyb2xFbmFibGVkLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgdHJhbnNsYXRlID0gdXNlVHJhbnNsYXRlKCk7XG5cbiAgICBjb25zdCByZWFzb24gPSAoKSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5jYW4pIHJldHVybiBcIlwiO1xuICAgICAgICBlbHNlIGlmIChkYXRhPy5yZWFzb24pIHJldHVybiBkYXRhLnJlYXNvbjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgICBcImJ1dHRvbnMubm90QWNjZXNzVGl0bGVcIixcbiAgICAgICAgICAgICAgICBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzXCIsXG4gICAgICAgICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCBlZGl0VXJsID1cbiAgICAgICAgcmVzb3VyY2UgJiYgKHJlY29yZEl0ZW1JZCA/PyBpZClcbiAgICAgICAgICAgID8gZ2VuZXJhdGVFZGl0VXJsKHJlc291cmNlLCByZWNvcmRJdGVtSWQhID8/IGlkISwgbWV0YSlcbiAgICAgICAgICAgIDogXCJcIjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhbjogIUJvb2xlYW4oYWNjZXNzQ29udHJvbEVuYWJsZWQgJiYgaGlkZUlmVW5hdXRob3JpemVkICYmICFkYXRhPy5jYW4pLFxuICAgICAgICByZWFzb246IHJlYXNvbigpLFxuICAgICAgICB1cmw6IGVkaXRVcmwsXG4gICAgfTtcbn07XG4iLCAiaW1wb3J0IHtcbiAgICBBY2Nlc3NDb250cm9sQ29udGV4dCxcbiAgICBDYW5SZXR1cm5UeXBlLFxuICAgIHVzZUNhbixcbiAgICB1c2VOYXZpZ2F0aW9uLFxuICAgIHVzZVJlc291cmNlLFxuICAgIHVzZVRyYW5zbGF0ZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIEdldFNob3dVcmxSZXR1cm5UeXBlID0gQ2FuUmV0dXJuVHlwZSAmIHtcbiAgICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VHZXRTaG93VXJsID0gKFxuICAgIHJlc291cmNlOiBzdHJpbmcsXG4gICAgcmVjb3JkSXRlbUlkOiBzdHJpbmcsXG4gICAgbWV0YT86IGFueSxcbik6IEdldFNob3dVcmxSZXR1cm5UeXBlID0+IHtcbiAgICBjb25zdCBhY2Nlc3NDb250cm9sQ29udGV4dCA9IHVzZUNvbnRleHQoQWNjZXNzQ29udHJvbENvbnRleHQpO1xuICAgIGNvbnN0IGFjY2Vzc0NvbnRyb2xFbmFibGVkID1cbiAgICAgICAgYWNjZXNzQ29udHJvbENvbnRleHQub3B0aW9ucy5idXR0b25zLmVuYWJsZUFjY2Vzc0NvbnRyb2w7XG5cbiAgICBjb25zdCBoaWRlSWZVbmF1dGhvcml6ZWQgPVxuICAgICAgICBhY2Nlc3NDb250cm9sQ29udGV4dC5vcHRpb25zLmJ1dHRvbnMuaGlkZUlmVW5hdXRob3JpemVkO1xuXG4gICAgY29uc3QgeyBzaG93VXJsOiBnZW5lcmF0ZVNob3dVcmwgfSA9IHVzZU5hdmlnYXRpb24oKTtcblxuICAgIGNvbnN0IHsgaWQsIHJlc291cmNlOiBfcmVzb3VyY2UgfSA9IHVzZVJlc291cmNlKHJlc291cmNlKTtcblxuICAgIGNvbnN0IHsgZGF0YSB9ID0gdXNlQ2FuKHtcbiAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlLFxuICAgICAgICBhY3Rpb246IFwic2hvd1wiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IHJlY29yZEl0ZW1JZCwgcmVzb3VyY2U6IF9yZXNvdXJjZSB9LFxuICAgICAgICBxdWVyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGFjY2Vzc0NvbnRyb2xFbmFibGVkLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgdHJhbnNsYXRlID0gdXNlVHJhbnNsYXRlKCk7XG5cbiAgICBjb25zdCByZWFzb24gPSAoKSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5jYW4pIHJldHVybiBcIlwiO1xuICAgICAgICBlbHNlIGlmIChkYXRhPy5yZWFzb24pIHJldHVybiBkYXRhLnJlYXNvbjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgICBcImJ1dHRvbnMubm90QWNjZXNzVGl0bGVcIixcbiAgICAgICAgICAgICAgICBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzXCIsXG4gICAgICAgICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCBzaG93VXJsID1cbiAgICAgICAgcmVzb3VyY2UgJiYgKHJlY29yZEl0ZW1JZCB8fCBpZClcbiAgICAgICAgICAgID8gZ2VuZXJhdGVTaG93VXJsKHJlc291cmNlLCByZWNvcmRJdGVtSWQhID8/IGlkISwgbWV0YSlcbiAgICAgICAgICAgIDogXCJcIjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhbjogIUJvb2xlYW4oYWNjZXNzQ29udHJvbEVuYWJsZWQgJiYgaGlkZUlmVW5hdXRob3JpemVkICYmICFkYXRhPy5jYW4pLFxuICAgICAgICByZWFzb246IHJlYXNvbigpLFxuICAgICAgICB1cmw6IHNob3dVcmwsXG4gICAgfTtcbn07XG4iLCAiaW1wb3J0IHtcbiAgICBBY2Nlc3NDb250cm9sQ29udGV4dCxcbiAgICBDYW5SZXR1cm5UeXBlLFxuICAgIHBpY2tOb3REZXByZWNhdGVkLFxuICAgIHVzZUNhbixcbiAgICB1c2VEZWxldGUsXG4gICAgdXNlTXV0YXRpb25Nb2RlLFxuICAgIHVzZVJlc291cmNlLFxuICAgIHVzZVJlc291cmNlUGFyYW1zLFxuICAgIHVzZVRyYW5zbGF0ZSxcbiAgICB1c2VXYXJuQWJvdXRDaGFuZ2UsXG59IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IE11dGF0ZU9wdGlvbnMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgRGVsZXRlSGVscGVyUmV0dXJuVHlwZSA9IENhblJldHVyblR5cGUgJiB7XG4gICAgaXNMb2FkaW5nOiBib29sZWFuO1xuICAgIG11dGF0ZTogKGU/OiBNdXRhdGVPcHRpb25zPHVua25vd24sIHVua25vd24sIHVua25vd24sIHVua25vd24+KSA9PiBhbnk7IC8vIFRPRE86IFVzZURlbGV0ZVJldHVyblR5cGUgZml4XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRGVsZXRlSGVscGVyID0gKFxuICAgIHJlc291cmNlOiBzdHJpbmcsXG4gICAgcmVjb3JkSXRlbUlkOiBzdHJpbmcsXG4gICAgbWV0YT86IGFueSxcbik6IERlbGV0ZUhlbHBlclJldHVyblR5cGUgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc0NvbnRyb2xDb250ZXh0ID0gdXNlQ29udGV4dChBY2Nlc3NDb250cm9sQ29udGV4dCk7XG5cbiAgICBjb25zdCBhY2Nlc3NDb250cm9sRW5hYmxlZCA9XG4gICAgICAgIGFjY2Vzc0NvbnRyb2xDb250ZXh0Lm9wdGlvbnMuYnV0dG9ucy5lbmFibGVBY2Nlc3NDb250cm9sO1xuXG4gICAgY29uc3QgaGlkZUlmVW5hdXRob3JpemVkID1cbiAgICAgICAgYWNjZXNzQ29udHJvbENvbnRleHQub3B0aW9ucy5idXR0b25zLmhpZGVJZlVuYXV0aG9yaXplZDtcblxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHVzZVRyYW5zbGF0ZSgpO1xuXG4gICAgY29uc3QgaWQgPSB1c2VSZXNvdXJjZVBhcmFtcygpO1xuXG4gICAgY29uc3QgeyByZXNvdXJjZTogX3Jlc291cmNlLCBpZGVudGlmaWVyIH0gPSB1c2VSZXNvdXJjZShyZXNvdXJjZSk7XG5cbiAgICBjb25zdCB7IG11dGF0aW9uTW9kZSB9ID0gdXNlTXV0YXRpb25Nb2RlKCk7XG5cbiAgICBjb25zdCB7IG11dGF0ZSwgaXNMb2FkaW5nIH0gPSB1c2VEZWxldGUoKTtcblxuICAgIGNvbnN0IHsgZGF0YSB9ID0gdXNlQ2FuKHtcbiAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZT8ubmFtZSxcbiAgICAgICAgYWN0aW9uOiBcImRlbGV0ZVwiLFxuICAgICAgICBwYXJhbXM6IHsgaWQ6IHJlY29yZEl0ZW1JZCA/PyBpZCwgcmVzb3VyY2U6IF9yZXNvdXJjZSB9LFxuICAgICAgICBxdWVyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGFjY2Vzc0NvbnRyb2xFbmFibGVkLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVhc29uID0gKCkgPT4ge1xuICAgICAgICBpZiAoZGF0YT8uY2FuKSByZXR1cm4gXCJcIjtcbiAgICAgICAgZWxzZSBpZiAoZGF0YT8ucmVhc29uKSByZXR1cm4gZGF0YS5yZWFzb247XG4gICAgICAgIGVsc2UgcmV0dXJuIHRyYW5zbGF0ZShcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzXCIpO1xuICAgIH07XG5cbiAgICBjb25zdCB7IHNldFdhcm5XaGVuIH0gPSB1c2VXYXJuQWJvdXRDaGFuZ2UoKTtcblxuICAgIGNvbnN0IG9uRGVsZXRlTXV0YXRlID0gKFxuICAgICAgICBvcHRpb25zPzogTXV0YXRlT3B0aW9uczx1bmtub3duLCB1bmtub3duLCB1bmtub3duLCB1bmtub3duPixcbiAgICApOiBhbnkgPT4ge1xuICAgICAgICBpZiAoYWNjZXNzQ29udHJvbEVuYWJsZWQgJiYgaGlkZUlmVW5hdXRob3JpemVkICYmICFkYXRhPy5jYW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHJlY29yZEl0ZW1JZCA/PyBpZCkgJiYgaWRlbnRpZmllcikge1xuICAgICAgICAgICAgc2V0V2FybldoZW4oZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIG11dGF0ZShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiByZWNvcmRJdGVtSWQgPz8gaWQgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIG11dGF0aW9uTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YTogcGlja05vdERlcHJlY2F0ZWQobWV0YSksXG4gICAgICAgICAgICAgICAgICAgIG1ldGFEYXRhOiBwaWNrTm90RGVwcmVjYXRlZChtZXRhKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FuOiAhQm9vbGVhbihhY2Nlc3NDb250cm9sRW5hYmxlZCAmJiBoaWRlSWZVbmF1dGhvcml6ZWQgJiYgIWRhdGE/LmNhbiksXG4gICAgICAgIHJlYXNvbjogcmVhc29uKCksXG4gICAgICAgIG11dGF0ZTogb25EZWxldGVNdXRhdGUsXG4gICAgICAgIGlzTG9hZGluZyxcbiAgICB9O1xufTtcbiIsICJpbXBvcnQge1xuICAgIEJhY2tGdW5jdGlvbixcbiAgICB1c2VCYWNrLFxuICAgIHVzZU5hdmlnYXRpb24sXG4gICAgdXNlUmVzb3VyY2UsXG4gICAgdXNlUm91dGVyVHlwZSxcbn0gZnJvbSBcIkByZWZpbmVkZXYvY29yZVwiO1xuXG5leHBvcnQgY29uc3QgdXNlT25CYWNrID0gKCk6IEJhY2tGdW5jdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgcm91dGVyVHlwZSA9IHVzZVJvdXRlclR5cGUoKTtcbiAgICBjb25zdCBiYWNrID0gdXNlQmFjaygpO1xuICAgIGNvbnN0IHsgZ29CYWNrIH0gPSB1c2VOYXZpZ2F0aW9uKCk7XG4gICAgY29uc3QgeyBhY3Rpb24gfSA9IHVzZVJlc291cmNlKCk7XG5cbiAgICBjb25zdCBvbkJhY2sgPVxuICAgICAgICBhY3Rpb24gIT09IFwibGlzdFwiIHx8IHR5cGVvZiBhY3Rpb24gIT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgID8gcm91dGVyVHlwZSA9PT0gXCJsZWdhY3lcIlxuICAgICAgICAgICAgICAgID8gZ29CYWNrXG4gICAgICAgICAgICAgICAgOiBiYWNrXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBvbkJhY2s7XG59O1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nIH0gZnJvbSBcIkAvY29tcG9uZW50cy9jb25maXJtXCI7XG5pbXBvcnQgeyB1c2VEZWxldGVIZWxwZXIsIHVzZU9uQmFjayB9IGZyb20gXCJAL2hvb2tzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGUgfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQgUmVhY3QsIHtcbiAgICBQcm9wc1dpdGhDaGlsZHJlbixcbiAgICBjcmVhdGVDb250ZXh0LFxuICAgIHVzZUNhbGxiYWNrLFxuICAgIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBEZWxldGVEYXRhVHlwZSA9IHtcbiAgICB0b29nbGU6IGJvb2xlYW47XG4gICAgcm93OiBhbnk7XG4gICAgcmVzb3VyY2U6IHN0cmluZztcbiAgICByZWRpcmVjdEJhY2s/OiBib29sZWFuO1xuICAgIG9uQWZ0ZXJIYW5kbGU/OiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVDb250ZXh0VHlwZSB7XG4gICAgZGF0YTogRGVsZXRlRGF0YVR5cGU7XG4gICAgdXBkYXRlRGF0YTogKGRhdGE6IERlbGV0ZURhdGFUeXBlKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGVsZXRlQWN0aW9uTW9kYWwocHJvcHM6IERlbGV0ZUNvbnRleHRUeXBlKSB7XG4gICAgY29uc3QgYmFjayA9IHVzZU9uQmFjaygpO1xuICAgIGNvbnN0IHsgY2FuLCBpc0xvYWRpbmcsIG11dGF0ZSB9ID0gdXNlRGVsZXRlSGVscGVyKFxuICAgICAgICBwcm9wcy5kYXRhPy5yZXNvdXJjZSxcbiAgICAgICAgcHJvcHMuZGF0YT8ucm93Py5pZCxcbiAgICApO1xuXG4gICAgY29uc3QgdHJhbnNsYXRlID0gdXNlVHJhbnNsYXRlKCk7XG5cbiAgICBjb25zdCBvbkRlbGV0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKGNhbikge1xuICAgICAgICAgICAgcmV0dXJuIG11dGF0ZSh7XG4gICAgICAgICAgICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1JlZGlyZWN0QmFjayA9IHByb3BzPy5kYXRhPy5yZWRpcmVjdEJhY2sgPz8gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9uQWZ0ZXJIYW5kbGUgPSBwcm9wcz8uZGF0YT8ub25BZnRlckhhbmRsZTtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnVwZGF0ZURhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9vZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdEJhY2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25BZnRlckhhbmRsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZWRpcmVjdEJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2s/LigpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uQWZ0ZXJIYW5kbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJIYW5kbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSwgW2NhbiwgbXV0YXRlLCBwcm9wcywgYmFja10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPENvbmZpcm1EaWFsb2dcbiAgICAgICAgICAgIG9wZW49e2NhbiAmJiBwcm9wcz8uZGF0YT8udG9vZ2xlfVxuICAgICAgICAgICAgbG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgdGl0bGU9e3RyYW5zbGF0ZShcIkFyZSB5b3Ugc3VyZT9cIil9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj17dHJhbnNsYXRlKFwiVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5cIil9XG4gICAgICAgICAgICBva1RleHQ9e3RyYW5zbGF0ZShcIkRlbGV0ZVwiKX1cbiAgICAgICAgICAgIGNhbmNlbFRleHQ9e3RyYW5zbGF0ZShcIkNhbmNlbFwiKX1cbiAgICAgICAgICAgIG9rQnV0dG9uVmFyaWFudD17XCJkZXN0cnVjdGl2ZVwifVxuICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnVwZGF0ZURhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9vZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkNvbmZpcm09e29uRGVsZXRlfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmNvbnN0IERlbGV0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PERlbGV0ZUNvbnRleHRUeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5jb25zdCBEZWxldGVQcm92aWRlcjogUmVhY3QuRkM8UHJvcHNXaXRoQ2hpbGRyZW4+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICAgIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPERlbGV0ZURhdGFUeXBlPih7XG4gICAgICAgIHJvdzogdW5kZWZpbmVkLFxuICAgICAgICByZXNvdXJjZTogXCJcIixcbiAgICAgICAgdG9vZ2xlOiBmYWxzZSxcbiAgICAgICAgb25BZnRlckhhbmRsZTogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdXBkYXRlRGF0YSA9IChkYXRhOiBEZWxldGVEYXRhVHlwZSkgPT4ge1xuICAgICAgICBzZXREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RGVsZXRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBkYXRhLCB1cGRhdGVEYXRhIH19PlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPERlbGV0ZUFjdGlvbk1vZGFsXG4gICAgICAgICAgICAgICAgZGF0YT17ZGF0YSBhcyBEZWxldGVEYXRhVHlwZX1cbiAgICAgICAgICAgICAgICB1cGRhdGVEYXRhPXt1cGRhdGVEYXRhfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9EZWxldGVDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG59O1xuXG5leHBvcnQgeyBEZWxldGVDb250ZXh0LCBEZWxldGVQcm92aWRlciB9O1xuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBMb2FkZXIgPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFJlYWN0LlNWR1Byb3BzPFNWR1NWR0VsZW1lbnQ+PihcbiAgICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJteC1hdXRvIGlubGluZVwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIwIDMwXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxNVwiIHI9XCIxNVwiPlxuICAgICAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjTW9kZT1cImxpbmVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIwLjhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIxNTs5OzE1XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYW5pbWF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJmaWxsLW9wYWNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjTW9kZT1cImxpbmVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIwLjhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0bz1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMTsuNTsxXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYW5pbWF0ZT5cbiAgICAgICAgICAgICAgICA8L2NpcmNsZT5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNjBcIiBjeT1cIjE1XCIgcj1cIjlcIiBmaWxsT3BhY2l0eT1cIjAuM1wiPlxuICAgICAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjTW9kZT1cImxpbmVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIwLjhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCI5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0bz1cIjlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiOTsxNTs5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYW5pbWF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJmaWxsLW9wYWNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxjTW9kZT1cImxpbmVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXI9XCIwLjhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIwLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIi41OzE7LjVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hbmltYXRlPlxuICAgICAgICAgICAgICAgIDwvY2lyY2xlPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMDVcIiBjeT1cIjE1XCIgcj1cIjE1XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhbmltYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwiclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbj1cIjBzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGNNb2RlPVwibGluZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cj1cIjAuOHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0bz1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjE1Ozk7MTVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hbmltYXRlPlxuICAgICAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cImZpbGwtb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbj1cIjBzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGNNb2RlPVwibGluZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cj1cIjAuOHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIxOy41OzFcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hbmltYXRlPlxuICAgICAgICAgICAgICAgIDwvY2lyY2xlPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICk7XG4gICAgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsICJpbXBvcnQgTG9hZGVyIGZyb20gXCJAL2NvbXBvbmVudHMvbG9hZGVyXCI7XG5pbXBvcnQge1xuICAgIFRhYmxlQm9keSxcbiAgICBUYWJsZUNlbGwsXG4gICAgVGFibGVIZWFkLFxuICAgIFRhYmxlSGVhZGVyLFxuICAgIFRhYmxlUm93LFxuICAgIFRhYmxlIGFzIFRhYmxlVWksXG59IGZyb20gXCJAL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBQb3BvdmVyQ29udGVudFByb3BzIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgeyBCYXNlT3B0aW9uLCBCYXNlUmVjb3JkLCBIdHRwRXJyb3IgfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5pbXBvcnQge1xuICAgIFVzZVRhYmxlUHJvcHMsXG4gICAgVXNlVGFibGVSZXR1cm5UeXBlLFxuICAgIHVzZVRhYmxlLFxufSBmcm9tIFwiQHJlZmluZWRldi9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgICBDZWxsQ29udGV4dCxcbiAgICBDb2x1bW4sXG4gICAgQ29sdW1uRGVmLFxuICAgIENvbHVtbkRlZlRlbXBsYXRlLFxuICAgIFRhYmxlT3B0aW9uc1Jlc29sdmVkLFxuICAgIGZsZXhSZW5kZXIsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCBSZWFjdCwge1xuICAgIEZDLFxuICAgIFJlYWN0RWxlbWVudCxcbiAgICB1c2VDYWxsYmFjayxcbiAgICB1c2VFZmZlY3QsXG4gICAgdXNlTWVtbyxcbiAgICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSb3dBY3Rpb24sIFJvd0FjdGlvbnMgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBFZGl0QWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9ucy9lZGl0XCI7XG5pbXBvcnQgeyBTaG93QWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9ucy9zaG93XCI7XG5pbXBvcnQge1xuICAgIFRhYmxlRmlsdGVyRGF0ZVJhbmdlUGlja2VyRmlsdGVyLFxuICAgIFRhYmxlRmlsdGVyRHJvcGRvd24sXG4gICAgVGFibGVGaWx0ZXJTZWFyY2hDb2x1bW4sXG59IGZyb20gXCIuL2ZpZWxkc1wiO1xuaW1wb3J0IHsgQ2hlY2tBbGwgfSBmcm9tIFwiLi9maWVsZHMvY2hlY2thbGxcIjtcbmltcG9ydCB7IFBhZ2luYXRpb24gfSBmcm9tIFwiLi9maWVsZHMvcGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgU29ydEFjdGlvbiB9IGZyb20gXCIuL2ZpZWxkcy9zb3J0XCI7XG5pbXBvcnQgeyBEYXRhVGFibGVUb29sYmFyIH0gZnJvbSBcIi4vdG9vbGJhclwiO1xuaW1wb3J0IHsgRGVsZXRlQWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9ucy9kZWxldGVcIjtcbmltcG9ydCB7IERlbGV0ZVByb3ZpZGVyIH0gZnJvbSBcIkAvcHJvdmlkZXJzXCI7XG5cbmV4cG9ydCB0eXBlIFRhYmxlTGlzdEZpbHRlck9wdGlvbiA9IEJhc2VPcHRpb24gJiB7XG4gICAgaWNvbj86IFJlYWN0LkNvbXBvbmVudFR5cGU8eyBjbGFzc05hbWU/OiBzdHJpbmcgfT47XG59O1xuXG5leHBvcnQgdHlwZSBUYWJsZUZpbHRlclByb3BzPFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQ+ID0ge1xuICAgIGNvbHVtbjogQ29sdW1uPFREYXRhPjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBudW1iZXJPZk1vbnRocz86IG51bWJlcjtcbiAgICBhbGlnbj86IFBvcG92ZXJDb250ZW50UHJvcHNbXCJhbGlnblwiXTtcbiAgICBvcHRpb25zPzogVGFibGVMaXN0RmlsdGVyT3B0aW9uW107XG59O1xuXG5leHBvcnQgdHlwZSBDb2x1bW5Qcm9wczxcbiAgICBURGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBCYXNlUmVjb3JkLFxuICAgIFRWYWx1ZSA9IHVua25vd24sXG4gICAgVEVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gSHR0cEVycm9yLFxuPiA9IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGFjY2Vzc29yS2V5OiBzdHJpbmc7XG4gICAgZW5hYmxlU29ydGluZz86IGJvb2xlYW47XG4gICAgZW5hYmxlSGlkaW5nPzogYm9vbGVhbjtcbiAgICBoZWFkZXI/OlxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IEZDPHtcbiAgICAgICAgICAgICAgdGFibGU6IFVzZVRhYmxlUmV0dXJuVHlwZTxURGF0YSwgVEVycm9yPjtcbiAgICAgICAgICB9PjtcbiAgICBjZWxsPzogQ29sdW1uRGVmVGVtcGxhdGU8Q2VsbENvbnRleHQ8VERhdGEsIFRWYWx1ZT4+O1xuICAgIGNoaWxkcmVuPzogUmVhY3RFbGVtZW50O1xuICAgIGZpbHRlcj86IEZDPFRhYmxlRmlsdGVyUHJvcHM8VERhdGE+Pjtcbn07XG5cbnR5cGUgQ3VzdG9tQ29sdW1uRGVmPFxuICAgIFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQsXG4gICAgVEVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gSHR0cEVycm9yLFxuPiA9IENvbHVtbkRlZjxURGF0YSwgVEVycm9yPiAmIFBpY2s8Q29sdW1uUHJvcHM8VERhdGEsIFRFcnJvcj4sIFwiZmlsdGVyXCI+O1xuXG5leHBvcnQgdHlwZSBUYWJsZVByb3BzPFxuICAgIFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQsXG4gICAgVEVycm9yIGV4dGVuZHMgSHR0cEVycm9yID0gSHR0cEVycm9yLFxuPiA9IFBhcnRpYWw8VXNlVGFibGVQcm9wczxURGF0YSwgVEVycm9yLCBURGF0YT4+ICYge1xuICAgIGNoaWxkcmVuPzogUmVhY3RFbGVtZW50PENvbHVtblByb3BzPFREYXRhLCBURXJyb3I+PltdO1xuICAgIHNob3dIZWFkZXI/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlPFxuICAgIFRRdWVyeUZuRGF0YSBleHRlbmRzIEJhc2VSZWNvcmQgPSBCYXNlUmVjb3JkLFxuICAgIFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IFRRdWVyeUZuRGF0YSxcbiAgICBURXJyb3IgZXh0ZW5kcyBIdHRwRXJyb3IgPSBIdHRwRXJyb3IsXG4+KHtcbiAgICBjaGlsZHJlbixcbiAgICBzaG93SGVhZGVyID0gdHJ1ZSxcbiAgICBjb2x1bW5zID0gW10sXG4gICAgLi4ucHJvcHNcbn06IFRhYmxlUHJvcHM8VERhdGEsIFRFcnJvcj4pIHtcbiAgICBjb25zdCBtYXBDb2x1bW4gPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgYWNjZXNzb3JLZXksXG4gICAgICAgICAgICBoZWFkZXIsXG4gICAgICAgICAgICBlbmFibGVTb3J0aW5nLFxuICAgICAgICAgICAgZW5hYmxlSGlkaW5nLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgfTogQ29sdW1uUHJvcHM8VERhdGEsIFRFcnJvcj4pOiBDb2x1bW5EZWY8VERhdGE+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbjogYW55ID0ge1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICAgICAgICBhY2Nlc3NvcktleSxcbiAgICAgICAgICAgICAgICBlbmFibGVTb3J0aW5nOiBlbmFibGVTb3J0aW5nID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVuYWJsZUhpZGluZzogZW5hYmxlSGlkaW5nID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVuYWJsZUNvbHVtbkZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbmFibGVSZXNpemluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgICAgIGNvbHVtbltcImNlbGxcIl0gPSBjZWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICB9LFxuICAgICAgICBbXSxcbiAgICApO1xuXG4gICAgY29sdW1ucyA9IHVzZU1lbW88Q29sdW1uRGVmPFREYXRhPltdPigoKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgcmV0dXJuIChjaGlsZHJlbiBhcyBSZWFjdEVsZW1lbnRbXSlcbiAgICAgICAgICAgICAgICAubWFwKCh2YWx1ZTogUmVhY3RFbGVtZW50KSA9PiB2YWx1ZS5wcm9wcylcbiAgICAgICAgICAgICAgICAubWFwKG1hcENvbHVtbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfSwgW2NoaWxkcmVuLCBtYXBDb2x1bW5dKTtcblxuICAgIGNvbnN0IHRhYmxlID0gdXNlVGFibGUoe1xuICAgICAgICBjb2x1bW5zLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRhYmxlT3B0aW9ucyA9IHVzZU1lbW88VGFibGVPcHRpb25zUmVzb2x2ZWQ8VERhdGE+PihcbiAgICAgICAgKCkgPT4gdGFibGUub3B0aW9ucyxcbiAgICAgICAgW3RhYmxlXSxcbiAgICApO1xuXG4gICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gdXNlTWVtbzxib29sZWFuPihcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIEJvb2xlYW4oXG4gICAgICAgICAgICAgICAgdGFibGVPcHRpb25zLmVuYWJsZUNvbHVtbkZpbHRlcnMgfHwgdGFibGVPcHRpb25zPy5lbmFibGVGaWx0ZXJzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgW3RhYmxlT3B0aW9uc10sXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxEZWxldGVQcm92aWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICAgICAgPERhdGFUYWJsZVRvb2xiYXIgdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8VGFibGVVaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93SGVhZGVyICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChoZWFkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uRGVmID0gaGVhZGVyLmNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbHVtbkRlZiBhcyBDdXN0b21Db2x1bW5EZWY8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZCBrZXk9e2hlYWRlci5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLXgtMi41XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZsZXhSZW5kZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbHVtbkRlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFibGVPcHRpb25zLmVuYWJsZVNvcnRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5lbmFibGVTb3J0aW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U29ydEFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0ZpbHRlcmFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZj8uZmlsdGVyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWYuZmlsdGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGhlYWRlci5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2NvbHVtbkRlZi5oZWFkZXJ9IEZpbHRlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVCb2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZS5yZWZpbmVDb3JlLnRhYmxlUXVlcnkuaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sU3Bhbj17Y29sdW1ucy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC0yNCB0ZXh0LWNlbnRlciB0ZXh0LW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIGNsYXNzTmFtZT1cImgtNCB0ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHRhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3c6IGFueSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zdGF0ZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5nZXRJc1NlbGVjdGVkKCkgJiYgXCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFZpc2libGVDZWxscygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGNlbGw6IGFueSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y2VsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZsZXhSZW5kZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuY29sdW1uLmNvbHVtbkRlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNlbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXtjb2x1bW5zLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTI0IHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyByZXN1bHRzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L1RhYmxlVWk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvRGVsZXRlUHJvdmlkZXI+XG4gICAgKTtcbn1cblxuY29uc3QgVGFibGVDb2x1bW4gPSA8XG4gICAgVERhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gQmFzZVJlY29yZCxcbiAgICBURXJyb3IgZXh0ZW5kcyBIdHRwRXJyb3IgPSBIdHRwRXJyb3IsXG4+KFxuICAgIHByb3BzOiBDb2x1bW5Qcm9wczxURGF0YSwgVEVycm9yPixcbikgPT4ge1xuICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn07XG5cblRhYmxlLkNvbHVtbiA9IFRhYmxlQ29sdW1uO1xuVGFibGUuQ2hlY2tBbGwgPSBDaGVja0FsbDtcblRhYmxlLkFjdGlvbnMgPSBSb3dBY3Rpb25zO1xuVGFibGUuQWN0aW9uID0gUm93QWN0aW9uO1xuVGFibGUuRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb247XG5UYWJsZS5TaG93QWN0aW9uID0gU2hvd0FjdGlvbjtcblRhYmxlLkRlbGV0ZUFjdGlvbiA9IERlbGV0ZUFjdGlvbjtcblRhYmxlLkZpbHRlciA9IHtcbiAgICBEYXRlUmFuZ2VQaWNrZXI6IFRhYmxlRmlsdGVyRGF0ZVJhbmdlUGlja2VyRmlsdGVyLFxuICAgIERyb3Bkb3duOiBUYWJsZUZpbHRlckRyb3Bkb3duLFxuICAgIFNlYXJjaDogVGFibGVGaWx0ZXJTZWFyY2hDb2x1bW4sXG59O1xuXG5UYWJsZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcbiIsICJcInVzZSBjbGllbnRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHtcbiAgICBEcm9wZG93bk1lbnUsXG4gICAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgICBEcm9wZG93bk1lbnVJdGVtLFxuICAgIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCJAL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiQC9jb21wb25lbnRzL2xpbmtcIjtcbmltcG9ydCB7IERvdHNIb3Jpem9udGFsSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IEZDLCBQcm9wc1dpdGhDaGlsZHJlbiwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmludGVyZmFjZSBSb3dBY3Rpb25zUHJvcHMge1xuICAgIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgdHlwZSBSb3dBY3Rpb25Qcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuICYge1xuICAgIHRvPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGFzQ2hpbGQ/OiBib29sZWFuO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaWNvbj86IFJlYWN0Tm9kZTtcbiAgICBvbkNsaWNrPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgY29uc3QgUm93QWN0aW9uOiBGQzxSb3dBY3Rpb25Qcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8RHJvcGRvd25NZW51SXRlbVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgYXNDaGlsZD17ISghcHJvcHMudG8gfHwgKCFwcm9wcy50byAmJiAhcHJvcHMuY2hpbGRyZW4pKX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtwcm9wcy5hc0NoaWxkID8gKFxuICAgICAgICAgICAgICAgIHByb3BzLmNoaWxkcmVuXG4gICAgICAgICAgICApIDogcHJvcHMudG8gPyAoXG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj17cHJvcHMudG99IHRpdGxlPXtwcm9wcy50aXRsZX0+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5pY29uID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXItMlwiPntwcm9wcy5pY29ufTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy50aXRsZX1cbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5pY29uID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXItMlwiPntwcm9wcy5pY29ufTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy50aXRsZX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICApO1xufTtcblxuUm93QWN0aW9uLmRpc3BsYXlOYW1lID0gXCJSb3dBY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFJvd0FjdGlvbnMoeyBjaGlsZHJlbiB9OiBSb3dBY3Rpb25zUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJpY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxEb3RzSG9yaXpvbnRhbEljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5PcGVuIG1lbnU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cImVuZFwiIGNsYXNzTmFtZT1cInctWzE2MHB4XVwiPlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFJvd0FjdGlvblByb3BzIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyB1c2VHZXRFZGl0VXJsIH0gZnJvbSBcIkAvaG9va3NcIjtcblxudHlwZSBFZGl0QWN0aW9uUHJvcHMgPSBSb3dBY3Rpb25Qcm9wcyAmIHtcbiAgICByb3c6IGFueTtcbiAgICByZXNvdXJjZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gRWRpdEFjdGlvbih7XG4gICAgcm93LFxuICAgIHJlc291cmNlLFxuICAgIHRpdGxlLFxuICAgIGRpc2FibGVkLFxuICAgIC4uLnByb3BzXG59OiBFZGl0QWN0aW9uUHJvcHMpIHtcbiAgICBjb25zdCBlZGl0ID0gdXNlR2V0RWRpdFVybChyZXNvdXJjZSwgcm93LmlkKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxSb3dBY3Rpb25cbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgIGRpc2FibGVkPXshZWRpdC5jYW4gfHwgZGlzYWJsZWR9XG4gICAgICAgICAgICB0aXRsZT17IWVkaXQ/LmNhbiA/IGVkaXQ/LnJlYXNvbiA6IHRpdGxlfVxuICAgICAgICAgICAgdG89e2VkaXQudXJsfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbkVkaXRBY3Rpb24uZGlzcGxheU5hbWUgPSBcIkVkaXRBY3Rpb25cIjtcbiIsICJpbXBvcnQgdHlwZSB7IFJvd0FjdGlvblByb3BzIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyB1c2VHZXRTaG93VXJsIH0gZnJvbSBcIkAvaG9va3NcIjtcblxudHlwZSBTaG93QWN0aW9uUHJvcHMgPSBSb3dBY3Rpb25Qcm9wcyAmIHtcbiAgICByb3c6IGFueTtcbiAgICByZXNvdXJjZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gU2hvd0FjdGlvbih7XG4gICAgcm93LFxuICAgIHJlc291cmNlLFxuICAgIHRpdGxlLFxuICAgIGRpc2FibGVkLFxuICAgIC4uLnByb3BzXG59OiBTaG93QWN0aW9uUHJvcHMpIHtcbiAgICBjb25zdCBkZXRhaWwgPSB1c2VHZXRTaG93VXJsKHJlc291cmNlLCByb3cuaWQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFJvd0FjdGlvblxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFkZXRhaWwuY2FuIHx8IGRpc2FibGVkfVxuICAgICAgICAgICAgdGl0bGU9eyFkZXRhaWw/LmNhbiA/IGRldGFpbD8ucmVhc29uIDogdGl0bGV9XG4gICAgICAgICAgICB0bz17ZGV0YWlsLnVybH1cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5TaG93QWN0aW9uLmRpc3BsYXlOYW1lID0gXCJTaG93QWN0aW9uXCI7XG4iLCAiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcImRhdGUtZm5zXCI7XG5pbXBvcnQgeyBGaWx0ZXJJY29uLCBGaWx0ZXJYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSBcInJlYWN0LWRheS1waWNrZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBUYWJsZUZpbHRlclByb3BzIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIkAvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBTZXBhcmF0b3IgfSBmcm9tIFwiQC91aS9zZXBhcmF0b3JcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIkAvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSBcIkAvdWkvY2FsZW5kYXJcIjtcbmltcG9ydCB7IEJhc2VSZWNvcmQgfSBmcm9tIFwiQHJlZmluZWRldi9jb3JlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZUZpbHRlckRhdGVSYW5nZVBpY2tlckZpbHRlcjxcbiAgICBUIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQsXG4+KHtcbiAgICBjb2x1bW4sXG4gICAgdGl0bGUsXG4gICAgbnVtYmVyT2ZNb250aHMgPSAyLFxuICAgIGFsaWduID0gXCJzdGFydFwiLFxufTogUGljazxUYWJsZUZpbHRlclByb3BzPFQ+LCBcImNvbHVtblwiIHwgXCJ0aXRsZVwiIHwgXCJudW1iZXJPZk1vbnRoc1wiIHwgXCJhbGlnblwiPikge1xuICAgIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlPERhdGVSYW5nZSB8IHVuZGVmaW5lZD4oe1xuICAgICAgICBmcm9tOiB1bmRlZmluZWQsXG4gICAgICAgIHRvOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSBuZXcgU2V0KGNvbHVtbj8uZ2V0RmlsdGVyVmFsdWUoKSBhcyBzdHJpbmdbXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZXMgPSBPYmplY3QudmFsdWVzKGRhdGUpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgIGlmIChkYXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4/LnNldEZpbHRlclZhbHVlKFxuICAgICAgICAgICAgICAgICAgICBkYXRlcy5tYXAoKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlID8gZm9ybWF0KGRhdGUsIFwieXl5eS1NTS1kZFwiKS50b1N0cmluZygpIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW2NvbHVtbiwgZGF0ZV0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFBvcG92ZXI+XG4gICAgICAgICAgICA8UG9wb3ZlclRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAteC0wLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNSBib3JkZXItZGFzaGVkIHB4LTEgcHktMi41XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gY2xhc3NOYW1lPXtjbihcImgtMy41IHctMy41XCIpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGU/LmZyb20gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteC0yIGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLXNtIHAtMSBoLTMuNSB0ZXh0LXhzIGZvbnQtbm9ybWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUudG8gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChkYXRlLmZyb20sIFwiTExMIGRkLCB5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KGRhdGUudG8sIFwiTExMIGRkLCB5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmpvaW4oXCIgXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoZGF0ZS5mcm9tLCBcIkxMTCBkZCwgeVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNpemUgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTUgYm9yZGVyLWRhc2hlZCBweC0xIHB5LTIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LnNldEZpbHRlclZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERhdGUoeyBmcm9tOiB1bmRlZmluZWQsIHRvOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsdGVyWCBjbGFzc05hbWU9e2NuKFwiaC0zLjUgdy0zLjVcIil9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICA8UG9wb3ZlckNvbnRlbnQgY2xhc3NOYW1lPVwidy1hdXRvIHAtMFwiIGFsaWduPXthbGlnbn0+XG4gICAgICAgICAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBtb2RlPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TW9udGg9e25ldyBEYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkYXRlfVxuICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17c2V0RGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZNb250aHM9e251bWJlck9mTW9udGhzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNpemUgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTZXBhcmF0b3IgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTggYm9yZGVyLWRhc2hlZCBweC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGF0ZSh7IGZyb206IHVuZGVmaW5lZCwgdG86IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJYIHNpemU9ezE2fSBjbGFzc05hbWU9XCJtci0yXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Qb3BvdmVyQ29udGVudD5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICk7XG59XG4iLCAiaW1wb3J0IHsgQ2hlY2tJY29uIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHsgRmlsdGVySWNvbiwgRmlsdGVyWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVGaWx0ZXJQcm9wcyB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcbmltcG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyVHJpZ2dlciB9IGZyb20gXCJAL3VpL3BvcG92ZXJcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIkAvdWkvc2VwYXJhdG9yXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCJAL3VpL2JhZGdlXCI7XG5pbXBvcnQge1xuICAgIENvbW1hbmQsXG4gICAgQ29tbWFuZEVtcHR5LFxuICAgIENvbW1hbmRHcm91cCxcbiAgICBDb21tYW5kSW5wdXQsXG4gICAgQ29tbWFuZEl0ZW0sXG4gICAgQ29tbWFuZExpc3QsXG4gICAgQ29tbWFuZFNlcGFyYXRvcixcbn0gZnJvbSBcIkAvdWkvY29tbWFuZFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVGFibGVGaWx0ZXJEcm9wZG93bih7XG4gICAgY29sdW1uLFxuICAgIHRpdGxlLFxuICAgIG9wdGlvbnMsXG4gICAgYWxpZ24gPSBcInN0YXJ0XCIsXG59OiBUYWJsZUZpbHRlclByb3BzKSB7XG4gICAgY29uc3QgZmFjZXRzID0gY29sdW1uPy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSBuZXcgU2V0KGNvbHVtbj8uZ2V0RmlsdGVyVmFsdWUoKSBhcyBzdHJpbmdbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8UG9wb3Zlcj5cbiAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC14LTAuNVwiPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC01IGJvcmRlci1kYXNoZWQgcHgtMSBweS0yLjVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RmlsdGVySWNvbiBjbGFzc05hbWU9e2NuKFwiaC0zLjUgdy0zLjVcIil9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXM/LnNpemUgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbj1cInZlcnRpY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14LTIgaC00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gcC0xIGgtMy41IHRleHQteHMgZm9udC1ub3JtYWwgbGc6aGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIHNwYWNlLXgtMSBsZzpmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMuc2l6ZSA+IDIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLXNtIHAtMSB0ZXh0LXhzIGgtMy41IGZvbnQtbm9ybWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlcy5zaXplfSBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLmhhcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1zbSBwLTEgdGV4dC14cyBoLTMuNSBmb250LW5vcm1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlcy5zaXplID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC01IGJvcmRlci1kYXNoZWQgcHgtMSBweS0yLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbHRlclggY2xhc3NOYW1lPXtjbihcImgtMy41IHctMy41XCIpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGNsYXNzTmFtZT1cInctWzIwMHB4XSBwLTBcIiBhbGlnbj17YWxpZ259PlxuICAgICAgICAgICAgICAgIDxDb21tYW5kPlxuICAgICAgICAgICAgICAgICAgICA8Q29tbWFuZElucHV0IHBsYWNlaG9sZGVyPXt0aXRsZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRMaXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRFbXB0eT5ObyByZXN1bHRzIGZvdW5kLjwvQ29tbWFuZEVtcHR5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRHcm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b3B0aW9ucz8ubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVzLmhhcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlcy5kZWxldGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5zZXRGaWx0ZXJWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZpbHRlclZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtci0yIGZsZXggaC00IHctNCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLXByaW1hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIm9wYWNpdHktNTAgWyZfc3ZnXTppbnZpc2libGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja0ljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJoLTQgdy00XCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb24uaWNvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24uaWNvbiBjbGFzc05hbWU9XCJtci0yIGgtNCB3LTQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntvcHRpb24ubGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmYWNldHM/LmdldChvcHRpb24udmFsdWUpICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtYXV0byBmbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZvbnQtbW9ubyB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmFjZXRzLmdldChvcHRpb24udmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NvbW1hbmRHcm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlcy5zaXplID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRTZXBhcmF0b3IgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENvbW1hbmRHcm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tYW5kSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LnNldEZpbHRlclZhbHVlKHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwianVzdGlmeS1jZW50ZXIgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29tbWFuZEdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Db21tYW5kTGlzdD5cbiAgICAgICAgICAgICAgICA8L0NvbW1hbmQ+XG4gICAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICA8L1BvcG92ZXI+XG4gICAgKTtcbn1cbiIsICJpbXBvcnQgeyBGaWx0ZXJJY29uLCBGaWx0ZXJYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZUZpbHRlclByb3BzIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiQC91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCJAL3VpL2lucHV0XCI7XG5pbXBvcnQgeyBTZXBhcmF0b3IgfSBmcm9tIFwiQC91aS9zZXBhcmF0b3JcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlRmlsdGVyU2VhcmNoQ29sdW1uKHtcbiAgICBjb2x1bW4sXG4gICAgdGl0bGUsXG4gICAgYWxpZ24gPSBcInN0YXJ0XCIsXG59OiBUYWJsZUZpbHRlclByb3BzKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGNvbHVtbj8uZ2V0RmlsdGVyVmFsdWUoKSBhcyBzdHJpbmc7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8UG9wb3Zlcj5cbiAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC14LTAuNVwiPlxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTUgYm9yZGVyLWRhc2hlZCBweC0xIHB5LTIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LnNldEZpbHRlclZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsdGVyWCBjbGFzc05hbWU9e2NuKFwiaC0zLjUgdy0zLjVcIil9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IGJvcmRlci1kYXNoZWQgcHgtMSBweS0yLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJJY29uIGNsYXNzTmFtZT17Y24oXCJoLTMuNSB3LTMuNVwiKX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Qb3BvdmVyVHJpZ2dlcj5cbiAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctWzIwMHB4XSBwLTAgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlci0wIHJpbmctMFwiXG4gICAgICAgICAgICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBweC0zIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIGJnLXBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNSAxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1yLTIgaC00IHctNCBzaHJpbmstMCBvcGFjaXR5LTUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDYuNUMxMCA4LjQzMyA4LjQzMyAxMCA2LjUgMTBDNC41NjcgMTAgMyA4LjQzMyAzIDYuNUMzIDQuNTY3IDQuNTY3IDMgNi41IDNDOC40MzMgMyAxMCA0LjU2NyAxMCA2LjVaTTkuMzA4ODQgMTAuMDE1OUM4LjUzOTAxIDEwLjYzMTggNy41NjI1MSAxMSA2LjUgMTFDNC4wMTQ3MiAxMSAyIDguOTg1MjggMiA2LjVDMiA0LjAxNDcyIDQuMDE0NzIgMiA2LjUgMkM4Ljk4NTI4IDIgMTEgNC4wMTQ3MiAxMSA2LjVDMTEgNy41NjI1MSAxMC42MzE4IDguNTM5MDEgMTAuMDE1OSA5LjMwODg0TDEyLjg1MzYgMTIuMTQ2NEMxMy4wNDg4IDEyLjM0MTcgMTMuMDQ4OCAxMi42NTgzIDEyLjg1MzYgMTIuODUzNkMxMi42NTgzIDEzLjA0ODggMTIuMzQxNyAxMy4wNDg4IDEyLjE0NjQgMTIuODUzNkw5LjMwODg0IDEwLjAxNTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtzZWxlY3RlZFZhbHVlID8/IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uc2V0RmlsdGVyVmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoLTEwIGJvcmRlci0wIGZvY3VzLXZpc2libGU6cmluZy0wIHJpbmctMCByb3VuZGVkLW1kIGJnLXRyYW5zcGFyZW50IHB5LTMgdGV4dC1zbSBvdXRsaW5lLW5vbmUgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHNoYWRvdy1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VwYXJhdG9yIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTggYm9yZGVyLWRhc2hlZCBweC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LnNldEZpbHRlclZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsdGVyWCBzaXplPXsxNn0gY2xhc3NOYW1lPVwibXItMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGVhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Qb3BvdmVyQ29udGVudD5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICk7XG59XG4iLCAiaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NoZWNrYm94XCI7XG5pbXBvcnQgeyBEb3RzVmVydGljYWxJY29uIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHtcbiAgICBEcm9wZG93bk1lbnUsXG4gICAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgICBEcm9wZG93bk1lbnVJdGVtLFxuICAgIERyb3Bkb3duTWVudUxhYmVsLFxuICAgIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxufSBmcm9tIFwiQC91aS9kcm9wZG93bi1tZW51XCI7XG5cbmltcG9ydCB7IEJhc2VSZWNvcmQsIEh0dHBFcnJvciB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7IFVzZVRhYmxlUmV0dXJuVHlwZSB9IGZyb20gXCJAcmVmaW5lZGV2L3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IEZDLCBmb3J3YXJkUmVmLCBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIENoZWNrQWxsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94PiAmXG4gICAgUHJvcHNXaXRoQ2hpbGRyZW48e1xuICAgICAgICB0YWJsZTogVXNlVGFibGVSZXR1cm5UeXBlPEJhc2VSZWNvcmQsIEh0dHBFcnJvcj47XG4gICAgICAgIG9wdGlvbnM/OiB7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgICAgICAgfVtdO1xuICAgIH0+O1xuXG5leHBvcnQgY29uc3QgQ2hlY2tBbGw6IEZDPENoZWNrQWxsUHJvcHM+ID0gZm9yd2FyZFJlZjxcbiAgICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDaGVja2JveD4sXG4gICAgQ2hlY2tBbGxQcm9wc1xuPigoeyB0YWJsZSwgY2hpbGRyZW4sIG9wdGlvbnMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICB0YWJsZS5nZXRJc1NvbWVSb3dzU2VsZWN0ZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0YWJsZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGFibGUudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZCghIXZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0cmFuc2xhdGUteS1bMnB4XVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCBhbGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHtjaGlsZHJlbiB8fFxuICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLmdldElzU29tZVJvd3NTZWxlY3RlZCgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPXtcImljb25cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17XCJnaG9zdFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC0wIHctNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG90c1ZlcnRpY2FsSWNvbiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50IGFsaWduPVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51TGFiZWw+QnVsayBBY3Rpb25zPC9Ecm9wZG93bk1lbnVMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51U2VwYXJhdG9yIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyFjaGlsZHJlbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkob3B0aW9ucykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb3B0aW9ucy5tYXAoKG9wdGlvbiwga2V5KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXtvcHRpb24ub25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICApO1xufSk7XG5cbkNoZWNrQWxsLmRpc3BsYXlOYW1lID0gXCJDaGVja0FsbFwiO1xuIiwgImltcG9ydCB7XG4gICAgQ2hldnJvbkxlZnRJY29uLFxuICAgIENoZXZyb25SaWdodEljb24sXG4gICAgRG91YmxlQXJyb3dMZWZ0SWNvbixcbiAgICBEb3VibGVBcnJvd1JpZ2h0SWNvbixcbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHsgVXNlVGFibGVSZXR1cm5UeXBlIGFzIFRhYmxlIH0gZnJvbSBcIkByZWZpbmVkZXYvcmVhY3QtdGFibGVcIjtcblxuaW1wb3J0IHsgQmFzZVJlY29yZCB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcbmltcG9ydCB7XG4gICAgU2VsZWN0LFxuICAgIFNlbGVjdENvbnRlbnQsXG4gICAgU2VsZWN0SXRlbSxcbiAgICBTZWxlY3RUcmlnZ2VyLFxuICAgIFNlbGVjdFZhbHVlLFxufSBmcm9tIFwiQC91aS9zZWxlY3RcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2J1dHRvblwiO1xuaW1wb3J0IFJlYWN0LCB7IEZDIH0gZnJvbSBcInJlYWN0XCI7XG5cbmludGVyZmFjZSBEYXRhVGFibGVQYWdpbmF0aW9uUHJvcHM8VERhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gQmFzZVJlY29yZD4ge1xuICAgIHRhYmxlOiBUYWJsZTxURGF0YT47XG59XG5cbmV4cG9ydCBjb25zdCBQYWdpbmF0aW9uID0gPFREYXRhIGV4dGVuZHMgQmFzZVJlY29yZCA9IEJhc2VSZWNvcmQ+KHtcbiAgICB0YWJsZSxcbn06IERhdGFUYWJsZVBhZ2luYXRpb25Qcm9wczxURGF0YT4pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZ2FwLXktNCBzbS1nYXAteS0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAge3RhYmxlLmdldEZpbHRlcmVkU2VsZWN0ZWRSb3dNb2RlbCgpLnJvd3MubGVuZ3RofSBvZntcIiBcIn1cbiAgICAgICAgICAgICAgICB7dGFibGUuZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLnJvd3MubGVuZ3RofSByb3cocykgc2VsZWN0ZWQuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCByZWxhdGl2ZSBmbGV4LWNvbC1yZXZlcnNlIGdhcC15LTQgc206Z2FwLXktMCBzbTpmbGV4LXJvdyBpdGVtcy1jZW50ZXIgc3BhY2UteC02IGxnOnNwYWNlLXgtOFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW1cIj5Sb3dzIHBlciBwYWdlPC9wPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YCR7dGFibGUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uLnBhZ2VTaXplfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRQYWdlU2l6ZShOdW1iZXIodmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cImgtOCB3LVs3MHB4XVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7WzEwLCAyMCwgMzAsIDQwLCA1MF0ubWFwKChwYWdlU2l6ZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtwYWdlU2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtgJHtwYWdlU2l6ZX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFnZVNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHctZml0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgIFBhZ2Uge3RhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbi5wYWdlSW5kZXggKyAxfSBvZntcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAge3RhYmxlLmdldFBhZ2VDb3VudCgpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImhpZGRlbiBoLTggdy04IHAtMCBsZzpmbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5HbyB0byBmaXJzdCBwYWdlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERvdWJsZUFycm93TGVmdEljb24gY2xhc3NOYW1lPVwiaC00IHctNFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTggdy04IHAtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5HbyB0byBwcmV2aW91cyBwYWdlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtOCB3LTggcC0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5HbyB0byBuZXh0IHBhZ2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImhpZGRlbiBoLTggdy04IHAtMCBsZzpmbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0UGFnZUluZGV4KHRhYmxlLmdldFBhZ2VDb3VudCgpIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkdvIHRvIGxhc3QgcGFnZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3VibGVBcnJvd1JpZ2h0SWNvbiBjbGFzc05hbWU9XCJoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cblBhZ2luYXRpb24uZGlzcGxheU5hbWUgPSBcIlBhZ2luYXRpb25cIjtcbiIsICJpbXBvcnQgeyBDYXJldERvd25JY29uLCBDYXJldFVwSWNvbiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVGaWx0ZXJQcm9wcyB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC9saWIvdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQmFzZVJlY29yZCB9IGZyb20gXCJAcmVmaW5lZGV2L2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IFNvcnRBY3Rpb24gPSA8VERhdGEgZXh0ZW5kcyBCYXNlUmVjb3JkID0gQmFzZVJlY29yZD4oe1xuICBjb2x1bW4sXG59OiBQaWNrPFRhYmxlRmlsdGVyUHJvcHM8VERhdGE+LCBcImNvbHVtblwiPikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgY29sdW1uPy50b2dnbGVTb3J0aW5nKGNvbHVtbj8uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJhc2NcIik7XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPENhcmV0VXBJY29uXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwiLW1iLTEuNSB3LTUgaC01XCIsXG4gICAgICAgICAgICBjb2x1bW4/LmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyBcInRleHQtZm9yZWdyb3VuZFwiIDogXCJ0ZXh0LWlucHV0XCJcbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgICA8Q2FyZXREb3duSWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcIi1tdC0xLjUgdy01IGgtNVwiLFxuICAgICAgICAgICAgY29sdW1uPy5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IFwidGV4dC1mb3JlZ3JvdW5kXCIgOiBcInRleHQtaW5wdXRcIlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiXCJ1c2UgY2xpZW50XCI7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVUcmlnZ2VyIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBNaXhlckhvcml6b250YWxJY29uIH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pY29uc1wiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gICAgRHJvcGRvd25NZW51LFxuICAgIERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSxcbiAgICBEcm9wZG93bk1lbnVDb250ZW50LFxuICAgIERyb3Bkb3duTWVudUxhYmVsLFxuICAgIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbn0gZnJvbSBcIkAvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgRkMsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW50ZXJmYWNlIERhdGFUYWJsZVZpZXdPcHRpb25zUHJvcHM8VERhdGE+IHtcbiAgICB0YWJsZTogVGFibGU8VERhdGE+O1xufVxuXG5leHBvcnQgY29uc3QgRGF0YVRhYmxlVmlld09wdGlvbnMgPSA8VERhdGEsPih7XG4gICAgdGFibGUsXG59OiBEYXRhVGFibGVWaWV3T3B0aW9uc1Byb3BzPFREYXRhPik6IFJldHVyblR5cGU8XG4gICAgRkM8RGF0YVRhYmxlVmlld09wdGlvbnNQcm9wczxURGF0YT4+XG4+ID0+IHtcbiAgICBjb25zdCBjb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiB0YWJsZVxuICAgICAgICAgICAgLmdldEFsbENvbHVtbnMoKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoY29sdW1uKSA9PlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY29sdW1uLmFjY2Vzc29yRm4gIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmdldENhbkhpZGUoKSxcbiAgICAgICAgICAgICk7XG4gICAgfSwgW3RhYmxlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWwtYXV0byBoaWRkZW4gaC04IGxnOmZsZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPE1peGVySG9yaXpvbnRhbEljb24gY2xhc3NOYW1lPVwibXItMiBoLTQgdy00XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgVmlld1xuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249XCJlbmRcIiBjbGFzc05hbWU9XCJ3LVsxNTBweF1cIj5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51TGFiZWw+VG9nZ2xlIGNvbHVtbnM8L0Ryb3Bkb3duTWVudUxhYmVsPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVTZXBhcmF0b3IgLz5cbiAgICAgICAgICAgICAgICB7Y29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNoZWNrYm94SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y29sdW1uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNhcGl0YWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbHVtbi5nZXRJc1Zpc2libGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLnRvZ2dsZVZpc2liaWxpdHkodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb2x1bW4uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNoZWNrYm94SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgKTtcbn07XG5cbkRhdGFUYWJsZVZpZXdPcHRpb25zLmRpc3BsYXlOYW1lID0gXCJEYXRhVGFibGVWaWV3T3B0aW9uc1wiO1xuIiwgIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcblxuaW1wb3J0IHsgRGF0YVRhYmxlVmlld09wdGlvbnMgfSBmcm9tIFwiLi90YWJsZS12aWV3LW9wdGlvbnMtZHJvcGRvd25cIjtcblxuaW50ZXJmYWNlIERhdGFUYWJsZVRvb2xiYXJQcm9wczxURGF0YT4ge1xuICB0YWJsZTogVGFibGU8VERhdGE+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YVRhYmxlVG9vbGJhcjxURGF0YT4oe1xuICB0YWJsZSxcbn06IERhdGFUYWJsZVRvb2xiYXJQcm9wczxURGF0YT4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXCI+PC9kaXY+XG4gICAgICA8RGF0YVRhYmxlVmlld09wdGlvbnMgdGFibGU9e3RhYmxlfSAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZURlbGV0ZUhlbHBlciB9IGZyb20gXCJAL2hvb2tzXCI7XG5pbXBvcnQgeyBEZWxldGVDb250ZXh0IH0gZnJvbSBcIkAvcHJvdmlkZXJzXCI7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IFJvd0FjdGlvblByb3BzIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gXCIuXCI7XG5cbnR5cGUgRGVsZXRlQWN0aW9uUHJvcHMgPSBSb3dBY3Rpb25Qcm9wcyAmIHtcbiAgICByb3c6IGFueTtcbiAgICByZXNvdXJjZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgb25BZnRlckhhbmRsZT86ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gRGVsZXRlQWN0aW9uKHtcbiAgICByb3csXG4gICAgcmVzb3VyY2UsXG4gICAgdGl0bGUsXG4gICAgZGlzYWJsZWQsXG4gICAgb25BZnRlckhhbmRsZSxcbiAgICAuLi5wcm9wc1xufTogRGVsZXRlQWN0aW9uUHJvcHMpIHtcbiAgICBjb25zdCB7IGNhbiwgcmVhc29uIH0gPSB1c2VEZWxldGVIZWxwZXIocmVzb3VyY2UsIHJvdy5pZCk7XG4gICAgY29uc3QgZGVsZXRlQ29udGV4dCA9IHVzZUNvbnRleHQoRGVsZXRlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8Um93QWN0aW9uXG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICBkaXNhYmxlZD17IWNhbiB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgIHRpdGxlPXshY2FuID8gcmVhc29uIDogdGl0bGV9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGRlbGV0ZUNvbnRleHQ/LnVwZGF0ZURhdGEoe1xuICAgICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlLFxuICAgICAgICAgICAgICAgICAgICB0b29nbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJIYW5kbGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5EZWxldGVBY3Rpb24uZGlzcGxheU5hbWUgPSBcIkRlbGV0ZUFjdGlvblwiO1xuIl0sCiAgIm1hcHBpbmdzIjogImtvQkFBQSxJQUFBQSxHQUFBLEdBQUFDLEdBQUFELEdBQUEsZ0JBQUFF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QUssT0FBTyxVQUNQLEtBQ0xBLEVBQUssV0FBVyxDQUNwQixHQVBLQSxFQUFLLEVBUWQsQ0FDSCxHQWxCQWlCLEVBQUksRUFtQmIsQ0FDSCxLQUVELE9BQUNQLEdBQUEsQ0FDRyxtQkFBQ0ssR0FBQSxDQUNHLFFBQVN4QixFQUFRLE9BQ2pCLFVBQVUsbUJBQ2IsdUJBRUQsRUFDSixFQUVSLEdBQ0osRUFDSixLQUNBLE9BQUMyQixHQUFBLENBQVcsTUFBT2YsRUFBTyxHQUM5QixFQUNKLENBRVIsQ0ExS2dCZ0IsRUFBQS9CLEdBQUEsU0E0S2hCLElBQU1nQyxHQUFjRCxFQUloQjNCLEdBRU9BLEVBQU0sU0FORyxlQVNwQkosR0FBTSxPQUFTZ0MsR0FDZmhDLEdBQU0sU0FBV2lDLEdBQ2pCakMsR0FBTSxRQUFVa0MsR0FDaEJsQyxHQUFNLE9BQVNtQyxHQUNmbkMsR0FBTSxXQUFhb0MsR0FDbkJwQyxHQUFNLFdBQWFxQyxHQUNuQnJDLEdBQU0sYUFBZXNDLEdBQ3JCdEMsR0FBTSxPQUFTLENBQ1gsZ0JBQWlCdUMsR0FDakIsU0FBVUMsR0FDVixPQUFRQyxFQUNaLEVBRUF6QyxHQUFNLFlBQWMiLAogICJuYW1lcyI6IFsic3JjX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiQmFzZUxheW91dCIsICJCcmVhZGNydW1icyIsICJDbG9uZUJ1dHRvbiIsICJDb21ib2JveCIsICJDb25maXJtRGlhbG9nIiwgIkNyZWF0ZUJ1dHRvbiIsICJDcmVhdGVQYWdlIiwgIkRlZmF1bHRMYXlvdXQiLCAiRGVsZXRlQWN0aW9uTW9kYWwiLCAiRGVsZXRlQnV0dG9uIiwgIkRlbGV0ZUNvbnRleHQiLCAiRGVsZXRlUHJvdmlkZXIiLCAiRWRpdEJ1dHRvbiIsICJFZGl0UGFnZSIsICJFeHBvcnRCdXR0b24iLCAiRmllbGQiLCAiRm9ybSIsICJJbXBvcnRCdXR0b24iLCAiTGluayIsICJMaXN0QnV0dG9uIiwgIkxpc3RQYWdlIiwgIk1vZGVUb2dnbGUiLCAiUGFnZUhlYWRlciIsICJSZWZyZXNoQnV0dG9uIiwgIlNhdmVCdXR0b24iLCAiU2VsZWN0IiwgIlNob3dCdXR0b24iLCAiU2hvd1BhZ2UiLCAiU2lkZWJhciIsICJUYWJsZSIsICJub3RpZmljYXRpb25Qcm92aWRlciIsICJ1c2VOb3RpZmljYXRpb25Qcm92aWRlciIsICJfX3RvQ29tbW9uSlMiLCAiaW1wb3J0X3JlYWN0X3Nsb3QiLCAiaW1wb3J0X2NsYXNzX3ZhcmlhbmNlX2F1dGhvcml0eSIsICJSZWFjdCIsICJpbXBvcnRfY2xzeCIsICJpbXBvcnRfdGFpbHdpbmRfbWVyZ2UiLCAiY24iLCAiaW5wdXRzIiwgIl9fbmFtZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiTG9hZGluZ0ljb24iLCAiUmVhY3QiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiYnV0dG9uVmFyaWFudHMiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiaWNvbiIsICJsb2FkaW5nIiwgImFzQ2hpbGQiLCAiY2hpbGRyZW4iLCAiZGlzYWJsZWQiLCAicHJvcHMiLCAicmVmIiwgIkljb24iLCAiTG9hZGluZ0ljb24iLCAiY24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ2xvbmVCdXR0b24iLCAiX19uYW1lIiwgInJlc291cmNlIiwgInJlY29yZEl0ZW1JZCIsICJoaWRlVGV4dCIsICJhY2Nlc3NDb250cm9sIiwgIm1ldGEiLCAib25DbGljayIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJ0byIsICJMaW5rQ29tcG9uZW50IiwgImxhYmVsIiwgImRpc2FibGVkIiwgImhpZGRlbiIsICJ0aXRsZSIsICJlIiwgIkJ1dHRvbiIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJDcmVhdGVCdXR0b24iLCAiX19uYW1lIiwgInJlc291cmNlIiwgImhpZGVUZXh0IiwgImFjY2Vzc0NvbnRyb2wiLCAibWV0YSIsICJvbkNsaWNrIiwgImNoaWxkcmVuIiwgInByb3BzIiwgImhpZGRlbiIsICJkaXNhYmxlZCIsICJsYWJlbCIsICJ0aXRsZSIsICJMaW5rQ29tcG9uZW50IiwgInRvIiwgImUiLCAiQnV0dG9uIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiUmVhY3QiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9yZWFjdF9zbG90IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJCcmVhZGNydW1iIiwgInByb3BzIiwgInJlZiIsICJCcmVhZGNydW1iTGlzdCIsICJjbGFzc05hbWUiLCAiY24iLCAiQnJlYWRjcnVtYkl0ZW0iLCAiQnJlYWRjcnVtYkxpbmsiLCAiYXNDaGlsZCIsICJCcmVhZGNydW1iUGFnZSIsICJCcmVhZGNydW1iU2VwYXJhdG9yIiwgIl9fbmFtZSIsICJjaGlsZHJlbiIsICJCcmVhZGNydW1iRWxsaXBzaXMiLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9yZWFjdF9zbG90IiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiTGluayIsICJjaGlsZHJlbiIsICJocmVmIiwgInRpdGxlIiwgImNsYXNzTmFtZSIsICJhc0NoaWxkIiwgInJlZiIsICJMZWdhY3lMaW5rIiwgInJvdXRlclR5cGUiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQnJlYWRjcnVtYnMiLCAiX19uYW1lIiwgInNob3dIb21lIiwgIm1ldGEiLCAiYnJlYWRjcnVtYnMiLCAiaGFzRGFzaGJvYXJkIiwgInJlc291cmNlcyIsICJkYXNoYm9hcmRSZXNvdXJjZSIsICJyb290Um91dGVSZXNvdXJjZSIsICJCcmVhZENydW1iSXRlbXMiLCAibGFiZWwiLCAiaHJlZiIsICJrZXkiLCAiQnJlYWRjcnVtYkl0ZW0iLCAiQnJlYWRjcnVtYkxpbmsiLCAiTGluayIsICJCcmVhZGNydW1iUGFnZSIsICJCcmVhZGNydW1iU2VwYXJhdG9yIiwgIkJyZWFkY3J1bWIiLCAiQnJlYWRjcnVtYkxpc3QiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgIkFsZXJ0RGlhbG9nUHJpbWl0aXZlIiwgIlJlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJBbGVydERpYWxvZyIsICJBbGVydERpYWxvZ1RyaWdnZXIiLCAiQWxlcnREaWFsb2dQb3J0YWwiLCAiQWxlcnREaWFsb2dPdmVybGF5IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQWxlcnREaWFsb2dDb250ZW50IiwgIkFsZXJ0RGlhbG9nSGVhZGVyIiwgIl9fbmFtZSIsICJBbGVydERpYWxvZ0Zvb3RlciIsICJBbGVydERpYWxvZ1RpdGxlIiwgIkFsZXJ0RGlhbG9nRGVzY3JpcHRpb24iLCAiQWxlcnREaWFsb2dBY3Rpb24iLCAidmFyaWFudCIsICJzaXplIiwgImJ1dHRvblZhcmlhbnRzIiwgIkFsZXJ0RGlhbG9nQ2FuY2VsIiwgImltcG9ydF9jbGFzc192YXJpYW5jZV9hdXRob3JpdHkiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImJhZGdlVmFyaWFudHMiLCAiQmFkZ2UiLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAicHJvcHMiLCAiY24iLCAiX19uYW1lIiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJpbXBvcnRfcmVhY3RfZGF5X3BpY2tlciIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ2FsZW5kYXIiLCAiY2xhc3NOYW1lIiwgImNsYXNzTmFtZXMiLCAic2hvd091dHNpZGVEYXlzIiwgInByb3BzIiwgImNuIiwgImJ1dHRvblZhcmlhbnRzIiwgIl9fbmFtZSIsICJSZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ2FyZCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkNhcmRIZWFkZXIiLCAiQ2FyZFRpdGxlIiwgIkNhcmREZXNjcmlwdGlvbiIsICJDYXJkQ29udGVudCIsICJDYXJkRm9vdGVyIiwgIlJlYWN0IiwgIkNoZWNrYm94UHJpbWl0aXZlIiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ2hlY2tib3giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJSZWFjdCIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X2NtZGsiLCAiUmVhY3QiLCAiRGlhbG9nUHJpbWl0aXZlIiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiRGlhbG9nUG9ydGFsIiwgIkRpYWxvZ092ZXJsYXkiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJEaWFsb2dDb250ZW50IiwgImNoaWxkcmVuIiwgIkRpYWxvZ1BvcnRhbCIsICJEaWFsb2dIZWFkZXIiLCAiX19uYW1lIiwgIkRpYWxvZ0Zvb3RlciIsICJEaWFsb2dUaXRsZSIsICJEaWFsb2dEZXNjcmlwdGlvbiIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ29tbWFuZCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgIkNvbW1hbmRQcmltaXRpdmUiLCAiY24iLCAiQ29tbWFuZElucHV0IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiQ29tbWFuZFByaW1pdGl2ZSIsICJjbiIsICJDb21tYW5kTGlzdCIsICJDb21tYW5kRW1wdHkiLCAiQ29tbWFuZEdyb3VwIiwgIkNvbW1hbmRTZXBhcmF0b3IiLCAiQ29tbWFuZEl0ZW0iLCAiQ29tbWFuZFNob3J0Y3V0IiwgIl9fbmFtZSIsICJSZWFjdCIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJEcm9wZG93bk1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiRHJvcGRvd25NZW51U3ViQ29udGVudCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgInNpZGVPZmZzZXQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJEcm9wZG93bk1lbnVSYWRpb0l0ZW0iLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIl9fbmFtZSIsICJSZWFjdCIsICJpbXBvcnRfcmVhY3Rfc2xvdCIsICJpbXBvcnRfcmVhY3RfaG9va19mb3JtIiwgIlJlYWN0IiwgIkxhYmVsUHJpbWl0aXZlIiwgImltcG9ydF9jbGFzc192YXJpYW5jZV9hdXRob3JpdHkiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImxhYmVsVmFyaWFudHMiLCAiTGFiZWwiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiRm9ybSIsICJGb3JtRmllbGRDb250ZXh0IiwgIkZvcm1GaWVsZCIsICJfX25hbWUiLCAicHJvcHMiLCAidXNlRm9ybUZpZWxkIiwgImZpZWxkQ29udGV4dCIsICJpdGVtQ29udGV4dCIsICJGb3JtSXRlbUNvbnRleHQiLCAiZ2V0RmllbGRTdGF0ZSIsICJmb3JtU3RhdGUiLCAiZmllbGRTdGF0ZSIsICJpZCIsICJGb3JtSXRlbSIsICJjbGFzc05hbWUiLCAicmVmIiwgImNuIiwgIkZvcm1MYWJlbCIsICJlcnJvciIsICJmb3JtSXRlbUlkIiwgIkxhYmVsIiwgIkZvcm1Db250cm9sIiwgImZvcm1EZXNjcmlwdGlvbklkIiwgImZvcm1NZXNzYWdlSWQiLCAiRm9ybURlc2NyaXB0aW9uIiwgIkZvcm1NZXNzYWdlIiwgImNoaWxkcmVuIiwgImJvZHkiLCAiUmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIklucHV0IiwgImNsYXNzTmFtZSIsICJ0eXBlIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJSZWFjdCIsICJQb3BvdmVyUHJpbWl0aXZlIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJjbiIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiUmVzaXphYmxlUHJpbWl0aXZlIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJSZXNpemFibGVQYW5lbEdyb3VwIiwgIl9fbmFtZSIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAiUmVzaXphYmxlUGFuZWwiLCAiUmVzaXphYmxlSGFuZGxlIiwgIndpdGhIYW5kbGUiLCAiUmVhY3QiLCAiU2Nyb2xsQXJlYVByaW1pdGl2ZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiU2Nyb2xsQXJlYSIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlNjcm9sbEJhciIsICJvcmllbnRhdGlvbiIsICJSZWFjdCIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiU2VsZWN0UHJpbWl0aXZlIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTZWxlY3QiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0VHJpZ2dlciIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlNlbGVjdFNjcm9sbFVwQnV0dG9uIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIlNlbGVjdFNlcGFyYXRvciIsICJSZWFjdCIsICJTZXBhcmF0b3JQcmltaXRpdmUiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlNlcGFyYXRvciIsICJjbGFzc05hbWUiLCAib3JpZW50YXRpb24iLCAiZGVjb3JhdGl2ZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiaW1wb3J0X25leHRfdGhlbWVzIiwgImltcG9ydF9zb25uZXIiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRvYXN0ZXIiLCAiX19uYW1lIiwgInByb3BzIiwgInRoZW1lIiwgIlNvbm5lciIsICJSZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiVGFibGUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJUYWJsZUhlYWRlciIsICJUYWJsZUJvZHkiLCAiVGFibGVGb290ZXIiLCAiVGFibGVSb3ciLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJUYWJsZUNhcHRpb24iLCAiUmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRleHRhcmVhIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiUmVhY3QiLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ29tYm9ib3giLCAicHJvcHMiLCAicmVmIiwgIm9wZW4iLCAic2V0T3BlbiIsICJ2YWx1ZSIsICJfX25hbWUiLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJGb3JtQ29udHJvbCIsICJCdXR0b24iLCAiY24iLCAib3B0aW9uIiwgIlBvcG92ZXJDb250ZW50IiwgIkNvbW1hbmQiLCAiQ29tbWFuZElucHV0IiwgIkNvbW1hbmRMaXN0IiwgIkNvbW1hbmRFbXB0eSIsICJDb21tYW5kR3JvdXAiLCAiU2Nyb2xsQXJlYSIsICJDb21tYW5kSXRlbSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQ29uZmlybURpYWxvZyIsICJfX25hbWUiLCAiY2hpbGRyZW4iLCAidGl0bGUiLCAiZGVzY3JpcHRpb24iLCAib2tUZXh0IiwgImNhbmNlbFRleHQiLCAib2tCdXR0b25TaXplIiwgImNhbmNlbEJ1dHRvblNpemUiLCAib2tCdXR0b25WYXJpYW50IiwgImNhbmNlbEJ1dHRvblZhcmlhbnQiLCAibG9hZGluZyIsICJva0ljb25TaWRlIiwgImNhbmNlbEljb25TaWRlIiwgIm9uQ29uZmlybSIsICJva0ljb24iLCAiY2FuY2VsSWNvbiIsICJvcGVuIiwgIm9uT3BlbkNoYW5nZSIsICJkZWZhdWx0T3BlbiIsICJDYW5jZWxJY29uIiwgIk9rSWNvbiIsICJMb2FkaW5nSWNvbiIsICJBbGVydERpYWxvZyIsICJBbGVydERpYWxvZ1RyaWdnZXIiLCAiQWxlcnREaWFsb2dDb250ZW50IiwgIkFsZXJ0RGlhbG9nSGVhZGVyIiwgIkFsZXJ0RGlhbG9nVGl0bGUiLCAiQWxlcnREaWFsb2dEZXNjcmlwdGlvbiIsICJBbGVydERpYWxvZ0Zvb3RlciIsICJBbGVydERpYWxvZ0NhbmNlbCIsICJBbGVydERpYWxvZ0FjdGlvbiIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkZpZWxkIiwgIl9fbmFtZSIsICJwcm9wcyIsICJGb3JtRmllbGQiLCAiZmllbGQiLCAiRm9ybUl0ZW0iLCAiY24iLCAiRm9ybUxhYmVsIiwgIkZvcm1Db250cm9sIiwgIkZvcm1EZXNjcmlwdGlvbiIsICJGb3JtTWVzc2FnZSIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkZvcm0iLCAiX19uYW1lIiwgImZvcm1Qcm9wcyIsICJpc1dhdGNoYWJsZSIsICJzYXZlQnV0dG9uUHJvcHMiLCAicHJvcHMiLCAid2F0Y2hhYmxlIiwgIl9yZXNvdXJjZSIsICJhY3Rpb24iLCAicm91dGVyVHlwZSIsICJiYWNrIiwgImdvQmFjayIsICJvbkJhY2siLCAib25TdWJtaXQiLCAiX2RhdGEiLCAiQ2FyZCIsICJDYXJkQ29udGVudCIsICJDYXJkRm9vdGVyIiwgIkJ1dHRvbiIsICJTYXZlQnV0dG9uIiwgImltcG9ydF9uZXh0X3RoZW1lcyIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIk1vZGVUb2dnbGUiLCAiX19uYW1lIiwgInNldFRoZW1lIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlBhZ2VIZWFkZXIiLCAiX19uYW1lIiwgImV4dHJhIiwgInByb3BzIiwgImNuIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiU2VsZWN0IiwgInByb3BzIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIlJlYWN0IiwgIkZvcm1Db250cm9sIiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJvcHRpb24iLCAia2V5IiwgIlNlbGVjdEl0ZW0iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0X3VzZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlNpZGViYXIiLCAiX19uYW1lIiwgImlzQ29sbGFwc2VkIiwgIm1lbnVJdGVtcyIsICJyZXNvdXJjZVBhcmFtcyIsICJwYXRobmFtZSIsICJjdXJyZW50UGF0aG5hbWUiLCAiR2V0SWNvbiIsICJpdGVtIiwgImljb24iLCAiUmVhY3QiLCAiaSIsICJrZXkiLCAicGF0aHMiLCAiaXNBY3RpdmUiLCAicGF0aCIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIkxpbmsiLCAiY24iLCAiYnV0dG9uVmFyaWFudHMiLCAiVG9vbHRpcENvbnRlbnQiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkRlbGV0ZUJ1dHRvbiIsICJfX25hbWUiLCAicmVzb3VyY2UiLCAicmVjb3JkSXRlbUlkIiwgIm9uU3VjY2VzcyIsICJtdXRhdGlvbk1vZGVQcm9wIiwgImNvbmZpcm1UaXRsZSIsICJjb25maXJtRGVzY3JpcHRpb24iLCAic3VjY2Vzc05vdGlmaWNhdGlvbiIsICJlcnJvck5vdGlmaWNhdGlvbiIsICJoaWRlVGV4dCIsICJhY2Nlc3NDb250cm9sIiwgIm1ldGEiLCAiZGF0YVByb3ZpZGVyTmFtZSIsICJjb25maXJtT2tUZXh0IiwgImNvbmZpcm1DYW5jZWxUZXh0IiwgImludmFsaWRhdGVzIiwgImNoaWxkcmVuIiwgInByb3BzIiwgInRpdGxlIiwgImxhYmVsIiwgImhpZGRlbiIsICJkaXNhYmxlZCIsICJsb2FkaW5nIiwgImRlZmF1bHRDb25maXJtVGl0bGUiLCAiZGVmYXVsdENvbmZpcm1Pa0xhYmVsIiwgImRlZmF1bHRDYW5jZWxMYWJlbCIsICJvbkNvbmZpcm0iLCAiQ29uZmlybURpYWxvZyIsICJCdXR0b24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiRWRpdEJ1dHRvbiIsICJfX25hbWUiLCAicmVzb3VyY2UiLCAicmVjb3JkSXRlbUlkIiwgImhpZGVUZXh0IiwgImFjY2Vzc0NvbnRyb2wiLCAibWV0YSIsICJvbkNsaWNrIiwgImNoaWxkcmVuIiwgInByb3BzIiwgImhpZGRlbiIsICJkaXNhYmxlZCIsICJsYWJlbCIsICJ0aXRsZSIsICJMaW5rQ29tcG9uZW50IiwgInRvIiwgImUiLCAiQnV0dG9uIiwgImltcG9ydF9yZWFjdF9zbG90IiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkV4cG9ydEJ1dHRvbiIsICJfX25hbWUiLCAiaGlkZVRleHQiLCAicmVzb3VyY2UiLCAicmVjb3JkSXRlbUlkIiwgImFjY2Vzc0NvbnRyb2wiLCAiYWNjZXNzIiwgImNoaWxkcmVuIiwgInByb3BzIiwgImxhYmVsIiwgIkNvbSIsICJCdXR0b24iLCAiaW1wb3J0X3JlYWN0X3Nsb3QiLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X2x1Y2lkZV9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiSW1wb3J0QnV0dG9uIiwgIl9fbmFtZSIsICJoaWRlVGV4dCIsICJyZXNvdXJjZSIsICJvbkNoYW5nZSIsICJhY2NlcHQiLCAicmVjb3JkSXRlbUlkIiwgImFjY2Vzc0NvbnRyb2wiLCAiYWNjZXNzIiwgImNoaWxkcmVuIiwgInByb3BzIiwgImxhYmVsIiwgIkNvbSIsICJvbkNsaWNrIiwgImVsIiwgImUiLCAiQnV0dG9uIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkxpc3RCdXR0b24iLCAiX19uYW1lIiwgInJlc291cmNlTmFtZUZyb21Qcm9wcyIsICJoaWRlVGV4dCIsICJhY2Nlc3NDb250cm9sIiwgIm1ldGEiLCAiY2hpbGRyZW4iLCAib25DbGljayIsICJwcm9wcyIsICJoaWRkZW4iLCAiZGlzYWJsZWQiLCAibGFiZWwiLCAidGl0bGUiLCAiTGlua0NvbXBvbmVudCIsICJ0byIsICJlIiwgIkJ1dHRvbiIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJSZWZyZXNoQnV0dG9uIiwgIl9fbmFtZSIsICJyZXNvdXJjZSIsICJyZWNvcmRJdGVtSWQiLCAiaGlkZVRleHQiLCAiZGF0YVByb3ZpZGVyTmFtZSIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvbkNsaWNrIiwgImxhYmVsIiwgImxvYWRpbmciLCAiQnV0dG9uIiwgImltcG9ydF9yZWFjdF9zbG90IiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlNhdmVCdXR0b24iLCAiX19uYW1lIiwgImhpZGVUZXh0IiwgImNoaWxkcmVuIiwgImFjY2Vzc0NvbnRyb2wiLCAiYWNjZXNzIiwgInJlc291cmNlIiwgInJlY29yZEl0ZW1JZCIsICJwcm9wcyIsICJsYWJlbCIsICJDb20iLCAiQnV0dG9uIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlNob3dCdXR0b24iLCAiX19uYW1lIiwgInJlc291cmNlTmFtZUZyb21Qcm9wcyIsICJyZWNvcmRJdGVtSWQiLCAiaGlkZVRleHQiLCAiYWNjZXNzQ29udHJvbCIsICJtZXRhIiwgImNoaWxkcmVuIiwgIm9uQ2xpY2siLCAicHJvcHMiLCAidG8iLCAibGFiZWwiLCAidGl0bGUiLCAiaGlkZGVuIiwgImRpc2FibGVkIiwgIkxpbmtDb21wb25lbnQiLCAiZSIsICJCdXR0b24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJDcmVhdGVQYWdlIiwgIl9fbmFtZSIsICJ0aXRsZSIsICJyZXNvdXJjZUZyb21Qcm9wcyIsICJicmVhZGNydW1iRnJvbVByb3BzIiwgImV4dHJhIiwgImNoaWxkcmVuIiwgInRyYW5zbGF0ZSIsICJnbG9iYWxCcmVhZGNydW1iIiwgImdldFVzZXJGcmllbmRseU5hbWUiLCAicmVzb3VyY2UiLCAiaWRlbnRpZmllciIsICJicmVhZGNydW1iIiwgIlBhZ2VIZWFkZXIiLCAiQnJlYWRjcnVtYnMiLCAiTGlzdEJ1dHRvbiIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkVkaXRQYWdlIiwgIl9fbmFtZSIsICJ0aXRsZSIsICJyZXNvdXJjZSIsICJleHRyYSIsICJicmVhZGNydW1iRnJvbVByb3BzIiwgImNoaWxkcmVuIiwgInRyYW5zbGF0ZSIsICJnbG9iYWxCcmVhZGNydW1iIiwgImxpc3QiLCAiZ2V0VXNlckZyaWVuZGx5TmFtZSIsICJfcmVzb3VyY2UiLCAiaWRlbnRpZmllciIsICJicmVhZGNydW1iIiwgIlBhZ2VIZWFkZXIiLCAiQnJlYWRjcnVtYnMiLCAiU2hvd0J1dHRvbiIsICJEZWxldGVCdXR0b24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJMaXN0UGFnZSIsICJfX25hbWUiLCAidGl0bGUiLCAicmVzb3VyY2VGcm9tUHJvcHMiLCAiYnJlYWRjcnVtYkZyb21Qcm9wcyIsICJjcmVhdGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiaXNDcmVhdGUiLCAiZXh0cmEiLCAiY2hpbGRyZW4iLCAidHJhbnNsYXRlIiwgImdsb2JhbEJyZWFkY3J1bWIiLCAiZ2V0VXNlckZyaWVuZGx5TmFtZSIsICJyZXNvdXJjZSIsICJpZGVudGlmaWVyIiwgImJyZWFkY3J1bWIiLCAiUGFnZUhlYWRlciIsICJCcmVhZGNydW1icyIsICJDcmVhdGVCdXR0b24iLCAiY24iLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJSb3ciLCAiX19uYW1lIiwgInRpdGxlIiwgImNoaWxkcmVuIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTaG93UGFnZSIsICJfX25hbWUiLCAidGl0bGUiLCAicmVzb3VyY2VGcm9tUHJvcHMiLCAiYnJlYWRjcnVtYkZyb21Qcm9wcyIsICJpc0VkaXQiLCAiaXNEZWxldGUiLCAiZXh0cmEiLCAiY2hpbGRyZW4iLCAidHJhbnNsYXRlIiwgImdsb2JhbEJyZWFkY3J1bWIiLCAiZ2V0VXNlckZyaWVuZGx5TmFtZSIsICJyZXNvdXJjZSIsICJpZGVudGlmaWVyIiwgImxpc3QiLCAiYnJlYWRjcnVtYiIsICJQYWdlSGVhZGVyIiwgIkJyZWFkY3J1bWJzIiwgIkVkaXRCdXR0b24iLCAiRGVsZXRlQnV0dG9uIiwgIlJvdyIsICJpbXBvcnRfbmV4dF90aGVtZXMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRoZW1lUHJvdmlkZXIiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAiTmV4dFRoZW1lc1Byb3ZpZGVyIiwgIl9fbmFtZSIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQmFzZUxheW91dCIsICJfX25hbWUiLCAiYXR0cmlidXRlIiwgImRlZmF1bHRUaGVtZSIsICJlbmFibGVTeXN0ZW0iLCAiZGlzYWJsZVRyYW5zaXRpb25PbkNoYW5nZSIsICJlbmFibGVDb2xvclNjaGVtZSIsICJmb3JjZWRUaGVtZSIsICJub25jZSIsICJzdG9yYWdlS2V5IiwgInRoZW1lcyIsICJ2YWx1ZSIsICJjaGlsZHJlbiIsICJUaGVtZVByb3ZpZGVyIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb2FzdGVyIiwgIlJlYWN0IiwgInF1ZXJpZXNEaWRDaGFuZ2UiLCAicHJldlF1ZXJpZXMiLCAibmV4dFF1ZXJpZXMiLCAibmV4dFF1ZXJpZXNBcnIiLCAicHJldlF1ZXJpZXNBcnIiLCAicSIsICJpIiwgInByZXZLZXlzIiwgIm4iLCAiX19uYW1lIiwgIl9yZWYiLCAiY3VyciIsICJrZXkiLCAiaW5pdCIsICJxdWVyaWVzIiwgInF1ZXJ5S2V5cyIsICJzdGF0ZSIsICJuYW1lIiwgIm1xbCIsICJyZWR1Y2VyIiwgImFjdGlvbiIsICJfcmVmMiIsICJwcmV2IiwgInVzZU1lZGlhUXVlcmllcyIsICJxdWVyeU1hcCIsICJkaXNwYXRjaCIsICJfcmVmMyIsICJfcmVmNCIsICJtcSIsICJjYWxsYmFjayIsICJjYWxsYmFja3MiLCAiX3JlZjUiLCAibWF0Y2hlcyIsICJtYXRjaFZhbHVlcyIsICJ1c2VNZWRpYVF1ZXJ5IiwgInF1ZXJ5IiwgImdldE9iaiIsICJjYWNoZSIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkRlZmF1bHRMYXlvdXQiLCAiX19uYW1lIiwgImNoaWxkcmVuIiwgImRlZmF1bHRMYXlvdXQiLCAiZGVmYXVsdENvbGxhcHNlZCIsICJuYXZDb2xsYXBzZWRTaXplIiwgIm5hdmJhciIsICJmb290ZXIiLCAibG9nbyIsICJhdHRyaWJ1dGUiLCAiZGVmYXVsdFRoZW1lIiwgImVuYWJsZVN5c3RlbSIsICJkaXNhYmxlVHJhbnNpdGlvbk9uQ2hhbmdlIiwgImVuYWJsZUNvbG9yU2NoZW1lIiwgImZvcmNlZFRoZW1lIiwgIm5vbmNlIiwgInN0b3JhZ2VLZXkiLCAidGhlbWVzIiwgInZhbHVlIiwgInJlc291cmNlcyIsICJmaXJzdERhc2hib2FyZCIsICJ4cyIsICJ1c2VNZWRpYVF1ZXJ5IiwgInNtIiwgIm1kIiwgImxnIiwgImlzQ29sbGFwc2VkIiwgInNldElzQ29sbGFwc2VkIiwgImxheW91dCIsICJTaWRlYmFyU2l6ZXMiLCAiaGFzQ29sbGFwc2VkIiwgIkxvZ28iLCAiY29tcG9uZW50IiwgIkJhc2VMYXlvdXQiLCAiUmVzaXphYmxlUGFuZWxHcm91cCIsICJzaXplcyIsICJSZXNpemFibGVQYW5lbCIsICJjb2xsYXBzZWQiLCAiY24iLCAiTGluayIsICJTaWRlYmFyIiwgIlJlc2l6YWJsZUhhbmRsZSIsICJNb2RlVG9nZ2xlIiwgImltcG9ydF9zb25uZXIiLCAibm90aWZpY2F0aW9uUHJvdmlkZXIiLCAiX19uYW1lIiwgImtleSIsICJtZXNzYWdlIiwgImRlc2NyaXB0aW9uIiwgInR5cGUiLCAidXNlTm90aWZpY2F0aW9uUHJvdmlkZXIiLCAiaW1wb3J0X2NvcmUiLCAiaW1wb3J0X3JlYWN0IiwgInVzZUdldEVkaXRVcmwiLCAiX19uYW1lIiwgInJlc291cmNlIiwgInJlY29yZEl0ZW1JZCIsICJtZXRhIiwgImFjY2Vzc0NvbnRyb2xDb250ZXh0IiwgImFjY2Vzc0NvbnRyb2xFbmFibGVkIiwgImhpZGVJZlVuYXV0aG9yaXplZCIsICJnZW5lcmF0ZUVkaXRVcmwiLCAiaWQiLCAiX3Jlc291cmNlIiwgImRhdGEiLCAidHJhbnNsYXRlIiwgInJlYXNvbiIsICJlZGl0VXJsIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9yZWFjdCIsICJ1c2VHZXRTaG93VXJsIiwgIl9fbmFtZSIsICJyZXNvdXJjZSIsICJyZWNvcmRJdGVtSWQiLCAibWV0YSIsICJhY2Nlc3NDb250cm9sQ29udGV4dCIsICJhY2Nlc3NDb250cm9sRW5hYmxlZCIsICJoaWRlSWZVbmF1dGhvcml6ZWQiLCAiZ2VuZXJhdGVTaG93VXJsIiwgImlkIiwgIl9yZXNvdXJjZSIsICJkYXRhIiwgInRyYW5zbGF0ZSIsICJyZWFzb24iLCAic2hvd1VybCIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfcmVhY3QiLCAidXNlRGVsZXRlSGVscGVyIiwgIl9fbmFtZSIsICJyZXNvdXJjZSIsICJyZWNvcmRJdGVtSWQiLCAibWV0YSIsICJhY2Nlc3NDb250cm9sQ29udGV4dCIsICJhY2Nlc3NDb250cm9sRW5hYmxlZCIsICJoaWRlSWZVbmF1dGhvcml6ZWQiLCAidHJhbnNsYXRlIiwgImlkIiwgIl9yZXNvdXJjZSIsICJpZGVudGlmaWVyIiwgIm11dGF0aW9uTW9kZSIsICJtdXRhdGUiLCAiaXNMb2FkaW5nIiwgImRhdGEiLCAicmVhc29uIiwgInNldFdhcm5XaGVuIiwgIm9uRGVsZXRlTXV0YXRlIiwgIm9wdGlvbnMiLCAiaW1wb3J0X2NvcmUiLCAidXNlT25CYWNrIiwgIl9fbmFtZSIsICJyb3V0ZXJUeXBlIiwgImJhY2siLCAiZ29CYWNrIiwgImFjdGlvbiIsICJpbXBvcnRfY29yZSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkRlbGV0ZUFjdGlvbk1vZGFsIiwgInByb3BzIiwgImJhY2siLCAidXNlT25CYWNrIiwgImNhbiIsICJpc0xvYWRpbmciLCAibXV0YXRlIiwgInVzZURlbGV0ZUhlbHBlciIsICJ0cmFuc2xhdGUiLCAib25EZWxldGUiLCAiaXNSZWRpcmVjdEJhY2siLCAib25BZnRlckhhbmRsZSIsICJDb25maXJtRGlhbG9nIiwgIl9fbmFtZSIsICJEZWxldGVDb250ZXh0IiwgIkRlbGV0ZVByb3ZpZGVyIiwgImNoaWxkcmVuIiwgImRhdGEiLCAic2V0RGF0YSIsICJ1cGRhdGVEYXRhIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiTG9hZGVyIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAibG9hZGVyX2RlZmF1bHQiLCAiaW1wb3J0X3JlYWN0X3RhYmxlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlJvd0FjdGlvbiIsICJfX25hbWUiLCAicHJvcHMiLCAiRHJvcGRvd25NZW51SXRlbSIsICJMaW5rIiwgIlJvd0FjdGlvbnMiLCAiY2hpbGRyZW4iLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQnV0dG9uIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkVkaXRBY3Rpb24iLCAicm93IiwgInJlc291cmNlIiwgInRpdGxlIiwgImRpc2FibGVkIiwgInByb3BzIiwgImVkaXQiLCAidXNlR2V0RWRpdFVybCIsICJSb3dBY3Rpb24iLCAiX19uYW1lIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJTaG93QWN0aW9uIiwgInJvdyIsICJyZXNvdXJjZSIsICJ0aXRsZSIsICJkaXNhYmxlZCIsICJwcm9wcyIsICJkZXRhaWwiLCAidXNlR2V0U2hvd1VybCIsICJSb3dBY3Rpb24iLCAiX19uYW1lIiwgImltcG9ydF9kYXRlX2ZucyIsICJpbXBvcnRfbHVjaWRlX3JlYWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiVGFibGVGaWx0ZXJEYXRlUmFuZ2VQaWNrZXJGaWx0ZXIiLCAiY29sdW1uIiwgInRpdGxlIiwgIm51bWJlck9mTW9udGhzIiwgImFsaWduIiwgImRhdGUiLCAic2V0RGF0ZSIsICJzZWxlY3RlZFZhbHVlcyIsICJkYXRlcyIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIkJ1dHRvbiIsICJjbiIsICJTZXBhcmF0b3IiLCAiQmFkZ2UiLCAiZSIsICJQb3BvdmVyQ29udGVudCIsICJDYWxlbmRhciIsICJfX25hbWUiLCAiaW1wb3J0X3JlYWN0X2ljb25zIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRhYmxlRmlsdGVyRHJvcGRvd24iLCAiY29sdW1uIiwgInRpdGxlIiwgIm9wdGlvbnMiLCAiYWxpZ24iLCAiZmFjZXRzIiwgInNlbGVjdGVkVmFsdWVzIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiQnV0dG9uIiwgImNuIiwgIlNlcGFyYXRvciIsICJCYWRnZSIsICJvcHRpb24iLCAiZSIsICJQb3BvdmVyQ29udGVudCIsICJDb21tYW5kIiwgIkNvbW1hbmRJbnB1dCIsICJDb21tYW5kTGlzdCIsICJDb21tYW5kRW1wdHkiLCAiQ29tbWFuZEdyb3VwIiwgImlzU2VsZWN0ZWQiLCAiQ29tbWFuZEl0ZW0iLCAiZmlsdGVyVmFsdWVzIiwgIkNvbW1hbmRTZXBhcmF0b3IiLCAiX19uYW1lIiwgImltcG9ydF9sdWNpZGVfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlRhYmxlRmlsdGVyU2VhcmNoQ29sdW1uIiwgImNvbHVtbiIsICJ0aXRsZSIsICJhbGlnbiIsICJzZWxlY3RlZFZhbHVlIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiQnV0dG9uIiwgImUiLCAiY24iLCAiUG9wb3ZlckNvbnRlbnQiLCAiSW5wdXQiLCAiU2VwYXJhdG9yIiwgIl9fbmFtZSIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJDaGVja0FsbCIsICJ0YWJsZSIsICJjaGlsZHJlbiIsICJvcHRpb25zIiwgInJlZiIsICJDaGVja2JveCIsICJ2YWx1ZSIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJCdXR0b24iLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnVMYWJlbCIsICJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCAib3B0aW9uIiwgImtleSIsICJEcm9wZG93bk1lbnVJdGVtIiwgImltcG9ydF9yZWFjdF9pY29ucyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiUGFnaW5hdGlvbiIsICJfX25hbWUiLCAidGFibGUiLCAiU2VsZWN0IiwgInZhbHVlIiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJwYWdlU2l6ZSIsICJTZWxlY3RJdGVtIiwgIkJ1dHRvbiIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIlNvcnRBY3Rpb24iLCAiX19uYW1lIiwgImNvbHVtbiIsICJjbiIsICJpbXBvcnRfcmVhY3RfZHJvcGRvd25fbWVudSIsICJpbXBvcnRfcmVhY3RfaWNvbnMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJEYXRhVGFibGVWaWV3T3B0aW9ucyIsICJfX25hbWUiLCAidGFibGUiLCAiY29sdW1ucyIsICJjb2x1bW4iLCAiRHJvcGRvd25NZW51IiwgIkJ1dHRvbiIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUxhYmVsIiwgIkRyb3Bkb3duTWVudVNlcGFyYXRvciIsICJEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0iLCAidmFsdWUiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgIkRhdGFUYWJsZVRvb2xiYXIiLCAidGFibGUiLCAiRGF0YVRhYmxlVmlld09wdGlvbnMiLCAiX19uYW1lIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiRGVsZXRlQWN0aW9uIiwgInJvdyIsICJyZXNvdXJjZSIsICJ0aXRsZSIsICJkaXNhYmxlZCIsICJvbkFmdGVySGFuZGxlIiwgInByb3BzIiwgImNhbiIsICJyZWFzb24iLCAidXNlRGVsZXRlSGVscGVyIiwgImRlbGV0ZUNvbnRleHQiLCAiRGVsZXRlQ29udGV4dCIsICJSb3dBY3Rpb24iLCAiX19uYW1lIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJUYWJsZSIsICJjaGlsZHJlbiIsICJzaG93SGVhZGVyIiwgImNvbHVtbnMiLCAicHJvcHMiLCAibWFwQ29sdW1uIiwgImlkIiwgImFjY2Vzc29yS2V5IiwgImhlYWRlciIsICJlbmFibGVTb3J0aW5nIiwgImVuYWJsZUhpZGluZyIsICJmaWx0ZXIiLCAiY2VsbCIsICJjb2x1bW4iLCAidmFsdWUiLCAidGFibGUiLCAidGFibGVPcHRpb25zIiwgImlzRmlsdGVyYWJsZSIsICJEZWxldGVQcm92aWRlciIsICJEYXRhVGFibGVUb29sYmFyIiwgIlRhYmxlSGVhZGVyIiwgImhlYWRlckdyb3VwIiwgIlRhYmxlUm93IiwgImNvbHVtbkRlZiIsICJUYWJsZUhlYWQiLCAiU29ydEFjdGlvbiIsICJUYWJsZUJvZHkiLCAiVGFibGVDZWxsIiwgImxvYWRlcl9kZWZhdWx0IiwgInJvdyIsICJQYWdpbmF0aW9uIiwgIl9fbmFtZSIsICJUYWJsZUNvbHVtbiIsICJDaGVja0FsbCIsICJSb3dBY3Rpb25zIiwgIlJvd0FjdGlvbiIsICJFZGl0QWN0aW9uIiwgIlNob3dBY3Rpb24iLCAiRGVsZXRlQWN0aW9uIiwgIlRhYmxlRmlsdGVyRGF0ZVJhbmdlUGlja2VyRmlsdGVyIiwgIlRhYmxlRmlsdGVyRHJvcGRvd24iLCAiVGFibGVGaWx0ZXJTZWFyY2hDb2x1bW4iXQp9Cg== \ No newline at end of file diff --git a/packages/theme/package.json b/packages/theme/package.json index b505395..62569fe 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,6 +1,6 @@ { "name": "@ferdiunal/refine-shadcn", - "version": "1.1.0", + "version": "1.1.1", "description": "theme for refine.dev with shadcn-ui", "main": "dist/index.js", "module": "dist/index.mjs",