try{let d="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},l=(new d.Error).stack;l&&(d._sentryDebugIds=d._sentryDebugIds||{},d._sentryDebugIds[l]="4c3110a4-4b5e-43ff-97c6-5200e3a98e9b",d._sentryDebugIdIdentifier="sentry-dbid-4c3110a4-4b5e-43ff-97c6-5200e3a98e9b")}catch(d){}{let d="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};d._sentryModuleMetadata=d._sentryModuleMetadata||{},d._sentryModuleMetadata[new d.Error().stack]=Object.assign({},d._sentryModuleMetadata[new d.Error().stack],{"_sentryBundlerPluginAppKey:anthropic-apps":!0})}"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[65279],{0x145d45a:(d,l,c)=>{c.d(l,{c:()=>G,j:()=>t});var g=c(0x22102fd88),n=c(0xfc89b4a4);let e=(0,n.createContext)([null,null]);function G(d){let{children:l}=d,c=(0,n.useState)({});return(0,g.jsx)(e.Provider,{value:c,children:l})}function t(d){let[l,c]=(0,n.useContext)(e),[g,G]=(0,n.useState)(),t=(0,n.useCallback)(()=>{c?c(l=>{let c={...l};return delete c[d],c}):G(void 0)},[d,c]),b=(0,n.useCallback)(l=>{c?c(c=>({...c,[d]:l})):G(l)},[d,c]);return{context:l?l[d]:g,clearContext:t,setContext:b}}},0x1e10d8e8:(d,l,c)=>{c.d(l,{r:()=>i});var g=c(0x6096d538),n=c(0x9845e38c),e=c(0x207db90c9),G=c(0x1ebd482b5),t=c(0xac309a83);let b={};var I=c(0x243825738);let a={};var s=c(0x244aea38b),o=c(0x13d66e7d3),m=c(0x14c9db440),Z=c(0x1cd6706d8);let y="performance";(0,m.L)().onFlush(d=>{for(let{name:l,params:c,timestamp:g}of d)i(l,{...c,timestamp:g})});let i=(0,e.q)(function(d){let l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{metricType:c=d.replace(/^.+?\./,""),duration:n=0,attributes:e={},performanceAttributes:i={},tracer:C=(!a.tracer&&(a.tracer=I.u.getTracer("claude-ai-performance","1.0.0")),a.tracer),timestamp:V}=l,h=(0,m.L)();if(h.isOpen())return void h.write({name:d,params:l,timestamp:Date.now()});let X=(0,s.US)();if(X){!(/^events\./.test(d)||/^page\.navigation_timing/.test(d))&&1&&(X.addAction(d),n&&X.addTiming(d,n));return}let W=Z.C.getContextWithParent(),A=null!=V?V:Date.now(),u=n>0?A-n:A,B=W?g._.with(W,()=>C.startSpan(d,{startTime:u})):C.startSpan(d,{startTime:u}),J="".concat(y,".").concat(c),r={...e,["".concat(y,".metric_type")]:c,...(0,G.r)(J,i),...function(){if(b.attributes)return b.attributes;let d=(0,t.Je)(),l=(0,G.r)("statsig",{no_more_smoother:null==d?void 0:d.getExperiment("no_more_smoother_2",{disableExposureLog:!0}).get("no_smoothing",void 0),prog_chat_input:null==d?void 0:d.getExperiment("progressively_enhanced_chat_input",{disableExposureLog:!0}).get("prog_chat_input_enabled",void 0)});return d&&(b.attributes=l),l}()};n>0&&(r["".concat(J,".duration_ms")]=n,r.duration_ms=n);let p=(0,o.l)();p&&(r["memory.used_js_heap_size"]=p.usedJSHeapSize,r["memory.total_js_heap_size"]=p.totalJSHeapSize,r["memory.js_heap_size_limit"]=p.jsHeapSizeLimit,r["memory.heap_usage_percent"]=p.heapUsagePercent),B.setAttributes(r),B.end(A)},n.u.O11Y_INTERNALS)},0x25d59887:(d,l,c)=>{c.d(l,{W:()=>a});var g=c(0x22102fd88),n=c(0xa5acf583),e=c(0x14de19ae8),G=c(0xef41e510),t=c.n(G),b=c(0x38e6572);let I=()=>{let d=(0,n.fZ)(),{websiteBaseUrl:l}=(0,n._r)();return(0,g.jsx)(g.Fragment,{children:d?(0,g.jsx)(b.A,{defaultMessage:"For higher limits, explore our Pro plan.",id:"lU28LDdk7g",values:{link:d=>(0,g.jsx)("a",{href:"/upgrade/pro",className:"font-bold underline",rel:"noreferrer",children:d})}}):(0,g.jsx)(b.A,{defaultMessage:"Or contact sales if you would be interested in upgrading to a paid version of Claude.",id:"3hk4yMCf5v",values:{link:d=>(0,g.jsx)(t(),{href:"".concat(l,"/contact-sales"),className:"font-bold underline",children:d})}})})};function a(){let d=(0,e.UC)(),l=(0,e.r$)();return d&&!l?(0,g.jsx)(I,{}):null}},0x50e23a72:(d,l,c)=>{c.d(l,{x:()=>b});var g=c(0x49fac030),n=c(0x17e725145),e=c(0x20892a038),G=c(0xfc89b4a4);let t={value:null},b=()=>{let d=(0,n.useQueryClient)();return{failedStreamRetryData:(0,e.useQuery)({queryKey:[g.xT],queryFn:()=>t.value,initialData:null}).data||null,setFailedStreamRetryData:(0,G.useCallback)(l=>{t.value=l,d.setQueryData([g.xT],l)},[d])}}},0x538a5aea:(d,l,c)=>{c.d(l,{$L:()=>W,Bh:()=>h,Go:()=>A,J8:()=>u,MT:()=>y,Qg:()=>Z,WC:()=>C,We:()=>a,aB:()=>i,cX:()=>m,gJ:()=>s,jp:()=>o,vF:()=>X,xQ:()=>V});var g=c(0x22102fd88),n=c(0x25d59887),e=c(0x20e00cddd),G=c(0xc6536c20),t=c(0xef41e510),b=c.n(t),I=c(0x38e6572);function a(){return(0,g.jsx)("p",{children:(0,g.jsx)(I.A,{defaultMessage:"Claude’s response was interrupted. This can be caused by network problems or exceeding the maximum conversation length. Please contact support if the issue persists.",id:"sHRMIfTKu4",values:{link:d=>(0,g.jsx)(b(),{href:"https://support.anthropic.com/en/articles/9015913-how-to-get-support",className:"underline",children:d})}})})}function s(){return(0,g.jsx)(I.A,{defaultMessage:"We couldn’t connect to Claude. Please check your network connection and try again.",id:"KzO0j4cGtg"})}function o(){return(0,g.jsxs)("p",{children:[(0,g.jsx)(I.A,{defaultMessage:"You’ve reached your weekly limit for thinking messages. Please try again next week.",id:"uu/l1k2f+L"}),"\xa0",(0,g.jsx)(n.W,{})]})}function m(){return(0,g.jsx)(I.A,{defaultMessage:"Looks like you have too many chats going. Please close a tab to continue.",id:"KD5FDGzyMz"})}function Z(d){let{resetsAtInSeconds:l}=d;return(0,g.jsxs)("p",{children:[(0,g.jsx)(I.A,{defaultMessage:"You’ve hit your limit for Claude messages.",id:"JR7SJGPDTb"}),"\xa0",l?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(I.A,{defaultMessage:"Limits will reset at {resetsAt}.",id:"NrQ1CUE4v0",values:{resetsAt:G.c9.fromSeconds(l).toLocaleString(G.c9.TIME_SIMPLE).replace(" ","\xa0")}}),"\xa0",(0,g.jsx)(n.W,{}),"\xa0",(0,g.jsx)(I.A,{defaultMessage:"View your usage details.",id:"wWT0iz9SkP",values:{link:d=>(0,g.jsx)(b(),{href:"/settings/usage",className:"font-bold underline",children:d})}})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(I.A,{defaultMessage:"Please wait before trying again.",id:"XhLYQfswyj"}),"\xa0",(0,g.jsx)(n.W,{})]})]})}function y(){return(0,g.jsx)(I.A,{defaultMessage:"Claude model version not found.",id:"kdrUaXpTqd"})}function i(){return(0,g.jsx)(I.A,{defaultMessage:"This model isn’t available right now. You can switch to another model to continue using Claude.",id:"EIRohXEK72"})}function C(){return(0,g.jsx)(I.A,{defaultMessage:"Conversation not found.",id:"eePQiZiD6b"})}function V(){return(0,g.jsx)("p",{children:(0,g.jsx)(I.A,{defaultMessage:"We had an unexpected billing error, please contact support.",id:"MBYn4HHrFu",values:{link:d=>(0,g.jsx)("a",{className:"underline",href:"https://support.anthropic.com/en/articles/9015913-how-can-i-contact-support",target:"_blank",rel:"noreferrer",children:d})}})})}function h(){return(0,g.jsxs)("p",{children:[(0,g.jsx)(I.A,{defaultMessage:"Due to unexpected capacity constraints, Claude is unable to respond to your message. Please try again soon.",id:"TRpxX8Mu1L"}),"\xa0",(0,g.jsx)(n.W,{})]})}function X(){return(0,g.jsx)("p",{children:(0,g.jsx)(I.A,{defaultMessage:"Due to capacity constraints, chatting with Claude is currently not available. Please try again in a little while.",id:"W2dIBW8oIg"})})}function W(){return(0,g.jsx)(I.A,{defaultMessage:"Your message will exceed the maximum number of files allowed per message. Consider removing some of your files or adding files over several messages.",id:"/jNwaAHdg9"})}function A(d){let{numSanitizedDocuments:l,onNewChat:c}=d;return l>0?(0,g.jsx)(I.A,{defaultMessage:"Your message will exceed the maximum image count for this chat. Try uploading {count, plural, one {# document} other {# documents}} with fewer pages, removing images, or starting a new conversation.{upgradeInstructions}",id:"gltmHPfviz",values:{link:d=>(0,g.jsx)("a",{className:"underline",target:"_blank",rel:"noreferrer",href:e.FP,children:d}),newChatLink:d=>(0,g.jsx)("a",{href:"#",className:"underline",onClick:d=>{d.preventDefault(),c()},children:d}),upgradeInstructions:()=>(0,g.jsx)(n.W,{}),count:l}}):(0,g.jsx)(I.A,{defaultMessage:"Your message will exceed the maximum image count for this chat. Try removing images or starting a new conversation.{upgradeInstructions}",id:"QmLhKBubcc",values:{link:d=>(0,g.jsx)("a",{className:"underline",target:"_blank",rel:"noreferrer",href:e.FP,children:d}),newChatLink:d=>(0,g.jsx)("a",{href:"#",className:"underline",onClick:d=>{d.preventDefault(),c()},children:d}),upgradeInstructions:()=>(0,g.jsx)(n.W,{})}})}function u(d){let{numAttachmentsOrFiles:l,onNewChat:c}=d;return l>0?(0,g.jsx)(I.A,{defaultMessage:"Your message will exceed the length limit for this chat. Try attaching fewer or smaller files or starting a new conversation.{upgradeInstructions}",id:"G1lejdsk5p",values:{link:d=>(0,g.jsx)("a",{className:"underline",target:"_blank",rel:"noreferrer",href:e.q4,children:d}),newChatLink:d=>(0,g.jsx)("a",{href:"#",className:"underline",onClick:d=>{d.preventDefault(),c()},children:d}),upgradeInstructions:()=>(0,g.jsx)(n.W,{})}}):(0,g.jsx)(I.A,{defaultMessage:"Your message will exceed the length limit for this chat. Try shortening your message or starting a new conversation.{upgradeInstructions}",id:"EWtBrIlAAR",values:{link:d=>(0,g.jsx)("a",{className:"underline",target:"_blank",rel:"noreferrer",href:e.q4,children:d}),newChatLink:d=>(0,g.jsx)("a",{href:"#",className:"underline",onClick:d=>{d.preventDefault(),c()},children:d}),upgradeInstructions:()=>(0,g.jsx)(n.W,{})}})}},0x6aaadcb3:(d,l,c)=>{c.d(l,{G:()=>n});var g=c(0x9845e38c);function n(){try{return window.self!==window.top}catch(d){return d instanceof DOMException&&"SecurityError"===d.name||g.v.warn(g.u.BOOTSTRAP,"Unexpected error in isInIframe",d),!0}}},0x9dcf4143:(d,l,c)=>{c.d(l,{kP:()=>t,v3:()=>e,xt:()=>G});var g=c(0xfc89b4a4);let n="customSystemPrompt",e=()=>{let[d,l]=(0,g.useState)(()=>"undefined"==typeof localStorage?"":localStorage.getItem(n)||"");return(0,g.useEffect)(()=>{localStorage.setItem(n,d)},[d]),{customSystemPrompt:d,setCustomSystemPrompt:l}},G=()=>"undefined"==typeof localStorage?"":localStorage.getItem(n),t=()=>"undefined"==typeof localStorage?"":localStorage.getItem("iframeSystemPrompt")},0xcdefe954:(d,l,c)=>{c.d(l,{a3:()=>i,Kp:()=>V,aA:()=>Z,x4:()=>X,mt:()=>W,Ky:()=>y,gG:()=>m,WH:()=>h,mM:()=>o,WK:()=>C});var g=c(0x152020469),n=c(0x18c3d05ea),e=c(0x85af78ca),G=c(0xb1130b88),t=c(0x11e389f69),b=c(0xd9133b1);let I=(0,g.w)("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJwCgxNZXNzYWdlUnVsZXMSEAoIZGlzYWJsZWQYASABKAgSHwoDY2VsGAMgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSLQoFb25lb2YYBCADKAsyHi5idWYudmFsaWRhdGUuTWVzc2FnZU9uZW9mUnVsZSI0ChBNZXNzYWdlT25lb2ZSdWxlEg4KBmZpZWxkcxgBIAMoCRIQCghyZXF1aXJlZBgCIAEoCCIeCgpPbmVvZlJ1bGVzEhAKCHJlcXVpcmVkGAEgASgIIr8ICgpGaWVsZFJ1bGVzEh8KA2NlbBgXIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEhAKCHJlcXVpcmVkGBkgASgIEiQKBmlnbm9yZRgbIAEoDjIULmJ1Zi52YWxpZGF0ZS5JZ25vcmUSKQoFZmxvYXQYASABKAsyGC5idWYudmFsaWRhdGUuRmxvYXRSdWxlc0gAEisKBmRvdWJsZRgCIAEoCzIZLmJ1Zi52YWxpZGF0ZS5Eb3VibGVSdWxlc0gAEikKBWludDMyGAMgASgLMhguYnVmLnZhbGlkYXRlLkludDMyUnVsZXNIABIpCgVpbnQ2NBgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQ2NFJ1bGVzSAASKwoGdWludDMyGAUgASgLMhkuYnVmLnZhbGlkYXRlLlVJbnQzMlJ1bGVzSAASKwoGdWludDY0GAYgASgLMhkuYnVmLnZhbGlkYXRlLlVJbnQ2NFJ1bGVzSAASKwoGc2ludDMyGAcgASgLMhkuYnVmLnZhbGlkYXRlLlNJbnQzMlJ1bGVzSAASKwoGc2ludDY0GAggASgLMhkuYnVmLnZhbGlkYXRlLlNJbnQ2NFJ1bGVzSAASLQoHZml4ZWQzMhgJIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDMyUnVsZXNIABItCgdmaXhlZDY0GAogASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkNjRSdWxlc0gAEi8KCHNmaXhlZDMyGAsgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDMyUnVsZXNIABIvCghzZml4ZWQ2NBgMIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQ2NFJ1bGVzSAASJwoEYm9vbBgNIAEoCzIXLmJ1Zi52YWxpZGF0ZS5Cb29sUnVsZXNIABIrCgZzdHJpbmcYDiABKAsyGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXNIABIpCgVieXRlcxgPIAEoCzIYLmJ1Zi52YWxpZGF0ZS5CeXRlc1J1bGVzSAASJwoEZW51bRgQIAEoCzIXLmJ1Zi52YWxpZGF0ZS5FbnVtUnVsZXNIABIvCghyZXBlYXRlZBgSIAEoCzIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzSAASJQoDbWFwGBMgASgLMhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzSAASJQoDYW55GBQgASgLMhYuYnVmLnZhbGlkYXRlLkFueVJ1bGVzSAASLwoIZHVyYXRpb24YFSABKAsyGy5idWYudmFsaWRhdGUuRHVyYXRpb25SdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJTCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSE3NraXBwZWRpZ25vcmVfZW1wdHki2hcKCkZsb2F0UnVsZXMSgwEKBWNvbnN0GAEgASgCQnTCSHEKbwoLZmxvYXQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKfAQoCbHQYAiABKAJCkAHCSIwBCokBCghmbG9hdC5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKvAQoDbHRlGAMgASgCQp8BwkibAQqYAQoJZmxvYXQubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS7wcKAmd0GAQgASgCQuAHwkjcBwqNAQoIZmxvYXQuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrDAQoLZmxvYXQuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrNAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK0wEKDGZsb2F0Lmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt0BChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK6CAoDZ3RlGAUgASgCQqoIwkimCAqbAQoJZmxvYXQuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtIBCgxmbG9hdC5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtwBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwriAQoNZmxvYXQuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7AEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygCQnPCSHAKbgoIZmxvYXQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnUKBmZpbml0ZRgIIAEoCEJlwkhiCmAKDGZsb2F0LmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIu0XCgtEb3VibGVSdWxlcxKEAQoFY29uc3QYASABKAFCdcJIcgpwCgxkb3VibGUuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoAUJ0wkhxCm8KCWRvdWJsZS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygBQmfCSGQKYgoNZG91YmxlLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnYKBmZpbml0ZRgIIAEoCEJmwkhjCmEKDWRvdWJsZS5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDMyUnVsZXMSgwEKBWNvbnN0GAEgASgFQnTCSHEKbwoLaW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKAVCfMJIeQp3CghpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgFQowBwkiIAQqFAQoJaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKAVCiAfCSIQHCnoKCGludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoBULTB8JIzwcKiAEKCWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoBUJzwkhwCm4KCGludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKAVCZsJIYwphCgxpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAggAygFQhrCSBcKFQoNaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDY0UnVsZXMSgwEKBWNvbnN0GAEgASgDQnTCSHEKbwoLaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKANCfMJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgDQowBwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKANCiAfCSIQHCnoKCGludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoA0LTB8JIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoA0JzwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoDUJ1wkhyCnAKDHVpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoDUJ0wkhxCm8KCXVpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoBEJ1wkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoBEJ9wkh6CngKCXVpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgEQo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgEQo0HwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoBEJ0wkhxCm8KCXVpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygEQmfCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKARCG8JIGAoWCg51aW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoEUJ1wkhyCnAKDHNpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgRQo0BwkiJAQqGAQoKc2ludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEULYB8JI1AcKiQEKCnNpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEUJ0wkhxCm8KCXNpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoEkJ1wkhyCnAKDHNpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEkJ0wkhxCm8KCXNpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQ2NFJ1bGVzEoUBCgVjb25zdBgBIAEoBkJ2wkhzCnEKDWZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAZCfsJIewp5CgpmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAZCjgHCSIoBCocBCgtmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgGQpIHwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgGQt0HwkjZBwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAZCdcJIcgpwCgpmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQzMlJ1bGVzEoYBCgVjb25zdBgBIAEoD0J3wkh0CnIKDnNmaXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygPQnbCSHMKcQoLc2ZpeGVkMzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoD0JpwkhmCmQKD3NmaXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKA9CHcJIGgoYChBzZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoNU0ZpeGVkNjRSdWxlcxKGAQoFY29uc3QYASABKBBCd8JIdApyCg5zZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoEEJ/wkh8CnoKC3NmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoEEKXB8JIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEEJ2wkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBBCacJIZgpkCg9zZml4ZWQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ixwEKCUJvb2xSdWxlcxKCAQoFY29uc3QYASABKAhCc8JIcApuCgpib29sLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSKgoHZXhhbXBsZRgCIAMoCEIZwkgWChQKDGJvb2wuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIpA3CgtTdHJpbmdSdWxlcxKGAQoFY29uc3QYASABKAlCd8JIdApyCgxzdHJpbmcuY29uc3QaYnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEn4KA2xlbhgTIAEoBEJxwkhuCmwKCnN0cmluZy5sZW4aXnVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSmQEKB21pbl9sZW4YAiABKARChwHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSlwEKB21heF9sZW4YAyABKARChQHCSIEBCn8KDnN0cmluZy5tYXhfbGVuGm11aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpsBCglsZW5fYnl0ZXMYFCABKARChwHCSIMBCoABChBzdHJpbmcubGVuX2J5dGVzGmx1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl9ieXRlc10pIDogJycSowEKCW1pbl9ieXRlcxgEIAEoBEKPAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqIBCgltYXhfYnl0ZXMYBSABKARCjgHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfYnl0ZXNdKSA6ICcnEo0BCgdwYXR0ZXJuGAYgASgJQnzCSHkKdwoOc3RyaW5nLnBhdHRlcm4aZSF0aGlzLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgZG9lcyBub3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoQBCgZwcmVmaXgYByABKAlCdMJIcQpvCg1zdHJpbmcucHJlZml4Gl4hdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEoIBCgZzdWZmaXgYCCABKAlCcsJIbwptCg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKQAQoIY29udGFpbnMYCSABKAlCfsJIewp5Cg9zdHJpbmcuY29udGFpbnMaZiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKYAQoMbm90X2NvbnRhaW5zGBcgASgJQoEBwkh+CnwKE3N0cmluZy5ub3RfY29udGFpbnMaZXRoaXMuY29udGFpbnMocnVsZXMubm90X2NvbnRhaW5zKSA/ICd2YWx1ZSBjb250YWlucyBzdWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5ub3RfY29udGFpbnNdKSA6ICcnEoABCgJpbhgKIAMoCUJ0wkhxCm8KCXN0cmluZy5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEnAKB3VyaV9yZWYYEiABKAhCXcJIWgpYCg5zdHJpbmcudXJpX3JlZhIjdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEpACCgdhZGRyZXNzGBUgASgIQvwBwkj4AQqBAQoOc3RyaW5nLmFkZHJlc3MSLXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxpAIXJ1bGVzLmFkZHJlc3MgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKSB8fCB0aGlzLmlzSXAoKQpyChRzdHJpbmcuYWRkcmVzc19lbXB0eRI8dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGhwhcnVsZXMuYWRkcmVzcyB8fCB0aGlzICE9ICcnSAASmAIKBHV1aWQYFiABKAhChwLCSIMCCqUBCgtzdHJpbmcudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaeiFydWxlcy51dWlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpClkKEXN0cmluZy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBoZIXJ1bGVzLnV1aWQgfHwgdGhpcyAhPSAnJ0gAEvABCgV0dXVpZBghIAEoCELeAcJI2gEKcwoMc3RyaW5nLnR1dWlkEiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgdHJpbW1lZCBVVUlEGj8hcnVsZXMudHV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXszMn0kJykKYwoSc3RyaW5nLnR1dWlkX2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgdHJpbW1lZCBVVUlEGhohcnVsZXMudHV1aWQgfHwgdGhpcyAhPSAnJ0gAEpYCChFpcF93aXRoX3ByZWZpeGxlbhgaIAEoCEL4AcJI9AEKeAoYc3RyaW5nLmlwX3dpdGhfcHJlZml4bGVuEh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GjshcnVsZXMuaXBfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoKQp4Ch5zdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW5fZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaJiFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAASzwIKE2lwdjRfd2l0aF9wcmVmaXhsZW4YGyABKAhCrwLCSKsCCpMBChpzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbhI1dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaPiFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQpCpIBCiBzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaKCFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2Nl93aXRoX3ByZWZpeGxlbhgcIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNikKkgEKIHN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEvIBCglpcF9wcmVmaXgYHSABKAhC3AHCSNgBCmwKEHN0cmluZy5pcF9wcmVmaXgSH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaNyFydWxlcy5pcF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgodHJ1ZSkKaAoWc3RyaW5nLmlwX3ByZWZpeF9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBoeIXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjRfcHJlZml4GB4gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IHByZWZpeBo8IXJ1bGVzLmlwdjRfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQsIHRydWUpCm4KGHN0cmluZy5pcHY0X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgcHJlZml4GiAhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEoMCCgtpcHY2X3ByZWZpeBgfIAEoCELrAcJI5wEKdQoSc3RyaW5nLmlwdjZfcHJlZml4EiF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBwcmVmaXgaPCFydWxlcy5pcHY2X3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2LCB0cnVlKQpuChhzdHJpbmcuaXB2Nl9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IHByZWZpeBogIXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgIT0gJydIABK1AgoNaG9zdF9hbmRfcG9ydBggIAEoCEKbAsJIlwIKmQEKFHN0cmluZy5ob3N0X2FuZF9wb3J0EkF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdCAoaG9zdG5hbWUgb3IgSVAgYWRkcmVzcykgYW5kIHBvcnQgcGFpcho+IXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdEFuZFBvcnQodHJ1ZSkKeQoac3RyaW5nLmhvc3RfYW5kX3BvcnRfZW1wdHkSN3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0IGFuZCBwb3J0IHBhaXIaIiFydWxlcy5ob3N0X2FuZF9wb3J0IHx8IHRoaXMgIT0gJydIABKoBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QvEEwkjtBArwAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSJnZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrnAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEid2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIuoQCgpCeXRlc1J1bGVzEoABCgVjb25zdBgBIAEoDEJxwkhuCmwKC2J5dGVzLmNvbnN0Gl10aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSeAoDbGVuGA0gASgEQmvCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKQAQoHbWluX2xlbhgCIAEoBEJ/wkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKIAQoHbWF4X2xlbhgDIAEoBEJ3wkh0CnIKDWJ5dGVzLm1heF9sZW4aYXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSkAEKB3BhdHRlcm4YBCABKAlCf8JIfAp6Cg1ieXRlcy5wYXR0ZXJuGmkhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSgQEKBnByZWZpeBgFIAEoDEJxwkhuCmwKDGJ5dGVzLnByZWZpeBpcIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSfwoGc3VmZml4GAYgASgMQm/CSGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJycSgwEKCGNvbnRhaW5zGAcgASgMQnHCSG4KbAoOYnl0ZXMuY29udGFpbnMaWiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKnAQoCaW4YCCADKAxCmgHCSJYBCpMBCghieXRlcy5pbhqGAWdldEZpZWxkKHJ1bGVzLCAnaW4nKS5zaXplKCkgPiAwICYmICEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEusBCgJpcBgKIAEoCELcAcJI2AEKdAoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGkYhcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0IHx8IHRoaXMuc2l6ZSgpID09IDE2CmAKDmJ5dGVzLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxodIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpICE9IDBIABLkAQoEaXB2NBgLIAEoCELTAcJIzwEKZQoKYnl0ZXMuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxozIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0CmYKEGJ5dGVzLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaHyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLlAQoEaXB2NhgMIAEoCELUAcJI0AEKZgoKYnl0ZXMuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxo0IXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpmChBieXRlcy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGh8hcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSAhPSAwSAASKwoHZXhhbXBsZRgOIAMoDEIawkgXChUKDWJ5dGVzLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duItQDCglFbnVtUnVsZXMSggEKBWNvbnN0GAEgASgFQnPCSHAKbgoKZW51bS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ+CgJpbhgDIAMoBUJywkhvCm0KB2VudW0uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIvsDCg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIooDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxImCgRrZXlzGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMSKAoGdmFsdWVzGAUgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAkimRcKDUR1cmF0aW9uUnVsZXMSoQEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnfCSHQKcgoOZHVyYXRpb24uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKoAQoCbHQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25Cf8JIfAp6CgtkdXJhdGlvbi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK6AQoDbHRlGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQo8BwkiLAQqIAQoMZHVyYXRpb24ubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLBBwoCZ3QYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ClwfCSJMHCn0KC2R1cmF0aW9uLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOZHVyYXRpb24uZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhkdXJhdGlvbi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPZHVyYXRpb24uZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZZHVyYXRpb24uZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESjQgKA2d0ZRgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkLiB8JI3gcKiwEKDGR1cmF0aW9uLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9kdXJhdGlvbi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGWR1cmF0aW9uLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBkdXJhdGlvbi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpkdXJhdGlvbi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKdAQoCaW4YByADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CdsJIcwpxCgtkdXJhdGlvbi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKSGAoOVGltZXN0YW1wUnVsZXMSowEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJ4wkh1CnMKD3RpbWVzdGFtcC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqsBCgJsdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCgAHCSH0KewoMdGltZXN0YW1wLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErwBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASbAoGbHRfbm93GAcgASgIQlrCSFcKVQoQdGltZXN0YW1wLmx0X25vdxpBKHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABLHBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiYBwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESkwgKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBC5wfCSOMHCowBCg10aW1lc3RhbXAuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxgEKEHRpbWVzdGFtcC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrWAQoRdGltZXN0YW1wLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3gEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJvCgZndF9ub3cYCCABKAhCXcJIWgpYChB0aW1lc3RhbXAuZ3Rfbm93GkQocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErgBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjAHCSIgBCoUBChB0aW1lc3RhbXAud2l0aGluGnF0aGlzIDwgbm93LXJ1bGVzLndpdGhpbiB8fCB0aGlzID4gbm93K3J1bGVzLndpdGhpbiA/ICd2YWx1ZSBtdXN0IGJlIHdpdGhpbiAlcyBvZiBub3cnLmZvcm1hdChbcnVsZXMud2l0aGluXSkgOiAnJxJLCgdleGFtcGxlGAogAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIewkgbChkKEXRpbWVzdGFtcC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiI5CgpWaW9sYXRpb25zEisKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRhdGUuVmlvbGF0aW9uIp8BCglWaW9sYXRpb24SJgoFZmllbGQYBSABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEiUKBHJ1bGUYBiABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEg8KB3J1bGVfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIPCgdmb3Jfa2V5GAQgASgISgQIARACUgpmaWVsZF9wYXRoIj0KCUZpZWxkUGF0aBIwCghlbGVtZW50cxgBIAMoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGhFbGVtZW50IukCChBGaWVsZFBhdGhFbGVtZW50EhQKDGZpZWxkX251bWJlchgBIAEoBRISCgpmaWVsZF9uYW1lGAIgASgJEj4KCmZpZWxkX3R5cGUYAyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI8CghrZXlfdHlwZRgEIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEj4KCnZhbHVlX3R5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIPCgVpbmRleBgGIAEoBEgAEhIKCGJvb2xfa2V5GAcgASgISAASEQoHaW50X2tleRgIIAEoA0gAEhIKCHVpbnRfa2V5GAkgASgESAASFAoKc3RyaW5nX2tleRgKIAEoCUgAQgsKCXN1YnNjcmlwdCqHAQoGSWdub3JlEhYKEklHTk9SRV9VTlNQRUNJRklFRBAAEhkKFUlHTk9SRV9JRl9VTlBPUFVMQVRFRBABEhsKF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFEAISEQoNSUdOT1JFX0FMV0FZUxADKhpJR05PUkVfRU1QVFlJR05PUkVfREVGQVVMVCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQrsBChBjb20uYnVmLnZhbGlkYXRlQg1WYWxpZGF0ZVByb3RvUAFaR2J1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcHJvdG92YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlkYXRlogIDQlZYqgIMQnVmLlZhbGlkYXRlygIMQnVmXFZhbGlkYXRl4gIYQnVmXFZhbGlkYXRlXEdQQk1ldGFkYXRh6gINQnVmOjpWYWxpZGF0ZQ",[G.PX,t.U,b.i]);var a=c(0x1732c2ae);let s=(0,g.w)("CilhbnRocm9waWMvbW9iaWxlL3YxYWxwaGEvY29tcGxldGlvbi5wcm90bxIYYW50aHJvcGljLm1vYmlsZS52MWFscGhhIkQKGUNvbXBsZXRpb25TdHJlYW1IVFRQRXJyb3ISEwoLc3RhdHVzX2NvZGUYASABKAUSEgoKZXJyb3JfanNvbhgCIAEoCSL1AwoWR2V0Q29udmVyc2F0aW9uUmVxdWVzdBIiChFvcmdhbml6YXRpb25fdXVpZBgBIAEoCUIHukgEcgIQARInChZjaGF0X2NvbnZlcnNhdGlvbl91dWlkGAIgASgJQge6SARyAhABEhkKDHdvcmtzcGFjZV9pZBgDIAEoCUgAiAEBEhEKBHRyZWUYBCABKAhIAYgBARJRCg5yZW5kZXJpbmdfbW9kZRgFIAEoDjI0LmFudGhyb3BpYy5tb2JpbGUudjFhbHBoYS5DbGF1ZGVNZXNzYWdlUmVuZGVyaW5nTW9kZUgCiAEBEh0KEHJlbmRlcl9hbGxfdG9vbHMYBiABKAhIA4gBARIkChdyZW5kZXJfYWxsX21vYmlsZV90b29scxgHIAEoCEgEiAEBEhIKBXRvb2xzGAggASgJSAWIAQESKgodcmV0dXJuX2RhbmdsaW5nX2h1bWFuX21lc3NhZ2UYCSABKAhIBogBAUIPCg1fd29ya3NwYWNlX2lkQgcKBV90cmVlQhEKD19yZW5kZXJpbmdfbW9kZUITChFfcmVuZGVyX2FsbF90b29sc0IaChhfcmVuZGVyX2FsbF9tb2JpbGVfdG9vbHNCCAoGX3Rvb2xzQiAKHl9yZXR1cm5fZGFuZ2xpbmdfaHVtYW5fbWVzc2FnZSJIChdHZXRDb252ZXJzYXRpb25SZXNwb25zZRItCgxjb252ZXJzYXRpb24YASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0InUKHlN0cmVhbVBlbmRpbmdDb21wbGV0aW9uUmVxdWVzdBInChZjaGF0X2NvbnZlcnNhdGlvbl91dWlkGAEgASgJQge6SARyAhABEioKGXBhcmVudF9odW1hbl9tZXNzYWdlX3V1aWQYAiABKAlCB7pIBHICEAEirQEKH1N0cmVhbVBlbmRpbmdDb21wbGV0aW9uUmVzcG9uc2USKAoVY29tcGxldGlvbl9ldmVudF9qc29uGAEgASgJQge6SARyAhABSAASVQoWY29tcGxldGlvbl9ldmVudF9lcnJvchgCIAEoCzIzLmFudGhyb3BpYy5tb2JpbGUudjFhbHBoYS5Db21wbGV0aW9uU3RyZWFtSFRUUEVycm9ySABCCQoHcGF5bG9hZCLyBAoZQ3JlYXRlQ29udmVyc2F0aW9uUmVxdWVzdBIiChFvcmdhbml6YXRpb25fdXVpZBgBIAEoCUIHukgEcgIQARIZCgx3b3Jrc3BhY2VfaWQYAiABKAlIAIgBARIXCgZwcm9tcHQYAyABKAlCB7pIBHICEAESEgoFbW9kZWwYBCABKAlIAYgBARIUCgdzdW1tYXJ5GAUgASgJSAKIAQESEQoEdXVpZBgGIAEoCUgDiAEBEhkKDHByb2plY3RfdXVpZBgHIAEoCUgEiAEBEhkKDGlzX3RlbXBvcmFyeRgIIAEoCEgFiAEBEi0KIGluY2x1ZGVfY29udmVyc2F0aW9uX3ByZWZlcmVuY2VzGAkgASgISAaIAQESGwoOYmVhbV9jaGF0X3V1aWQYCiABKAlIB4gBARIdChBpc19uZXdfYmVhbV9jaGF0GAsgASgISAiIAQESGQoMY29tcGFzc19tb2RlGAwgASgJSAmIAQESGQoMcGFwcmlrYV9tb2RlGA0gASgJSAqIAQESGAoLY3JlYXRlX21vZGUYDiABKAlIC4gBAUIPCg1fd29ya3NwYWNlX2lkQggKBl9tb2RlbEIKCghfc3VtbWFyeUIHCgVfdXVpZEIPCg1fcHJvamVjdF91dWlkQg8KDV9pc190ZW1wb3JhcnlCIwohX2luY2x1ZGVfY29udmVyc2F0aW9uX3ByZWZlcmVuY2VzQhEKD19iZWFtX2NoYXRfdXVpZEITChFfaXNfbmV3X2JlYW1fY2hhdEIPCg1fY29tcGFzc19tb2RlQg8KDV9wYXByaWthX21vZGVCDgoMX2NyZWF0ZV9tb2RlIksKGkNyZWF0ZUNvbnZlcnNhdGlvblJlc3BvbnNlEi0KDGNvbnZlcnNhdGlvbhgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiZwoRTWVzc2FnZUF0dGFjaG1lbnQSEQoJZmlsZV9uYW1lGAEgASgJEhEKCWZpbGVfc2l6ZRgCIAEoBRIRCglmaWxlX3R5cGUYAyABKAkSGQoRZXh0cmFjdGVkX2NvbnRlbnQYBCABKAkivQEKDENsYXVkZUFpVG9vbBIuCgRuYW1lGAEgASgJQiC6SB1yGxABGEAyFV5bYS16QS1aMC05Xy1dezEsNjR9JBIcCgtkZXNjcmlwdGlvbhgCIAEoCUIHukgEcgIQARItCgxpbnB1dF9zY2hlbWEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhwKD25hbWVzcGFjZWRfbmFtZRgEIAEoCUgAiAEBQhIKEF9uYW1lc3BhY2VkX25hbWUinAQKFUZyb250ZW5kUmVtb3RlTWNwVG9vbBIuCgRuYW1lGAEgASgJQiC6SB1yGxABGEAyFV5bYS16QS1aMC05Xy1dezEsNjR9JBIcCgtkZXNjcmlwdGlvbhgCIAEoCUIHukgEcgIQARItCgxpbnB1dF9zY2hlbWEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhwKD25hbWVzcGFjZWRfbmFtZRgEIAEoCUgAiAEBEhwKD21jcF9zZXJ2ZXJfdXVpZBgFIAEoCUgBiAEBEh0KEGludGVncmF0aW9uX25hbWUYBiABKAlIAogBARIhChRpbnRlZ3JhdGlvbl9pY29uX3VybBgHIAEoCUgDiAEBEhsKDm5lZWRzX2FwcHJvdmFsGAggASgISASIAQESHgoRYmFja2VuZF9leGVjdXRpb24YCSABKAhIBYgBARISCgV0aXRsZRgKIAEoCUgGiAEBEhsKDnJlYWRfb25seV9oaW50GAsgASgISAeIAQFCEgoQX25hbWVzcGFjZWRfbmFtZUISChBfbWNwX3NlcnZlcl91dWlkQhMKEV9pbnRlZ3JhdGlvbl9uYW1lQhcKFV9pbnRlZ3JhdGlvbl9pY29uX3VybEIRCg9fbmVlZHNfYXBwcm92YWxCFAoSX2JhY2tlbmRfZXhlY3V0aW9uQggKBl90aXRsZUIRCg9fcmVhZF9vbmx5X2hpbnQiVgoNQW50aHJvcGljVG9vbBIVCgR0eXBlGAEgASgJQge6SARyAhABEi4KBG5hbWUYAiABKAlCILpIHXIbEAEYQDIVXlthLXpBLVowLTlfLV17MSw2NH0kIvABCgRUb29sEkAKDmNsYXVkZV9haV90b29sGAEgASgLMiYuYW50aHJvcGljLm1vYmlsZS52MWFscGhhLkNsYXVkZUFpVG9vbEgAElMKGGZyb250ZW5kX3JlbW90ZV9tY3BfdG9vbBgCIAEoCzIvLmFudGhyb3BpYy5tb2JpbGUudjFhbHBoYS5Gcm9udGVuZFJlbW90ZU1jcFRvb2xIABJBCg5hbnRocm9waWNfdG9vbBgDIAEoCzInLmFudGhyb3BpYy5tb2JpbGUudjFhbHBoYS5BbnRocm9waWNUb29sSABCDgoMdG9vbF92YXJpYW50IoABChFQZXJzb25hbGl6ZWRTdHlsZRIRCgR1dWlkGAEgASgJSACIAQESFwoKc3R5bGVfdHlwZRgCIAEoCUgBiAEBEicKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCBwoFX3V1aWRCDQoLX3N0eWxlX3R5cGUitQgKFEFwcGVuZE1lc3NhZ2VSZXF1ZXN0EiIKEW9yZ2FuaXphdGlvbl91dWlkGAEgASgJQge6SARyAhABEicKFmNoYXRfY29udmVyc2F0aW9uX3V1aWQYAiABKAlCB7pIBHICEAESDgoGcHJvbXB0GAMgASgJEhkKDHdvcmtzcGFjZV9pZBgEIAEoCUgAiAEBEiQKF3VzZV9hbGxfYXZhaWxhYmxlX3Rvb2xzGAUgASgISAGIAQESLQoFdG9vbHMYBiADKAsyHi5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuVG9vbBISCgVtb2RlbBgHIAEoCUgCiAEBEiEKFG1heF90b2tlbnNfdG9fc2FtcGxlGAggASgFSAOIAQESGAoLdGVtcGVyYXR1cmUYCSABKAJIBIgBARISCgV0b3BfaxgKIAEoBUgFiAEBEhIKBXRvcF9wGAsgASgCSAaIAQESFQoIdGltZXpvbmUYDCABKAlIB4gBARIhChRjdXN0b21fc3lzdGVtX3Byb21wdBgNIAEoCUgIiAEBEiAKE3BhcmVudF9tZXNzYWdlX3V1aWQYDiABKAlICYgBARIXCgppbnB1dF9tb2RlGA8gASgJSAqIAQESUQoOcmVuZGVyaW5nX21vZGUYECABKA4yNC5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuQ2xhdWRlTWVzc2FnZVJlbmRlcmluZ01vZGVIC4gBARIhChRpc19tb2JpbGVfYXBwX2ludGVudBgRIAEoCEgMiAEBEhsKDmlzX3ZvaWNlX2lucHV0GBIgASgISA2IAQESEwoGbG9jYWxlGBMgASgJSA6IAQESQAoLYXR0YWNobWVudHMYFCADKAsyKy5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuTWVzc2FnZUF0dGFjaG1lbnQSDQoFZmlsZXMYFSADKAkSFAoMc3luY19zb3VyY2VzGBYgAygJEkgKE3BlcnNvbmFsaXplZF9zdHlsZXMYFyADKAsyKy5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuUGVyc29uYWxpemVkU3R5bGVCDwoNX3dvcmtzcGFjZV9pZEIaChhfdXNlX2FsbF9hdmFpbGFibGVfdG9vbHNCCAoGX21vZGVsQhcKFV9tYXhfdG9rZW5zX3RvX3NhbXBsZUIOCgxfdGVtcGVyYXR1cmVCCAoGX3RvcF9rQggKBl90b3BfcEILCglfdGltZXpvbmVCFwoVX2N1c3RvbV9zeXN0ZW1fcHJvbXB0QhYKFF9wYXJlbnRfbWVzc2FnZV91dWlkQg0KC19pbnB1dF9tb2RlQhEKD19yZW5kZXJpbmdfbW9kZUIXChVfaXNfbW9iaWxlX2FwcF9pbnRlbnRCEQoPX2lzX3ZvaWNlX2lucHV0QgkKB19sb2NhbGUiowEKFUFwcGVuZE1lc3NhZ2VSZXNwb25zZRIoChVjb21wbGV0aW9uX2V2ZW50X2pzb24YASABKAlCB7pIBHICEAFIABJVChZjb21wbGV0aW9uX2V2ZW50X2Vycm9yGAIgASgLMjMuYW50aHJvcGljLm1vYmlsZS52MWFscGhhLkNvbXBsZXRpb25TdHJlYW1IVFRQRXJyb3JIAEIJCgdwYXlsb2FkIo8HChNSZXRyeU1lc3NhZ2VSZXF1ZXN0EiIKEW9yZ2FuaXphdGlvbl91dWlkGAEgASgJQge6SARyAhABEicKFmNoYXRfY29udmVyc2F0aW9uX3V1aWQYAiABKAlCB7pIBHICEAESIAoTcGFyZW50X21lc3NhZ2VfdXVpZBgDIAEoCUgAiAEBEhkKDHdvcmtzcGFjZV9pZBgEIAEoCUgBiAEBEiQKF3VzZV9hbGxfYXZhaWxhYmxlX3Rvb2xzGAUgASgISAKIAQESLQoFdG9vbHMYBiADKAsyHi5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuVG9vbBISCgVtb2RlbBgHIAEoCUgDiAEBEiEKFG1heF90b2tlbnNfdG9fc2FtcGxlGAggASgFSASIAQESEgoFdG9wX2sYCSABKAVIBYgBARISCgV0b3BfcBgKIAEoAkgGiAEBEhUKCHRpbWV6b25lGAsgASgJSAeIAQESIQoUY3VzdG9tX3N5c3RlbV9wcm9tcHQYDCABKAlICIgBARIXCgppbnB1dF9tb2RlGA0gASgJSAmIAQESUQoOcmVuZGVyaW5nX21vZGUYDiABKA4yNC5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuQ2xhdWRlTWVzc2FnZVJlbmRlcmluZ01vZGVICogBARIhChRpc19tb2JpbGVfYXBwX2ludGVudBgPIAEoCEgLiAEBEhMKBmxvY2FsZRgQIAEoCUgMiAEBEkgKE3BlcnNvbmFsaXplZF9zdHlsZXMYESADKAsyKy5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuUGVyc29uYWxpemVkU3R5bGUSGQoMcGFwcmlrYV9tb2RlGBIgASgJSA2IAQFCFgoUX3BhcmVudF9tZXNzYWdlX3V1aWRCDwoNX3dvcmtzcGFjZV9pZEIaChhfdXNlX2FsbF9hdmFpbGFibGVfdG9vbHNCCAoGX21vZGVsQhcKFV9tYXhfdG9rZW5zX3RvX3NhbXBsZUIICgZfdG9wX2tCCAoGX3RvcF9wQgsKCV90aW1lem9uZUIXChVfY3VzdG9tX3N5c3RlbV9wcm9tcHRCDQoLX2lucHV0X21vZGVCEQoPX3JlbmRlcmluZ19tb2RlQhcKFV9pc19tb2JpbGVfYXBwX2ludGVudEIJCgdfbG9jYWxlQg8KDV9wYXByaWthX21vZGUiogEKFFJldHJ5TWVzc2FnZVJlc3BvbnNlEigKFWNvbXBsZXRpb25fZXZlbnRfanNvbhgBIAEoCUIHukgEcgIQAUgAElUKFmNvbXBsZXRpb25fZXZlbnRfZXJyb3IYAiABKAsyMy5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuQ29tcGxldGlvblN0cmVhbUhUVFBFcnJvckgAQgkKB3BheWxvYWQq0AEKGkNsYXVkZU1lc3NhZ2VSZW5kZXJpbmdNb2RlEi0KKUNMQVVERV9NRVNTQUdFX1JFTkRFUklOR19NT0RFX1VOU1BFQ0lGSUVEEAASJQohQ0xBVURFX01FU1NBR0VfUkVOREVSSU5HX01PREVfUkFXEAESMAosQ0xBVURFX01FU1NBR0VfUkVOREVSSU5HX01PREVfUExBSU5fTUFSS0RPV04QAhIqCiZDTEFVREVfTUVTU0FHRV9SRU5ERVJJTkdfTU9ERV9NRVNTQUdFUxADMocFChFDb21wbGV0aW9uU2VydmljZRJ2Cg9HZXRDb252ZXJzYXRpb24SMC5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuR2V0Q29udmVyc2F0aW9uUmVxdWVzdBoxLmFudGhyb3BpYy5tb2JpbGUudjFhbHBoYS5HZXRDb252ZXJzYXRpb25SZXNwb25zZRKQAQoXU3RyZWFtUGVuZGluZ0NvbXBsZXRpb24SOC5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuU3RyZWFtUGVuZGluZ0NvbXBsZXRpb25SZXF1ZXN0GjkuYW50aHJvcGljLm1vYmlsZS52MWFscGhhLlN0cmVhbVBlbmRpbmdDb21wbGV0aW9uUmVzcG9uc2UwARKBAQoSQ3JlYXRlQ29udmVyc2F0aW9uEjMuYW50aHJvcGljLm1vYmlsZS52MWFscGhhLkNyZWF0ZUNvbnZlcnNhdGlvblJlcXVlc3QaNC5hbnRocm9waWMubW9iaWxlLnYxYWxwaGEuQ3JlYXRlQ29udmVyc2F0aW9uUmVzcG9uc2UwARJyCg1BcHBlbmRNZXNzYWdlEi4uYW50aHJvcGljLm1vYmlsZS52MWFscGhhLkFwcGVuZE1lc3NhZ2VSZXF1ZXN0Gi8uYW50aHJvcGljLm1vYmlsZS52MWFscGhhLkFwcGVuZE1lc3NhZ2VSZXNwb25zZTABEm8KDFJldHJ5TWVzc2FnZRItLmFudGhyb3BpYy5tb2JpbGUudjFhbHBoYS5SZXRyeU1lc3NhZ2VSZXF1ZXN0Gi4uYW50aHJvcGljLm1vYmlsZS52MWFscGhhLlJldHJ5TWVzc2FnZVJlc3BvbnNlMAFCsQEKHGNvbS5hbnRocm9waWMubW9iaWxlLnYxYWxwaGFCD0NvbXBsZXRpb25Qcm90b1ABogIDQU1YqgIYQW50aHJvcGljLk1vYmlsZS5WMWFscGhhygIYQW50aHJvcGljXE1vYmlsZVxWMWFscGhh4gIkQW50aHJvcGljXE1vYmlsZVxWMWFscGhhXEdQQk1ldGFkYXRh6gIaQW50aHJvcGljOjpNb2JpbGU6OlYxYWxwaGFiBnByb3RvMw",[I,a.dA]),o=(0,n.Z)(s,3),m=(0,n.Z)(s,7),Z=(0,n.Z)(s,8),y=(0,n.Z)(s,9),i=(0,n.Z)(s,10),C=(0,n.Z)(s,11),V=(0,n.Z)(s,13),h=(0,n.Z)(s,15);var X=function(d){return d[d.UNSPECIFIED=0]="UNSPECIFIED",d[d.RAW=1]="RAW",d[d.PLAIN_MARKDOWN=2]="PLAIN_MARKDOWN",d[d.MESSAGES=3]="MESSAGES",d}({});let W=(0,e.Z)(s,0)},0xe48b09ae:(d,l,c)=>{c.d(l,{S:()=>R});var g=c(0x22102fd88),n=c(0x628a9a0b),e=c(0x164c6313f),G=c(0x1f150de5e),t=c(0x10e9ea2cc),b=c(0xf32c56dd),I=c(0xa5acf583),a=c(0x14de19ae8),s=c(0x139b5e710),o=c(0x1016c6ed2),m=c(0x18393fe29),Z=c(0x9845e38c),y=c(0xe670e093),i=c(0x253a5c787),C=c(0x78b33fbd),V=c(0xc6536c20),h=c(0x4d348f95),X=c(0xfc89b4a4),W=c(0x1ab0d1ca1),A=c(0x23cebaa8a),u=c(0x538a5aea),B=c(0x50e23a72),J=c(0x23b6b0e18),r=c(0x23c1bed08),p=c(0x145d45a),x=c(0x23f9bb43c),Y=c(0x209ab1f87),H=c(0x20805e624);let z="incomplete_stream",S=Error(z);function R(d){var l;let{conversationUuid:c,projectUuid:R,endpoint:F,getTools:M,onIncrementalCompletion:K,onStreamCompleted:Q,onConversationReady:L,onMessageStart:w,onRetry:k,enableCaching:f=!1,pendingUserMessage:E,hasActiveStream:v=!1,onStartAppend:U,checkMessageExists:N,getAssistantMessageUuid:D}=d,P=(0,b.st)(),{applicationType:_}=(0,I._r)(),{activeOrganization:j,account:O}=(0,a.YL)(),T=null==j?void 0:j.uuid,q=(0,X.useMemo)(()=>{if(!O||!j)return!1;let d=O.memberships.find(d=>d.organization.uuid===j.uuid);return(null==d?void 0:d.seat_tier)==="enterprise_usage_based"},[O,j]),{context:$,clearContext:dd,setContext:dl}=(0,p.j)(c),dc=function(d){let{conversationUuid:l,hasActiveStream:c,pendingUserMessage:g,onIncrementalCompletion:n,onStartAppend:e,onStreamCompleted:t,checkMessageExists:b,getAssistantMessageUuid:I,smoothingDisabled:a=!1}=d,{setCompletionStatus:s}=(0,G.U)(l,!0),[o,m]=(0,X.useState)(null),[i,C]=(0,X.useState)(!1),[V,h]=(0,X.useState)(!1),W=(0,X.useRef)(null),A=(0,X.useRef)(null),u=(0,X.useRef)(void 0),B=(0,X.useCallback)(()=>{h(!1),s(!1),A.current&&(A.current.model_done=!0,A.current=null),t&&t(l,null,u.current,{shouldRefetch:!0})},[s,t,l]),J=(0,X.useCallback)(()=>{var d;null==(d=W.current)||d.abort(),B()},[B]),r=(0,X.useCallback)(d=>{var l,c;if(!i||!V)return;let g=A.current;g&&(null==(l=W.current)||!l.signal.aborted)&&("completion_type"in d&&"unparsed"===d.completion_type?g.onMessage({type:"content_block_delta",index:0,delta:{type:"text_delta",text:d.completion||""}}):"type"in d&&"string"==typeof d.type&&(["message_start","content_block_start","content_block_delta","content_block_stop","message_delta","message_stop"].includes(d.type)?("message_start"===d.type&&(null==(c=d.message)?void 0:c.uuid)&&(u.current=d.message.uuid),g.onMessage(d),"message_stop"===d.type&&(Z.v.info(Z.u.CHAT_COMPLETION,"Stream completed during reconnection"),g.model_done=!0,B())):d.type))},[i,V,B]);return(0,X.useEffect)(()=>{c&&g&&!i&&(async()=>{if(Z.v.info(Z.u.CHAT_COMPLETION,"Initializing stream reconnection",{conversationUuid:l}),h(!0),s(!0),W.current=new AbortController,b(g.uuid)){let d=null==I?void 0:I(g.uuid);d&&(m(d),u.current=d)}else{let d="".concat(H.B6,"-").concat((0,y.b)()),c={uuid:d,sender:"assistant",content:[{type:"text",text:""}],created_at:new Date().toISOString(),updated_at:new Date().toISOString(),parent_message_uuid:g.uuid,attachments:[],files:[],files_v2:[],sync_sources:[],index:1};m(d),e&&await e(l,d=>(0,H.xQ)(d,[g,c]))}let d=(0,x.i)();d.dont_smooth=a,d.on_completion=d=>{n&&n(l,d)},d.checkVisibility=()=>Y.Z.isVisible(),A.current=d;let c=W.current.signal;a||d.task(d=>{n&&n(l,d)},c),C(!0),Z.v.info(Z.u.CHAT_COMPLETION,"Stream reconnection initialized, ready to process events")})()},[c,g,l,e,b,I,i,s,n,a]),(0,X.useEffect)(()=>()=>{A.current&&(A.current.model_done=!0,A.current=null)},[]),{currentMessageUuid:o,hasInitializedPlaceholders:i,isReconnecting:V,abortReconnection:J,handleEvent:r}}({conversationUuid:c,hasActiveStream:v&&!!U&&!!N,pendingUserMessage:E,onIncrementalCompletion:K,onStartAppend:U,onStreamCompleted:Q,checkMessageExists:N||(()=>!1),getAssistantMessageUuid:D}),dg=(0,h.useSearchParams)(),dn=null==dg?void 0:dg.get("t"),de=null!=(l=(0,J.k3)(c))?l:"",dG=null==dg?void 0:dg.get("max_tokens"),dt=(0,t.$)(),{addError:db,addApiError:dI,clearToast:da}=(0,s.Yf)(),ds=(0,X.useMemo)(y.b,[]),dm=(0,n.bT)("push",ds),{setFailedStreamRetryData:dZ}=(0,B.x)(),dy=(0,X.useCallback)(async function(d,l){let g=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{shouldRefetch:!0,skipOptimisticUpdate:!1};await (null==Q?void 0:Q(c,d,l,g)),dd()},[Q,c,dd]),di=(0,X.useCallback)((d,l,n)=>d===z?db((0,g.jsx)(u.We,{}),{error:d}):d instanceof o.LG?"rate_limit_error"===d.type?(0,A.i7)(d,T,c,dt,db,q):"not_found_error"===d.type?d.message&&d.message.toLowerCase().includes("model:")?db((0,g.jsx)(u.MT,{}),{error:d}):(0,A.Tj)(d)?db((0,g.jsx)(u.WC,{}),{error:d}):"model_not_available"===d.errorCode&&d.message?db(d.message,{error:d}):(P.track({event_key:"claudeai.unhandled_error_code",conversation_uuid:c,project_uuid:R,error_code:d.errorCode,error_type:d.type,error_message:d.message}),db((0,g.jsx)(u.aB,{}),{error:d})):"billing_error"===d.type?db((0,g.jsx)(u.xQ,{}),{error:d}):"overloaded_error"===d.type?db((0,g.jsx)(u.Bh,{}),{error:d}):("invalid_request_error"===d.type&&413===d.statusCode&&P.track({event_key:"chat.conversation.token_limit_exceeded",conversation_uuid:c,project_uuid:R}),(0,A.Wf)(d,l,n,R,dm,da,db))?void 0:"invalid_request_error"===d.type&&"read_only_mode"===d.extra.code?db((0,g.jsx)(u.vF,{}),{error:d}):dI(d,{errorContext:{tags:{source:"stream_completion"}}}):db((0,g.jsx)(u.gJ,{}),{error:d}),[R,dm,da,db,dI,T,c,dt,P,q]),dC=(0,C.useExperiment)("no_more_smoother_2"),dV=(0,W.A)(),{setCompletionStatus:dh}=(0,G.U)(c,!0),dX=(0,X.useCallback)(async d=>{let l,{prompt:g,attachments:n,files:G,syncSources:t,rethrowErrors:b=!1,modelOverride:I,parent_message_uuid:a,personalized_style:s,paprika_mode:y,enableCaching:C,grpcTools:h,skipOptimisticUpdateOnStreamComplete:X=!1,createConversationParams:W,tool_states:u}=d;if($)return;if(!j)throw Error("Cannot stream without an organization");let B=new AbortController;dl({controller:B}),dZ(null);let J=M(),p=(0,r.J)({prompt:g,parent_message_uuid:a,timezone:((0,m.Vm)()?V.c9.utc():V.c9.local()).zoneName||void 0,personalized_style:s,locale:dV.locale,model:de,modelOverride:I,temperature:dn,maxTokensToSample:dG,paprika_mode:y,tools:J,tool_states:u}),x=[],Y=null,H=null,R=!0,Q=!1,E=!1,v=!1,U=null;try{let d=dC.get("no_smoothing",!1);dh(!0);let b=null!=C?C:f,I=b?e.MG.GRPC:e.MG.SSE;if(Y=(U=await (0,e.xD)({applicationType:_,endpoint:F,orgUuid:j.uuid,conversationUuid:c,body:{organization_uuid:j.uuid,conversation_uuid:c,text:g,attachments:n,files:G.map(d=>d.file_uuid),sync_sources:t.map(d=>d.uuid)},onCompletion:d=>{K(c,d),x=d},onMessageStart:d=>{l=d.assistantMessageUuid,null==w||w(d)},onRetry:d=>{E=!0,null==k||k(d)},onCompactionStatus:(d,l)=>{if(dl({controller:B,compactionStatus:"compacting"===d||"complete"===d?d:"failed"===d?"failed":void 0,compactionErrorMessage:"failed"===d?l:void 0}),"failed"===d){Q=!0;let d=l||dV.formatMessage({defaultMessage:"Conversation compaction failed.",id:"8eCJHGOw1G"});db(d)}},abortController:B,completion:p,getTools:M,smoothingEnabled:!d,transport:I,...b&&h&&{grpcTools:h},retryEnabled:!b,createConversationParams:W,onConversationReady:L})).stopReason,H=U.messageLimitResult,U&&!Y&&!B.signal.aborted)throw S}catch(l){if(B.signal.aborted&&!E)return;let d=l instanceof o.LG;if(dZ({prompt:g,attachments:n,files:G}),v=!0,d&&(0,A.Tj)(l)&&(R=!1),l===S?(K(c,x),Q||(di(z,n.length+G.length,G.filter(d=>"document"===d.file_kind).length),P.track({event_key:"sse_interrupted"}),(0,i.wd)("sse_interrupted")),await new Promise(d=>setTimeout(d,3e4))):(di(l,n.length+G.length,G.filter(d=>"document"===d.file_kind).length),d||Z.v.error(Z.u.CHAT_COMPLETION,"Non-API stream error",l)),(0,i.Cp)(l,{tags:{source:d?"stream-api":"stream-generic"}}),b||(0,m.yz)())throw l}finally{let d=B.signal.aborted&&!l;B.signal.aborted&&!v&&dZ({prompt:g,attachments:n,files:G}),await dy(H,l,{shouldRefetch:R&&!d,skipOptimisticUpdate:X}),dh(!1)}return x},[$,j,dl,dZ,dh,M,dV,de,dn,dG,dC,_,F,c,k,w,K,L,di,P,dy,f,db]),dW=(0,X.useCallback)(()=>{dc.isReconnecting&&dc.abortReconnection(),$&&($.controller.abort(),dd())},[$,dd,dc]);return{runStream:dX,isStreaming:!!$||dc.isReconnecting,abortStream:dW,isReconnected:v&&!!E,handleEvent:dc.handleEvent}}},0x10e9ea2cc:(d,l,c)=>{c.d(l,{$:()=>b,T:()=>I});var g=c(0x12c9046cd),n=c(0x14de19ae8),e=c(0x49fac030),G=c(0x17e725145),t=c(0xfc89b4a4);let b=()=>{let d=(0,G.useQueryClient)();return(0,t.useCallback)((l,c,g)=>{"within_limit"!==l.type&&(l.conversationUuid=g),d.setQueryData([e.Rw],d=>d?{...d,messageLimits:{...d.messageLimits,[c]:l}}:d)},[d])},I=d=>{let{activeOrganization:l}=(0,n.YL)(),c=null==l?void 0:l.uuid,e=b(),G={type:"within_limit"};return(0,g.L2)(()=>"/api/organizations/".concat(c,"/reset_rate_limits"),"POST",{onSuccess:()=>{e(G,c,d||"")},meta:{noToast:!0}})}},0x13d66e7d3:(d,l,c)=>{function g(){return"undefined"!=typeof performance&&"memory"in performance&&void 0!==performance.memory}function n(){if(!g())return null;let d=performance.memory;return{usedJSHeapSize:d.usedJSHeapSize,totalJSHeapSize:d.totalJSHeapSize,jsHeapSizeLimit:d.jsHeapSizeLimit,heapUsagePercent:Math.round(d.usedJSHeapSize/d.jsHeapSizeLimit*100)}}c.d(l,{Y:()=>g,l:()=>n})},0x14c9db440:(d,l,c)=>{c.d(l,{L:()=>e});class g{write(d){return"open"===this.state&&this.buffer.push(d),this}onFlush(d){return this.flushCallback=d,this}flush(){if(this.flushCallback&&this.buffer.length>0){let d=this.buffer;this.buffer=[],this.flushCallback(d)}return this.buffer=[],this}open(){return this.state="open",this}close(){return this.state="closed",this}discard(){return this.buffer=[],this}isOpen(){return"open"===this.state}isClosed(){return"closed"===this.state}constructor(d={}){var l;this.buffer=[],this.flushCallback=null,this.state=null!=(l=d.initialState)?l:"open"}}let n=null;function e(){return n||(n=new g),n}},0x164c6313f:(d,l,c)=>{c.d(l,{ep:()=>r,MG:()=>X,I:()=>B,wV:()=>W,xD:()=>Y});var g=c(0x24553dffe),n=c(0xcdefe954),e=c(0x1e10d8e8),G=c(0x1cd6706d8),t=c(0x1016c6ed2),b=c(0x20e00cddd),I=c(0x9845e38c);async function a(){let{numPrevAttempts:d=1,maxAttempts:l=10,jitterFraction:c=.1,backoffAmount:g=1.5,initialDelayMs:n=1e3}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(d<0)throw Error("numPrevAttempts must be non-negative");let e=n*Math.pow(g,Math.min(l,d)),G=(Math.random()-.5)*2*(e*c),t=Math.floor(Math.max(0,e+G));return I.v.debug(I.u.LOCAL_DEV,"exponentialBackoffWithJitter: Waiting ".concat(t," ms")),new Promise(d=>{setTimeout(d,t)})}var s=c(0x16b12f4ea),o=c(0x16a879d4a),m=c(0xe0aa32af),Z=c(0x21ff8586b),y=c(0x1bd372a25),i=c(0x253a5c787),C=c(0x23f9bb43c),V=c(0x209ab1f87);let h="POST";var X=function(d){return d.SSE="sse",d.GRPC="grpc",d}({});function W(d){let l=(0,Z.w)({baseUrl:"/v1/mobile",useBinaryFormat:!1,interceptors:[l=>async c=>{c.header.set("X-Organization-Id",d);let g=G.C.formatTraceparent();return g&&c.header.set("traceparent",g),await l(c)}]});return(0,m.UU)(n.mt,l)}let A=null,u=null,B=()=>{A&&(A.force_smoother_done=!0),null==u||u.abort()};async function J(d){let{fn:l,maxAttempts:c,attemptNumber:g,onRetry:n,abortController:G}=d;if(c<1)throw Error("Max attempts must be >= 1");if(I.v.info(I.u.CHAT_COMPLETION,"Starting completion request (".concat(g+1,"/").concat(c,")")),g>0&&(1===g&&(0,e.r)("chat.completion_retry_initiated"),await a({numPrevAttempts:g-1,initialDelayMs:5e3,backoffAmount:1.5,jitterFraction:.1}),G.signal.aborted))throw I.v.warn(I.u.CHAT_COMPLETION,"Request aborted during backoff, stopping retries"),new DOMException("Request aborted","AbortError");try{await l(),I.v.info(I.u.CHAT_COMPLETION,"Completion request succeeded on attempt ".concat(g+1)),g>0&&(0,e.r)("chat.completion_retry_recovered");return}catch(d){if(I.v.error(I.u.CHAT_COMPLETION,"Request failed",d),1===c||!(d instanceof t.LG))throw d;if("overloaded_error"!==d.type)throw I.v.error(I.u.CHAT_COMPLETION,"Not retryable error, throwing"),(0,e.r)("chat.completion_non_retryable_error",{attributes:{"error.type":d.type}}),d;if(null==n||n(g+1),g+1>=c)throw(0,e.r)("chat.completion_retry_exhausted"),d}return J({...d,attemptNumber:g+1})}var r=function(d){return d[d.APPEND_MESSAGE_WITH_COMPLETION=1]="APPEND_MESSAGE_WITH_COMPLETION",d[d.RETRY_MESSAGE_WITH_COMPLETION=2]="RETRY_MESSAGE_WITH_COMPLETION",d}({});let p=["close_file","create_file","delete_file","file_search","open_file","repl","str_replace","update_file"];async function x(d){let{orgUuid:l,conversationUuid:c,body:g,abortController:e,completion:G,smoother:b,grpcTools:a,onMessageStart:s,onCompactionStatus:m,onConversationReady:Z,endpoint:y}=d,i=W(l),C=null;try{var V,h,X;let d;if(2===y)d=i.retryMessage((0,o.v)(n.WH,{organizationUuid:l,chatConversationUuid:c,parentMessageUuid:G.parent_message_uuid,model:G.model,timezone:g.timezone||G.timezone,customSystemPrompt:G.custom_system_prompt,locale:G.locale,paprikaMode:null!=(V=G.paprika_mode)?V:void 0,tools:a,maxTokensToSample:G.max_tokens_to_sample,renderingMode:n.x4.MESSAGES}),{signal:e.signal});else{let t=null==(h=g.attachments)?void 0:h.map(d=>(0,o.v)(n.gG,{fileName:d.file_name,fileSize:d.file_size,fileType:d.file_type,extractedContent:d.extracted_content}));d=i.appendMessage((0,o.v)(n.Kp,{organizationUuid:l,chatConversationUuid:c,prompt:g.text||G.prompt,model:G.model,timezone:g.timezone,attachments:t,files:g.files,tools:a,renderingMode:n.x4.MESSAGES}),{signal:e.signal})}for await(let l of d)if("completionEventJson"===l.payload.case)try{let d=JSON.parse(l.payload.value);if("error"===d.type)throw(0,t.a5)({status:0,response:"error"in d&&d.error||{},fallbackMessage:"gRPC streaming error",headers:void 0,endpoint:"/v1/mobile/appendMessage",method:"gRPC"});let c=["message_start","content_block_start","content_block_delta","content_block_stop","message_delta","message_stop"];if("tool_approval"===d.type);else if("compaction_status"===d.type)null==m||m(d.status,d.message);else if("conversation_ready"===d.type)null==Z||Z();else if(c.includes(d.type)){if(b.onMessage(d),"message_start"===d.type){let l=d.message;null==s||s({assistantMessageUuid:l.uuid,humanMessageUuid:null!=(X=l.parent_uuid)?X:null})}else if("message_stop"===d.type){b.model_done=!0,C="message_stop";break}}}catch(d){throw I.v.error(I.u.CHAT_COMPLETION,"Failed to parse gRPC completion event",d),d}else if("completionEventError"===l.payload.case){let d=l.payload.value,c={};try{c=JSON.parse(d.errorJson)}catch(d){I.v.error(I.u.CHAT_COMPLETION,"Failed to parse error_json from gRPC error response",d)}throw(0,t.a5)({status:d.statusCode,response:c,fallbackMessage:"HTTP error from private API",headers:void 0,endpoint:"/v1/mobile/appendMessage",method:"gRPC"})}b.model_done=!0}catch(d){throw b.model_done=!0,b.force_smoother_done=!0,d}return{stopReason:C,messageLimitResult:null}}async function Y(d){let l,{applicationType:c,endpoint:n,orgUuid:a,conversationUuid:o,body:m,onMessageStart:Z,onCompletion:X,onRetry:W,onCompactionStatus:B,onConversationReady:r,abortController:Y,completion:H,getTools:z,smoothingEnabled:S=!0,retryEnabled:R=!0,transport:F="sse",grpcTools:M,cachedEvents:K,createConversationParams:Q}=d,L=(0,C.i)();A=L,u=Y,L.dont_smooth=!S,L.on_completion=X,L.checkVisibility=()=>V.Z.isVisible();let w=S?L.task(X,Y.signal):Promise.resolve();if(K&&K.length>0){for(let d of(I.v.info(I.u.CHAT_COMPLETION,"Replaying cached events before continuing live stream",{eventCount:K.length}),K)){if(Y.signal.aborted){I.v.info(I.u.CHAT_COMPLETION,"Cached event processing aborted");break}if("unparsed"===d.completion_type)L.onMessage({type:"content_block_delta",index:0,delta:{type:"text_delta",text:d.completion||""}});else if(d.type){let l=["message_start","content_block_start","content_block_delta","content_block_stop","message_delta","message_stop"];"tool_approval"===d.type||l.includes(d.type)&&L.onMessage(d)}}I.v.info(I.u.CHAT_COMPLETION,"Cached events replayed, continuing with live stream")}if("grpc"===F){let d=await x({orgUuid:a,conversationUuid:o,body:m,abortController:Y,completion:H,smoother:L,grpcTools:M,onMessageStart:Z,onCompactionStatus:B,onConversationReady:r,endpoint:n});return await w,A=null,u=null,d}let k=g.m.get(b.eT.DEVICE_ID_KEY),f=G.C.formatTraceparent(),E={"Content-Type":"application/json",Accept:"text/event-stream",...(0,s._)(c),...k&&{"anthropic-device-id":k},...f&&{traceparent:f}},v=null,U=null,N=JSON.stringify({...H,...m,text:void 0,rendering_mode:"messages",organization_uuid:void 0,conversation_uuid:void 0,create_conversation_params:Q}),D="",P="",_=0,j=J({fn:()=>{L.model_done=!1,L.force_smoother_done=!1,D="",P="",l=void 0,_=0;let d=function(d,l,c){let g;switch(d){case 1:g="completion";break;case 2:g="retry_completion";break;default:throw Error("Invalid endpoint")}return"/api/organizations/".concat(l,"/chat_conversations/").concat(c,"/").concat(g)}(n,a,o);return(0,y.y)(d,{method:h,credentials:"include",headers:E,body:N,openWhenHidden:!0,signal:Y.signal,async onopen(l){var c;if(!l.ok||!(null==(c=l.headers.get("content-type"))?void 0:c.includes(y.o))){let c=await l.text(),g={};try{g=JSON.parse(c)}catch(d){}throw(0,t.a5)({status:l.status,response:g,fallbackMessage:"Failed to fetch",headers:l.headers,endpoint:d,method:h})}},onmessage:c=>{var g,n,G,b,I,a,s;switch(c.event){case"ping":default:return;case"error":throw(0,t.a5)({status:0,response:JSON.parse(c.data),fallbackMessage:"Streaming error: 22",headers:void 0,endpoint:d,method:h});case"completion":{let d=JSON.parse(c.data);if(void 0===d.completion)throw Error("Unexpected message received when streaming: ".concat(c.data));let l={type:"content_block_delta",index:0,delta:{type:"text_delta",text:d.completion}};v=d.stop_reason,U=null!=(g=d.messageLimit)?g:null,L.onMessage(l);break}case"content_block_start":{let d=JSON.parse(c.data);_=d.index,"tool_use"===d.content_block.type&&(P=d.content_block.name,l=d.content_block.approval_key),L.onMessage(d);break}case"content_block_delta":{let d=JSON.parse(c.data);if(d.index!==_&&"thinking_summary_delta"!==d.delta.type&&"tool_use_block_update_delta"!==d.delta.type)throw Error("Content block index did not match the expected index");(null==(n=d.delta)?void 0:n.type)==="input_json_delta"&&(p.includes(P)||z().some(d=>d.name===P||P.endsWith(":".concat(d.name)))||l)&&(D+=d.delta.partial_json),L.onMessage(d);break}case"content_block_stop":{let d=JSON.parse(c.data);if(d.index!==_)throw Error("Content block index did not match the expected index");if(d.buffered_input=D,L.onMessage(d),!P)break;D="",P="",l=void 0;break}case"message_limit":U=JSON.parse(c.data).message_limit;break;case"compaction_status":{let d=JSON.parse(c.data);null==B||B(d.status,d.message),(0,e.r)("chat.sse_compaction_status",{attributes:{"compaction.status":d.status}});break}case"conversation_ready":null==r||r();break;case"message_delta":case"message_start":case"message_stop":{let d=JSON.parse(c.data);if("message_start"===d.type){let l=d.message;null==Z||Z({assistantMessageUuid:l.uuid,humanMessageUuid:null!=(G=l.parent_uuid)?G:null}),(0,e.r)("chat.sse_message_start",{attributes:{"message.uuid":null!=(b=l.uuid)?b:"","trace.backend_id":null!=(I=l.trace_id)?I:"","request.id":null!=(a=l.request_id)?a:""}})}"message_stop"===d.type&&(v="message_stop",(0,e.r)("chat.sse_message_stop",{attributes:{"stop.reason":v}})),L.onMessage(d);break}case"tool_approval":break;case"mcp_auth_required":{let d=JSON.parse(c.data),l=L.getBlocks(),g=!1;for(let c=l.length-1;c>=0;c--){let n=l[c];if("tool_use"===n.type&&n.id===d.tool_use_id){l[c]={...n,mcp_auth_required:{server_id:d.server_id,tool_use_id:d.tool_use_id,error_code:d.error_code,conversation_uuid:o}},g=!0;break}}g&&(null==(s=L.on_completion)||s.call(L,l))}}},onclose(){L.model_done=!0},onerror(d){throw(0,i.Cp)(d),L.model_done=!0,L.force_smoother_done=!0,d}})},abortController:Y,attemptNumber:0,maxAttempts:R?10:1,onRetry:W});return await Promise.all([j,w]),A=null,u=null,{stopReason:v,messageLimitResult:U}}},0x1cd6706d8:(d,l,c)=>{c.d(l,{C:()=>t});var g=c(0x243825738),n=c(0x112ace885),e=c(0x6096d538);class G{extractFromServerTiming(){try{let d=performance.getEntriesByType("navigation");if(0===d.length)return;let l=d[0].serverTiming;if(!l)return;let c=l.find(d=>"traceparent"===d.name);if(!c||!c.description)return;let e=c.description.split("-");if(4!==e.length)return;let[G,t,b,I]=e;if("00"!==G)return;this.parentContext={traceId:t,spanId:b,traceFlags:parseInt(I,16),isRemote:!0};let a=g.u.wrapSpanContext(this.parentContext);this.contextWithParent=g.u.setSpan(n.l,a)}catch(d){}}setParentContext(d){this.parentContext=d}getParentContext(){return this.parentContext}formatTraceparent(){if(!this.parentContext)return null;let{traceId:d,spanId:l,traceFlags:c}=this.parentContext,g=(c||0).toString(16).padStart(2,"0");return"00-".concat(d,"-").concat(l,"-").concat(g)}isParentSampled(){return!!this.parentContext&&(1&this.parentContext.traceFlags)==1}getContextWithParent(){if(!this.parentContext)return null;let d=g.u.wrapSpanContext(this.parentContext);return g.u.setSpan(e._.active(),d)}clearParentContext(){this.parentContext=null,this.contextWithParent=null}extractFromServerTimingHeader(d){if(!d)return null;try{for(let l of d.split(",")){let d=l.trim();if(!d.startsWith("traceparent;desc="))continue;let c=d.substring(17).split("-");if(4!==c.length)continue;let[g,n,e,G]=c;if("00"===g)return{traceId:n,spanId:e,traceFlags:parseInt(G,16),isRemote:!0}}}catch(d){}return null}hasParentContext(){return null!==this.parentContext}active(){return this.contextWithParent||n.l}with(d,l,c){for(var g=arguments.length,n=Array(g>3?g-3:0),e=3;e{c.d(l,{r:()=>g});function g(d,l){return Object.fromEntries(Object.entries(l).map(l=>{let[c,g]=l;return[c.startsWith("".concat(d,"."))?c:"".concat(d,".").concat(c),g]}))}},0x1f150de5e:(d,l,c)=>{c.d(l,{U:()=>b});var g=c(0x12c9046cd),n=c(0x14de19ae8),e=c(0xac309a83),G=c(0x17e725145),t=c(0xfc89b4a4);let b=function(d){let l=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{activeOrganization:c}=(0,n.YL)(),b=(0,G.useQueryClient)(),I=null==c?void 0:c.uuid,a=(0,e.fS)("claudeai_completion_status_sidebar"),{data:s,refetch:o}=(0,g.Sk)("/api/organizations/".concat(I,"/chat_conversations/").concat(d,"/completion_status?poll=false"),{enabled:void 0!==d&&void 0!==I&&a&&!l,refetchInterval:d=>{var l,c;return null!=d&&null!=(c=d.state)&&null!=(l=c.data)&&!!l.is_pending&&1e3},retry:!1});return{completionStatus:s,refetchCompletionStatus:o,setCompletionStatus:(0,t.useCallback)(l=>{if(!a||void 0===d||void 0===I)return;let c="/api/organizations/".concat(I,"/chat_conversations/").concat(d,"/completion_status?poll=false");return b.setQueryData([c,void 0],{is_pending:l,is_error:!1,error_code:null,error_detail:null})},[d,I,b,a])}}},0x207db90c9:(d,l,c)=>{c.d(l,{U:()=>G,q:()=>e});var g=c(0x9845e38c);let n=(d,l)=>g.v.error(d,"Error suppressed in wrapped function",l);function e(d,l){return function(){for(var c=arguments.length,g=Array(c),e=0;e{c.d(l,{Z:()=>n});class g{setVisibilityCheck(d){this.checkFn=d}clearVisibilityCheck(){this.checkFn=null}isVisible(){return!this.checkFn||this.checkFn()}constructor(){this.checkFn=null}}let n=new g},0x226530adf:(d,l,c)=>{c.d(l,{Z3:()=>n.Z3,c7:()=>e.c,eQ:()=>n.eQ,x:()=>g.x}),c(0x23cebaa8a),c(0x538a5aea);var g=c(0x50e23a72),n=c(0x23b6b0e18);c(0x23c1bed08);var e=c(0x145d45a);c(0xe48b09ae)},0x23b6b0e18:(d,l,c)=>{c.d(l,{Z3:()=>s,eQ:()=>I,k3:()=>a});var g=c(0x628a9a0b),n=c(0xac309a83),e=c(0x4d348f95),G=c(0x156c4e43b);let t=G.Ik({model:G.Yj().nullable()}).nullable(),b="default-model",I="sticky-model-selector",a=d=>{let l=(0,g.mz)(d||""),c=(0,e.useSearchParams)(),n=null==c?void 0:c.get("model");return(null==l?void 0:l.model)?null==l?void 0:l.model:n||void 0},s=d=>{let l=a(d),c=(0,n.GZ)("frontend","console_default_model_override",null,t),g=(0,n.T9)("console_default_model","model",null,n.Lu),e=(0,n.T9)("console_default_model","overrideSticky",!1,G.zM()),s=(0,n.T9)("console_default_model","nuxId",null,n.Lu);return e&&!c&&g&&((d,l)=>{localStorage.getItem(b)!==d&&(l&&localStorage.setItem(l,"true"),localStorage.setItem(b,d),localStorage.getItem(I)&&localStorage.setItem(I,d))})(g,s),l||(null==c?void 0:c.model)||g||"claude-3-5-haiku-latest"}},0x23c1bed08:(d,l,c)=>{c.d(l,{J:()=>G});var g=c(0x9dcf4143),n=c(0x1b2b72618),e=c(0x6aaadcb3);function G(d){var l;let c={prompt:d.prompt,parent_message_uuid:d.parent_message_uuid,timezone:d.timezone,personalized_styles:d.personalized_style?[d.personalized_style]:void 0,locale:n.SC.includes(d.locale)?d.locale:n.Xn},G=((0,e.G)()?(0,g.kP)():null)||(0,g.xt)();return G&&(c.custom_system_prompt=G),d.model&&"string"==typeof d.model&&(c.model=d.model),d.modelOverride&&(c.model=d.modelOverride),"string"==typeof d.temperature&&(c.temperature=parseInt(d.temperature)),d.maxTokensToSample&&"string"==typeof d.maxTokensToSample&&(c.max_tokens_to_sample=parseInt(d.maxTokensToSample)),d.paprika_mode&&(c.paprika_mode=d.paprika_mode),d.tools.length&&(c.tools=d.tools),(null==(l=d.tool_states)?void 0:l.length)&&(c.tool_states=d.tool_states),c}},0x23cebaa8a:(d,l,c)=>{c.d(l,{Tj:()=>t,Wf:()=>G,i7:()=>e});var g=c(0x22102fd88);c(0xfc89b4a4);var n=c(0x538a5aea);function e(d,l,c,e,G){var t;let b=arguments.length>5&&void 0!==arguments[5]&&arguments[5],I=null;if(d.message.includes("{")&&l)try{I=JSON.parse(d.message),e(I,l,c)}catch(d){}if((null==I?void 0:I.type)==="exceeded_limit"&&"concurrents"===I.representativeClaim)return void G((0,g.jsx)(n.cX,{}),{error:d});if("thinking_messages_rate_limit_exceeded"===d.errorCode)return void G((0,g.jsx)(n.jp,{}),{error:d});if("opus_messages_rate_limit_exceeded"===d.errorCode)throw d;if(b)return;let a=(null==I?void 0:I.type)==="exceeded_limit"&&"representativeClaim"in(t=I)&&void 0!==t.representativeClaim?I.resetsAt:void 0;G((0,g.jsx)(n.Qg,{resetsAtInSeconds:a}),{error:d})}function G(d,l,c,e,G,t,b){if("exceeded_max_uploads_per_message"===d.errorCode)return b((0,g.jsx)(n.$L,{}),{error:d}),!0;if("exceeded_max_image_limit_per_chat"===d.errorCode){let l=b((0,g.jsx)("p",{children:(0,g.jsx)(n.Go,{numSanitizedDocuments:c,onNewChat:()=>{G({projectUuid:e}),t(l)}})}),{error:d});return!0}if("invalid_request_error"===d.type&&413===d.statusCode){let c=b((0,g.jsx)("p",{children:(0,g.jsx)(n.J8,{numAttachmentsOrFiles:l,onNewChat:()=>{G({projectUuid:e}),t(c)}})}),{error:d});return!0}return!1}function t(d){return"not_found_error"===d.type&&("chat_conversation_not_found"===d.errorCode||d.message.toLowerCase().includes("unknown chat"))}},0x23f9bb43c:(d,l,c)=>{c.d(l,{i:()=>G});let g=(d,l,c)=>{let{blockSize:g,sliceBlock:n}=d,e=[];if(c<=0)return[];let G=0;for(let d of l){if(G+g(d)>=c){e.push(n(d,c-G));break}e.push(d),G+=g(d)}return e},n=1e3/60;class e{_get_smoothed_completion(){var d,l,c;if(0===this.start)return[];if(this.x>=this.totalCompletionLength)return this.smoothed_completion_is_unchanged=!0,g(this.blockOperations,this.blocksList,this.totalCompletionLength);let n=(Date.now()-this.start)/1e3,e=this.arrivals[this.arrivals.length-1][1]+(this.model_done||this.force_smoother_done?100:0),G=.9*n-(null!=(c=null==(d=(l=this.blockOperations).getBlockDeadlineOffset)?void 0:d.call(l))?c:.3),t=this.arrivals.filter(d=>d[0]d[1]),b=t[t.length-1],I=function(d,l,c){let g=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.01;if(l===c)return l;let n=d(l),e=d(c);if(l>=c)throw Error("Lower x is greater than upper x");if(n>g)throw Error("Lower f is greater than zero");if(e<-g)throw Error("Upper f is less than zero");for(;n<-g;){let g=(l+c)/2,G=d(g);G<=0?(l=g,n=G):(c=g,e=G)}return l}(d=>{let l=(d-this.x)/(n-this.t),c=1/(n-this.t);return 2*(this.force_smoother_done?.01*this.gamma:this.gamma)*c*(l-this.v)-1/(d-b)+1/(e-d)},b,e),a=(I-this.x)/(n-this.t);return this.v=this.alpha*this.v+(1-this.alpha)*a,this.smoothed_completion_is_unchanged=this.x>=this.totalCompletionLength,this.x=Math.max(I,this.x),this.t=n,this.stats.push({t:n,x:I,v:a,min_chars:b,max_chars:e}),g(this.blockOperations,this.blocksList,this.x)}get smootherDone(){return this.force_smoother_done||this.model_done&&this.x>=this.totalCompletionLength}addBlock(d,l){this.blocksList.push(l)}updateBlock(d,l){this.blocksList[d]=l}getAdjustedIndex(d){return 0===this.blockIndexOffset||null===this.serverIndexBase?d:this.blockIndexOffset+(d-this.serverIndexBase)}getBlocks(){return this.blocksList}onMessage(d){let l;switch(d.type){case"message_start":this.blocksList.length>0&&(this.blockIndexOffset=this.blocksList.length,this.serverIndexBase=null);break;case"content_block_start":{let l=this.blockOperations.createBlockFromStartEvent(d);null!==l&&(this.blockIndexOffset>0&&null===this.serverIndexBase&&(this.serverIndexBase=d.index),this.addBlock(d.index,l));break}case"content_block_delta":{let l=this.getAdjustedIndex(d.index),c=this.blocksList[l];if(!c)break;let g=this.blockOperations.applyDeltaEvent(d,c);this.updateBlock(l,g);break}case"content_block_stop":{let l=this.getAdjustedIndex(d.index),c=this.blocksList[l];if(!c)break;let g=this.blockOperations.stopBlockEvent(d,c);this.updateBlock(l,g);break}case"message_stop":this.model_done=!0}0===this.start&&(this.start=Date.now());let c=(l=this.blockOperations,this.blocksList.reduce((d,c)=>d+l.blockSize(c),0));if(this.totalCompletionLength=c,this.arrivals.push([(Date.now()-this.start)/1e3,c]),this.dont_smooth&&this.on_completion){let d=structuredClone(this.blocksList);this.on_completion(d)}}async task(d,l){for(;!this.smootherDone&&!l.aborted;){if(document.hidden){await new Promise(d=>setTimeout(d,200));continue}if(this.x>=this.totalCompletionLength&&this.model_done)break;if(this.blocksList.length>0){let l=this._get_smoothed_completion();this.smoothed_completion_is_unchanged||d(l)}let l=!0;if(this.checkVisibility){let d=Date.now();d-this.lastVisibilityCheck>1e3&&(this.cachedVisibility=this.checkVisibility(),this.lastVisibilityCheck=d),l=this.cachedVisibility}let c=l?n:100;await new Promise(d=>setTimeout(d,c))}}constructor(d){this.alpha=.99,this.gamma=1e-5,this.v=100,this.x=0,this.t=0,this.arrivals=[[-9999,0]],this.start=0,this.totalCompletionLength=0,this.smoothed_completion_is_unchanged=!1,this.dont_smooth=!1,this.model_done=!1,this.force_smoother_done=!1,this.stats=[],this.blocksList=[],this.lastVisibilityCheck=0,this.cachedVisibility=!0,this.blockIndexOffset=0,this.serverIndexBase=null,this.blockOperations=d}}function G(){let d=new Map,l=!1;return new e({blockSize:d=>{if("text"===d.type)return d.text.length;if("thinking"===d.type)return d.thinking.length;if("tool_use"===d.type){var l;return(null==(l=d.partial_json)?void 0:l.length)||0}return d.type,0},sliceBlock:(d,l)=>{if("tool_result"===d.type)return d;if("text"===d.type)return{...d,text:d.text.slice(0,l)};if("tool_use"===d.type){var c;return{...d,partial_json:null==(c=d.partial_json)?void 0:c.slice(0,l)}}return"thinking"===d.type?{...d,thinking:d.thinking.slice(0,l)}:d},createBlockFromStartEvent:d=>("thinking"===d.content_block.type&&(d.content_block.start_timestamp=new Date().toISOString()),d.content_block),applyDeltaEvent:(c,g)=>{var n,e;if("flag_delta"===c.delta.type){let d=new Set(null!=(n=g.flags)?n:[]);d.add(c.delta.flag);let l=Array.from(d);return{...g,flags:l}}switch(g.type){case"text":switch(l=!1,c.delta.type){case"text_delta":return{...g,text:g.text+c.delta.text};case"citation_start_delta":{let l=c.delta.citation;return d.set(l.uuid,{...l,start_index:g.text.length}),g}case"citation_end_delta":{let l=c.delta.citation_uuid,n=d.get(l);if(!n)return g;let e=g.citations?[...g.citations]:[];return e.push({...n,end_index:g.text.length}),{...g,citations:e}}default:return g}case"thinking":switch(l=!0,c.delta.type){case"thinking_delta":return{...g,thinking:g.thinking+c.delta.thinking};case"thinking_summary_delta":return{...g,summaries:[...g.summaries||[],c.delta.summary]};case"thinking_cut_off_delta":return{...g,cut_off:c.delta.cut_off};default:return g}case"tool_result":if(l=!1,"input_json_delta"!==c.delta.type)return g;{let d;try{let l=JSON.parse(c.delta.partial_json);d=Array.isArray(l)&&l.length>0&&l.every(d=>"object"==typeof d&&null!==d&&"type"in d)?l:[{type:"text",text:c.delta.partial_json}]}catch(l){d=[{type:"text",text:c.delta.partial_json}]}return{...g,content:d}}case"tool_use":switch(l=!1,c.delta.type){case"input_json_delta":return{...g,partial_json:(null!=(e=g.partial_json)?e:"")+c.delta.partial_json};case"tool_use_block_update_delta":return{...g,...void 0!==c.delta.message&&{message:c.delta.message},...void 0!==c.delta.display_content&&{display_content:c.delta.display_content}};default:return g}}},stopBlockEvent:(d,l)=>{if("thinking"===l.type)return{...l,stop_timestamp:d.stop_timestamp};if("tool_use"===l.type){var c;return{...l,buffered_input:null!=(c=d.buffered_input)?c:"{}"}}return l},getBlockDeadlineOffset(){if(l)return 3}})}},0x244aea38b:(d,l,c)=>{c.d(l,{Jb:()=>b,US:()=>t});var g=c(0x9845e38c),n=c(0x207db90c9),e=c(0x14c9db440);let G=null;function t(){return G}let b=(0,n.U)(I,g.u.O11Y_INTERNALS);async function I(d){let{datadogRum:l}=await c.e(93975).then(c.bind(c,0xfe6ab197));l.init(d),G=l,(0,e.L)().flush().close(),g.v.info(g.u.O11Y_INTERNALS,"[DatadogRUM] Initialized",{service:d.service,env:d.env,version:d.version})}}}]);