@hagicode/cli 0.1.0-dev.42.1.b13f8d2 → 0.1.0-dev.43.1.03d9a6a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -4
- package/dist/chunks/main-mvnmEVmb.js +201 -0
- package/dist/cli.js +1 -1
- package/dist/main.js +1 -1
- package/package.json +1 -1
- package/skills/README.md +1 -0
- package/skills/hagi/SKILL.md +14 -0
- package/skills/hagi/references/cli-usage.md +28 -4
- package/skills/hagi/references/resource-lock.md +135 -0
- package/dist/chunks/main-CGAPe6tb.js +0 -179
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
var ds=Object.create,tr=Object.defineProperty,us=Object.getOwnPropertyDescriptor,ms=Object.getOwnPropertyNames,bs=Object.getPrototypeOf,hs=Object.prototype.hasOwnProperty,Le=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),gs=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(var a=ms(t),r=0,i=a.length,s;r<i;r++)s=a[r],!hs.call(e,s)&&s!==n&&tr(e,s,{get:(l=>t[l]).bind(null,s),enumerable:!(o=us(t,s))||o.enumerable});return e},Gt=(e,t,n)=>(n=e!=null?ds(bs(e)):{},gs(t||!e||!e.__esModule?tr(n,"default",{value:e,enumerable:!0}):n,e));let yo=require("node:path"),Rn=require("node:fs"),As=require("node:os"),qe=require("node:zlib");qe=Gt(qe);let Mt=require("node:util"),Vn=require("node:http");Vn=Gt(Vn);let En=require("node:https");En=Gt(En);let be=require("node:http2");be=Gt(be);let ps=require("node:fs/promises");var Ot=Le((e=>{var t=class extends Error{constructor(o,a,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=a,this.exitCode=o,this.nestedError=void 0}},n=class extends t{constructor(o){super(1,"commander.invalidArgument",o),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};e.CommanderError=t,e.InvalidArgumentError=n})),Un=Le((e=>{var{InvalidArgumentError:t}=Ot(),n=class{constructor(a,r){switch(this.description=r||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,a[0]){case"<":this.required=!0,this._name=a.slice(1,-1);break;case"[":this.required=!1,this._name=a.slice(1,-1);break;default:this.required=!0,this._name=a;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(a,r){return r===this.defaultValue||!Array.isArray(r)?[a]:(r.push(a),r)}default(a,r){return this.defaultValue=a,this.defaultValueDescription=r,this}argParser(a){return this.parseArg=a,this}choices(a){return this.argChoices=a.slice(),this.parseArg=(r,i)=>{if(!this.argChoices.includes(r))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,i):r},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function o(a){const r=a.name()+(a.variadic===!0?"...":"");return a.required?"<"+r+">":"["+r+"]"}e.Argument=n,e.humanReadableArgName=o})),nr=Le((e=>{var{humanReadableArgName:t}=Un(),n=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(a){this.helpWidth=this.helpWidth??a.helpWidth??80}visibleCommands(a){const r=a.commands.filter(s=>!s._hidden),i=a._getHelpCommand();return i&&!i._hidden&&r.push(i),this.sortSubcommands&&r.sort((s,l)=>s.name().localeCompare(l.name())),r}compareOptions(a,r){const i=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return i(a).localeCompare(i(r))}visibleOptions(a){const r=a.options.filter(s=>!s.hidden),i=a._getHelpOption();if(i&&!i.hidden){const s=i.short&&a._findOption(i.short),l=i.long&&a._findOption(i.long);!s&&!l?r.push(i):i.long&&!l?r.push(a.createOption(i.long,i.description)):i.short&&!s&&r.push(a.createOption(i.short,i.description))}return this.sortOptions&&r.sort(this.compareOptions),r}visibleGlobalOptions(a){if(!this.showGlobalOptions)return[];const r=[];for(let i=a.parent;i;i=i.parent){const s=i.options.filter(l=>!l.hidden);r.push(...s)}return this.sortOptions&&r.sort(this.compareOptions),r}visibleArguments(a){return a._argsDescription&&a.registeredArguments.forEach(r=>{r.description=r.description||a._argsDescription[r.name()]||""}),a.registeredArguments.find(r=>r.description)?a.registeredArguments:[]}subcommandTerm(a){const r=a.registeredArguments.map(i=>t(i)).join(" ");return a._name+(a._aliases[0]?"|"+a._aliases[0]:"")+(a.options.length?" [options]":"")+(r?" "+r:"")}optionTerm(a){return a.flags}argumentTerm(a){return a.name()}longestSubcommandTermLength(a,r){return r.visibleCommands(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleSubcommandTerm(r.subcommandTerm(s)))),0)}longestOptionTermLength(a,r){return r.visibleOptions(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestGlobalOptionTermLength(a,r){return r.visibleGlobalOptions(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestArgumentTermLength(a,r){return r.visibleArguments(a).reduce((i,s)=>Math.max(i,this.displayWidth(r.styleArgumentTerm(r.argumentTerm(s)))),0)}commandUsage(a){let r=a._name;a._aliases[0]&&(r=r+"|"+a._aliases[0]);let i="";for(let s=a.parent;s;s=s.parent)i=s.name()+" "+i;return i+r+" "+a.usage()}commandDescription(a){return a.description()}subcommandDescription(a){return a.summary()||a.description()}optionDescription(a){const r=[];if(a.argChoices&&r.push(`choices: ${a.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),a.defaultValue!==void 0&&(a.required||a.optional||a.isBoolean()&&typeof a.defaultValue=="boolean")&&r.push(`default: ${a.defaultValueDescription||JSON.stringify(a.defaultValue)}`),a.presetArg!==void 0&&a.optional&&r.push(`preset: ${JSON.stringify(a.presetArg)}`),a.envVar!==void 0&&r.push(`env: ${a.envVar}`),r.length>0){const i=`(${r.join(", ")})`;return a.description?`${a.description} ${i}`:i}return a.description}argumentDescription(a){const r=[];if(a.argChoices&&r.push(`choices: ${a.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),a.defaultValue!==void 0&&r.push(`default: ${a.defaultValueDescription||JSON.stringify(a.defaultValue)}`),r.length>0){const i=`(${r.join(", ")})`;return a.description?`${a.description} ${i}`:i}return a.description}formatItemList(a,r,i){return r.length===0?[]:[i.styleTitle(a),...r,""]}groupItems(a,r,i){const s=new Map;return a.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[])}),r.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[]),s.get(c).push(l)}),s}formatHelp(a,r){const i=r.padWidth(a,r),s=r.helpWidth??80;function l(f,Z){return r.formatItem(f,i,Z,r)}let c=[`${r.styleTitle("Usage:")} ${r.styleUsage(r.commandUsage(a))}`,""];const u=r.commandDescription(a);u.length>0&&(c=c.concat([r.boxWrap(r.styleCommandDescription(u),s),""]));const h=r.visibleArguments(a).map(f=>l(r.styleArgumentTerm(r.argumentTerm(f)),r.styleArgumentDescription(r.argumentDescription(f))));if(c=c.concat(this.formatItemList("Arguments:",h,r)),this.groupItems(a.options,r.visibleOptions(a),f=>f.helpGroupHeading??"Options:").forEach((f,Z)=>{const E=f.map(G=>l(r.styleOptionTerm(r.optionTerm(G)),r.styleOptionDescription(r.optionDescription(G))));c=c.concat(this.formatItemList(Z,E,r))}),r.showGlobalOptions){const f=r.visibleGlobalOptions(a).map(Z=>l(r.styleOptionTerm(r.optionTerm(Z)),r.styleOptionDescription(r.optionDescription(Z))));c=c.concat(this.formatItemList("Global Options:",f,r))}return this.groupItems(a.commands,r.visibleCommands(a),f=>f.helpGroup()||"Commands:").forEach((f,Z)=>{const E=f.map(G=>l(r.styleSubcommandTerm(r.subcommandTerm(G)),r.styleSubcommandDescription(r.subcommandDescription(G))));c=c.concat(this.formatItemList(Z,E,r))}),c.join(`
|
|
2
|
+
`)}displayWidth(a){return o(a).length}styleTitle(a){return a}styleUsage(a){return a.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r==="[command]"?this.styleSubcommandText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleCommandText(r)).join(" ")}styleCommandDescription(a){return this.styleDescriptionText(a)}styleOptionDescription(a){return this.styleDescriptionText(a)}styleSubcommandDescription(a){return this.styleDescriptionText(a)}styleArgumentDescription(a){return this.styleDescriptionText(a)}styleDescriptionText(a){return a}styleOptionTerm(a){return this.styleOptionText(a)}styleSubcommandTerm(a){return a.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleSubcommandText(r)).join(" ")}styleArgumentTerm(a){return this.styleArgumentText(a)}styleOptionText(a){return a}styleArgumentText(a){return a}styleSubcommandText(a){return a}styleCommandText(a){return a}padWidth(a,r){return Math.max(r.longestOptionTermLength(a,r),r.longestGlobalOptionTermLength(a,r),r.longestSubcommandTermLength(a,r),r.longestArgumentTermLength(a,r))}preformatted(a){return/\n[^\S\r\n]/.test(a)}formatItem(a,r,i,s){const c=" ".repeat(2);if(!i)return c+a;const u=a.padEnd(r+a.length-s.displayWidth(a)),h=2,f=(this.helpWidth??80)-r-h-2;let Z;return f<this.minWidthToWrap||s.preformatted(i)?Z=i:Z=s.boxWrap(i,f).replace(/\n/g,`
|
|
3
|
+
`+" ".repeat(r+h)),c+u+" ".repeat(h)+Z.replace(/\n/g,`
|
|
4
|
+
${c}`)}boxWrap(a,r){if(r<this.minWidthToWrap)return a;const i=a.split(/\r\n|\n/),s=/[\s]*[^\s]+/g,l=[];return i.forEach(c=>{const u=c.match(s);if(u===null){l.push("");return}let h=[u.shift()],f=this.displayWidth(h[0]);u.forEach(Z=>{const E=this.displayWidth(Z);if(f+E<=r){h.push(Z),f+=E;return}l.push(h.join(""));const G=Z.trimStart();h=[G],f=this.displayWidth(G)}),l.push(h.join(""))}),l.join(`
|
|
5
|
+
`)}};function o(a){return a.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),or=Le((e=>{var{InvalidArgumentError:t}=Ot(),n=class{constructor(i,s){this.flags=i,this.description=s||"",this.required=i.includes("<"),this.optional=i.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(i),this.mandatory=!1;const l=r(i);this.short=l.shortFlag,this.long=l.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(i,s){return this.defaultValue=i,this.defaultValueDescription=s,this}preset(i){return this.presetArg=i,this}conflicts(i){return this.conflictsWith=this.conflictsWith.concat(i),this}implies(i){let s=i;return typeof i=="string"&&(s={[i]:!0}),this.implied=Object.assign(this.implied||{},s),this}env(i){return this.envVar=i,this}argParser(i){return this.parseArg=i,this}makeOptionMandatory(i=!0){return this.mandatory=!!i,this}hideHelp(i=!0){return this.hidden=!!i,this}_collectValue(i,s){return s===this.defaultValue||!Array.isArray(s)?[i]:(s.push(i),s)}choices(i){return this.argChoices=i.slice(),this.parseArg=(s,l)=>{if(!this.argChoices.includes(s))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(s,l):s},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?a(this.name().replace(/^no-/,"")):a(this.name())}helpGroup(i){return this.helpGroupHeading=i,this}is(i){return this.short===i||this.long===i}isBoolean(){return!this.required&&!this.optional&&!this.negate}},o=class{constructor(i){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,i.forEach(s=>{s.negate?this.negativeOptions.set(s.attributeName(),s):this.positiveOptions.set(s.attributeName(),s)}),this.negativeOptions.forEach((s,l)=>{this.positiveOptions.has(l)&&this.dualOptions.add(l)})}valueFromOption(i,s){const l=s.attributeName();if(!this.dualOptions.has(l))return!0;const c=this.negativeOptions.get(l).presetArg,u=c!==void 0?c:!1;return s.negate===(u===i)}};function a(i){return i.split("-").reduce((s,l)=>s+l[0].toUpperCase()+l.slice(1))}function r(i){let s,l;const c=/^-[^-]$/,u=/^--[^-]/,h=i.split(/[ |,]+/).concat("guard");if(c.test(h[0])&&(s=h.shift()),u.test(h[0])&&(l=h.shift()),!s&&c.test(h[0])&&(s=h.shift()),!s&&u.test(h[0])&&(s=l,l=h.shift()),h[0].startsWith("-")){const f=h[0],Z=`option creation failed due to '${f}' in option flags '${i}'`;throw/^-[^-][^-]/.test(f)?new Error(`${Z}
|
|
6
|
+
- a short flag is a single dash and a single character
|
|
7
|
+
- either use a single dash and a single character (for a short flag)
|
|
8
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):c.test(f)?new Error(`${Z}
|
|
9
|
+
- too many short flags`):u.test(f)?new Error(`${Z}
|
|
10
|
+
- too many long flags`):new Error(`${Z}
|
|
11
|
+
- unrecognised flag format`)}if(s===void 0&&l===void 0)throw new Error(`option creation failed due to no flags found in '${i}'.`);return{shortFlag:s,longFlag:l}}e.Option=n,e.DualOptions=o})),Zs=Le((e=>{var t=3;function n(a,r){if(Math.abs(a.length-r.length)>t)return Math.max(a.length,r.length);const i=[];for(let s=0;s<=a.length;s++)i[s]=[s];for(let s=0;s<=r.length;s++)i[0][s]=s;for(let s=1;s<=r.length;s++)for(let l=1;l<=a.length;l++){let c=1;a[l-1]===r[s-1]?c=0:c=1,i[l][s]=Math.min(i[l-1][s]+1,i[l][s-1]+1,i[l-1][s-1]+c),l>1&&s>1&&a[l-1]===r[s-2]&&a[l-2]===r[s-1]&&(i[l][s]=Math.min(i[l][s],i[l-2][s-2]+1))}return i[a.length][r.length]}function o(a,r){if(!r||r.length===0)return"";r=Array.from(new Set(r));const i=a.startsWith("--");i&&(a=a.slice(2),r=r.map(u=>u.slice(2)));let s=[],l=t;const c=.4;return r.forEach(u=>{if(u.length<=1)return;const h=n(a,u),f=Math.max(a.length,u.length);(f-h)/f>c&&(h<l?(l=h,s=[u]):h===l&&s.push(u))}),s.sort((u,h)=>u.localeCompare(h)),i&&(s=s.map(u=>`--${u}`)),s.length>1?`
|
|
12
|
+
(Did you mean one of ${s.join(", ")}?)`:s.length===1?`
|
|
13
|
+
(Did you mean ${s[0]}?)`:""}e.suggestSimilar=o})),fs=Le((e=>{var t=require("node:events").EventEmitter,n=require("node:child_process"),o=require("node:path"),a=require("node:fs"),r=require("node:process"),{Argument:i,humanReadableArgName:s}=Un(),{CommanderError:l}=Ot(),{Help:c,stripColor:u}=nr(),{Option:h,DualOptions:f}=or(),{suggestSimilar:Z}=Zs(),E=class ar extends t{constructor(d){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=d||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:m=>r.stdout.write(m),writeErr:m=>r.stderr.write(m),outputError:(m,A)=>A(m),getOutHelpWidth:()=>r.stdout.isTTY?r.stdout.columns:void 0,getErrHelpWidth:()=>r.stderr.isTTY?r.stderr.columns:void 0,getOutHasColors:()=>I()??(r.stdout.isTTY&&r.stdout.hasColors?.()),getErrHasColors:()=>I()??(r.stderr.isTTY&&r.stderr.hasColors?.()),stripColor:m=>u(m)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(d){return this._outputConfiguration=d._outputConfiguration,this._helpOption=d._helpOption,this._helpCommand=d._helpCommand,this._helpConfiguration=d._helpConfiguration,this._exitCallback=d._exitCallback,this._storeOptionsAsProperties=d._storeOptionsAsProperties,this._combineFlagAndOptionalValue=d._combineFlagAndOptionalValue,this._allowExcessArguments=d._allowExcessArguments,this._enablePositionalOptions=d._enablePositionalOptions,this._showHelpAfterError=d._showHelpAfterError,this._showSuggestionAfterError=d._showSuggestionAfterError,this}_getCommandAndAncestors(){const d=[];for(let m=this;m;m=m.parent)d.push(m);return d}command(d,m,A){let g=m,p=A;typeof g=="object"&&g!==null&&(p=g,g=null),p=p||{};const[,V,X]=d.match(/([^ ]+) *(.*)/),U=this.createCommand(V);return g&&(U.description(g),U._executableHandler=!0),p.isDefault&&(this._defaultCommandName=U._name),U._hidden=!!(p.noHelp||p.hidden),U._executableFile=p.executableFile||null,X&&U.arguments(X),this._registerCommand(U),U.parent=this,U.copyInheritedSettings(this),g?this:U}createCommand(d){return new ar(d)}createHelp(){return Object.assign(new c,this.configureHelp())}configureHelp(d){return d===void 0?this._helpConfiguration:(this._helpConfiguration=d,this)}configureOutput(d){return d===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...d},this)}showHelpAfterError(d=!0){return typeof d!="string"&&(d=!!d),this._showHelpAfterError=d,this}showSuggestionAfterError(d=!0){return this._showSuggestionAfterError=!!d,this}addCommand(d,m){if(!d._name)throw new Error(`Command passed to .addCommand() must have a name
|
|
14
|
+
- specify the name in Command constructor or using .name()`);return m=m||{},m.isDefault&&(this._defaultCommandName=d._name),(m.noHelp||m.hidden)&&(d._hidden=!0),this._registerCommand(d),d.parent=this,d._checkForBrokenPassThrough(),this}createArgument(d,m){return new i(d,m)}argument(d,m,A,g){const p=this.createArgument(d,m);return typeof A=="function"?p.default(g).argParser(A):p.default(A),this.addArgument(p),this}arguments(d){return d.trim().split(/ +/).forEach(m=>{this.argument(m)}),this}addArgument(d){const m=this.registeredArguments.slice(-1)[0];if(m?.variadic)throw new Error(`only the last argument can be variadic '${m.name()}'`);if(d.required&&d.defaultValue!==void 0&&d.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${d.name()}'`);return this.registeredArguments.push(d),this}helpCommand(d,m){if(typeof d=="boolean")return this._addImplicitHelpCommand=d,d&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;const[,A,g]=(d??"help [command]").match(/([^ ]+) *(.*)/),p=m??"display help for command",V=this.createCommand(A);return V.helpOption(!1),g&&V.arguments(g),p&&V.description(p),this._addImplicitHelpCommand=!0,this._helpCommand=V,(d||m)&&this._initCommandGroup(V),this}addHelpCommand(d,m){return typeof d!="object"?(this.helpCommand(d,m),this):(this._addImplicitHelpCommand=!0,this._helpCommand=d,this._initCommandGroup(d),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(d,m){const A=["preSubcommand","preAction","postAction"];if(!A.includes(d))throw new Error(`Unexpected value for event passed to hook : '${d}'.
|
|
15
|
+
Expecting one of '${A.join("', '")}'`);return this._lifeCycleHooks[d]?this._lifeCycleHooks[d].push(m):this._lifeCycleHooks[d]=[m],this}exitOverride(d){return d?this._exitCallback=d:this._exitCallback=m=>{if(m.code!=="commander.executeSubCommandAsync")throw m},this}_exit(d,m,A){this._exitCallback&&this._exitCallback(new l(d,m,A)),r.exit(d)}action(d){const m=A=>{const g=this.registeredArguments.length,p=A.slice(0,g);return this._storeOptionsAsProperties?p[g]=this:p[g]=this.opts(),p.push(this),d.apply(this,p)};return this._actionHandler=m,this}createOption(d,m){return new h(d,m)}_callParseArg(d,m,A,g){try{return d.parseArg(m,A)}catch(p){if(p.code==="commander.invalidArgument"){const V=`${g} ${p.message}`;this.error(V,{exitCode:p.exitCode,code:p.code})}throw p}}_registerOption(d){const m=d.short&&this._findOption(d.short)||d.long&&this._findOption(d.long);if(m){const A=d.long&&this._findOption(d.long)?d.long:d.short;throw new Error(`Cannot add option '${d.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${A}'
|
|
16
|
+
- already used by option '${m.flags}'`)}this._initOptionGroup(d),this.options.push(d)}_registerCommand(d){const m=g=>[g.name()].concat(g.aliases()),A=m(d).find(g=>this._findCommand(g));if(A){const g=m(this._findCommand(A)).join("|"),p=m(d).join("|");throw new Error(`cannot add command '${p}' as already have command '${g}'`)}this._initCommandGroup(d),this.commands.push(d)}addOption(d){this._registerOption(d);const m=d.name(),A=d.attributeName();if(d.negate){const p=d.long.replace(/^--no-/,"--");this._findOption(p)||this.setOptionValueWithSource(A,d.defaultValue===void 0?!0:d.defaultValue,"default")}else d.defaultValue!==void 0&&this.setOptionValueWithSource(A,d.defaultValue,"default");const g=(p,V,X)=>{p==null&&d.presetArg!==void 0&&(p=d.presetArg);const U=this.getOptionValue(A);p!==null&&d.parseArg?p=this._callParseArg(d,p,U,V):p!==null&&d.variadic&&(p=d._collectValue(p,U)),p==null&&(d.negate?p=!1:d.isBoolean()||d.optional?p=!0:p=""),this.setOptionValueWithSource(A,p,X)};return this.on("option:"+m,p=>{g(p,`error: option '${d.flags}' argument '${p}' is invalid.`,"cli")}),d.envVar&&this.on("optionEnv:"+m,p=>{g(p,`error: option '${d.flags}' value '${p}' from env '${d.envVar}' is invalid.`,"env")}),this}_optionEx(d,m,A,g,p){if(typeof m=="object"&&m instanceof h)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");const V=this.createOption(m,A);if(V.makeOptionMandatory(!!d.mandatory),typeof g=="function")V.default(p).argParser(g);else if(g instanceof RegExp){const X=g;g=(U,H)=>{const B=X.exec(U);return B?B[0]:H},V.default(p).argParser(g)}else V.default(g);return this.addOption(V)}option(d,m,A,g){return this._optionEx({},d,m,A,g)}requiredOption(d,m,A,g){return this._optionEx({mandatory:!0},d,m,A,g)}combineFlagAndOptionalValue(d=!0){return this._combineFlagAndOptionalValue=!!d,this}allowUnknownOption(d=!0){return this._allowUnknownOption=!!d,this}allowExcessArguments(d=!0){return this._allowExcessArguments=!!d,this}enablePositionalOptions(d=!0){return this._enablePositionalOptions=!!d,this}passThroughOptions(d=!0){return this._passThroughOptions=!!d,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(d=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!d,this}getOptionValue(d){return this._storeOptionsAsProperties?this[d]:this._optionValues[d]}setOptionValue(d,m){return this.setOptionValueWithSource(d,m,void 0)}setOptionValueWithSource(d,m,A){return this._storeOptionsAsProperties?this[d]=m:this._optionValues[d]=m,this._optionValueSources[d]=A,this}getOptionValueSource(d){return this._optionValueSources[d]}getOptionValueSourceWithGlobals(d){let m;return this._getCommandAndAncestors().forEach(A=>{A.getOptionValueSource(d)!==void 0&&(m=A.getOptionValueSource(d))}),m}_prepareUserArgs(d,m){if(d!==void 0&&!Array.isArray(d))throw new Error("first parameter to parse must be array or undefined");if(m=m||{},d===void 0&&m.from===void 0){r.versions?.electron&&(m.from="electron");const g=r.execArgv??[];(g.includes("-e")||g.includes("--eval")||g.includes("-p")||g.includes("--print"))&&(m.from="eval")}d===void 0&&(d=r.argv),this.rawArgs=d.slice();let A;switch(m.from){case void 0:case"node":this._scriptPath=d[1],A=d.slice(2);break;case"electron":r.defaultApp?(this._scriptPath=d[1],A=d.slice(2)):A=d.slice(1);break;case"user":A=d.slice(0);break;case"eval":A=d.slice(1);break;default:throw new Error(`unexpected parse option { from: '${m.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",A}parse(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return this._parseCommand([],A),this}async parseAsync(d,m){this._prepareForParse();const A=this._prepareUserArgs(d,m);return await this._parseCommand([],A),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
17
|
+
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(d,m,A){if(a.existsSync(d))return;const g=`'${d}' does not exist
|
|
18
|
+
- if '${A}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
19
|
+
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
20
|
+
- ${m?`searched for local subcommand relative to directory '${m}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory"}`;throw new Error(g)}_executeSubCommand(d,m){m=m.slice();let A=!1;const g=[".js",".ts",".tsx",".mjs",".cjs"];function p(B,x){const D=o.resolve(B,x);if(a.existsSync(D))return D;if(g.includes(o.extname(x)))return;const Xo=g.find(cs=>a.existsSync(`${D}${cs}`));if(Xo)return`${D}${Xo}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let V=d._executableFile||`${this._name}-${d._name}`,X=this._executableDir||"";if(this._scriptPath){let B;try{B=a.realpathSync(this._scriptPath)}catch{B=this._scriptPath}X=o.resolve(o.dirname(B),X)}if(X){let B=p(X,V);if(!B&&!d._executableFile&&this._scriptPath){const x=o.basename(this._scriptPath,o.extname(this._scriptPath));x!==this._name&&(B=p(X,`${x}-${d._name}`))}V=B||V}A=g.includes(o.extname(V));let U;r.platform!=="win32"?A?(m.unshift(V),m=G(r.execArgv).concat(m),U=n.spawn(r.argv[0],m,{stdio:"inherit"})):U=n.spawn(V,m,{stdio:"inherit"}):(this._checkForMissingExecutable(V,X,d._name),m.unshift(V),m=G(r.execArgv).concat(m),U=n.spawn(r.execPath,m,{stdio:"inherit"})),U.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(B=>{r.on(B,()=>{U.killed===!1&&U.exitCode===null&&U.kill(B)})});const H=this._exitCallback;U.on("close",B=>{B=B??1,H?H(new l(B,"commander.executeSubCommandAsync","(close)")):r.exit(B)}),U.on("error",B=>{if(B.code==="ENOENT")this._checkForMissingExecutable(V,X,d._name);else if(B.code==="EACCES")throw new Error(`'${V}' not executable`);if(!H)r.exit(1);else{const x=new l(1,"commander.executeSubCommandAsync","(error)");x.nestedError=B,H(x)}}),this.runningCommand=U}_dispatchSubcommand(d,m,A){const g=this._findCommand(d);g||this.help({error:!0}),g._prepareForParse();let p;return p=this._chainOrCallSubCommandHook(p,g,"preSubcommand"),p=this._chainOrCall(p,()=>{if(g._executableHandler)this._executeSubCommand(g,m.concat(A));else return g._parseCommand(m,A)}),p}_dispatchHelpCommand(d){d||this.help();const m=this._findCommand(d);return m&&!m._executableHandler&&m.help(),this._dispatchSubcommand(d,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((d,m)=>{d.required&&this.args[m]==null&&this.missingArgument(d.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){const d=(A,g,p)=>{let V=g;if(g!==null&&A.parseArg){const X=`error: command-argument value '${g}' is invalid for argument '${A.name()}'.`;V=this._callParseArg(A,g,p,X)}return V};this._checkNumberOfArguments();const m=[];this.registeredArguments.forEach((A,g)=>{let p=A.defaultValue;A.variadic?g<this.args.length?(p=this.args.slice(g),A.parseArg&&(p=p.reduce((V,X)=>d(A,X,V),A.defaultValue))):p===void 0&&(p=[]):g<this.args.length&&(p=this.args[g],A.parseArg&&(p=d(A,p,A.defaultValue))),m[g]=p}),this.processedArgs=m}_chainOrCall(d,m){return d?.then&&typeof d.then=="function"?d.then(()=>m()):m()}_chainOrCallHooks(d,m){let A=d;const g=[];return this._getCommandAndAncestors().reverse().filter(p=>p._lifeCycleHooks[m]!==void 0).forEach(p=>{p._lifeCycleHooks[m].forEach(V=>{g.push({hookedCommand:p,callback:V})})}),m==="postAction"&&g.reverse(),g.forEach(p=>{A=this._chainOrCall(A,()=>p.callback(p.hookedCommand,this))}),A}_chainOrCallSubCommandHook(d,m,A){let g=d;return this._lifeCycleHooks[A]!==void 0&&this._lifeCycleHooks[A].forEach(p=>{g=this._chainOrCall(g,()=>p(this,m))}),g}_parseCommand(d,m){const A=this.parseOptions(m);if(this._parseOptionsEnv(),this._parseOptionsImplied(),d=d.concat(A.operands),m=A.unknown,this.args=d.concat(m),d&&this._findCommand(d[0]))return this._dispatchSubcommand(d[0],d.slice(1),m);if(this._getHelpCommand()&&d[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(d[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(m),this._dispatchSubcommand(this._defaultCommandName,d,m);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(A.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();const g=()=>{A.unknown.length>0&&this.unknownOption(A.unknown[0])},p=`command:${this.name()}`;if(this._actionHandler){g(),this._processArguments();let V;return V=this._chainOrCallHooks(V,"preAction"),V=this._chainOrCall(V,()=>this._actionHandler(this.processedArgs)),this.parent&&(V=this._chainOrCall(V,()=>{this.parent.emit(p,d,m)})),V=this._chainOrCallHooks(V,"postAction"),V}if(this.parent?.listenerCount(p))g(),this._processArguments(),this.parent.emit(p,d,m);else if(d.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",d,m);this.listenerCount("command:*")?this.emit("command:*",d,m):this.commands.length?this.unknownCommand():(g(),this._processArguments())}else this.commands.length?(g(),this.help({error:!0})):(g(),this._processArguments())}_findCommand(d){if(d)return this.commands.find(m=>m._name===d||m._aliases.includes(d))}_findOption(d){return this.options.find(m=>m.is(d))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(d=>{d.options.forEach(m=>{m.mandatory&&d.getOptionValue(m.attributeName())===void 0&&d.missingMandatoryOptionValue(m)})})}_checkForConflictingLocalOptions(){const d=this.options.filter(m=>{const A=m.attributeName();return this.getOptionValue(A)===void 0?!1:this.getOptionValueSource(A)!=="default"});d.filter(m=>m.conflictsWith.length>0).forEach(m=>{const A=d.find(g=>m.conflictsWith.includes(g.attributeName()));A&&this._conflictingOption(m,A)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(d=>{d._checkForConflictingLocalOptions()})}parseOptions(d){const m=[],A=[];let g=m;function p(B){return B.length>1&&B[0]==="-"}const V=B=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(B)?!this._getCommandAndAncestors().some(x=>x.options.map(D=>D.short).some(D=>/^-\d$/.test(D))):!1;let X=null,U=null,H=0;for(;H<d.length||U;){const B=U??d[H++];if(U=null,B==="--"){g===A&&g.push(B),g.push(...d.slice(H));break}if(X&&(!p(B)||V(B))){this.emit(`option:${X.name()}`,B);continue}if(X=null,p(B)){const x=this._findOption(B);if(x){if(x.required){const D=d[H++];D===void 0&&this.optionMissingArgument(x),this.emit(`option:${x.name()}`,D)}else if(x.optional){let D=null;H<d.length&&(!p(d[H])||V(d[H]))&&(D=d[H++]),this.emit(`option:${x.name()}`,D)}else this.emit(`option:${x.name()}`);X=x.variadic?x:null;continue}}if(B.length>2&&B[0]==="-"&&B[1]!=="-"){const x=this._findOption(`-${B[1]}`);if(x){x.required||x.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${x.name()}`,B.slice(2)):(this.emit(`option:${x.name()}`),U=`-${B.slice(2)}`);continue}}if(/^--[^=]+=/.test(B)){const x=B.indexOf("="),D=this._findOption(B.slice(0,x));if(D&&(D.required||D.optional)){this.emit(`option:${D.name()}`,B.slice(x+1));continue}}if(g===m&&p(B)&&!(this.commands.length===0&&V(B))&&(g=A),(this._enablePositionalOptions||this._passThroughOptions)&&m.length===0&&A.length===0){if(this._findCommand(B)){m.push(B),A.push(...d.slice(H));break}else if(this._getHelpCommand()&&B===this._getHelpCommand().name()){m.push(B,...d.slice(H));break}else if(this._defaultCommandName){A.push(B,...d.slice(H));break}}if(this._passThroughOptions){g.push(B,...d.slice(H));break}g.push(B)}return{operands:m,unknown:A}}opts(){if(this._storeOptionsAsProperties){const d={},m=this.options.length;for(let A=0;A<m;A++){const g=this.options[A].attributeName();d[g]=g===this._versionOptionName?this._version:this[g]}return d}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((d,m)=>Object.assign(d,m.opts()),{})}error(d,m){this._outputConfiguration.outputError(`${d}
|
|
21
|
+
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
22
|
+
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
23
|
+
`),this.outputHelp({error:!0}));const A=m||{},g=A.exitCode||1,p=A.code||"commander.error";this._exit(g,p,d)}_parseOptionsEnv(){this.options.forEach(d=>{if(d.envVar&&d.envVar in r.env){const m=d.attributeName();(this.getOptionValue(m)===void 0||["default","config","env"].includes(this.getOptionValueSource(m)))&&(d.required||d.optional?this.emit(`optionEnv:${d.name()}`,r.env[d.envVar]):this.emit(`optionEnv:${d.name()}`))}})}_parseOptionsImplied(){const d=new f(this.options),m=A=>this.getOptionValue(A)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(A));this.options.filter(A=>A.implied!==void 0&&m(A.attributeName())&&d.valueFromOption(this.getOptionValue(A.attributeName()),A)).forEach(A=>{Object.keys(A.implied).filter(g=>!m(g)).forEach(g=>{this.setOptionValueWithSource(g,A.implied[g],"implied")})})}missingArgument(d){const m=`error: missing required argument '${d}'`;this.error(m,{code:"commander.missingArgument"})}optionMissingArgument(d){const m=`error: option '${d.flags}' argument missing`;this.error(m,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(d){const m=`error: required option '${d.flags}' not specified`;this.error(m,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(d,m){const A=V=>{const X=V.attributeName(),U=this.getOptionValue(X),H=this.options.find(x=>x.negate&&X===x.attributeName()),B=this.options.find(x=>!x.negate&&X===x.attributeName());return H&&(H.presetArg===void 0&&U===!1||H.presetArg!==void 0&&U===H.presetArg)?H:B||V},g=V=>{const X=A(V),U=X.attributeName();return this.getOptionValueSource(U)==="env"?`environment variable '${X.envVar}'`:`option '${X.flags}'`},p=`error: ${g(d)} cannot be used with ${g(m)}`;this.error(p,{code:"commander.conflictingOption"})}unknownOption(d){if(this._allowUnknownOption)return;let m="";if(d.startsWith("--")&&this._showSuggestionAfterError){let g=[],p=this;do{const V=p.createHelp().visibleOptions(p).filter(X=>X.long).map(X=>X.long);g=g.concat(V),p=p.parent}while(p&&!p._enablePositionalOptions);m=Z(d,g)}const A=`error: unknown option '${d}'${m}`;this.error(A,{code:"commander.unknownOption"})}_excessArguments(d){if(this._allowExcessArguments)return;const m=this.registeredArguments.length,A=m===1?"":"s",g=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${m} argument${A} but got ${d.length}.`;this.error(g,{code:"commander.excessArguments"})}unknownCommand(){const d=this.args[0];let m="";if(this._showSuggestionAfterError){const g=[];this.createHelp().visibleCommands(this).forEach(p=>{g.push(p.name()),p.alias()&&g.push(p.alias())}),m=Z(d,g)}const A=`error: unknown command '${d}'${m}`;this.error(A,{code:"commander.unknownCommand"})}version(d,m,A){if(d===void 0)return this._version;this._version=d,m=m||"-V, --version",A=A||"output the version number";const g=this.createOption(m,A);return this._versionOptionName=g.attributeName(),this._registerOption(g),this.on("option:"+g.name(),()=>{this._outputConfiguration.writeOut(`${d}
|
|
24
|
+
`),this._exit(0,"commander.version",d)}),this}description(d,m){return d===void 0&&m===void 0?this._description:(this._description=d,m&&(this._argsDescription=m),this)}summary(d){return d===void 0?this._summary:(this._summary=d,this)}alias(d){if(d===void 0)return this._aliases[0];let m=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(m=this.commands[this.commands.length-1]),d===m._name)throw new Error("Command alias can't be the same as its name");const A=this.parent?._findCommand(d);if(A){const g=[A.name()].concat(A.aliases()).join("|");throw new Error(`cannot add alias '${d}' to command '${this.name()}' as already have command '${g}'`)}return m._aliases.push(d),this}aliases(d){return d===void 0?this._aliases:(d.forEach(m=>this.alias(m)),this)}usage(d){if(d===void 0){if(this._usage)return this._usage;const m=this.registeredArguments.map(A=>s(A));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?m:[]).join(" ")}return this._usage=d,this}name(d){return d===void 0?this._name:(this._name=d,this)}helpGroup(d){return d===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=d,this)}commandsGroup(d){return d===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=d,this)}optionsGroup(d){return d===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=d,this)}_initOptionGroup(d){this._defaultOptionGroup&&!d.helpGroupHeading&&d.helpGroup(this._defaultOptionGroup)}_initCommandGroup(d){this._defaultCommandGroup&&!d.helpGroup()&&d.helpGroup(this._defaultCommandGroup)}nameFromFilename(d){return this._name=o.basename(d,o.extname(d)),this}executableDir(d){return d===void 0?this._executableDir:(this._executableDir=d,this)}helpInformation(d){const m=this.createHelp(),A=this._getOutputContext(d);m.prepareContext({error:A.error,helpWidth:A.helpWidth,outputHasColors:A.hasColors});const g=m.formatHelp(this,m);return A.hasColors?g:this._outputConfiguration.stripColor(g)}_getOutputContext(d){d=d||{};const m=!!d.error;let A,g,p;return m?(A=X=>this._outputConfiguration.writeErr(X),g=this._outputConfiguration.getErrHasColors(),p=this._outputConfiguration.getErrHelpWidth()):(A=X=>this._outputConfiguration.writeOut(X),g=this._outputConfiguration.getOutHasColors(),p=this._outputConfiguration.getOutHelpWidth()),{error:m,write:X=>(g||(X=this._outputConfiguration.stripColor(X)),A(X)),hasColors:g,helpWidth:p}}outputHelp(d){let m;typeof d=="function"&&(m=d,d=void 0);const A=this._getOutputContext(d),g={error:A.error,write:A.write,command:this};this._getCommandAndAncestors().reverse().forEach(V=>V.emit("beforeAllHelp",g)),this.emit("beforeHelp",g);let p=this.helpInformation({error:A.error});if(m&&(p=m(p),typeof p!="string"&&!Buffer.isBuffer(p)))throw new Error("outputHelp callback must return a string or a Buffer");A.write(p),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",g),this._getCommandAndAncestors().forEach(V=>V.emit("afterAllHelp",g))}helpOption(d,m){return typeof d=="boolean"?(d?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(d??"-h, --help",m??"display help for command"),(d||m)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(d){return this._helpOption=d,this._initOptionGroup(d),this}help(d){this.outputHelp(d);let m=Number(r.exitCode??0);m===0&&d&&typeof d!="function"&&d.error&&(m=1),this._exit(m,"commander.help","(outputHelp)")}addHelpText(d,m){const A=["beforeAll","before","after","afterAll"];if(!A.includes(d))throw new Error(`Unexpected value for position to addHelpText.
|
|
25
|
+
Expecting one of '${A.join("', '")}'`);const g=`${d}Help`;return this.on(g,p=>{let V;typeof m=="function"?V=m({error:p.error,command:p.command}):V=m,V&&p.write(`${V}
|
|
26
|
+
`)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(A=>m.is(A))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function G(k){return k.map(d=>{if(!d.startsWith("--inspect"))return d;let m,A="127.0.0.1",g="9229",p;return(p=d.match(/^(--inspect(-brk)?)$/))!==null?m=p[1]:(p=d.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(m=p[1],/^\d+$/.test(p[3])?g=p[3]:A=p[3]):(p=d.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(m=p[1],A=p[3],g=p[4]),m&&g!=="0"?`${m}=${A}:${parseInt(g)+1}`:d})}function I(){if(r.env.NO_COLOR||r.env.FORCE_COLOR==="0"||r.env.FORCE_COLOR==="false")return!1;if(r.env.FORCE_COLOR||r.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=E,e.useColor=I})),Rs=Le((e=>{var{Argument:t}=Un(),{Command:n}=fs(),{CommanderError:o,InvalidArgumentError:a}=Ot(),{Help:r}=nr(),{Option:i}=or();e.program=new n,e.createCommand=s=>new n(s),e.createOption=(s,l)=>new i(s,l),e.createArgument=(s,l)=>new t(s,l),e.Command=n,e.Option=i,e.Argument=t,e.Help=r,e.CommanderError=o,e.InvalidArgumentError=a,e.InvalidOptionArgumentError=a})),Vs=Gt(Rs(),1),{program:xA,createCommand:KA,createArgument:zA,createOption:LA,CommanderError:Es,InvalidArgumentError:jA,InvalidOptionArgumentError:HA,Command:Gs,Argument:TA,Option:ge,Help:QA}=Vs.default;function rr(e){return e.replace(/\s+/g," ").trim()}function te(e,t){const n=t.map(r=>e.map(i=>rr(i.value(r)))),o=e.map((r,i)=>{const s=n.map(l=>l[i].length);return Math.max(r.header.length,...s)}),a=r=>r.map((i,s)=>i.padEnd(o[s])).join(" ").trimEnd();return[a(e.map(r=>r.header)),a(o.map(r=>"-".repeat(r))),...n.map(a)].join(`
|
|
27
|
+
`)}function O(e){const t=e.filter(([,o])=>o!==void 0&&o!==""),n=Math.max(...t.map(([o])=>o.length));return`${t.map(([o,a])=>`${o.padEnd(n)} ${rr(a??"")}`).join(`
|
|
28
|
+
`)}
|
|
29
|
+
`}function Ns(e){const t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),o=Math.floor(t%3600/60);return n>0?`${n}h ${o}m`:o>0?`${o}m ${t%60}s`:`${t}s`}function _e(e,t){if(!e)return;if(!t)return e;const n=Date.parse(e)-Date.parse(t);return Number.isNaN(n)?e:`${e} (${n>=0?"in":"ago"} ${Ns(Math.abs(n))})`}function St(e,t){if(!e)return;const n=_e(e.earliestAt,t),o=_e(e.latestAt,t);return n&&o?`between ${n} and ${o}`:n?`from ${n}`:o?`by ${o}`:void 0}function ir(e){return e.holder?`${e.holder.ownerId}${e.holder.label?` (${e.holder.label})`:""}`:void 0}function Bo(e){return`--lock-id ${e.lockId} --owner ${e.ownerId}`}function et(e,t="status"){const n=e.serverTime,o=`Lock ${e.lockId}: ${e.status} as ${e.ownerId} (myTurn: ${e.myTurn?"yes":"no"})`;if(e.status==="Holding"){const a=[o,O([["Epoch",String(e.epoch)],["Valid until",_e(e.leaseExpiresAt,n)?`${_e(e.leaseExpiresAt,n)} unless a heartbeat renews it`:void 0],["Hard cap",_e(e.maxHoldExpiresAt,n)?`${_e(e.maxHoldExpiresAt,n)}; the lock is taken back then even with heartbeats`:void 0],["Check in",St(e.checkInWindow,n)],["Queue length",e.queueLength>0?String(e.queueLength):void 0]]).trimEnd(),`Next: start the heartbeat watcher before any work: hagi agent lock heartbeat ${Bo(e)} --epoch ${e.epoch}`];return t==="acquire"&&a.push("If you acquired this lock before, that first acquire is still valid: same epoch, the hard cap did not restart and the lease was not refreshed. Only the heartbeat renews the lease."),`${a.join(`
|
|
30
|
+
`)}
|
|
31
|
+
`}if(e.status==="Queued")return[o,O([["Position",`${e.position} of ${e.queueLength}`],["Held by",ir(e)],["Check in",St(e.checkInWindow,n)],["Your turn",St(e.turnWindow,n)?`${St(e.turnWindow,n)} (a bound, usually much sooner)`:void 0],["Poll interval",e.suggestedPollIntervalMs>0?`${e.suggestedPollIntervalMs/1e3}s`:void 0]]).trimEnd(),`Next: wait with a continuous watcher, do not sleep and re-check: hagi agent lock acquire ${Bo(e)} --wait`].join(`
|
|
32
|
+
`)+`
|
|
33
|
+
`;if(e.status==="Requisitioned"){const a=e.requisition;return`${o}
|
|
34
|
+
Requisitioned by ${a?.byOwnerId??"another owner"}${a?.at?` at ${a.at}`:""}, reason: ${a?.reason??"not given"}.
|
|
35
|
+
Stop using the resource now. Queue again only if your task still needs it, and never requisition it back.
|
|
36
|
+
`}return e.status==="Expired"?`${o}
|
|
37
|
+
Your hold or queue entry has ended (lease or claim window ran out, hard cap passed, or the entry was dropped). Stop using the resource. Acquire again to queue at the back.
|
|
38
|
+
`:`${o}
|
|
39
|
+
The backend has no hold or queue entry for this owner. Acquire to queue.
|
|
40
|
+
`}function Ws(e){const t=ir(e);return`Lock ${e.lockId}: still queued, position ${e.position} of ${e.queueLength}${t?`, held by ${t}`:""}.
|
|
41
|
+
`}function Ss(e,t){switch(e.outcome){case"timeout":return`Timed out after ${e.elapsedSeconds}s waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
|
|
42
|
+
`;case"cancelled":return`Interrupted while waiting for lock ${e.status.lockId}; ${t?"the queue entry was released.":"the queue entry could not be released and will expire on its own."}
|
|
43
|
+
`;case"lost":return`The backend dropped the queue entry for lock ${e.status.lockId} (${e.status.status}). Acquire again to queue at the back.
|
|
44
|
+
`;default:return""}}function vs(e){const t=e.holderOwnerId?`held by ${e.holderOwnerId}`:"free",n=`owner ${e.ownerId} on lock ${e.lockId}`;return e.released?`Released ${e.previousStatus==="Holding"?"the lock":"the queue entry"} of ${n}. The lock is now ${t}.
|
|
45
|
+
`:`Nothing to release for ${n} (it was ${e.previousStatus}). The lock is ${t}.
|
|
46
|
+
`}function Ys(e){return e.length===0?`No busy locks.
|
|
47
|
+
`:`Locks (${e.length})
|
|
48
|
+
${te([{header:"LOCK",value:t=>t.lockId},{header:"HOLDER",value:t=>t.holderOwnerId??"-"},{header:"LABEL",value:t=>t.holderLabel??""},{header:"EPOCH",value:t=>String(t.epoch)},{header:"LEASE EXPIRES",value:t=>t.leaseExpiresAt??""},{header:"QUEUE",value:t=>String(t.queueLength)}],e)}
|
|
49
|
+
`}function S(e){return`${JSON.stringify(e,null,2)}
|
|
50
|
+
`}var R;(function(e){e[e.Canceled=1]="Canceled",e[e.Unknown=2]="Unknown",e[e.InvalidArgument=3]="InvalidArgument",e[e.DeadlineExceeded=4]="DeadlineExceeded",e[e.NotFound=5]="NotFound",e[e.AlreadyExists=6]="AlreadyExists",e[e.PermissionDenied=7]="PermissionDenied",e[e.ResourceExhausted=8]="ResourceExhausted",e[e.FailedPrecondition=9]="FailedPrecondition",e[e.Aborted=10]="Aborted",e[e.OutOfRange=11]="OutOfRange",e[e.Unimplemented=12]="Unimplemented",e[e.Internal=13]="Internal",e[e.Unavailable=14]="Unavailable",e[e.DataLoss=15]="DataLoss",e[e.Unauthenticated=16]="Unauthenticated"})(R||(R={}));function Jn(e,t){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?t===void 0?!0:t.typeName===e.$typeName:!1}var b;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(b||(b={}));function Is(){const e=this.buf;let t=this.pos,n=0,o=0;for(let r=0;r<28;r+=7){const i=e[t++];if(n|=(i&127)<<r,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const a=e[t++];if(n|=(a&15)<<28,o=(a&112)>>4,(a&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let r=3;r<=31;r+=7){const i=e[t++];if(o|=(i&127)<<r,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var wt=4294967296;function Co(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,a=0;function r(i,s){const l=Number(e.slice(i,s));a*=n,o=o*n+l,o>=wt&&(a=a+(o/wt|0),o=o%wt)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),t?lr(o,a):xn(o,a)}function Xs(e,t){let n=xn(e,t);const o=n.hi&2147483648;o&&(n=lr(n.lo,n.hi));const a=sr(n.lo,n.hi);return o?"-"+a:a}function sr(e,t){if({lo:e,hi:t}=ys(e,t),t<=2097151)return String(wt*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,a=t>>16&65535;let r=n+o*6777216+a*6710656,i=o+a*8147497,s=a*2;const l=1e7;return r>=l&&(i+=Math.floor(r/l),r%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+Fo(i)+Fo(r)}function ys(e,t){return{lo:e>>>0,hi:t>>>0}}function xn(e,t){return{lo:e|0,hi:t|0}}function lr(e,t){return t=~t,e?e=~e+1:t+=1,xn(e,t)}var Fo=e=>{const t=String(e);return"0000000".slice(t.length)+t};function Bs(e,t){if(e>>>0<128){t.push(e);return}if(e>=0){for(;e>127;)t.push(e&127|128),e=e>>>7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e=e>>7;t.push(1)}}function Cs(){let e=this.buf[this.pos++];if((e&128)===0)return this.assertBounds(),e;let t=e&127;if(e=this.buf[this.pos++],t|=(e&127)<<7,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<14,(e&128)===0)return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(e&127)<<21,(e&128)===0)return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let n=5;(e&128)!==0&&n<10;n++)e=this.buf[this.pos++];if((e&128)!==0)throw new Error("invalid varint");return this.assertBounds(),t>>>0}var z=Fs();function Fs(){const e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(globalThis.Deno||globalThis.Bun||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const t=BigInt("-9223372036854775808"),n=BigInt("9223372036854775807"),o=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(r){const i=typeof r=="bigint"?r:BigInt(r);if(i>n||i<t)throw new Error(`invalid int64: ${r}`);return i},uParse(r){const i=typeof r=="bigint"?r:BigInt(r);if(i>a||i<o)throw new Error(`invalid uint64: ${r}`);return i},enc(r){return e.setBigInt64(0,this.parse(r),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(r){return e.setBigInt64(0,this.uParse(r),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(r,i){return e.setInt32(0,r,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(r,i){return e.setInt32(0,r,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),wo(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),ko(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),wo(t),Co(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),ko(t),Co(t)},dec(t,n){return Xs(t,n)},uDec(t,n){return sr(t,n)}}}function wo(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function ko(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function We(e,t){switch(e){case b.STRING:return"";case b.BOOL:return!1;case b.DOUBLE:case b.FLOAT:return 0;case b.INT64:case b.UINT64:case b.SFIXED64:case b.FIXED64:case b.SINT64:return t?"0":z.zero;case b.BYTES:return new Uint8Array(0);default:return 0}}function ws(e,t){switch(e){case b.BOOL:return t===!1;case b.STRING:return t==="";case b.BYTES:return t instanceof Uint8Array&&!t.byteLength;case b.DOUBLE:case b.FLOAT:return Object.is(t,0);default:return t==0}}var cr=2,ie=Symbol.for("reflect unsafe local");function ks(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function Us(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=cr)return e[n]!==void 0&&Object.prototype.hasOwnProperty.call(e,n);switch(t.fieldKind){case"list":return e[n].length>0;case"map":return Object.keys(e[n]).length>0;case"scalar":return!ws(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function pt(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function Js(e,t){if(t.oneof){const n=e[t.oneof.localName];return n.case===t.localName?n.value:void 0}return e[t.localName]}function xs(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function ue(e,t,n){t==="__proto__"?Object.defineProperty(e,"__proto__",{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function Ks(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function zs(e,t){const n=t.localName;if(t.oneof){const o=t.oneof.localName;e[o].case===n&&(e[o]={case:void 0})}else if(t.presence!=cr)delete e[n];else switch(t.fieldKind){case"map":e[n]={};break;case"list":e[n]=[];break;case"enum":e[n]=t.enum.values[0].number;break;case"scalar":e[n]=We(t.scalar,t.longAsString);break}}function Ce(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Kn(e,t){var n,o,a,r;if(Ce(e)&&ie in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.listKind==s.listKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((a=i.enum)===null||a===void 0?void 0:a.typeName)===((r=s.enum)===null||r===void 0?void 0:r.typeName)}return!0}return!1}function zn(e,t){var n,o,a,r;if(Ce(e)&&ie in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(t!==void 0){const i=t,s=e.field();return i.mapKey===s.mapKey&&i.mapKind==s.mapKind&&i.scalar===s.scalar&&((n=i.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((a=i.enum)===null||a===void 0?void 0:a.typeName)===((r=s.enum)===null||r===void 0?void 0:r.typeName)}return!0}return!1}function Ln(e,t){return Ce(e)&&ie in e&&"desc"in e&&Ce(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function Ls(e){return ur(e.$typeName)}function je(e){const t=e.fields[0];return ur(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function dr(e){switch(e.typeName){case"google.protobuf.Any":case"google.protobuf.Timestamp":case"google.protobuf.Duration":case"google.protobuf.FieldMask":case"google.protobuf.Struct":case"google.protobuf.Value":case"google.protobuf.ListValue":return!0;default:return je(e)}}var js=new Set(["google.protobuf.DoubleValue","google.protobuf.FloatValue","google.protobuf.Int64Value","google.protobuf.UInt64Value","google.protobuf.Int32Value","google.protobuf.UInt32Value","google.protobuf.BoolValue","google.protobuf.StringValue","google.protobuf.BytesValue"]);function ur(e){return js.has(e)}var Hs=999,Ts=998,mr=2;function oe(e,t){return Jn(t,e)?t:br(e)(t)}var Uo=new WeakMap;function br(e){let t=Uo.get(e);return t===void 0&&(t=Qs(e),Uo.set(e,t)),t}var Gn=0,hr=1,gr=2,Ar=3;function Qs(e){const t=e.typeName,{properties:n,prototype:o}=Ms(e);return a=>{let r;o!==void 0?(r=Object.create(o),r.$typeName=t):r={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=a?.[l];switch(s.kind){case Gn:c!=null?r[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(r[l]=s.constant);break;case hr:r[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case gr:if(s.convert===void 0||!Ce(c))r[l]=c??{};else{const u={},h=Object.keys(c);for(let f=0;f<h.length;f++)ue(u,h[f],s.convert(c[h[f]]));r[l]=u}break;case Ar:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){r[l]={case:u.case,value:h(u.value)};break}}r[l]={case:void 0};break}}}return r}}function Ms(e){var t,n;const o=[],a={},r=Ds(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:Ar,constant:void 0,convert:Os(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:Gn,constant:void 0,convert:kt(i)});break;case"list":o.push({name:s,kind:hr,constant:void 0,convert:i.listKind=="message"?(t=kt(i))!==null&&t!==void 0?t:(l=>l):i.scalar==b.BYTES?gt:void 0});break;case"map":o.push({name:s,kind:gr,constant:void 0,convert:i.mapKind=="message"?(n=kt(i))!==null&&n!==void 0?n:(l=>l):i.scalar==b.BYTES?gt:void 0});break;default:{const l=_s(i);o.push({name:s,kind:Gn,constant:i.presence==mr?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==b.BYTES?gt:void 0}),r&&(a[s]=l);break}}}return{properties:o,prototype:r?a:void 0}}function Os(e){const t=new Map;for(const n of e.fields){let o;n.fieldKind=="message"?o=kt(n):n.fieldKind=="scalar"&&n.scalar==b.BYTES&&(o=gt),t.set(n.localName,o??(a=>a))}return t}function kt(e){if(e.fieldKind=="message"&&!e.oneof&&je(e.message))return e.message.fields[0].scalar==b.BYTES?gt:void 0;if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return;const t=e.message;let n;return o=>!Ce(o)||Jn(o,t)?o:(n!=null||(n=br(t)),n(o))}function gt(e){return Array.isArray(e)?new Uint8Array(e):e}function Ds(e){switch(e.file.edition){case Hs:return!1;case Ts:return!0;default:return e.fields.some(t=>t.presence!=mr&&t.fieldKind!="message"&&!t.oneof)}}function _s(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?We(e.scalar,e.longAsString):e.enum.values[0].number}var Ps=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],L=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function $s(e){return e instanceof Error&&Ps.includes(e.name)&&"field"in e&&typeof e.field=="function"}var Nn;function qs(e){var t;Nn=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:pr(e.encodeUtf8.bind(e))})}function jn(){if(!Nn){const e=globalThis;if(!e.TextEncoder||!e.TextDecoder)throw new Error("encoding API missing: install TextEncoder and TextDecoder on globalThis");const t=new e.TextEncoder,n=new e.TextDecoder;let o;const a={encodeUtf8(i){return t.encode(i)},decodeUtf8(i,s){return s?(o||(o=new e.TextDecoder("utf-8",{fatal:!0})),o.decode(i)):n.decode(i)},checkUtf8(i){try{return!0}catch{return!1}}};t.encodeInto&&(a.encodeUtf8Into=t.encodeInto.bind(t));const r=String.prototype.isWellFormed;r&&(a.checkUtf8=i=>r.call(i)),qs(a)}return Nn}function pr(e){return(t,n)=>{const o=e(t);return n.set(o),{written:o.byteLength}}}var Q;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(Q||(Q={}));var Zr=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?pr(e):jn().encodeUtf8Into,this.buffer=fr,this.viewCache=tl,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||el;for(;n<t;)n*=2;const o=new Uint8Array(n);this.pos>0&&o.set(this.buffer),this.buffer=o}}view(){const e=this.buffer,t=this.viewCache;if(t.byteLength===e.byteLength)return t;const n=new DataView(e.buffer);return this.viewCache=n,n}finish(){const e=this.buffer.slice(0,this.pos);return this.pos=0,this.stackPos=[],e}fork(){return this.stackPos.push(this.pos),this.ensureCapacity(ut),this.buffer[this.pos++]=0,this}join(){const e=this.stackPos.pop();if(e===void 0)throw new Error("invalid state, fork stack empty");const t=this.pos-e-ut,n=sn(t);return n>ut&&(this.ensureCapacity(n-ut),this.buffer.copyWithin(e+n,e+ut,this.pos)),this.pos=e,this.uint32(t),this.pos+=t,this}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.ensureCapacity(e.length),this.buffer.set(e,this.pos),this.pos+=e.length,this}uint32(e){if(Jo(e),this.ensureCapacity(5),e<128)return this.buffer[this.pos++]=e,this;for(;e>127;)this.buffer[this.pos++]=e&127|128,e>>>=7;return this.buffer[this.pos++]=e,this}int32(e){if(ln(e),e>=0)return this.uint32(e);this.ensureCapacity(10);for(let t=0;t<9;t++)this.buffer[this.pos++]=e&127|128,e>>=7;return this.buffer[this.pos++]=1,this}bool(e){return this.ensureCapacity(1),this.buffer[this.pos++]=e?1:0,this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){typeof e!="string"&&(e=String(e));const t=e.length;if(t<=Rr){this.ensureCapacity(t+1);const s=this.buffer;let l=this.pos;s[l++]=t;let c=0;for(;c<t;c++){const u=e.charCodeAt(c);if(u>127)break;s[l++]=u}if(c==t)return this.pos=l,this}this.ensureCapacity(t*3+5);const n=sn(t),o=this.buffer,a=this.pos,{written:r}=this.encodeUtf8Into(e,o.subarray(a+n)),i=sn(r);return i!=n&&o.copyWithin(a+i,a+n,a+n+r),this.uint32(r),this.pos+=r,this}float(e){return nl(e),this.ensureCapacity(4),this.view().setFloat32(this.pos,e,!0),this.pos+=4,this}double(e){return this.ensureCapacity(8),this.view().setFloat64(this.pos,e,!0),this.pos+=8,this}fixed32(e){return Jo(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return ln(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return ln(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){const t=z.enc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}fixed64(e){const t=z.uEnc(e);this.ensureCapacity(8);const n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}int64(e){const t=z.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=z.enc(e),n=t.hi>>31,o=t.lo<<1^n,a=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,a)}uint64(e){const t=z.uEnc(e);return this.writeVarint64(t.lo,t.hi)}writeVarint64(e,t){this.ensureCapacity(10);const n=this.buffer;let o=this.pos;for(let i=0;i<28;i=i+7){const s=e>>>i,l=!(!(s>>>7)&&t==0);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}const a=e>>>28&15|(t&7)<<4,r=t>>3!=0;if(n[o++]=(r?a|128:a)&255,!r)return this.pos=o,this;for(let i=3;i<31;i=i+7){const s=t>>>i,l=!!(s>>>7);if(n[o++]=(l?s|128:s)&255,!l)return this.pos=o,this}return n[o++]=t>>>31&1,this.pos=o,this}},el=128,ut=1,fr=new Uint8Array(0),tl=new DataView(fr.buffer),Rr=32;function sn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var Zt=class{constructor(e,t=jn().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=Is,this.uint32=Cs,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){const e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");const o=t>>>3,a=t&7;if(o<=0||a>5)throw new Error("illegal tag: field no "+o+" wire type "+a);return[o,a]}skip(e,t,n=100){let o=this.pos;switch(e){case Q.Varint:for(;this.buf[this.pos++]&128;);break;case Q.Bit64:this.pos+=4;case Q.Bit32:this.pos+=4;break;case Q.LengthDelimited:let a=this.uint32();this.pos+=a;break;case Q.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[r,i]=this.tag();if(i===Q.EndGroup){if(t!==void 0&&r!==t)throw new Error("invalid end group tag");break}this.skip(i,r,n-1)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return this.varint64(),z.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),z.uDec(this.varint64Lo,this.varint64Hi)}sint64(){this.varint64();let e=this.varint64Lo,t=this.varint64Hi,n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,z.dec(e,t)}bool(){const e=this.buf[this.pos];return e<128?(this.pos++,e!==0):(this.varint64(),this.varint64Lo!==0||this.varint64Hi!==0)}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return z.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return z.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){const t=this.bytes(),n=t.length;if(n<=Rr){const o=new Array(n);for(let a=0;a<n;a++){const r=t[a];if(r>127)return this.decodeUtf8(t,e);o[a]=r}return String.fromCharCode.apply(String,o)}return this.decodeUtf8(t,e)}};function ln(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw new Error("invalid int32: "+e)}function Jo(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw new Error("invalid uint32: "+e)}function nl(e){if(typeof e=="string"){const t=e;if(e=Number(e),Number.isNaN(e)&&t!=="NaN")throw new Error("invalid float32: "+t)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(!Number.isFinite(Math.fround(e))&&Number.isFinite(e))throw new Error("invalid float32: "+e)}function Vr(e,t){const n=e.fieldKind=="list"?Kn(t,e):e.fieldKind=="map"?zn(t,e):Hn(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${Gr(e)}, got ${P(t)}`;break;case"map":o=`expected ${Nr(e)}, got ${P(t)}`;break;default:o=de(e,t,n)}return new L(e,o)}function xo(e,t,n){const o=Hn(e,n);if(o!==!0)return new L(e,`list item #${t+1}: ${de(e,n,o)}`)}function ol(e,t,n){const o=Fe(e.mapKey)(t);if(o!==!0)return new L(e,`invalid map key: ${de({scalar:e.mapKey},t,o)}`);const a=Hn(e,n);if(a!==!0)return new L(e,`map entry ${P(t)}: ${de(e,n,a)}`)}function Hn(e,t){return e.scalar!==void 0?Fe(e.scalar)(t):e.enum!==void 0?e.enum.open?Fe(b.INT32)(t):e.enum.values.some(n=>n.number===t):Ln(t,e.message)}function Fe(e){switch(e){case b.DOUBLE:return t=>typeof t=="number";case b.FLOAT:return t=>typeof t!="number"?!1:!Number.isFinite(Math.fround(t))&&Number.isFinite(t)?`${t.toFixed()} out of range`:!0;case b.INT32:case b.SFIXED32:case b.SINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>2147483647||t<-2147483648?`${t.toFixed()} out of range`:!0;case b.FIXED32:case b.UINT32:return t=>typeof t!="number"||!Number.isInteger(t)?!1:t>4294967295||t<0?`${t.toFixed()} out of range`:!0;case b.BOOL:return t=>typeof t=="boolean";case b.STRING:return t=>typeof t!="string"?!1:jn().checkUtf8(t)||"invalid UTF8";case b.BYTES:return t=>t instanceof Uint8Array;case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return z.parse(t),!0}catch{return`${t} out of range`}return!1};case b.FIXED64:case b.UINT64:return t=>{if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return z.uParse(t),!0}catch{return`${t} out of range`}return!1}}}function de(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${P(t)}`,e.scalar!==void 0?`expected ${al(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${Er(e.message)}`+n}function P(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:Kn(e)?Gr(e.field()):zn(e)?Nr(e.field()):Ln(e)?Er(e.desc):Jn(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function Er(e){return`ReflectMessage (${e.typeName})`}function Gr(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${b[e.scalar]})`}}function Nr(e){switch(e.mapKind){case"message":return`ReflectMap (${b[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${b[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${b[e.mapKey]}, ${b[e.scalar]})`}}function al(e){switch(e){case b.STRING:return"string";case b.BOOL:return"boolean";case b.INT64:case b.SINT64:case b.SFIXED64:return"bigint (int64)";case b.UINT64:case b.FIXED64:return"bigint (uint64)";case b.BYTES:return"Uint8Array";case b.DOUBLE:return"number (float64)";case b.FLOAT:return"number (float32)";case b.FIXED32:case b.UINT32:return"number (uint32)";case b.INT32:case b.SFIXED32:case b.SINT32:return"number (int32)"}}var rl=0;function Ze(e){if(il(e))return{toMessage:n=>Tn(n),toLocal:n=>Qn(n)};if(e.fieldKind=="message"&&!e.oneof&&je(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:a=>{const r=oe(n);return a!==void 0&&(r[o]=a),r},toLocal:a=>a[o]}}const t=e.message;return{toMessage:n=>n===void 0?oe(t):n,toLocal:n=>n}}function il(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function Tn(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(Ce(e))for(const n of Object.keys(e))ue(t.fields,n,Sr(e[n]));return t}function Qn(e){const t={};for(const n of Object.keys(e.fields))ue(t,n,Wr(e.fields[n]));return t}function Wr(e){switch(e.kind.case){case"structValue":return Qn(e.kind.value);case"listValue":return e.kind.value.values.map(Wr);case"nullValue":case void 0:return null;default:return e.kind.value}}function Sr(e){const t={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":t.kind={case:"numberValue",value:e};break;case"string":t.kind={case:"stringValue",value:e};break;case"boolean":t.kind={case:"boolValue",value:e};break;case"object":if(e===null)t.kind={case:"nullValue",value:rl};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(Sr(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Tn(e)};break}return t}function sl(e,t,n=!0){return new vr(e,t,n)}var Ko=new WeakMap,vr=class{get sortedFields(){const e=Ko.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Ko.set(this.desc,t),t}constructor(e,t,n=!0){this.lists=new Map,this.maps=new Map,this.check=n,this.desc=e,this.message=this[ie]=t??oe(e),this.fields=e.fields,this.oneofs=e.oneofs,this.members=e.members}findNumber(e){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(e)}oneofCase(e){return mt(this.message,e),ks(this.message,e)}isSet(e){return mt(this.message,e),Us(this.message,e)}clear(e){mt(this.message,e),zs(this.message,e)}get(e){mt(this.message,e);const t=Js(this.message,e);switch(e.fieldKind){case"list":let n=this.lists.get(e);return(!n||n[ie]!==t)&&this.lists.set(e,n=new ll(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[ie]!==t)&&this.maps.set(e,o=new cl(e,t,this.check)),o;case"message":return On(e,t,this.check);case"scalar":return t===void 0?We(e.scalar,!1):Dn(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(mt(this.message,e),this.check){const o=Vr(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Mn(e,t):zn(t)||Kn(t)?n=t[ie]:n=_n(e,t),xs(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function mt(e,t){if(t.parent.typeName!==e.$typeName)throw new L(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var ll=class{field(){return this._field}get size(){return this._arr.length}constructor(e,t,n){this._field=e,this._arr=this[ie]=t,this.check=n}get(e){const t=this._arr[e];return t===void 0?void 0:cn(this._field,t,this.check)}set(e,t){if(e<0||e>=this._arr.length)throw new L(this._field,`list item #${e+1}: out of range`);if(this.check){const n=xo(this._field,e,t);if(n)throw n}this._arr[e]=zo(this._field,t)}add(e){if(this.check){const t=xo(this._field,this._arr.length,e);if(t)throw t}this._arr.push(zo(this._field,e))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(const e of this._arr)yield cn(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,cn(this._field,this._arr[e],this.check)]}},cl=class{constructor(e,t,n=!0){this.obj=this[ie]=t??{},this.check=n,this._field=e}field(){return this._field}set(e,t){if(this.check){const n=ol(this._field,e,t);if(n)throw n}return ue(this.obj,vt(e),dl(this._field,t)),this}delete(e){const t=vt(e),n=Object.prototype.hasOwnProperty.call(this.obj,t);return n&&delete this.obj[t],n}clear(){for(const e of Object.keys(this.obj))delete this.obj[e]}get(e){let t=Ks(this.obj,vt(e));return t!==void 0&&(t=dn(this._field,t,this.check)),t}has(e){return Object.prototype.hasOwnProperty.call(this.obj,vt(e))}*keys(){for(const e of Object.keys(this.obj))yield Lo(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[Lo(e[0],this._field.mapKey),dn(this._field,e[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(const e of Object.values(this.obj))yield dn(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Mn(e,t){return Ln(t)?Ls(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?Qn(t.message):t.message:t}function On(e,t,n){return t!==void 0&&(je(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:Dn(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&Ce(t)&&(t=Tn(t))),new vr(e.message,t,n)}function zo(e,t){return e.listKind=="message"?Mn(e,t):_n(e,t)}function cn(e,t,n){return e.listKind=="message"?On(e,t,n):Dn(e,t)}function dl(e,t){return e.mapKind=="message"?Mn(e,t):_n(e,t)}function dn(e,t,n){return e.mapKind=="message"?On(e,t,n):t}function vt(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function Lo(e,t){switch(t){case b.STRING:return e;case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:{const n=Number.parseInt(e);if(Number.isFinite(n))return n;break}case b.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case b.UINT64:case b.FIXED64:try{return z.uParse(e)}catch{}break;default:try{return z.parse(e)}catch{}break}return e}function Dn(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=z.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=z.uParse(t));break}return t}function _n(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=z.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=z.uParse(t));break}return t}var jo=Uint8Array.prototype.setFromBase64;function Pn(e){const t=e.length;let n=t-(t+3>>2);(t&3)==0&&e[t-1]=="="&&(n-=e[t-2]=="="?2:1);const o=new Uint8Array(n);let a=-1;if(jo)try{const r=jo.call(o,e);r.read==t&&(a=r.written)}catch{}return a<0&&(a=ul(o,e)),a==n?o:o.subarray(0,a)}function ul(e,t){const n=hl();let o=0,a=0,r,i=0;for(let s=0;s<t.length;s++){if(r=n[t.charCodeAt(s)],r===void 0)switch(t[s]){case"=":a=0;case`
|
|
51
|
+
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:i=r,a=1;break;case 1:e[o++]=i<<2|(r&48)>>4,i=r,a=2;break;case 2:e[o++]=(i&15)<<4|(r&60)>>2,i=r,a=3;break;case 3:e[o++]=(i&3)<<6|r,a=0;break}}if(a==1)throw Error("invalid base64 string");return o}var Ho=Uint8Array.prototype.toBase64,ml={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function bl(e,t="std"){if(Ho)return Ho.call(e,ml[t]);const n=Yr(t),o=t=="std";let a="",r=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],r){case 0:a+=n[i>>2],s=(i&3)<<4,r=1;break;case 1:a+=n[s|i>>4],s=(i&15)<<2,r=2;break;case 2:a+=n[s|i>>6],a+=n[i&63],r=0;break}return r&&(a+=n[s],o&&(a+="=",r==1&&(a+="="))),a}var Yt,To,Te;function Yr(e){return Yt||(Yt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),To=Yt.slice(0,-2).concat("-","_")),e=="url"?To:Yt}function hl(){if(!Te){Te=[];const e=Yr("std");for(let t=0;t<e.length;t++)Te[e[t].charCodeAt(0)]=t;Te[45]=e.indexOf("+"),Te[95]=e.indexOf("/")}return Te}function tt(e){let t=!1;const n=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);switch(a){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(a),t=!1;break;default:t&&(t=!1,a=a.toUpperCase()),n.push(a);break}}return n.join("")}function Ir(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var gl=new Set(["constructor","toString","toJSON","valueOf"]);function ft(e){return gl.has(e)?e+"$":e}function $n(e){for(const t of e.field)pt(t,"jsonName")||(t.jsonName=tt(t.name));e.nestedType.forEach($n)}function Al(e,t){const n=e.values.find(o=>o.name===t);if(!n)throw new Error(`cannot parse ${e} default value: ${t}`);return n.number}function pl(e,t){switch(e){case b.STRING:return t;case b.BYTES:{const n=Zl(t);if(n===!1)throw new Error(`cannot parse ${b[e]} default value: ${t}`);return n}case b.INT64:case b.SFIXED64:case b.SINT64:return z.parse(t);case b.UINT64:case b.FIXED64:return z.uParse(t);case b.DOUBLE:case b.FLOAT:switch(t){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return NaN;default:return parseFloat(t)}case b.BOOL:return t==="true";case b.INT32:case b.UINT32:case b.SINT32:case b.FIXED32:case b.SFIXED32:return parseInt(t,10)}}function Zl(e){const t=[],n={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){const a=this.tail.substring(0,o);return this.tail=this.tail.substring(o),a}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":t.push(n.c.charCodeAt(0));break;case"b":t.push(8);break;case"f":t.push(12);break;case"n":t.push(10);break;case"r":t.push(13);break;case"t":t.push(9);break;case"v":t.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{const o=n.c,a=n.take(2);if(a===!1)return!1;const r=parseInt(o+a,8);if(Number.isNaN(r))return!1;t.push(r);break}case"x":{const o=n.c,a=n.take(2);if(a===!1)return!1;const r=parseInt(o+a,16);if(Number.isNaN(r))return!1;t.push(r);break}case"u":{const o=n.c,a=n.take(4);if(a===!1)return!1;const r=parseInt(o+a,16);if(Number.isNaN(r))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,r,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,a=n.take(8);if(a===!1)return!1;const r=z.uEnc(o+a),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),t.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:t.push(n.c.charCodeAt(0))}return new Uint8Array(t)}function*Wn(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*Wn(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*Wn(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function Xr(...e){const t=fl();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)Do(o,t);return t}if("$typeName"in e[0]){let i=function(s){const l=[];for(const c of s.dependency){if(t.getFile(c)!=null||r.has(c))continue;const u=a(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(r.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],a=e[1],r=new Set;for(const s of[o,...i(o)].reverse())Do(s,t)}else for(const o of e)for(const a of o.files)t.addFile(a);return t}function fl(){const e=new Map,t=new Map,n=new Map;return{kind:"registry",types:e,extendees:t,[Symbol.iterator](){return e.values()},get files(){return n.values()},addFile(o,a,r){if(n.set(o.proto.name,o),!a)for(const i of Wn(o))this.add(i);if(r)for(const i of o.dependencies)this.addFile(i,a,r)},add(o){if(o.kind=="extension"){let a=t.get(o.extendee.typeName);a||t.set(o.extendee.typeName,a=new Map),a.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){const a=e.get(o);return a?.kind=="message"?a:void 0},getEnum(o){const a=e.get(o);return a?.kind=="enum"?a:void 0},getExtension(o){const a=e.get(o);return a?.kind=="extension"?a:void 0},getExtensionFor(o,a){var r;return(r=t.get(o.typeName))===null||r===void 0?void 0:r.get(a)},getService(o){const a=e.get(o);return a?.kind=="service"?a:void 0}}}var Rl=998,Vl=999,El=9999,Gl=9,Rt=10,At=11,Nl=12,Qo=14,qn=3,Wl=2,Mo=1,Sl=0,un=1,Oo=2,vl=3,Yl=1,Il=2,Xl=1,yl=2,Bl=1002,yr={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1,enforceProtoLimits:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2,enforceProtoLimits:1},1002:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:3,defaultSymbolVisibility:4,enforceProtoLimits:2}};function Do(e,t){var n,o;const a={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:kl(e),name:e.name.replace(/\.proto$/,""),dependencies:Ul(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},r=new Map,i={get(s){return r.get(s)},add(s){var l;le(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),r.set(s.typeName,s)}};for(const s of e.enumType)Br(s,a,void 0,t);for(const s of e.messageType)Cr(s,a,void 0,t,i);for(const s of e.service)Cl(s,a,t);Sn(a,t);for(const s of r.values())vn(s,t,i);for(const s of a.messages)vn(s,t,i),Sn(s,t);t.addFile(a,!0)}function Sn(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=Yn(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=Yn(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)Sn(n,t);break}}function vn(e,t,n){const o=e.proto.oneofDecl.map(r=>wl(r,e)),a=new Set;for(const r of e.proto.field){const i=zl(r,o),s=Yn(r,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),a.has(i)||(a.add(i),e.members.push(i)))}for(const r of o.filter(i=>a.has(i)))e.oneofs.push(r);for(const r of e.nestedMessages)vn(r,t,n)}function Br(e,t,n,o){var a,r,i,s,l,c;const u=Jl(e.name,e.value),h={kind:"enum",proto:e,deprecated:(r=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&r!==void 0?r:!1,file:t,parent:n,open:!0,name:e.name,typeName:Dt(e,n,t),value:{},values:[],sharedPrefix:u,toString(){return`enum ${this.typeName}`}};h.open=Tl(h),o.add(h);for(const f of e.value){const Z=f.name;h.values.push(h.value[f.number]={kind:"enum_value",proto:f,deprecated:(s=(i=f.options)===null||i===void 0?void 0:i.deprecated)!==null&&s!==void 0?s:!1,parent:h,name:Z,localName:ft(u==null?Z:Z.substring(u.length)),number:f.number,jsonName:(l=xl(f))!==null&&l!==void 0?l:Z,toString(){return`enum value ${h.typeName}.${Z}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function Cr(e,t,n,o,a){var r,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:Dt(e,n,t),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=e.options)===null||s===void 0?void 0:s.mapEntry)===!0?a.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)Br(u,t,c,o);for(const u of e.nestedType)Cr(u,t,c,o,a)}function Cl(e,t,n){var o,a;const r={kind:"service",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,file:t,name:e.name,typeName:Dt(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(r),n.add(r);for(const i of e.method){const s=Fl(i,r,n);r.methods.push(s),r.method[s.localName]=s}}function Fl(e,t,n){var o,a,r,i;let s;e.clientStreaming&&e.serverStreaming?s="bidi_streaming":e.clientStreaming?s="client_streaming":e.serverStreaming?s="server_streaming":s="unary";const l=n.getMessage(Ne(e.inputType)),c=n.getMessage(Ne(e.outputType));le(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),le(c,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);const u=e.name;return{kind:"rpc",proto:e,deprecated:(a=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&a!==void 0?a:!1,parent:t,name:u,localName:ft(u.length?ft(u[0].toLowerCase()+u.substring(1)):u),methodKind:s,input:l,output:c,idempotency:(i=(r=e.options)===null||r===void 0?void 0:r.idempotencyLevel)!==null&&i!==void 0?i:Sl,toString(){return`rpc ${t.typeName}.${u}`}}}function wl(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:ft(tt(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function Yn(e,t,n,o,a){var r,i,s;const l=a===void 0,c={kind:"field",proto:e,deprecated:(i=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:Ll(e,o,l,t),utf8Validation:Ql(e,t),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};let u;if(l){const E=t.kind=="file"?t:t.file,G=t.kind=="file"?void 0:t,I=Dt(e,G,E);c.kind="extension",c.file=E,c.parent=G,c.oneof=void 0,c.typeName=I,c.jsonName=`[${I}]`,u=()=>`extension ${I}`;const k=n.getMessage(Ne(e.extendee));le(k,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=k}else{const E=t;le(E.kind=="message"),c.parent=E,c.oneof=o,c.localName=o?tt(e.name):ft(tt(e.name)),c.jsonName=e.jsonName,u=()=>`field ${E.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,f=e.type,Z=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===qn){const E=f==At?a?.get(Ne(e.typeName)):void 0;if(E){c.fieldKind="map";const{key:G,value:I}=Hl(E);return c.mapKey=G.scalar,c.mapKind=I.fieldKind,c.message=I.message,c.delimitedEncoding=!1,c.enum=I.enum,c.scalar=I.scalar,c}switch(c.fieldKind="list",f){case At:case Rt:c.listKind="message",c.message=n.getMessage(Ne(e.typeName)),le(c.message),c.delimitedEncoding=_o(e,t);break;case Qo:c.listKind="enum",c.enum=n.getEnum(Ne(e.typeName)),le(c.enum);break;default:c.listKind="scalar",c.scalar=f,c.longAsString=Z==Mo;break}return c.packed=jl(e,t),c}switch(f){case At:case Rt:c.fieldKind="message",c.message=n.getMessage(Ne(e.typeName)),le(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=_o(e,t),c.getDefaultValue=()=>{};break;case Qo:{const E=n.getEnum(Ne(e.typeName));le(E!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Ne(e.typeName)),c.getDefaultValue=()=>pt(e,"defaultValue")?Al(E,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=f,c.longAsString=Z==Mo,c.getDefaultValue=()=>pt(e,"defaultValue")?pl(f,e.defaultValue):void 0;break}return c}function kl(e){switch(e.syntax){case"":case"proto2":return Rl;case"proto3":return Vl;case"editions":if(e.edition===El)return Bl;if(e.edition in yr)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function Ul(e,t){return e.dependency.map(n=>{const o=t.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${e.name}`);return o})}function Jl(e,t){const n=Kl(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const a=o.name.substring(n.length);if(a.length==0||/^\d/.test(a))return}return n}function xl(e){var t,n;let r;for(const i of(n=(t=e.options)===null||t===void 0?void 0:t.$unknown)!==null&&n!==void 0?n:[]){if(i.no!==998||i.wireType!==Q.LengthDelimited)continue;const s=new Zt(new Zt(i.data).bytes());for(;s.pos<s.len;){const[l,c]=s.tag();l===1&&c===Q.LengthDelimited?r=s.string():s.skip(c,l)}}return r}function Kl(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function Dt(e,t,n){let o;return t?o=`${t.typeName}.${e.name}`:n.proto.package.length>0?o=`${n.proto.package}.${e.name}`:o=`${e.name}`,o}function Ne(e){return e.startsWith(".")?e.substring(1):e}function zl(e,t){if(!pt(e,"oneofIndex")||e.proto3Optional)return;const n=t[e.oneofIndex];return le(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function Ll(e,t,n,o){if(e.label==Wl)return vl;if(e.label==qn)return Oo;if(t||e.proto3Optional||n)return un;const a=xe("fieldPresence",{proto:e,parent:o});return a==Oo&&(e.type==At||e.type==Rt)?un:a}function jl(e,t){if(e.label!=qn)return!1;switch(e.type){case Gl:case Nl:case Rt:case At:return!1}const n=e.options;return n&&pt(n,"packed")?n.packed:Yl==xe("repeatedFieldEncoding",{proto:e,parent:t})}function Hl(e){const t=e.fields.find(o=>o.number===1),n=e.fields.find(o=>o.number===2);return le(t&&t.fieldKind=="scalar"&&t.scalar!=b.BYTES&&t.scalar!=b.FLOAT&&t.scalar!=b.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:t,value:n}}function Tl(e){var t;return Xl==xe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function _o(e,t){return e.type==Rt?!0:Il==xe("messageEncoding",{proto:e,parent:t})}function Ql(e,t){return yl==xe("utf8Validation",{proto:e,parent:t})}function xe(e,t){var n,o;const a=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(a){const r=a[e];if(r!=0)return r}if("kind"in t){if(t.kind=="message")return xe(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const r=yr[t.edition];if(!r)throw new Error(`feature default for edition ${t.edition} not found`);return r[e]}return xe(e,t.parent)}function le(e,t){if(!e)throw new Error(t)}function Ml(e){const t=Ol(e);return t.messageType.forEach($n),Xr(t,()=>{}).getFile(t.name)}function Ol(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Fr),enumType:e.enumType.map(wr)}))}function Fr(e){var t,n,o,a,r,i,s,l;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(n=(t=e.field)===null||t===void 0?void 0:t.map(Dl))!==null&&n!==void 0?n:[],extension:[],nestedType:(a=(o=e.nestedType)===null||o===void 0?void 0:o.map(Fr))!==null&&a!==void 0?a:[],enumType:(i=(r=e.enumType)===null||r===void 0?void 0:r.map(wr))!==null&&i!==void 0?i:[],extensionRange:(l=(s=e.extensionRange)===null||s===void 0?void 0:s.map(c=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},c)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Dl(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?_l(e.options):void 0}))}function _l(e){var t,n,o;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(t=e.targets)!==null&&t!==void 0?t:[],editionDefaults:(o=(n=e.editionDefaults)===null||n===void 0?void 0:n.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function wr(e){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(t=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},t))})}function N(e,t,...n){return n.reduce((o,a)=>o.nestedMessages[a],e.messages[t])}var Pl=Ml({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false",options:{}},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true",options:{}},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"removal_error",number:5,type:9,label:1}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:990,end:999},{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001},{value:"STYLE2026",edition:1002}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001},{value:"STRICT",edition:1002}]}},{name:"enforce_proto_limits",number:9,type:14,label:1,typeName:".google.protobuf.FeatureSet.ProtoLimitsFeature.EnforceProtoLimits",options:{retention:2,targets:[6,3,4,5],editionDefaults:[{value:"LEGACY_NO_EXPLICIT_LIMITS",edition:900},{value:"PROTO_LIMITS2026",edition:1002}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]},{name:"ProtoLimitsFeature",enumType:[{name:"EnforceProtoLimits",value:[{name:"PROTO_LIMITS_UNKNOWN",number:0},{name:"LEGACY_NO_EXPLICIT_LIMITS",number:1},{name:"PROTO_LIMITS2026",number:2}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2},{name:"STYLE2026",number:3}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_2026",number:1002},{name:"EDITION_UNSTABLE",number:9999},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]}),$l=N(Pl,1),Po;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Po||(Po={}));var $o;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})($o||($o={}));var qo;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(qo||(qo={}));var ea;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(ea||(ea={}));var ta;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(ta||(ta={}));var na;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(na||(na={}));var oa;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(oa||(oa={}));var aa;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(aa||(aa={}));var ra;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(ra||(ra={}));var ia;(function(e){e[e.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",e[e.EXPORT_ALL=1]="EXPORT_ALL",e[e.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",e[e.LOCAL_ALL=3]="LOCAL_ALL",e[e.STRICT=4]="STRICT"})(ia||(ia={}));var sa;(function(e){e[e.PROTO_LIMITS_UNKNOWN=0]="PROTO_LIMITS_UNKNOWN",e[e.LEGACY_NO_EXPLICIT_LIMITS=1]="LEGACY_NO_EXPLICIT_LIMITS",e[e.PROTO_LIMITS2026=2]="PROTO_LIMITS2026"})(sa||(sa={}));var la;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(la||(la={}));var ca;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(ca||(ca={}));var da;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(da||(da={}));var ua;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(ua||(ua={}));var ma;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ma||(ma={}));var ba;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(ba||(ba={}));var ha;(function(e){e[e.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",e[e.STYLE2024=1]="STYLE2024",e[e.STYLE_LEGACY=2]="STYLE_LEGACY",e[e.STYLE2026=3]="STYLE2026"})(ha||(ha={}));var ga;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(ga||(ga={}));var Aa;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_2026=1002]="EDITION_2026",e[e.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(Aa||(Aa={}));var pa;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(pa||(pa={}));function kr(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Nt(e,t,n){const o=oe(e);return eo(e).read(o,new Zt(t),kr(n),t.byteLength),o}var Ur=new WeakMap;function eo(e){let t=Ur.get(e);return t===void 0&&(t=ql(e)),t}function ql(e){const t=String(e),n=new Map,o={read:ec(t,n),readGroup:tc(t,n)};Ur.set(e,o);for(const a of e.fields)n.set(a.number,Jr(a));return o}function ec(e,t){return(n,o,a,r)=>{var i;if(++a.depth>a.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${a.recursionLimit} reached`);const s=o.pos+r,l=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<s;){const[c,u]=o.tag(),h=t.get(c);if(h===void 0){const f=o.skip(u,c,a.recursionLimit-a.depth);a.readUnknownFields&&l.push({no:c,wireType:u,data:f});continue}h(n,o,a,u)}l.length>0&&(n.$unknown=l),a.depth--}}function tc(e,t){return(n,o,a,r)=>{var i;if(++a.depth>a.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${a.recursionLimit} reached`);let s,l;const c=(i=n.$unknown)!==null&&i!==void 0?i:[];for(;o.pos<o.len&&([s,l]=o.tag(),l!=Q.EndGroup);){const u=t.get(s);if(u===void 0){const h=o.skip(l,s,a.recursionLimit-a.depth);a.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,a,l)}if(l!=Q.EndGroup||s!==r)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),a.depth--}}function nc(e,t,n,o,a){Jr(n)(e[ie],t,a,o)}function Jr(e){switch(e.fieldKind){case"scalar":return oc(e);case"enum":return ac(e);case"message":return rc(e);case"list":return ic(e);case"map":return sc(e)}}function oc(e){const t=zt(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(a,r)=>{a[o]={case:n,value:t(r)}}}return(o,a)=>{o[n]=t(a)}}function ac(e){var t;const n=e.localName,o=(t=e.oneof)===null||t===void 0?void 0:t.localName;if(e.enum.open)return o!==void 0?(i,s)=>{i[o]={case:n,value:s.int32()}}:(i,s)=>{i[n]=s.int32()};const a=e.enum.values,r=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(a.some(f=>f.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const f=[];Bs(h,f);const Z=(u=i.$unknown)!==null&&u!==void 0?u:[];Z.push({no:r,wireType:c,data:new Uint8Array(f)}),i.$unknown=Z}}}function rc(e){const t=e.localName,{toMessage:n,toLocal:o}=Ze(e),a=xr(e);if(e.oneof){const r=e.oneof.localName;return(i,s,l)=>{const c=i[r],u=n(c.case===t?c.value:void 0);a(u,s,l),i[r]={case:t,value:o(u)}}}return(r,i,s)=>{const l=n(r[t]);a(l,i,s),r[t]=o(l)}}function xr(e){const t=eo(e.message);if(e.delimitedEncoding){const n=e.number;return(o,a,r)=>t.readGroup(o,a,r,n)}return(n,o,a)=>t.read(n,o,a,o.uint32())}function ic(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=Ze(e),l=xr(e);return(c,u,h)=>{const f=i(void 0);l(f,u,h),c[t].push(s(f))}}const n=e.listKind=="enum"?b.INT32:e.scalar,o=e.listKind=="scalar"?e.longAsString:!1,a=zt(n,e.utf8Validation,o),r=n!=b.STRING&&n!=b.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==Q.LengthDelimited&&r){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(a(s))}else u.push(a(s))}}function sc(e){const t=e.localName,n=zt(e.mapKey,e.utf8Validation,!1),o=We(e.mapKey,!1);let a,r;switch(e.mapKind){case"scalar":{const i=e.scalar,s=zt(i,e.utf8Validation,!1);if(a=l=>s(l),i==b.BYTES)r=()=>new Uint8Array(0);else{const l=We(i,!1);r=()=>l}break}case"enum":{const i=e.enum.values[0].number;a=s=>s.int32(),r=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=Ze(e),l=eo(e.message).read;a=(c,u,h)=>{const f=i(h);return l(f,c,u,c.uint32()),s(f)},r=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const f=s.uint32(),Z=s.pos+f;for(;s.pos<Z;){const[E]=s.tag();switch(E){case 1:u=n(s);break;case 2:h=a(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=r()),ue(c,u,h)}}function zt(e,t,n){switch(e){case b.STRING:return o=>o.string(t);case b.BOOL:return o=>o.bool();case b.DOUBLE:return o=>o.double();case b.FLOAT:return o=>o.float();case b.INT32:return o=>o.int32();case b.INT64:return n?o=>String(o.int64()):o=>o.int64();case b.UINT64:return n?o=>String(o.uint64()):o=>o.uint64();case b.FIXED64:return n?o=>String(o.fixed64()):o=>o.fixed64();case b.BYTES:return o=>o.bytes();case b.FIXED32:return o=>o.fixed32();case b.SFIXED32:return o=>o.sfixed32();case b.SFIXED64:return n?o=>String(o.sfixed64()):o=>o.sfixed64();case b.SINT64:return n?o=>String(o.sint64()):o=>o.sint64();case b.UINT32:return o=>o.uint32();case b.SINT32:return o=>o.sint32()}}function $(e,t){var n;const o=Nt($l,Pn(e));return o.messageType.forEach($n),o.dependency=(n=t?.map(a=>a.proto.name))!==null&&n!==void 0?n:[],Xr(o,a=>t?.find(r=>r.proto.name===a)).getFile(o.name)}var fe=$("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function lc(e){return new Date(cc(e))}function cc(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var Kr=$("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),dc=N(Kr,0),uc=2,mc=3,Za={writeUnknownFields:!0};function bc(e){return e?Object.assign(Object.assign({},Za),e):Za}function zr(e,t,n){const o=new Zr;return to(e)(o,bc(n),t),o.finish()}var Lr=new WeakMap;function to(e){let t=Lr.get(e);return t===void 0&&(t=hc(e)),t}function hc(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],a=[],r=(i,s,l)=>{if(l.$typeName!==t&&o!==void 0)throw new L(o,`cannot use ${o} with message ${l.$typeName}`,"ForeignFieldError");for(let u=0;u<a.length;u++)a[u](i,s,l);const c=l.$unknown;if(c!==void 0&&s.writeUnknownFields)for(let u=0;u<c.length;u++){const{no:h,wireType:f,data:Z}=c[u];i.tag(h,f).raw(Z)}};Lr.set(e,r);for(const i of n)a.push(jr(i));return r}function jr(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return gc(e);case"list":return pc(e);case"map":return Zc(e)}}function gc(e){const t=Ac(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(a,r,i)=>{const s=i[o];s.case===n&&t(a,r,s.value)}}if(e.presence!=uc){const o=e.presence==mc?`cannot encode ${e} to binary: required field not set`:void 0;return(a,r,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(a,r,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(a,r,i)=>{const s=i[n];s!==o&&t(a,r,s)}}switch(e.scalar){case b.BOOL:return(o,a,r)=>{const i=r[n];i!==!1&&t(o,a,i)};case b.STRING:return(o,a,r)=>{const i=r[n];i!==""&&t(o,a,i)};case b.BYTES:return(o,a,r)=>{const i=r[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,a,i)};case b.DOUBLE:case b.FLOAT:return(o,a,r)=>{const i=r[n];Object.is(i,0)||t(o,a,i)};default:return(o,a,r)=>{const i=r[n];i!=0&&t(o,a,i)}}}function Ac(e){switch(e.fieldKind){case"message":{const{toMessage:t}=Ze(e),n=Hr(e);return(o,a,r)=>{n(o,a,t(r))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?b.INT32:e.scalar,n=e.number,o=Pt(t),a=_t(t,e.parent.typeName,e.name);return(r,i,s)=>{r.tag(n,o),a(r,s)}}}}function pc(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=Ze(e),a=Hr(e);return(r,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)a(r,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?b.INT32:e.scalar,a=_t(o,e.parent.typeName,e.name);if(e.packed)return(i,s,l)=>{const c=l[t];if(c.length!=0){i.tag(n,Q.LengthDelimited).fork();for(let u=0;u<c.length;u++)a(i,c[u]);i.join()}};const r=Pt(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,r),a(i,c[u])}}}}function Zc(e){const t=e.localName,n=e.number,o=fc(e);if(e.mapKind=="message"){const{toMessage:s}=Ze(e),l=to(e.message);return(c,u,h)=>{const f=h[t],Z=Object.keys(f);for(let E=0;E<Z.length;E++){const G=Z[E];c.tag(n,Q.LengthDelimited).fork(),o(c,G),c.tag(2,Q.LengthDelimited).fork(),l(c,u,s(f[G])),c.join(),c.join()}}}const a=e.mapKind=="enum"?b.INT32:e.scalar,r=Pt(a),i=_t(a,e.parent.typeName,e.name);return(s,l,c)=>{const u=c[t],h=Object.keys(u);for(let f=0;f<h.length;f++){const Z=h[f];s.tag(n,Q.LengthDelimited).fork(),o(s,Z),s.tag(2,r),i(s,u[Z]),s.join()}}}function fc(e){const t=Pt(e.mapKey),n=_t(e.mapKey,e.parent.typeName,e.name),o=Rc(e.mapKey);return(a,r)=>{a.tag(1,t),n(a,o(r))}}function Rc(e){switch(e){case b.STRING:return t=>t;case b.BOOL:return t=>t==="true"?!0:t==="false"?!1:t;case b.UINT64:case b.FIXED64:return t=>{try{return z.uParse(t)}catch{return t}};case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{try{return z.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function _t(e,t,n){const o=Vc(e);return(a,r)=>{try{o(a,r)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function Vc(e){switch(e){case b.STRING:return(t,n)=>t.string(n);case b.BOOL:return(t,n)=>t.bool(n);case b.DOUBLE:return(t,n)=>t.double(n);case b.FLOAT:return(t,n)=>t.float(n);case b.INT32:return(t,n)=>t.int32(n);case b.INT64:return(t,n)=>t.int64(n);case b.UINT64:return(t,n)=>t.uint64(n);case b.FIXED64:return(t,n)=>t.fixed64(n);case b.BYTES:return(t,n)=>t.bytes(n);case b.FIXED32:return(t,n)=>t.fixed32(n);case b.SFIXED32:return(t,n)=>t.sfixed32(n);case b.SFIXED64:return(t,n)=>t.sfixed64(n);case b.SINT64:return(t,n)=>t.sint64(n);case b.UINT32:return(t,n)=>t.uint32(n);case b.SINT32:return(t,n)=>t.sint32(n)}}function Ec(e,t,n,o){jr(o)(e,t,n[ie])}function Hr(e){const t=e.number,n=to(e.message);return e.delimitedEncoding?(o,a,r)=>{o.tag(t,Q.StartGroup),n(o,a,r),o.tag(t,Q.EndGroup)}:(o,a,r)=>{o.tag(t,Q.LengthDelimited).fork(),n(o,a,r),o.join()}}function Pt(e){switch(e){case b.BYTES:case b.STRING:return Q.LengthDelimited;case b.DOUBLE:case b.FIXED64:case b.SFIXED64:return Q.Bit64;case b.FIXED32:case b.SFIXED32:case b.FLOAT:return Q.Bit32;default:return Q.Varint}}function Gc(e,t,n){let o=!1;return n||(n=oe(dc),o=!0),n.value=zr(e,t),n.typeUrl=Sc(t.$typeName),o?n:void 0}function Nc(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===Tr(e.typeUrl)}function Wc(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(Tr(e.typeUrl));if(!(!n||!Nc(e,n)))return Nt(n,e.value)}function Sc(e){return`type.googleapis.com/${e}`}function Tr(e){const t=e.lastIndexOf("/"),n=t>=0?e.substring(t+1):e;if(!n.length)throw new Error(`invalid type url: ${e}`);return n}var Ye=$("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),vc=N(Ye,0),Qr=N(Ye,1),Yc=N(Ye,2),In;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(In||(In={}));var Mr=$("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Ic(e,t,n){Or(t,e);const o=yc(e.$unknown,t),[a,r,i]=$t(t),s=kr(n);for(const l of o)nc(a,new Zt(l.data),r,l.wireType,s);return i()}function Xc(e,t,n){var o;Or(t,e);const a=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[r,i]=$t(t,n),s=new Zr;Ec(s,{writeUnknownFields:!0},r,i);const l=new Zt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);a.push({no:c,wireType:u,data:h})}e.$unknown=a}function yc(e,t){if(e===void 0)return[];if(t.fieldKind==="enum"||t.fieldKind==="scalar"){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.number)return[e[n]];return[]}return e.filter(n=>n.no===t.number)}function $t(e,t){const n=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),a=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),r=oe(a,t!==void 0?{[n]:t}:void 0);return[sl(a,r),o,()=>{const i=r[n];if(i===void 0){const s=e.message;return je(s)?We(s.fields[0].scalar,s.fields[0].longAsString):oe(s)}return i}]}function Or(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var Dr=Date.parse("0001-01-01T00:00:00Z"),_r=Date.parse("9999-12-31T23:59:59Z");var Bc=3,Cc=2,fa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function Fc(e){return e?Object.assign(Object.assign({},fa),e):fa}function Pr(e,t,n){return Lt(e)(Fc(n),t)}function wc(e,t,n){var o;const a=Pr(e,t,n);return JSON.stringify(a,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var Xn=new WeakMap;function Lt(e){let t=Xn.get(e);return t===void 0&&(t=kc(e)),t}function kc(e){const t=e.typeName,n=Jc(e);if(n!==void 0){const s=e.fields[0],l=(c,u)=>{if(u.$typeName!==t&&s!==void 0)throw new L(s,`cannot use ${s} with message ${u.$typeName}`,"ForeignFieldError");return n(c,u)};return Xn.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),a=o[0],r=[],i=(s,l)=>{if(l.$typeName!==t&&a!==void 0)throw new L(a,`cannot use ${a} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<r.length;u++)r[u](s,l,c);return s.registry&&Hc(c,s,s.registry,l,e),c};Xn.set(e,i);for(const s of o){const l=xc(s);r.push(s.jsonName==="__proto__"||s.name==="__proto__"?Uc(l):l)}return i}function Uc(e){return(t,n,o)=>{const a=Object.create(null);e(t,n,a);for(const r of Object.keys(a))ue(o,r,a[r])}}function Jc(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>Tc(n,t);case"google.protobuf.Timestamp":return(t,n)=>Oc(n);case"google.protobuf.Duration":return(t,n)=>Qc(n);case"google.protobuf.FieldMask":return(t,n)=>Mc(n);case"google.protobuf.Struct":return(t,n)=>ti(n);case"google.protobuf.Value":return(t,n)=>ao(n);case"google.protobuf.ListValue":return(t,n)=>ni(n);default:if(je(e)){const t=e.fields[0],n=t.localName,o=We(t.scalar,!1),a=qt(t);return(r,i)=>{const s=i[n];return a(r,s===void 0?o:s)}}return}}function xc(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return Kc(e);case"list":case"map":{const t=e.fieldKind=="list"?qr(e):ei(e),n=e.name,o=e.jsonName,a=e.localName;return(r,i,s)=>{const l=t(r,i[a]);l!==void 0&&(s[r.useProtoFieldName?n:o]=l)}}}}function Kc(e){const t=$r(e),n=e.name,o=e.jsonName,a=e.localName;if(e.oneof){const r=e.oneof.localName;return(i,s,l)=>{const c=s[r];c.case===a&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=Cc){const r=e.presence==Bc?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[a];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,a))l[i.useProtoFieldName?n:o]=t(i,c);else if(r!==void 0)throw new Error(r)}}if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return(i,s,l)=>{const c=s[a];(c!==r||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case b.BOOL:return(r,i,s)=>{const l=i[a];(l!==!1||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.STRING:return(r,i,s)=>{const l=i[a];(l!==""||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.BYTES:return(r,i,s)=>{const l=i[a];(!(l instanceof Uint8Array)||l.byteLength>0||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};case b.DOUBLE:case b.FLOAT:return(r,i,s)=>{const l=i[a];(!Object.is(l,0)||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))};default:return(r,i,s)=>{const l=i[a];(l!=0||r.alwaysEmitImplicit)&&(s[r.useProtoFieldName?n:o]=t(r,l))}}}function zc(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return $r(e);case"list":return qr(e);case"map":return ei(e)}}function $r(e){switch(e.fieldKind){case"scalar":return qt(e);case"enum":return oo(e);case"message":return no(e)}}function no(e){const{toMessage:t}=Ze(e),n=Lt(e.message);return(o,a)=>n(o,t(a))}function qr(e){const t=Lc(e);return(n,o)=>{const a=o;if(a.length==0&&!n.alwaysEmitImplicit)return;const r=[];for(let i=0;i<a.length;i++)r.push(t(n,a[i]));return r}}function Lc(e){switch(e.listKind){case"scalar":return qt(e);case"enum":return oo(e);case"message":return no(e)}}function ei(e){const t=jc(e);return(n,o)=>{const a=o,r=Object.keys(a);if(r.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<r.length;s++){const l=r[s];ue(i,l,t(n,a[l]))}return i}}function jc(e){switch(e.mapKind){case"scalar":return qt(e);case"enum":return oo(e);case"message":return no(e)}}function oo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw Ra(t,o);return null}:(n,o)=>{var a,r;if(typeof o!="number")throw Ra(t,o);return n.enumAsInteger?o:(r=(a=t.value[o])===null||a===void 0?void 0:a.jsonName)!==null&&r!==void 0?r:o}}function Ra(e,t){return new Error(`cannot encode ${e} to JSON: expected number, got ${P(t)}`)}function qt(e){switch(e.scalar){case b.INT32:case b.SFIXED32:case b.SINT32:case b.FIXED32:case b.UINT32:return(t,n)=>{if(typeof n!="number")throw Qe(e,n);return n};case b.FLOAT:case b.DOUBLE:return(t,n)=>{if(typeof n!="number")throw Qe(e,n);return Number.isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n};case b.STRING:return(t,n)=>{if(typeof n!="string")throw Qe(e,n);return n};case b.BOOL:return(t,n)=>{if(typeof n!="boolean")throw Qe(e,n);return n};case b.UINT64:case b.FIXED64:case b.INT64:case b.SFIXED64:case b.SINT64:return(t,n)=>{if(typeof n=="bigint"||typeof n=="string"||typeof n=="number"&&Number.isInteger(n))return n.toString();throw Qe(e,n)};case b.BYTES:return(t,n)=>{if(n instanceof Uint8Array)return bl(n);throw Qe(e,n)}}}function Qe(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Vr(e,t))===null||n===void 0?void 0:n.message}`)}function Hc(e,t,n,o,a){const r=o.$unknown;if(r===void 0)return;const i=new Set;for(let s=0;s<r.length;s++){const{no:l}=r[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(a,l);if(!c)continue;const[u,h]=$t(c,Ic(o,c)),f=u[ie],Z=zc(h)(t,f[h.localName]);Z!==void 0&&(e[c.jsonName]=Z)}}}function Tc(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,a;if(n&&(o=Wc(e,n),o&&(a=n.getMessage(o.$typeName))),!a||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const r=dr(a)?{value:Lt(a)(t,o)}:Lt(a)(t,o);return r["@type"]=e.typeUrl,r}function Qc(e){const t=Number(e.seconds),n=e.nanos;if(t>315576e6||t<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);if(t>0&&n<0||t<0&&n>0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos sign must match seconds sign`);let o=e.seconds.toString();if(n!==0){let a=Math.abs(n).toString();a="0".repeat(9-a.length)+a,a.substring(3)==="000000"?a=a.substring(0,3):a.substring(6)==="000"&&(a=a.substring(0,6)),o+="."+a,n<0&&t==0&&(o="-"+o)}return o+"s"}function Mc(e){return e.paths.map(t=>{if(Ir(tt(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return tt(t)}).join(",")}function ti(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const a=n[o];ue(t,a,ao(e.fields[a]))}return t}function ao(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return ti(e.kind.value);case"listValue":return ni(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function ni(e){return e.values.map(ao)}function Oc(e){const t=Number(e.seconds)*1e3;if(t<Dr||t>_r)throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);if(e.nanos>999999999)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(e.nanos>0){const o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?n="."+o.substring(0,3)+"Z":o.substring(6)==="000"?n="."+o.substring(0,6)+"Z":n="."+o+"Z"}return new Date(t).toISOString().replace(".000Z",n)}var Dc=2;function _c(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function Pc(e,t,n){return oi(e,ld(t,e.typeName),n)}function oi(e,t,n){const o=oe(e);return $c(e,o,t,n),o}function $c(e,t,n,o){try{nt(e)(t,n,_c(o))}catch(a){throw $s(a)?new Error(`cannot decode ${a.field()} from JSON: ${a.message}`,{cause:a}):a}}var yn=new WeakMap;function nt(e){let t=yn.get(e);return t===void 0&&(t=qc(e)),t}function qc(e){const t=String(e),n=ed(e);if(n!==void 0){const i=(s,l,c)=>{if(++c.depth>c.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${c.recursionLimit} reached`);n(s,l,c),c.depth--};return yn.set(e,i),i}const o=e.typeName,a=new Map,r=(i,s,l)=>{var c;if(++l.depth>l.recursionLimit)throw new Error(`cannot decode ${t} from JSON: maximum recursion depth of ${l.recursionLimit} reached`);if(s==null||Array.isArray(s)||typeof s!="object")throw new Error(`cannot decode ${t} from JSON: ${P(s)}`);const u=new Map,h=new Set,f=Object.keys(s);for(let Z=0;Z<f.length;Z++){const E=f[Z],G=s[E],I=a.get(E);if(I!==void 0){const k=I.field;if(h.has(k))throw new L(k,"set multiple times");if(h.add(k),I.oneofScalarNullSkip&&G===null)continue;if(I.oneof){const d=u.get(I.oneof);if(d!==void 0)throw new L(I.oneof,`oneof set multiple times by ${d.name} and ${k.name}`);u.set(I.oneof,k)}I.read(i,G,l)}else{const k=E.startsWith("[")&&E.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(E.substring(1,E.length-1)):void 0;if(k?.extendee.typeName==o){const[d,m,A]=$t(k);Va(m)(d[ie],G,l),Xc(i,k,A())}if(k===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${E}" is unknown`)}}l.depth--};yn.set(e,r);for(const i of e.fields){const s={read:Va(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};a.set(i.name,s).set(i.jsonName,s)}return r}function ed(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>dd(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>ud(t,n);case"google.protobuf.Duration":return(t,n)=>md(t,n);case"google.protobuf.FieldMask":return(t,n)=>bd(t,n);case"google.protobuf.Struct":return(t,n,o)=>si(t,n,o);case"google.protobuf.Value":return(t,n,o)=>co(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>li(t,n,o);default:if(je(e)){const t=e.fields[0],n=t.localName,o=t.scalar,a=t.longAsString,r=ri(t);return(i,s)=>{s===null?i[n]=We(o,a):i[n]=r(s)}}return}}function Va(e){switch(e.fieldKind){case"scalar":return td(e);case"enum":return nd(e);case"message":return od(e);case"list":return ad(e);case"map":return id(e)}}function td(e){const t=ri(e),n=e.localName;if(e.oneof){const a=e.oneof.localName;return(r,i)=>{r[a]={case:n,value:t(i)}}}const o=ai(e);return(a,r)=>{r===null?o(a):a[n]=t(r)}}function ai(e){const t=e.localName;if(e.presence!=Dc)return a=>{delete a[t]};if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return r=>{r[t]=a}}const n=e.scalar,o=e.longAsString;return a=>{a[t]=We(n,o)}}function nd(e){const t=ro(e.enum),n=io(e.enum),o=e.localName,a=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&a){s[i].case===o&&(s[i]={case:void 0});return}const u=t(l,c.ignoreUnknownFields);if(u===ot)return;const h=n(u);if(h!==!0)throw new L(e,de(e,u,h));s[i]={case:o,value:u}}}const r=ai(e);return(i,s,l)=>{if(s===null&&a){r(i);return}const c=t(s,l.ignoreUnknownFields);if(c===ot)return;const u=n(c);if(u!==!0)throw new L(e,de(e,c,u));i[o]=c}}function od(e){const t=e.localName,{toMessage:n,toLocal:o}=Ze(e),a=nt(e.message),r=e.message.typeName!="google.protobuf.Value";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{const u=s[i];if(l===null&&r){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);a(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&r){delete i[t];return}const c=n(i[t]);a(c,s,l),i[t]=o(c)}}function ad(e){const t=e.localName,n=rd(e);return(o,a,r)=>{if(a===null)return;if(!Array.isArray(a))throw new L(e,"expected Array, got "+P(a));const i=o[t];for(let s=0;s<a.length;s++){const l=n(a[s],r,i.length);l!==ot&&i.push(l)}}}function rd(e){switch(e.listKind){case"scalar":{const t=so(e),n=Fe(e.scalar),o=lo(e);return(a,r,i)=>{if(a===null)throw new L(e,"list item must not be null");const s=t(a),l=n(s);if(l!==!0)throw new L(e,`list item #${i+1}: ${de(e,s,l)}`);return o(s)}}case"enum":{const t=ro(e.enum),n=io(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(a,r,i)=>{if(a===null&&o)throw new L(e,"list item must not be null");const s=t(a,r.ignoreUnknownFields);if(s===ot)return s;const l=n(s);if(l!==!0)throw new L(e,`list item #${i+1}: ${de(e,s,l)}`);return s}}case"message":{const{toMessage:t,toLocal:n}=Ze(e),o=nt(e.message),a=e.message.typeName!="google.protobuf.Value";return(r,i)=>{if(r===null&&a)throw new L(e,"list item must not be null");const s=t(void 0);return o(s,r,i),n(s)}}}}function id(e){const t=e.localName,n=e.mapKey,o=sd(n),a=Fe(n);let r,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":r=so(e),i=Fe(e.scalar),s=lo(e);break;case"enum":{const c=ro(e.enum);r=(u,h)=>c(u,h.ignoreUnknownFields),i=io(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=Ze(e),h=nt(e.message);l=e.message.typeName!="google.protobuf.Value",r=(f,Z)=>{const E=c(void 0);return h(E,f,Z),u(E)};break}}return(c,u,h)=>{if(u===null)return;if(typeof u!="object"||Array.isArray(u))throw new L(e,"expected object, got "+P(u));const f=c[t],Z=new Set,E=Object.keys(u);for(let G=0;G<E.length;G++){const I=E[G],k=u[I],d=o(I);if(Z.has(d))throw new L(e,`duplicate map key "${I}"`);if(Z.add(d),k===null&&l)throw new L(e,"map value must not be null");const m=r(k,h);if(m===ot)continue;const A=a(d);if(A!==!0)throw new L(e,`invalid map key: ${de({scalar:n},d,A)}`);if(i!==void 0){const g=i(m);if(g!==!0)throw new L(e,`map entry ${P(d)}: ${de(e,m,g)}`)}ue(f,d,s(m))}}}var ot=Symbol();function ro(e){const t=e.values[0].number,n=new Map;for(const o of e.values)n.set(o.jsonName,o.number);for(const o of e.values)n.set(o.name,o.number);return(o,a)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const r=n.get(o);if(r!==void 0)return r;if(a)return ot;break}}throw new Error(`cannot decode ${e} from JSON: ${P(o)}`)}}function io(e){if(e.open)return Fe(b.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function ri(e){const t=so(e),n=Fe(e.scalar),o=lo(e);return a=>{const r=t(a),i=n(r);if(i!==!0)throw new L(e,de(e,r,i));return o(r)}}function so(e){switch(e.scalar){case b.DOUBLE:case b.FLOAT:return t=>{if(t==="NaN")return NaN;if(t==="Infinity")return Number.POSITIVE_INFINITY;if(t==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof t=="number"){if(Number.isNaN(t))throw new L(e,"unexpected NaN number");if(!Number.isFinite(t))throw new L(e,"unexpected infinite number");return t}if(typeof t=="string"){if(t===""||t.trim().length!==t.length)return t;const n=Number(t);return Number.isFinite(n)?n:t}return t};case b.INT32:case b.FIXED32:case b.SFIXED32:case b.SINT32:case b.UINT32:return ii;case b.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return Pn(t)}catch(n){throw new L(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function lo(e){const t=e.fieldKind!=="map"&&e.longAsString;switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?z.parse(n):n;case b.FIXED64:case b.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?z.uParse(n):n;default:return n=>n}}function sd(e){switch(e){case b.BOOL:return t=>{switch(t){case"true":return!0;case"false":return!1}return t};case b.INT32:case b.FIXED32:case b.UINT32:case b.SFIXED32:case b.SINT32:return ii;case b.INT64:case b.SINT64:case b.SFIXED64:case b.UINT64:case b.FIXED64:return t=>/^-?0+$/.test(t)?"0":t.replace(/^(-?)0+(?=\d)/,"$1");default:return t=>t}}function ii(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;const t=Number(e);return Number.isNaN(t)?e:t}return e}function ld(e,t){let n;try{n=JSON.parse(e)}catch(o){const a=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${a}`,{cause:o})}return cd(e,t),n}function cd(e,t){const n=[];let o=!1,a=0;for(;a<e.length;)switch(e[a]){case"{":n.push(new Set),o=!0,a++;break;case"[":n.push(null),o=!1,a++;break;case"}":case"]":n.pop(),o=!1,a++;break;case",":o=n[n.length-1]!=null,a++;break;case":":o=!1,a++;break;case'"':{const r=a++;let i=!1;for(;a<e.length;){if(e[a]=="\\"){i=!0,a+=2;continue}if(e[a]=='"')break;a++}const s=a++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(r,s+1)):e.substring(r+1,s);if(l.has(c))throw new Error(`cannot decode message ${t} from JSON: duplicate object key "${c}"`);l.add(c)}o=!1;break}default:a++;break}}function dd(e,t,n){var o;if(t===null||Array.isArray(t)||typeof t!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${P(t)}`);if(Object.keys(t).length==0)return;const a=t["@type"];if(typeof a!="string"||a=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const r=a.includes("/")?a.substring(a.lastIndexOf("/")+1):a;if(!r.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);const i=(o=n.registry)===null||o===void 0?void 0:o.getMessage(r);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${a} is not in the type registry`);const s=oe(i);if(dr(i)&&Object.prototype.hasOwnProperty.call(t,"value"))nt(i)(s,t.value,n);else{const l={};for(const c of Object.keys(t))c!=="@type"&&ue(l,c,t[c]);nt(i)(s,l,n)}Gc(i,s,e)}function ud(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${P(t)}`);const n=t.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);const o=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(o<Dr||o>_r)throw new Error(`cannot decode message ${e.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);e.seconds=z.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function md(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${P(t)}`);const n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${P(t)}`);const o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${P(t)}`);if(e.seconds=z.parse(o),typeof n[2]!="string")return;const a=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(a),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function bd(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${P(t)}`);t!==""&&(e.paths=t.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);return Ir(n)}))}function si(e,t,n){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${P(t)}`);const o=Object.keys(t);for(let a=0;a<o.length;a++){const r=o[a],i=oe(Qr);co(i,t[r],n),ue(e.fields,r,i)}}function co(e,t,n){if(++n.depth>n.recursionLimit)throw new Error(`cannot decode ${e.$typeName} from JSON: maximum recursion depth of ${n.recursionLimit} reached`);switch(typeof t){case"number":e.kind={case:"numberValue",value:t};break;case"string":e.kind={case:"stringValue",value:t};break;case"boolean":e.kind={case:"boolValue",value:t};break;case"object":if(t===null)e.kind={case:"nullValue",value:In.NULL_VALUE};else if(Array.isArray(t)){const o=oe(Yc);li(o,t,n),e.kind={case:"listValue",value:o}}else{const o=oe(vc);si(o,t,n),e.kind={case:"structValue",value:o}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${P(t)}`)}return n.depth--,e}function li(e,t,n){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${P(t)}`);for(let o=0;o<t.length;o++){const a=oe(Qr);co(a,t[o],n),e.values.push(a)}}function Ea(e){const t=R[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var y=class De extends Error{constructor(t,n=R.Unknown,o,a,r){super(hd(t,n)),this.name="ConnectError",this.isWireError=!1,Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=t,this.code=n,this.metadata=new Headers(o??{}),this.details=a??[],this.cause=r}static from(t,n=R.Unknown){return t instanceof De?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new De(t.message,R.Canceled):new De(t.message,n,void 0,void 0,t):new De(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===De.prototype?!0:t.name==="ConnectError"&&"code"in t&&typeof t.code=="number"&&"metadata"in t&&"details"in t&&Array.isArray(t.details)&&"rawMessage"in t&&typeof t.rawMessage=="string"&&"cause"in t:!1}findDetails(t){const n=t.kind==="message"?{getMessage:a=>a===t.typeName?t:void 0}:t,o=[];for(const a of this.details){if("desc"in a){n.getMessage(a.desc.typeName)&&o.push(oe(a.desc,a.value));continue}const r=n.getMessage(a.type);if(r)try{o.push(Nt(r,a.value))}catch{}}return o}};function hd(e,t){return e.length?`[${Ea(t)}] ${e}`:`[${Ea(t)}]`}function gd(e,t,n){try{const o=Pn(e);return t?Nt(t,o,n):o}catch(o){throw y.from(o,R.DataLoss)}}function Ad(e,t){const n={};for(const o of e.methods){const a=t(o);a!=null&&(n[o.localName]=a)}return n}var Ut=4294967295,mn=Ut,pd=1024;function Zd(e,t,n){if(t!=null||(t=mn),e!=null||(e=Ut),n!=null||(n=pd),t<1||t>mn)throw new y(`writeMaxBytes ${t} must be >= 1 and <= ${mn}`,R.Internal);if(e<1||e>Ut)throw new y(`readMaxBytes ${e} must be >= 1 and <= ${Ut}`,R.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function fd(e,t){if(t>e)throw new y(`message size ${t} is larger than configured writeMaxBytes ${e}`,R.ResourceExhausted)}function ci(e,t,n=!1){if(t>e){let o=`message size is larger than configured readMaxBytes ${e}`;throw n&&(o=`message size ${t} is larger than configured readMaxBytes ${e}`),new y(o,R.ResourceExhausted)}}function Rd(e){return new Vd(e)}var Vd=class{constructor(e){this.readMaxBytes=e,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((e,t)=>e+t.byteLength,0)}decode(e){this.buf.push(e);const t=[];for(;;){let n=this.pop();if(!n)break;t.push(n)}return t}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){const e=this.env;return this.env=void 0,e}}head(){if(!this.cons(this.header))return;const e=this.headerView.getUint8(0),t=this.headerView.getUint32(1);return ci(this.readMaxBytes,t,!0),{flags:e,data:new Uint8Array(t)}}cons(e){const t=e.byteLength;if(this.byteLength<t)return!1;let n=0;for(;n<t;){const o=this.buf.shift();o.byteLength>t-n?(e.set(o.subarray(0,t-n),n),this.buf.unshift(o.subarray(t-n)),n+=t-n):(e.set(o,n),n+=o.byteLength)}return!0}};async function Ed(e,t,n){let{flags:o,data:a}=e;if((o&1)===1)throw new y("invalid envelope, already compressed",R.Internal);return t&&a.byteLength>=n&&(a=await t.compress(a),o=o|1),{data:a,flags:o}}async function Gd(e,t,n){let{flags:o,data:a}=e;if((o&1)===1){if(!t)throw new y("received compressed envelope, but do not know how to decompress",R.Internal);a=await t.decompress(a,n),o=o^1}return{data:a,flags:o}}function Nd(e,t){const n=new Uint8Array(t.length+5);n.set(t,5);const o=new DataView(n.buffer,n.byteOffset,n.byteLength);return o.setUint8(0,e),o.setUint32(1,t.length),n}var Se=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},J=function(e){return this instanceof J?(this.v=e,this):new J(e)},Ae=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(E){return Promise.resolve(E).then(Z,h)}}function s(Z,E){o[Z]&&(a[Z]=function(G){return new Promise(function(I,k){r.push([Z,G,I,k])>1||l(Z,G)})},E&&(a[Z]=E(a[Z])))}function l(Z,E){try{c(o[Z](E))}catch(G){f(r[0][3],G)}}function c(Z){Z.value instanceof J?Promise.resolve(Z.value.v).then(u,h):f(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function f(Z,E){Z(E),r.shift(),r.length&&l(r[0][0],r[0][1])}},Wd=function(e){var t,n;return t={},o("next"),o("throw",function(a){throw a}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(a,r){t[a]=e[a]?function(i){return(n=!n)?{value:J(e[a](i)),done:!1}:r?r(i):i}:r}};function Sd(e,...t){const[n,o,a]=vd(t);let r=e,i;return a?.propagateDownStreamError===!0&&(r=i=di(r)),r=Jt(r,...n,{propagateDownStreamError:!1}),o(r).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function vd(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function Jt(e,...t){return Ae(this,arguments,function*(){var o;const[a,r]=Yd(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};r?.propagateDownStreamError===!0&&(l=i=di(l));for(const u of a)l=u(l);const c=l[Symbol.asyncIterator]();try{for(;;){const u=yield J(c.next());if(u.done===!0)break;if(!i){yield yield J(u.value);continue}try{yield yield J(u.value)}catch(h){throw yield J(i.abort(h)),h}}}finally{r?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function Yd(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function Ga(e,t,n){return t===void 0||n===void 0?function(o){return Ae(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Se(o),u;u=yield J(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const h=s;yield yield J({flags:0,data:e.serialize(h)})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield J(i.call(c)))}finally{if(r)throw r.error}}})}:function(o){return Ae(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Se(o),u;u=yield J(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const h=s;let f,Z=0;h.end?(Z=Z|t,f=n.serialize(h.value)):f=e.serialize(h.value),yield yield J({flags:Z,data:f})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield J(i.call(c)))}finally{if(r)throw r.error}}})}}function Na(e,t,n){return n&&t!==void 0?function(o){return Ae(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Se(o),u;u=yield J(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;(h&t)===t?yield yield J({value:n.parse(f),end:!0}):yield yield J({value:e.parse(f),end:!1})}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield J(i.call(c)))}finally{if(r)throw r.error}}})}:function(o){return Ae(this,arguments,function*(){var a,r,i,s;try{for(var l=!0,c=Se(o),u;u=yield J(c.next()),a=u.done,!a;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;if(t!==void 0&&(h&t)===t){if(n===null)throw new y("unexpected end flag",R.InvalidArgument);continue}yield yield J(e.parse(f))}}catch(h){r={error:h}}finally{try{!l&&!a&&(i=c.return)&&(yield J(i.call(c)))}finally{if(r)throw r.error}}})}}function Wa(e,t){return function(n){return Ae(this,arguments,function*(){var o,a,r,i;try{for(var s=!0,l=Se(n),c;c=yield J(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield J(yield J(Ed(i,e,t)))}catch(u){a={error:u}}finally{try{!s&&!o&&(r=l.return)&&(yield J(r.call(l)))}finally{if(a)throw a.error}}})}}function Sa(e,t){return function(n){return Ae(this,arguments,function*(){var o,a,r,i;try{for(var s=!0,l=Se(n),c;c=yield J(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield J(yield J(Gd(i,e,t)))}catch(u){a={error:u}}finally{try{!s&&!o&&(r=l.return)&&(yield J(r.call(l)))}finally{if(a)throw a.error}}})}}function va(){return function(e){return Ae(this,arguments,function*(){var t,n,o,a;try{for(var r=!0,i=Se(e),s;s=yield J(i.next()),t=s.done,!t;r=!0){a=s.value,r=!1;const{flags:l,data:c}=a;yield yield J(Nd(l,c))}}catch(l){n={error:l}}finally{try{!r&&!t&&(o=i.return)&&(yield J(o.call(i)))}finally{if(n)throw n.error}}})}}function Ya(e){return function(t){return Ae(this,arguments,function*(){var n,o,a,r;const i=Rd(e);try{for(var s=!0,l=Se(t),c;c=yield J(l.next()),n=c.done,!n;s=!0){r=c.value,s=!1;const u=r;for(const h of i.decode(u))yield yield J(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(a=l.return)&&(yield J(a.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new y("protocol error: incomplete envelope",R.InvalidArgument)})}}function di(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,a,r={next(){return a=n.next().finally(()=>{a=void 0}),a},throw(s){return n.throw(s)}};t.return!==void 0&&(r=Object.assign(Object.assign({},r),{return(s){return n.return(s)}}));let i=!1;return{abort(s){if(o)return o.state;const l=()=>n.throw(s).then(c=>c.done===!0?"completed":"caught",()=>"rethrown");return a?(o={reason:s,state:a.then(l,l)},o.state):(o={reason:s,state:l()},o.state)},[Symbol.asyncIterator](){if(i)throw new Error("AsyncIterable cannot be re-used");return i=!0,r}}}function ui(e){return Ae(this,arguments,function*(){yield J(yield*Wd(Se(e)))})}var mi=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},at=function(e){return this instanceof at?(this.v=e,this):new at(e)},Id=function(e){var t,n;return t={},o("next"),o("throw",function(a){throw a}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(a,r){t[a]=e[a]?function(i){return(n=!n)?{value:at(e[a](i)),done:!1}:r?r(i):i}:r}},Xd=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(E){return Promise.resolve(E).then(Z,h)}}function s(Z,E){o[Z]&&(a[Z]=function(G){return new Promise(function(I,k){r.push([Z,G,I,k])>1||l(Z,G)})},E&&(a[Z]=E(a[Z])))}function l(Z,E){try{c(o[Z](E))}catch(G){f(r[0][3],G)}}function c(Z){Z.value instanceof at?Promise.resolve(Z.value.v).then(u,h):f(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function f(Z,E){Z(E),r.shift(),r.length&&l(r[0][0],r[0][1])}};function Re(e,t){return Ad(e,n=>{switch(n.methodKind){case"unary":return yd(t,n);case"server_streaming":return Bd(t,n);case"client_streaming":return Cd(t,n);case"bidi_streaming":return Fd(t,n);default:return null}})}function yd(e,t){return async(n,o)=>{var a,r;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(a=o?.onHeader)===null||a===void 0||a.call(o,i.header),(r=o?.onTrailer)===null||r===void 0||r.call(o,i.trailer),i.message}}function Bd(e,t){return(n,o)=>bi(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,ui([n]),o?.contextValues),o)}function Cd(e,t){return async(n,o)=>{var a,r,i,s,l,c;const u=await e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);(l=o?.onHeader)===null||l===void 0||l.call(o,u.header);let h,f=0;try{for(var Z=!0,E=mi(u.message),G;G=await E.next(),a=G.done,!a;Z=!0)s=G.value,Z=!1,h=s,f++}catch(I){r={error:I}}finally{try{!Z&&!a&&(i=E.return)&&await i.call(E)}finally{if(r)throw r.error}}if(!h)throw new y("protocol error: missing response message",R.Unimplemented);if(f>1)throw new y("protocol error: received extra messages for client streaming method",R.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function Fd(e,t){return(n,o)=>bi(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function bi(e,t){const n=(function(){return Xd(this,arguments,function*(){var o,a;const r=yield at(e);(o=t?.onHeader)===null||o===void 0||o.call(t,r.header),yield at(yield*Id(mi(r.message))),(a=t?.onTrailer)===null||a===void 0||a.call(t,r.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function wd(...e){const t=new AbortController,n=e.filter(a=>a!==void 0).concat(t.signal);for(const a of n){if(a.aborted){o.apply(a);break}a.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(Vt(this));for(const a of n)a.removeEventListener("abort",o)}return t}function kd(e){const t=new AbortController,n=()=>{t.abort(new y("the operation timed out",R.DeadlineExceeded))};let o;return e!==void 0&&(e<=0?n():o=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(o)}}function Vt(e){if(!e.aborted)return;if(e.reason!==void 0)return e.reason;const t=new Error("This operation was aborted");return t.name="AbortError",t}function Ia(){return{get(e){return e.id in this?this[e.id]:e.defaultValue},set(e,t){return this[e.id]=t,this},delete(e){return delete this[e.id],this}}}function Ud(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
|
|
52
|
+
`);for(const o of n){if(o==="")continue;const a=o.indexOf(":");if(a>0){const r=o.substring(0,a).trim(),i=o.substring(a+1).trim();t.append(r,i)}}return t}function Jd(e){const t=[];return e.forEach((n,o)=>{t.push(`${o}: ${n}\r
|
|
53
|
+
`)}),new TextEncoder().encode(t.join(""))}function Xa(){return{serialize:Jd,parse:Ud}}var xd="Content-Type",hi="Grpc-Encoding",Kd="Grpc-Accept-Encoding",zd="Grpc-Timeout",gi="Grpc-Status";var Ld="Grpc-Status-Details-Bin",jd="User-Agent",Hd="X-User-Agent",Td="X-Grpc-Web",Qd="application/grpc-web+proto",Md="application/grpc-web+json";function Ve(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}var Od=$("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[Kr]),Dd=N(Od,0);function Ai(e){var t;const n=e.get(Ld);if(n!=null){const a=gd(n,Dd);if(a.code==0)return;const r=new y(a.message,a.code,e);return r.details=a.details.map(i=>({type:i.typeUrl.substring(i.typeUrl.lastIndexOf("/")+1),value:i.value})),r.isWireError=!0,r}const o=e.get(gi);if(o!=null){if(o==="0")return;const a=parseInt(o,10);let r;return a in R?r=new y(decodeURIComponent((t=e.get("Grpc-Message"))!==null&&t!==void 0?t:""),a,e):r=new y(`invalid grpc-status: ${o}`,R.Internal,e),r.isWireError=!0,r}}function ya(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function pi(e,t){return oe(e,t)}function _d(e,t){function n(o){return o.done===!0?o:{done:o.done,value:pi(e,o.value)}}return{[Symbol.asyncIterator](){const o=t[Symbol.asyncIterator](),a={next:()=>o.next().then(n)};return o.throw!==void 0&&(a.throw=r=>o.throw(r).then(n)),o.return!==void 0&&(a.return=r=>o.return(r).then(n)),a}}}function Zi(e,t){if(!t)return e;for(const n of t.concat().reverse())e=n(e);return e}function Pd(e){var t;const n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function Ba(e,t,n,o){const a=It(Ca(e.input,t),o),r=It(Fa(e.input,n),o),i=It(Ca(e.output,t),o),s=It(Fa(e.output,n),o);return{getI(l){return l?a:r},getO(l){return l?i:s}}}function It(e,t){return{serialize(n){const o=e.serialize(n);return fd(t.writeMaxBytes,o.byteLength),o},parse(n){return ci(t.readMaxBytes,n.byteLength,!0),e.parse(n)}}}function Ca(e,t){return{parse(n){try{return Nt(e,n,t)}catch(o){throw new y(`parse binary: ${o instanceof Error?o.message:String(o)}`,R.Internal)}},serialize(n){try{return zr(e,n,t)}catch(o){throw new y(`serialize binary: ${o instanceof Error?o.message:String(o)}`,R.Internal)}}}}function Fa(e,t){var n,o;const a=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,r=(o=t?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,i=Pd(t);return{parse(s){try{return Pc(e,r.decode(s),i)}catch(l){throw y.from(l,R.InvalidArgument)}},serialize(s){try{const l=wc(e,s,i);return a.encode(l)}catch(l){throw y.from(l,R.Internal)}}}}function $d(e){const t=Zi(e.next,e.interceptors),[n,o,a]=fi(e);return t(Object.assign(Object.assign({},e.req),{message:pi(e.req.method.input,e.req.message),signal:n})).then(r=>(a(),r),o)}function qd(e){const t=Zi(e.next,e.interceptors),[n,o,a]=fi(e),r=Object.assign(Object.assign({},e.req),{message:_d(e.req.method.input,e.req.message),signal:n});let i=!1;return n.addEventListener("abort",function(){var s,l;const c=e.req.message[Symbol.asyncIterator]();i||(s=c.throw)===null||s===void 0||s.call(c,this.reason).catch(()=>{}),(l=c.return)===null||l===void 0||l.call(c).catch(()=>{})}),t(r).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){const l=s.message[Symbol.asyncIterator]();return{next(){return!i&&n.aborted?o(Vt(n)):l.next().then(c=>(c.done==!0&&(i=!0,a()),c),o)}}}}}),o)}function fi(e){const{signal:t,cleanup:n}=kd(e.timeoutMs),o=wd(e.signal,t);return[o.signal,function(r){const i=o.signal.aborted?y.from(Vt(o.signal),R.Canceled):y.from(r);return o.abort(i),n(),Promise.reject(i)},function(){n(),o.abort()}]}var eu=$("CiVoYWdpY29kZS9jb21tb24vdjEvZXJyb3JfZGV0YWlsLnByb3RvEhJoYWdpY29kZS5jb21tb24udjEiQgoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIoqgIlUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW1vbi5WMWIGcHJvdG8z",[Ye]),tu=N(eu,0),_={USAGE:2,HTTP_BAD_REQUEST:20,HTTP_UNAUTHORIZED:21,HTTP_FORBIDDEN:23,HTTP_NOT_FOUND:24,HTTP_CONFLICT:29,OPERATION_FAILED:30,WAIT_TIMEOUT:31,LOCK_LOST:32,HTTP_CLIENT_ERROR:40,HTTP_SERVER_ERROR:50,TRANSPORT:60,UNKNOWN:70},W=class extends Error{constructor(e){super(e),this.name="CliUsageError"}},st=class extends Error{constructor(e){super(e),this.name="CliOperationFailedError"}},uo=class extends Error{constructor(e){super(e),this.name="CliWaitTimeoutError"}},Ke=class extends Error{errorCode;reported;constructor(e,t={}){super(e),this.name="CliLockLostError",this.errorCode=t.errorCode,this.reported=t.reported??!1}},He=class extends Error{status;details;constructor(e,t,n){super(t),this.name="CliHttpError",this.status=e,this.details=n}};function mo(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function rt(e,t){const n=mo(e)?.[t];return typeof n=="string"&&n.trim()?n.trim():void 0}function bo(e){return e.includes("fetch failed")||e.includes("ECONNREFUSED")||e.includes("ENOTFOUND")||e.includes("ECONNRESET")||e.includes("ETIMEDOUT")||e.includes("EHOSTUNREACH")||e.includes("EAI_AGAIN")||e.includes("Failed to parse URL")||e.includes("Invalid URL")}function wa(e){switch(e){case 400:return _.HTTP_BAD_REQUEST;case 401:return _.HTTP_UNAUTHORIZED;case 403:return _.HTTP_FORBIDDEN;case 404:return _.HTTP_NOT_FOUND;case 409:return _.HTTP_CONFLICT;default:return e&&e>=400&&e<500?_.HTTP_CLIENT_ERROR:e&&e>=500?_.HTTP_SERVER_ERROR:_.UNKNOWN}}var nu={[R.InvalidArgument]:400,[R.OutOfRange]:400,[R.Unauthenticated]:401,[R.PermissionDenied]:403,[R.NotFound]:404,[R.AlreadyExists]:409,[R.FailedPrecondition]:409,[R.Aborted]:409,[R.Unimplemented]:501,[R.Internal]:500,[R.Unknown]:500,[R.DataLoss]:500,[R.Unavailable]:503,[R.DeadlineExceeded]:504},ou=/exceeds?\s+the\s+maximum|too\s+large|payload\s+too\s+large/i;function au(e){return e.code===R.ResourceExhausted?ou.test(e.rawMessage)?413:429:nu[e.code]??500}function ru(e){return e.code!==R.Unavailable&&e.code!==R.Unknown&&e.code!==R.Internal&&e.code!==R.Aborted?!1:e.cause instanceof Error||bo(e.rawMessage)}function en(e){if(!(e instanceof y)||e.code===R.Canceled||ru(e))return;const[t]=e.findDetails(tu),n=t&&t.code.length>0?t.code:void 0,o=t?.data??{},a=e.rawMessage.trim()||`The backend rejected the request (${R[e.code]}).`;return{status:au(e),message:a,code:n,body:{error:a,...n?{code:n}:{},...o}}}function Ri(e){if(!(e instanceof y)||e.code!==R.FailedPrecondition)return;const t=en(e);return new Ke(t?.message??e.rawMessage,{errorCode:t?.code})}function Vi(e){return e instanceof y?e.code===R.Unavailable||e.code===R.DeadlineExceeded||e.code!==R.Canceled&&en(e)===void 0:e instanceof Error&&bo(e.message)}function ka(e,t){const n=t.baseUrl??"the configured backend";return{exitCode:_.TRANSPORT,message:/Failed to parse URL|Invalid URL/i.test(e)?`Invalid HagiCode backend base URL: ${n}`:`Cannot reach HagiCode backend at ${n}. Check that the backend is running and the base URL is correct.`}}function Ei(e,t={}){if(e instanceof W)return{exitCode:_.USAGE,message:e.message};if(e instanceof st)return{exitCode:_.OPERATION_FAILED,message:e.message};if(e instanceof uo)return{exitCode:_.WAIT_TIMEOUT,message:e.message};if(e instanceof Ke)return{exitCode:_.LOCK_LOST,message:e.message,errorCode:e.errorCode};if(e instanceof He)return{exitCode:wa(e.status),status:e.status,message:e.message,details:e.details};if(e instanceof y){const n=en(e);if(n){const o=su(n.body);return{exitCode:wa(n.status),status:n.status,message:o.length>0?[n.message,...o].join(`
|
|
54
|
+
`):n.message,errorCode:rt(n.body,"errorCode")??n.code,correlationId:rt(n.body,"correlationId"),details:n.body}}return e.code===R.Canceled?{exitCode:_.UNKNOWN,message:"The request was cancelled."}:ka(e.rawMessage,t)}return e instanceof Error?bo(e.message)?ka(e.message,t):{exitCode:_.UNKNOWN,message:e.message}:{exitCode:_.UNKNOWN,message:String(e)}}function iu(e){const t=mo(e)?.errors;return Array.isArray(t)?t.flatMap(n=>{const o=rt(n,"field"),a=rt(n,"message");return o&&a?[` - ${o}: ${a}`]:[]}):[]}function su(e){const t=mo(e)?.fieldErrors;return Array.isArray(t)?t.flatMap(n=>{const o=rt(n,"field"),a=rt(n,"message");return o&&a?[` - ${o}: ${a}`]:[]}):[]}function Gi(e,t={}){if(t.json)return`${JSON.stringify({error:{message:e.message,status:e.status,exitCode:e.exitCode,errorCode:e.errorCode,correlationId:e.correlationId,details:e.details}},null,2)}
|
|
55
|
+
`;const n=[e.status?`status=${e.status}`:void 0,e.errorCode?`errorCode=${e.errorCode}`:void 0,e.correlationId?`correlationId=${e.correlationId}`:void 0].filter(Boolean),o=n.length>0?` (${n.join(", ")})`:"";return[`${e.message}${o}`,...iu(e.details)].join(`
|
|
56
|
+
`)+`
|
|
57
|
+
`}var lu="--base-url",cu="HAGI_API_BASE_URL";function he(e){const t=e?.trim();return t||void 0}function ho(e=process.env){return(0,yo.join)(he(e.XDG_CONFIG_HOME)??(0,yo.join)((0,As.homedir)(),".config"),"hagi","config.json")}function Ni(e){const t=ho(e);let n;try{n=(0,Rn.readFileSync)(t,"utf8")}catch(a){if(a.code==="ENOENT")return;throw new W(`Cannot read CLI config file ${t}: ${a instanceof Error?a.message:String(a)}`)}let o;try{o=JSON.parse(n)}catch{throw new W(`CLI config file ${t} is not valid JSON.`)}return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function du(e=process.env){const t=Ni(e)?.baseUrl;return typeof t=="string"?he(t):void 0}function uu(e=process.env){const t=Ni(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new W(`CLI config file ${ho(e)} has a "steer" value that is not true or false.`)}function mu(e={},t=process.env){const n=he(e.baseUrl)??he(t.HAGI_API_BASE_URL)??du(t);if(!n)throw new W(`No backend base URL is configured. Set ${lu} <url>, the ${cu} environment variable, or "baseUrl" in ${ho(t)}.`);return{baseUrl:n,token:he(e.token)??he(t.HAGI_API_TOKEN),lang:he(e.lang)??he(t.HAGI_API_LANG)}}var Et;function bu(e={},t=process.env){return Et=mu(e,t),Et}function Wi(){if(!Et)throw new W("The backend connection is not configured. Resolve the API runtime before calling the backend.");return Et}function hu(){return he(Et?.baseUrl)}var ne=$("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[fe,Mr]),gu=N(ne,1),Au=N(ne,5),pu=N(ne,15),Zu=N(ne,17),fu=N(ne,19),Ru=N(ne,21),Vu=N(ne,23),Eu=N(ne,25),Gu=N(ne,41),Nu=N(ne,50),Wu=N(ne,51),Su=N(ne,69),vu=N(ne,71),Yu=N(ne,85),Iu=Ve(ne,0),Ie=$("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[fe,ne]),Xu=N(Ie,1),yu=N(Ie,3),Bu=N(Ie,5),Cu=N(Ie,7),Fu=N(Ie,9),wu=N(Ie,11),ku=N(Ie,14),Uu=N(Ie,15),Ju=Ve(Ie,0),we=$("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAkiiAIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBQgkKB193aW5kb3dCGAoWX21pbl9yZW1haW5pbmdfcGVyY2VudEIbChlfbWF4X21pbnV0ZXNfYmVmb3JlX3Jlc2V0Qh4KHF9yZXF1aXJlX21hbnVhbF9jb25maXJtYXRpb24i9wIKGFNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxIMCgRtb2RlGAEgASgJEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdGltZV96b25lGAMgASgJSACIAQESFwoKc3RhcnRfZGF0ZRgEIAEoCUgBiAEBEhUKCGVuZF9kYXRlGAUgASgJSAKIAQESGAoLdGltZV9vZl9kYXkYBiABKAlIA4gBARI9CgZyZXBlYXQYByABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlcGVhdER0bxJGCgtxdW90YV9yZXNldBgIIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUXVvdGFSZXNldER0b0IMCgpfdGltZV96b25lQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki0AYKFVNjaGVkdWxlZFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg0KBXNjb3BlGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSIQoUZGVmaW5pdGlvbl9maWxlX3BhdGgYBSABKAlIAIgBARIMCgRuYW1lGAYgASgJEg8KB2VuYWJsZWQYByABKAgSEQoEaWNvbhgIIAEoCUgBiAEBEhIKBWNvbG9yGAkgASgJSAKIAQESLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoIc2NoZWR1bGUYDCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYDSABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg0KBXN0YXRlGA8gASgJEi8KC25leHRfcnVuX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgpleGNlcHRpb25zGBEgAygLMjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIcCg9pbnB1dF9maWxlX3BhdGgYEiABKAlIA4gBARI7ChdsYXN0X3RyaWdnZXJlZF9yZXNldF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASWQoVcGVuZGluZ19xdW90YV90cmlnZ2VyGBQgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5QZW5kaW5nUXVvdGFUcmlnZ2VyRHRvQhcKFV9kZWZpbml0aW9uX2ZpbGVfcGF0aEIHCgVfaWNvbkIICgZfY29sb3JCEgoQX2lucHV0X2ZpbGVfcGF0aCKJAQojU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SLQoJcmFpc2VkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg93aW5kb3dfcmVzZXRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkcKIVNjaGVkdWxlZFBsYW5EZWZpbml0aW9uUHJvYmxlbUR0bxIRCglmaWxlX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLTAQofU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIMCgRtb2RlGAEgASgJEhEKBHJ1bGUYAiABKAlIAIgBARIQCgh3ZWVrZGF5cxgDIAMoCRIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBQgcKBV9ydWxlQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki6gMKH1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USDwoHcGxhbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKDW9jY3VycmVuY2VfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSDAoEdHlwZRgFIAEoCRIPCgdlbmFibGVkGAYgASgIEhEKBGljb24YByABKAlIAIgBARISCgVjb2xvchgIIAEoCUgBiAEBEg0KBXN0YXRlGAkgASgJEh8KEnNjaGVkdWxlX3RpbWVfem9uZRgKIAEoCUgCiAEBEkoKCnJlY3VycmVuY2UYCyABKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIvCgtuZXh0X3J1bl9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLb3JpZ2luYWxfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2lzX21vZGlmaWVkGA4gASgIQgcKBV9pY29uQggKBl9jb2xvckIVChNfc2NoZWR1bGVfdGltZV96b25lIpMCCiNTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVBhZ2VSZXNwb25zZRIvCgtyYW5nZV9zdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJcmFuZ2VfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFkaXNwbGF5X3RpbWVfem9uZRgDIAEoCRJHCgdlbnRyaWVzGAQgAygLMjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USGAoLbmV4dF9jdXJzb3IYBSABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3Ii0QIKGFNjaGVkdWxlZFBsYW5TYXZlUmVxdWVzdBIMCgR0eXBlGAEgASgJEhIKBXNjb3BlGAIgASgJSACIAQESDAoEbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhEKBGljb24YBSABKAlIAYgBARISCgVjb2xvchgGIAEoCUgCiAEBEkEKCHNjaGVkdWxlGAcgASgLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxJECgphZ2VudF9wb29sGAggASgLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5BZ2VudFBvb2xEdG8SJwoHcGF5bG9hZBgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIICgZfc2NvcGVCBwoFX2ljb25CCAoGX2NvbG9yIo4CCiJTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0EjEKDW9jY3VycmVuY2VfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbmFtZRgDIAEoCUgAiAEBEkQKCmFnZW50X3Bvb2wYBCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQgcKBV9uYW1lIs4DChJDaGF0SGVyb1N1bW1hcnlEdG8SDwoHaGVyb19pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBSABKAkSGQoMYWdlbnRfY2xpX2lkGAYgASgJSAKIAQESGwoOYWdlbnRfY2xpX25hbWUYByABKAlIA4gBARIbCg5hZ2VudF9jbGlfaWNvbhgIIAEoCUgEiAEBEhUKCG1vZGVsX2lkGAkgASgJSAWIAQESFwoKbW9kZWxfbmFtZRgKIAEoCUgGiAEBEhcKCm1vZGVsX2ljb24YCyABKAlIB4gBARIiChVzZWNvbmRhcnlfbW9kZWxfbGFiZWwYDCABKAlICIgBAUIOCgxfZGVzY3JpcHRpb25CBwoFX2ljb25CDwoNX2FnZW50X2NsaV9pZEIRCg9fYWdlbnRfY2xpX25hbWVCEQoPX2FnZW50X2NsaV9pY29uQgsKCV9tb2RlbF9pZEINCgtfbW9kZWxfbmFtZUINCgtfbW9kZWxfaWNvbkIYChZfc2Vjb25kYXJ5X21vZGVsX2xhYmVsIjgKFE9wZW5TcGVjVGFza1Byb2dyZXNzEhEKCWNvbXBsZXRlZBgBIAEoBRINCgV0b3RhbBgCIAEoBSKAAgoQT3BlblNwZWNGaWxlSW5mbxIRCglmaWxlX25hbWUYASABKAkSFQoNcmVsYXRpdmVfcGF0aBgCIAEoCRIOCgZleGlzdHMYAyABKAgSEQoJZmlsZV90eXBlGAQgASgJEhMKC2lzX3JlcXVpcmVkGAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEjEKDWFyY2hpdmVkX2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkIKDXRhc2tfcHJvZ3Jlc3MYCCABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNUYXNrUHJvZ3Jlc3MiXgoRT3BlblNwZWNGaWxlc0luZm8SEQoJYmFzZV9wYXRoGAEgASgJEjYKBWZpbGVzGAIgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZUluZm8izAEKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCEIXChVfZXhlY3V0aW9uX21lc3NhZ2VfaWQigAEKFlNlc3Npb25Ob3RpZmljYXRpb25EdG8SDAoEa2luZBgBIAEoCRIvCgtvYnNlcnZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoHcGF5bG9hZBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSLtAQoWU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIaCg1wcm9tcHRfdG9rZW5zGAEgASgFSACIAQESIQoUY2FjaGVkX3Byb21wdF90b2tlbnMYAiABKAVIAYgBARIeChFjb21wbGV0aW9uX3Rva2VucxgDIAEoBUgCiAEBEjMKD2xhc3RfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX3Byb21wdF90b2tlbnNCFwoVX2NhY2hlZF9wcm9tcHRfdG9rZW5zQhQKEl9jb21wbGV0aW9uX3Rva2VucyJfChRTdGFnZUV4ZWN1dG9ySW5mb0R0bxIVCg1wcm92aWRlcl90eXBlGAEgASgJEjAKDGxhc3RfdXBkYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAivAIKFVN0YWdlSGVyb1NlbGVjdGlvbkR0bxIRCglzdGFnZV9rZXkYASABKAkSEgoKc2NyaXB0X2tleRgCIAEoCRIVCg1zY2VuYXJpb19uYW1lGAMgASgJEhQKB2hlcm9faWQYBCABKAlIAIgBARIWCgloZXJvX25hbWUYBSABKAlIAYgBARIWCgloZXJvX2ljb24YBiABKAlIAogBARIVCg1leGVjdXRvcl90eXBlGAcgASgJEhUKDXVzZWRfZmFsbGJhY2sYCCABKAgSGAoQc2VsZWN0aW9uX3NvdXJjZRgJIAEoCRIvCgtzZWxlY3RlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uIrcLChJTZXNzaW9uUmVzcG9uc2VEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhwKD2NoaWVmX2NvbXBsYWludBgEIAEoCUgBiAEBEgwKBGNvZGUYBSABKAUSDAoEdHlwZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJaXNfYWN0aXZlGAggASgIEjIKDmxhc3RfYWN0aXZlX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwcm9qZWN0X2lkGAogASgJEhQKDHByb2plY3RfbmFtZRgLIAEoCRIUCgxwcm9qZWN0X3BhdGgYDCABKAkSGgoNcHJvcG9zYWxfbmFtZRgNIAEoCUgCiAEBEkEKD29wZW5fc3BlY19maWxlcxgOIAEoCzIoLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSRQoOcXVldWVfbWVzc2FnZXMYECADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuUXVldWVNZXNzYWdlU3VtbWFyeUR0bxIeChF3b3JraW5nX2RpcmVjdG9yeRgRIAEoCUgDiAEBEhUKCG1ldGFkYXRhGBIgASgJSASIAQESHwoSY2hhdF9leGVjdXRvcl90eXBlGBMgASgJSAWIAQESPAoJY2hhdF9oZXJvGBQgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoYXRIZXJvU3VtbWFyeUR0bxJbChJzdGFnZV9leGVjdXRvcl9tYXAYFSADKAsyPy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJmChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyRC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlSGVyb1NlbGVjdGlvbk1hcEVudHJ5EiAKE3J1bnRpbWVfbW9kZWxfbGFiZWwYFyABKAlIBogBARI5ChVwcm9jZXNzaW5nX3N0YXJ0ZWRfYXQYGCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDXNlc3Npb25fdXNhZ2UYGSABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIcCg9wcmV2aW91c19zdGF0dXMYGiABKAlIB4gBARJECg1ub3RpZmljYXRpb25zGBsgAygLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8aZAoVU3RhZ2VFeGVjdXRvck1hcEVudHJ5EgsKA2tleRgBIAEoCRI6CgV2YWx1ZRgCIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaagoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlSGVyb1NlbGVjdGlvbkR0bzoCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMiLgobU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvEg8KB3BsYW5faWQYASABKAkymQ4KFVNjaGVkdWxlZFBsYW5zU2VydmljZRJ5ChJMaXN0U2NoZWR1bGVkUGxhbnMSMC5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXNwb25zZRJzChBHZXRTY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXNwb25zZRKOAQoZTGlzdFNjaGVkdWxlZFBsYW5Qcm9ibGVtcxI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBo4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVzcG9uc2USlwEKHExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXMSOi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1JlcXVlc3QaOy5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1Jlc3BvbnNlEnwKE0NyZWF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE1VwZGF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE0RlbGV0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEpQBChtFZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRWRpdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVxdWVzdBo6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRKaAQodRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOy5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2UScwoQUnVuU2NoZWR1bGVkUGxhbhIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVzcG9uc2USeQoSU3RhcnRTY2hlZHVsZWRQbGFuEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YXJ0U2NoZWR1bGVkUGxhblJlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVzcG9uc2USowEKIENvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBo/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEqABCh9DYW5jZWxTY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXNwb25zZUIrqgIoUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW11bml0eS5WMWIGcHJvdG8z",[Ye,fe]),xu=N(we,1),Ku=N(we,3),zu=N(we,9),Lu=N(we,11),ju=N(we,19),Hu=N(we,21),Ua=N(we,39),Tu=Ve(we,0),Qu=$("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[fe]),go=$("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ye,Qu]),Mu=N(go,5),Ou=N(go,7),Du=Ve(go,0),q=$("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[fe]),_u=N(q,1),Pu=N(q,5),$u=N(q,7),qu=N(q,9),em=N(q,11),tm=N(q,13),nm=N(q,19),om=N(q,21),am=N(q,23),rm=N(q,25),im=N(q,27),sm=N(q,37),lm=N(q,39),cm=N(q,49),dm=N(q,50),um=N(q,52),mm=Ve(q,0),Si=$("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyIlCiNHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVxdWVzdCJgCiRHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0RHRvIkQKIEdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXF1ZXN0EhQKB21pbnV0ZXMYASABKAVIAIgBAUIKCghfbWludXRlcyJiCiFHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USPQoGcmVzdWx0GAEgAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0U25hcHNob3QiOAoaR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QSEQoEZGF0ZRgBIAEoCUgAiAEBQgcKBV9kYXRlIlgKG0dldEhlcm9CYXR0bGVSZXBvcnRSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RHRvIkAKIEdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXF1ZXN0EhIKBXJhbmdlGAEgASgJSACIAQFCCAoGX3JhbmdlImcKIUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvIuwCChxHZXRIaXN0b3JpY2FsVGltZWxpbmVSZXF1ZXN0EhgKC2VudGl0eV90eXBlGAEgASgJSACIAQESFgoJZW50aXR5X2lkGAIgASgJSAGIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgCiAEBEhcKCnNlc3Npb25faWQYBCABKAlIA4gBARIzCg9yYW5nZV9zdGFydF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBmN1cnNvchgHIAEoCUgEiAEBEhYKCXBhZ2Vfc2l6ZRgIIAEoBUgFiAEBQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19jdXJzb3JCDAoKX3BhZ2Vfc2l6ZSJpCh1HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvIiUKI0dldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0InIKJEdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8iqgEKFkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8SLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg50b3RhbF9wcm9qZWN0cxgCIAEoBRIaChJ0b3RhbF9yZXBvc2l0b3JpZXMYAyABKAUSFwoPZmFpbGVkX3Byb2plY3RzGAQgASgFEhQKDGhhc19mYWlsdXJlcxgFIAEoCCKyBQoYUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEhEKBGNvZGUYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAkSFQoNcmVsYXRpdmVfcGF0aBgEIAEoCRIUCgxkaXNwbGF5X25hbWUYBSABKAkSEQoEdHlwZRgGIAEoCUgBiAEBEgwKBHRhZ3MYByADKAkSEQoEaWNvbhgIIAEoCUgCiAEBEhAKA3VybBgJIAEoCUgDiAEBEhgKEGNvbGxhcHNlX3RvX21vcmUYCiABKAgSGQoRaXNfdmFsaWRfZ2l0X3JlcG8YCyABKAgSHAoUZ2l0X3N0YXR1c19hdmFpbGFibGUYDCABKAgSEwoGYnJhbmNoGA0gASgJSASIAQESHwoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYDiABKAgSHQoVdW5wdXNoZWRfY29tbWl0X2NvdW50GA8gASgFEhsKE2hhc190cmFja2luZ19icmFuY2gYECABKAgSNQoPdHJhY2tpbmdfYnJhbmNoGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhMKC2FoZWFkX2NvdW50GBIgASgFEhQKDGJlaGluZF9jb3VudBgTIAEoBRIXCgpzeW5jX3N0YXRlGBQgASgJSAWIAQESEwoLaXNfb3B0aW9uYWwYFSABKAgSFAoMaXNfc2FuaXRpemVkGBYgASgIEhsKE3Nhbml0aXphdGlvbl9yZWFzb24YFyABKAkSGAoQaGFzX25hbWVfd2FybmluZxgYIAEoCBIVCg1uYW1lX3dhcm5pbmdzGBkgAygJQgcKBV9jb2RlQgcKBV90eXBlQgcKBV9pY29uQgYKBF91cmxCCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSK6BAoVUHJvamVjdEFnZ3JlZ2F0aW9uRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWlzX21vbm9fc3BlY3MYBSABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAYgASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgHIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgIIAEoCEgDiAEBEkQKDHJlcG9zaXRvcmllcxgJIAMoCzIuLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlJlcG9zaXRvcnlBZ2dyZWdhdGlvbkR0bxJBCh1naXRfc25hcHNob3RfcmVmcmVzaGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIQoZZ2l0X3NuYXBzaG90X3NlcnZlZF9zdGFsZRgLIAEoCBIrCgVlcnJvchgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIRCgloYXNfZXJyb3IYDSABKAhCDgoMX2Rlc2NyaXB0aW9uQhUKE19tb25vX3NwZWNzX3ZlcnNpb25CHAoaX21vbm9fc3BlY3NfcmVwb19kaXJlY3RvcnlCIQofX21vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZSKbAQoaRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8SPQoIcHJvamVjdHMYASADKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Qcm9qZWN0QWdncmVnYXRpb25EdG8SPgoIbWV0YWRhdGEYAiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5BZ2dyZWdhdGlvbk1ldGFkYXRhRHRvIqkDChxUb2tlbk1vbml0b3JVc2FnZVNuYXBzaG90RHRvEg4KBnN0YXR1cxgBIAEoCRIOCgZzb3VyY2UYAiABKAkSGwoOZmFpbHVyZV9yZWFzb24YAyABKAlIAIgBARIVCghkYXRlX2tleRgEIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgFIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAYgASgBSAOIAQESLwoLcmVhZF9hdF91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEHNuYXBzaG90X3ZlcnNpb24YCCABKAMSOwoGbGltaXRzGAkgASgLMisuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRzRHRvEj0KB3BlcmlvZHMYCiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RzRHRvQhEKD19mYWlsdXJlX3JlYXNvbkILCglfZGF0ZV9rZXlCDwoNX3RvdGFsX3Rva2Vuc0ILCglfY29zdF91c2QiugEKFVRva2VuTW9uaXRvckxpbWl0c0R0bxIyCg51cGRhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcmVmcmVzaF9tcxgCIAEoBUgAiAEBEkUKCXByb3ZpZGVycxgDIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG9CDQoLX3JlZnJlc2hfbXMi0wIKHFRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSDgoGc3RhdHVzGAIgASgJEhcKCnBsYW5fbGFiZWwYAyABKAlIAIgBARIyCg51cGRhdGVkX2F0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoHd2luZG93cxgFIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEhgKC2JhbGFuY2VfdXNkGAYgASgBSAGIAQESSAoNcmVzZXRfY3JlZGl0cxgHIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0b0INCgtfcGxhbl9sYWJlbEIOCgxfYmFsYW5jZV91c2Qi9QMKGlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEgwKBGtpbmQYASABKAkSEgoFbGFiZWwYAiABKAlIAIgBARIZCgx1c2VkX3BlcmNlbnQYAyABKAFIAYgBARIeChFyZW1haW5pbmdfcGVyY2VudBgEIAEoAUgCiAEBEhEKBHVzZWQYBSABKAFIA4gBARISCgVsaW1pdBgGIAEoAUgEiAEBEhYKCXJlbWFpbmluZxgHIAEoAUgFiAEBEhUKCGN1cnJlbmN5GAggASgJSAaIAQESMQoNcmVzZXRzX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOd2luZG93X21pbnV0ZXMYCiABKAVIB4gBARIeChFyZXNldF9kZXNjcmlwdGlvbhgLIAEoCUgIiAEBEhoKDW1ldGVyX3Zpc2libGUYDCABKAhICYgBAUIICgZfbGFiZWxCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnRCBwoFX3VzZWRCCAoGX2xpbWl0QgwKCl9yZW1haW5pbmdCCwoJX2N1cnJlbmN5QhEKD193aW5kb3dfbWludXRlc0IUChJfcmVzZXRfZGVzY3JpcHRpb25CEAoOX21ldGVyX3Zpc2libGUivQEKG1Rva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0bxIcCg9hdmFpbGFibGVfY291bnQYASABKAVIAIgBARI3ChNuZXh0X2V4cGlyZXNfYXRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9leHBpcmF0aW9uc191dGMYAyADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhIKEF9hdmFpbGFibGVfY291bnQizwEKFlRva2VuTW9uaXRvclBlcmlvZHNEdG8SOgoFdG9kYXkYASABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SOgoFbW9udGgYAiABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SPQoIYWxsX3RpbWUYAyABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8iigQKFVRva2VuTW9uaXRvclBlcmlvZER0bxIUCgx0b3RhbF90b2tlbnMYASABKAMSEAoIY29zdF91c2QYAiABKAESHgoRY2FjaGVfcmVhZF90b2tlbnMYAyABKANIAIgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYBCABKANIAYgBARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSAKIAQESGQoMdGltZWRfdG9rZW5zGAYgASgDSAOIAQESIAoTdGltZWRfb3V0cHV0X3Rva2VucxgHIAEoA0gEiAEBEh4KEXRpbWVkX2R1cmF0aW9uX21zGAggASgDSAWIAQESTQoMY2FwYWJpbGl0aWVzGAkgASgLMjcuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEkIKB2NsaWVudHMYCiADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG9CFAoSX2NhY2hlX3JlYWRfdG9rZW5zQhUKE19jYWNoZV93cml0ZV90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCDwoNX3RpbWVkX3Rva2Vuc0IWChRfdGltZWRfb3V0cHV0X3Rva2Vuc0IUChJfdGltZWRfZHVyYXRpb25fbXMifwohVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEh0KEHRva2VuX2NvbXBvbmVudHMYASABKAhIAIgBARIXCgp0aHJvdWdocHV0GAIgASgISAGIAQFCEwoRX3Rva2VuX2NvbXBvbmVudHNCDQoLX3Rocm91Z2hwdXQiTwobVG9rZW5Nb25pdG9yUGVyaW9kQ2xpZW50RHRvEg4KBmNsaWVudBgBIAEoCRIOCgZ0b2tlbnMYAiABKAMSEAoIY29zdF91c2QYAyABKAEi2AIKElRva2VuVGhyb3VnaHB1dER0bxIfChdpbnB1dF90b2tlbnNfcGVyX21pbnV0ZRgBIAEoBRIgChhvdXRwdXRfdG9rZW5zX3Blcl9taW51dGUYAiABKAUSGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSMAoMbGFzdF91cGRhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCh9yZWd1bGFyX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAYgASgFEiUKHWNhY2hlX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAcgASgFEiIKGnRvdGFsX3JlZ3VsYXJfaW5wdXRfdG9rZW5zGAggASgDEiAKGHRvdGFsX2NhY2hlX2lucHV0X3Rva2VucxgJIAEoAyKvAQoXVG9rZW5UaHJvdWdocHV0U25hcHNob3QSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIcChRyZWd1bGFyX2lucHV0X3Rva2VucxgEIAEoBRIaChJjYWNoZV9pbnB1dF90b2tlbnMYBSABKAUi4AEKLEhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvEhUKDWNhbm9uaWNhbF9rZXkYASABKAkSEAoIbmFtZV9rZXkYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSMwoPdW5sb2NrZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5wcm9ncmVzc19hZnRlchgFIAEoBRIOCgZ0YXJnZXQYBiABKAUSFQoNcmV3YXJkX2Ftb3VudBgHIAEoAyK7AQopSGVyb0JhdHRsZVJlcG9ydFBlbmRpbmdBY2hpZXZlbWVudEhpbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRIRCglnb2FsX3R5cGUYAyABKAkSEAoIcHJvZ3Jlc3MYBCABKAUSDgoGdGFyZ2V0GAUgASgFEhcKD3JlbWFpbmluZ19jb3VudBgGIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYByABKAEivQIKJUhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SGAoQaGFzX2FyY2hpdmVfZGF0YRgBIAEoCBIXCg9jb21wbGV0ZWRfY291bnQYAiABKAUSEwoLdG90YWxfY291bnQYAyABKAUSFwoPY29tcGxldGlvbl9yYXRlGAQgASgBElsKD2xhdGVzdF91bmxvY2tlZBgFIAEoCzJCLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvElYKDXBlbmRpbmdfaGludHMYBiADKAsyPy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0byL0AgojSGVyb0JhdHRsZVJlcG9ydEhpZ2hsaWdodFNlc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgV0aXRsZRgCIAEoCUgAiAEBEhkKDHNlc3Npb25fY29kZRgDIAEoCUgBiAEBEhkKDHNlc3Npb25fdHlwZRgEIAEoCUgCiAEBEhoKDXByb3Bvc2FsX25hbWUYBSABKAlIA4gBARIWCg5hY3Rpdml0eV9jb3VudBgGIAEoBRIiChpjb21wbGV0ZWRfYXNzaXN0YW5jZV9jb3VudBgHIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgIIAEoBRI4ChRsYXN0X2FjdGl2aXR5X2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX3RpdGxlQg8KDV9zZXNzaW9uX2NvZGVCDwoNX3Nlc3Npb25fdHlwZUIQCg5fcHJvcG9zYWxfbmFtZSKnAwoiSGVyb0JhdHRsZVJlcG9ydEFjdGl2aXR5U3VtbWFyeUR0bxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYASABKAUSIgoaY2hhdF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAiABKAUSJgoecHJvcG9zYWxfc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgFEhYKDnByb3Bvc2FsX2NvdW50GAQgASgFEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgFIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgGIAEoBRIfChdwcm9wb3NhbF9hcmNoaXZlZF9jb3VudBgHIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgIIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgJIAEoBRJVChJoaWdobGlnaHRfc2Vzc2lvbnMYCiADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0byJGCiNIZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxIQCghwcmV2aW91cxgBIAEoAxINCgVkZWx0YRgCIAEoAyK8BQodSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25EdG8SGAoQaGFzX3ByZXZpb3VzX2RheRgBIAEoCBIaCg1wcmV2aW91c19kYXRlGAIgASgJSACIAQESVAoRYWN0aXZlX2hlcm9fY291bnQYAyABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg9leGVjdXRpb25fY291bnQYBCABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg90b29sX2NhbGxfY291bnQYBSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJPCgx0b3RhbF90b2tlbnMYBiABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJYChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYByABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJRCg5wcm9wb3NhbF9jb3VudBgIIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElcKFGhhZ2lwb3dlcl9uZXRfY2hhbmdlGAkgASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG9CEAoOX3ByZXZpb3VzX2RhdGUixgEKG0hlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxIVCg1leGVjdXRvcl90eXBlGAEgASgJEhIKCmhlcm9fY291bnQYAiABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAyABKAUSFwoPZXhlY3V0aW9uX2NvdW50GAQgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgFIAEoBRIUCgx0b3RhbF90b2tlbnMYBiABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYByABKAMiuAEKIUhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItwDChxIZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEjMKD3JhbmdlX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOYnVja2V0X21pbnV0ZXMYAyABKAUSFwoPaGFzX2ZpbGxlZF9nYXBzGAQgASgIEhwKFGhhc19yZWNvcmRlZF9oaXN0b3J5GAUgASgIEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYBiABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAcgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgIIAEoAxISCgpuZXRfY2hhbmdlGAkgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk4KDXB1YmxpY19zZXJpZXMYCyADKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyUG9pbnREdG8iiQQKF0hlcm9CYXR0bGVSZXBvcnRIZXJvRHRvEg8KB2hlcm9faWQYASABKAkSEQoJaGVyb19uYW1lGAIgASgJEhYKCWhlcm9faWNvbhgDIAEoCUgAiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBCABKAkSEgoFbW9kZWwYBSABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgGIAEoCUgCiAEBEgwKBHJhbmsYByABKAUSDgoGc3RhdHVzGAggASgJEg0KBWdyYWRlGAkgASgJEhQKDGJhdHRsZV9zY29yZRgKIAEoBRIXCg9leGVjdXRpb25fY291bnQYCyABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAwgASgFEhQKDGlucHV0X3Rva2VucxgNIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYDiABKAMSFQoNb3V0cHV0X3Rva2VucxgPIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGBAgASgDEhQKDHRvdGFsX3Rva2VucxgRIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgSIAEoAxI5ChVsYXN0X2NvbXBsZXRlZF9hdF91dGMYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsQg4KDF9kZXNjcmlwdGlvbiKAAgoiSGVyb0JhdHRsZVJlcG9ydFByb2plY3RBY3Rpdml0eUR0bxISCgpwcm9qZWN0X2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCg5hY3Rpdml0eV9jb3VudBgDIAEoBRIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYBCABKAUSFgoOcHJvcG9zYWxfY291bnQYBSABKAUSIgoaYXNzaXN0YW5jZV9jb21wbGV0ZWRfY291bnQYBiABKAUSHwoXYXNzaXN0YW5jZV9mYWlsZWRfY291bnQYByABKAUSFgoOYWN0aXZpdHlfc2hhcmUYCCABKAFCBwoFX25hbWUi+gEKIUhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0bxIQCghoYXNfZGF0YRgBIAEoCBIdChVwcm9qZWN0X2NyZWF0ZWRfY291bnQYAiABKAMSHQoVc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgDEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgEIAEoAxIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgFIAEoAxITCgt0b2tlbl90b3RhbBgGIAEoAxItCglhc19vZl91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIo0CChtIZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SGwoTdG90YWxfcHJvamVjdF9jb3VudBgBIAEoBRIcChRhY3RpdmVfcHJvamVjdF9jb3VudBgCIAEoBRIZChFuZXdfcHJvamVjdF9jb3VudBgDIAEoBRJOCgx0b3BfcHJvamVjdHMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEkgKB3Byb2ZpbGUYBSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdFByb2ZpbGVEdG8irQIKFkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEgwKBHJhbmsYBiABKAUSFAoMYmF0dGxlX3Njb3JlGAcgASgFEg0KBWdyYWRlGAggASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgJIAEoBRIXCg90b29sX2NhbGxfY291bnQYCiABKAUSFAoMdG90YWxfdG9rZW5zGAsgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAwgASgDQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsItkCChpIZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxIYChB0b3RhbF9oZXJvX2NvdW50GAEgASgFEhkKEWFjdGl2ZV9oZXJvX2NvdW50GAIgASgFEhoKEnRvdGFsX2JhdHRsZV9zY29yZRgDIAEoBRIYChB0b3RhbF90b29sX2NhbGxzGAQgASgFEhQKDHRvdGFsX3Rva2VucxgFIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgGIAEoAxIUCgxpbnB1dF90b2tlbnMYByABKAMSGgoSY2FjaGVfaW5wdXRfdG9rZW5zGAggASgDEhUKDW91dHB1dF90b2tlbnMYCSABKAMSGwoTY2FjaGVfb3V0cHV0X3Rva2VucxgKIAEoAxI5CgNtdnAYCyABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0TXZwRHRvIqYGChNIZXJvQmF0dGxlUmVwb3J0RHRvEhMKC3JlcG9ydF9kYXRlGAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHRpbWVfem9uZV9pZBgDIAEoCRI1ChFjb3ZlcmVkX3N0YXJ0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPY292ZXJlZF9lbmRfdXRjGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFCgloYWdpcG93ZXIYBiABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEkEKB3N1bW1hcnkYByABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxJRCgxhY2hpZXZlbWVudHMYCCABKAsyOy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWNoaWV2ZW1lbnRTdW1tYXJ5RHRvElIKEGFjdGl2aXR5X3N1bW1hcnkYCSABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEkcKCmNvbXBhcmlzb24YCiABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxJECglleGVjdXRvcnMYCyADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RXhlY3V0b3JEdG8SQwoIcHJvamVjdHMYDCABKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SPQoGaGVyb2VzGA0gAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8itQEKHkhhZ2lwb3dlclB1YmxpY0hpc3RvcnlQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItcBCh5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgi1gEKHUhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYASABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAIgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgDIAEoAxISCgpuZXRfY2hhbmdlGAQgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIogCChxIYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvEg0KBXJhbmdlGAEgASgJEkYKCG1ldGFkYXRhGAIgASgLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyU3RhdGlzdGljc01ldGFkYXRhRHRvEkQKB3N1bW1hcnkYAyABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzU3VtbWFyeUR0bxJLCg1wdWJsaWNfc2VyaWVzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvIrsDChpIaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDmNyZWF0ZWRfYXRfdXRjGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtlbnRpdHlfdHlwZRgEIAEoCRIRCgllbnRpdHlfaWQYBSABKAkSFwoKcHJvamVjdF9pZBgGIAEoCUgAiAEBEhcKCnNlc3Npb25faWQYByABKAlIAYgBARIMCgRjb2RlGAggASgJEigKCG1ldGFkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKBnNvdXJjZRgKIAEoCUgCiAEBEhUKCGFjdG9yX2lkGAsgASgJSAOIAQESGwoOY29ycmVsYXRpb25faWQYDCABKAlIBIgBAUINCgtfcHJvamVjdF9pZEINCgtfc2Vzc2lvbl9pZEIJCgdfc291cmNlQgsKCV9hY3Rvcl9pZEIRCg9fY29ycmVsYXRpb25faWQiiAEKH0hpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8SEQoJcGFnZV9zaXplGAEgASgFEhYKDnJldHVybmVkX2NvdW50GAIgASgFEhAKCGhhc19tb3JlGAMgASgIEhgKC25leHRfY3Vyc29yGAQgASgJSACIAQFCDgoMX25leHRfY3Vyc29yIrABCiJIaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvEj8KBWl0ZW1zGAEgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnREdG8SSQoKcGFnaW5hdGlvbhgCIAEoCzI1LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8imwMKIEhpc3RvcmljYWxUaW1lbGluZUV2ZW50U2FtcGxlRHRvEhMKC2VudGl0eV90eXBlGAEgASgJEgwKBGNvZGUYAiABKAkSGAoQc2FtcGxlX2VudGl0eV9pZBgDIAEoCRIeChFzYW1wbGVfcHJvamVjdF9pZBgEIAEoCUgAiAEBEh4KEXNhbXBsZV9zZXNzaW9uX2lkGAUgASgJSAGIAQESGgoNc2FtcGxlX3NvdXJjZRgGIAEoCUgCiAEBEhwKD3NhbXBsZV9hY3Rvcl9pZBgHIAEoCUgDiAEBEiIKFXNhbXBsZV9jb3JyZWxhdGlvbl9pZBgIIAEoCUgEiAEBEjAKEG1ldGFkYXRhX2V4YW1wbGUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCFAoSX3NhbXBsZV9wcm9qZWN0X2lkQhQKEl9zYW1wbGVfc2Vzc2lvbl9pZEIQCg5fc2FtcGxlX3NvdXJjZUISChBfc2FtcGxlX2FjdG9yX2lkQhgKFl9zYW1wbGVfY29ycmVsYXRpb25faWQibQokSGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlRHRvEkUKBWl0ZW1zGAEgAygLMjYuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8y7QoKEVN0YXRpc3RpY3NTZXJ2aWNlEnQKEUdldEFnZ3JlZ2F0ZWREYXRhEi4uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXF1ZXN0Gi8uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXNwb25zZRJ9ChRHZXRUb2tlbk1vbml0b3JVc2FnZRIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVxdWVzdBoyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USgwEKFkdldFRva2VuTW9uaXRvckhpc3RvcnkSMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIaXN0b3J5UmVxdWVzdBo0LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRKPAQoaR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2USNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlcXVlc3QaOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEpUBChxHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USjAEKGUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnkSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRJ6ChNHZXRIZXJvQmF0dGxlUmVwb3J0EjAuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QaMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIZXJvQmF0dGxlUmVwb3J0UmVzcG9uc2USjAEKGUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnQSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRKAAQoVR2V0SGlzdG9yaWNhbFRpbWVsaW5lEjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lUmVxdWVzdBozLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEpUBChxHZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VCKqoCJ1BDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5QbGF0Zm9ybS5WMWIGcHJvdG8z",[Ye,fe,Mr]),bm=N(Si,1),hm=Ve(Si,0),ae=$("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8izAEKE0xpc3RTZXNzaW9uc1JlcXVlc3QSEQoEdHlwZRgBIAEoCUgAiAEBEhgKC2FjdGl2ZV9vbmx5GAIgASgISAGIAQESHQoQaW5jbHVkZV9hcmNoaXZlZBgDIAEoCEgCiAEBEhcKCnByb2plY3RfaWQYBCABKAlIA4gBARITCgtwcm9qZWN0X2lkcxgFIAMoCUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMi+QEKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWQivgIKEFBhdGhSZWZlcmVuY2VEdG8SCgoCaWQYASABKAkSDgoGc291cmNlGAIgASgJEhUKDWRpc3BsYXlfdmFsdWUYAyABKAkSFQoNcGh5c2ljYWxfcGF0aBgEIAEoCRINCgVzdGFydBgFIAEoBRILCgNlbmQYBiABKAUSFgoJZW50aXR5X2lkGAcgASgJSACIAQESFwoKcHJvamVjdF9pZBgIIAEoCUgBiAEBEkUKCG1ldGFkYXRhGAkgAygLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWQi+wEKGVNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghpbWFnZV9pZBgCIAEoCRIWCg5oYWdpX2ltYWdlX3VybBgDIAEoCRIYCgtwcmV2aWV3X3VybBgEIAEoCUgAiAEBEhYKCWZpbGVfbmFtZRgFIAEoCUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgGIAEoCUgCiAEBEhYKCWZpbGVfc2l6ZRgHIAEoA0gDiAEBQg4KDF9wcmV2aWV3X3VybEIMCgpfZmlsZV9uYW1lQg8KDV9jb250ZW50X3R5cGVCDAoKX2ZpbGVfc2l6ZSJ+ChlUYXJnZXRQcm9qZWN0UmVmZXJlbmNlRHRvEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhgKC2FjY2Vzc190eXBlGAQgASgJSACIAQFCDgoMX2FjY2Vzc190eXBlIocBChNUYXJnZXRSZXBvc2l0b3J5RHRvEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIZCgxkaXNwbGF5X25hbWUYAyABKAlIAIgBARIYCgthY2Nlc3NfdHlwZRgEIAEoCUgBiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2FjY2Vzc190eXBlIj0KGFRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxIMCgRtb2RlGAEgASgJEhMKC2FjY2Vzc190eXBlGAIgASgJIpEGChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIcCg9jaGllZl9jb21wbGFpbnQYAiABKAlIAIgBARIlChhvcmlnaW5hbF9jaGllZl9jb21wbGFpbnQYAyABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAQgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhEKBHR5cGUYBSABKAlIAogBARISCgpwcm9qZWN0X2lkGAYgASgJEkUKE3RhcmdldF9yZXBvc2l0b3JpZXMYByADKAsyKC5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlEdG8STgoXdGFyZ2V0X3JlcG9zaXRvcnlfc2NvcGUYCCABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxJHCg90YXJnZXRfcHJvamVjdHMYCSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAogAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEhgKEGlzX2RlZmF1bHRfdGl0bGUYCyABKAgSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgMIAEoCUgDiAEBEkkKCG1ldGFkYXRhGA0gAygLMjcuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfY2hpZWZfY29tcGxhaW50QhsKGV9vcmlnaW5hbF9jaGllZl9jb21wbGFpbnRCBwoFX3R5cGVCHAoaX3Byb3Bvc2FsX2NvbnRlbnRfbGFuZ3VhZ2UikwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESFQoIbWV0YWRhdGEYBCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0ILCglfbWV0YWRhdGEiUwoWU2Vzc2lvbkxpc3RSZXNwb25zZUR0bxI5CghzZXNzaW9ucxgBIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIisKGFNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJIjMKIFN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0Eg8KB2hlcm9faWQYASABKAki6wgKHENyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoQaXNfZGVmYXVsdF90aXRsZRgCIAEoCBISCgpwcm9qZWN0X2lkGAMgASgJEhYKCXByb21wdF9pZBgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAYgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhwKD3JlcG9zaXRvcnlfcGF0aBgHIAEoCUgCiAEBEhgKC3RhcmdldF90eXBlGAggASgJSAOIAQESFQoIdmF1bHRfaWQYCSABKAlIBIgBARIcCg9vdXRwdXRfdmF1bHRfaWQYCiABKAlIBYgBARIbChNyZWZlcmVuY2VfdmF1bHRfaWRzGAsgAygJEhoKEmVkaXRhYmxlX3ZhdWx0X2lkcxgMIAMoCRJHCg90YXJnZXRfcHJvamVjdHMYDSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SHwoScmVzZWFyY2hfZGlyZWN0aW9uGA4gASgJSAaIAQESGwoOcHJlc2V0X3Rhc2tfaWQYDyABKAlIB4gBARIfChJwcmVzZXRfdGFza19sb2NhbGUYECABKAlICIgBARIxChFwcmVzZXRfdGFza19pbnB1dBgRIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9yZXBvc2l0b3J5X3VybHMYEiADKAkSEwoLcHJvamVjdF9pZHMYEyADKAkSEQoJbmVlZF9wdXNoGBQgASgIEiQKF3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoGBUgASgISAmIAQESHwoSdGFyZ2V0X2JyYW5jaF9tb2RlGBYgASgJSAqIAQESHwoSdGFyZ2V0X2JyYW5jaF9uYW1lGBcgASgJSAuIAQESFwoKc2NyaXB0X2tleRgYIAEoCUgMiAEBEhQKB2hlcm9faWQYGSABKAlIDYgBARIgChNoZXJvX3NlbGVjdGlvbl9tb2RlGBogASgJSA6IAQFCDAoKX3Byb21wdF9pZEIKCghfbWVzc2FnZUISChBfcmVwb3NpdG9yeV9wYXRoQg4KDF90YXJnZXRfdHlwZUILCglfdmF1bHRfaWRCEgoQX291dHB1dF92YXVsdF9pZEIVChNfcmVzZWFyY2hfZGlyZWN0aW9uQhEKD19wcmVzZXRfdGFza19pZEIVChNfcHJlc2V0X3Rhc2tfbG9jYWxlQhoKGF9wdWxsX3JlYmFzZV9iZWZvcmVfcHVzaEIVChNfdGFyZ2V0X2JyYW5jaF9tb2RlQhUKE190YXJnZXRfYnJhbmNoX25hbWVCDQoLX3NjcmlwdF9rZXlCCgoIX2hlcm9faWRCFgoUX2hlcm9fc2VsZWN0aW9uX21vZGUy6ggKD1Nlc3Npb25zU2VydmljZRJsCg9PcGVuQ2hhdFNlc3Npb24SKy5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QaLC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEmAKC09wZW5TZXNzaW9uEicuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlcXVlc3QaKC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TZXNzaW9uUmVzcG9uc2USXQoKR2V0U2Vzc2lvbhImLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlcXVlc3QaJy5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXNwb25zZRJgCgtTYXZlU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5TYXZlU2Vzc2lvblJlc3BvbnNlEmMKDExpc3RTZXNzaW9ucxIoLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2USZgoNRGVsZXRlU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXNwb25zZRJ1ChJBcmNoaXZlQ2hhdFNlc3Npb24SLi5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlc3BvbnNlEnUKElN3aXRjaFN0b3BwZWRBZ2VudBIuLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVzcG9uc2USewoUU3RhcnRIYWdpVGFza1Nlc3Npb24SMC5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBoxLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRIYWdpVGFza1Nlc3Npb25SZXNwb25zZRKNAQoaU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb24SNi5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlNlc3Npb24uVjFiBnByb3RvMw",[Ye,fe]),gm=N(ae,1),Am=N(ae,3),pm=N(ae,5),Zm=N(ae,7),fm=N(ae,9),Rm=N(ae,11),Vm=N(ae,13),Em=N(ae,17),Gm=N(ae,30),Nm=N(ae,36),Wm=N(ae,37),Sm=N(ae,41),vm=Ve(ae,0),ke=$("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIu0BChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[Ye,fe,ae]),Ym=N(ke,1),Im=N(ke,11),Xm=N(ke,15),ym=N(ke,19),Bm=N(ke,34),Cm=N(ke,38),Fm=N(ke,43),wm=Ve(ke,0),Ee=$("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[fe,ae]),km=N(Ee,15),Um=N(Ee,17),Jm=N(Ee,19),xm=N(Ee,21),Km=N(Ee,23),zm=N(Ee,36),Lm=N(Ee,38),jm=N(Ee,39),Hm=N(Ee,40),Tm=Ve(Ee,0),Qm=$("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[fe]),Mm=Ve(Qm,0),bn=new Set([b.INT64,b.UINT64,b.SINT64,b.FIXED64,b.SFIXED64]),vi=e=>e.typeName.startsWith("google.protobuf.");function hn(e){if(typeof e!="string")return e;const t=Number(e);return Number.isSafeInteger(t)?t:e}function xt(e,t){if(t==null||typeof t!="object"||Array.isArray(t)||vi(e))return t;const n=t;for(const o of e.fields){const a=n[o.jsonName];a!==void 0&&(n[o.jsonName]=Om(o,a))}return n}function Om(e,t){switch(e.fieldKind){case"scalar":return bn.has(e.scalar)?hn(t):t;case"message":return xt(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?bn.has(e.scalar)?t.map(hn):t:e.listKind==="message"?t.map(n=>xt(e.message,n)):t:t;case"map":{if(t===null||typeof t!="object"||Array.isArray(t))return t;const n=t;for(const o of Object.keys(n))e.mapKind==="scalar"&&bn.has(e.scalar)?n[o]=hn(n[o]):e.mapKind==="message"&&(n[o]=xt(e.message,n[o]));return n}default:return t}}function Dm(e,t){return xt(e,Pr(e,t,{alwaysEmitImplicit:!0}))}function _m(e,t){return Dm(e,t).result}function Kt(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||vi(e)||n>8)return t;const o=t;for(const a of e.fields){const r=o[a.jsonName];if(!(r===null||typeof r!="object")){if(a.fieldKind==="message")Kt(a.message,r,n+1);else if(a.fieldKind==="list"&&a.listKind==="message"&&Array.isArray(r))r.forEach(i=>Kt(a.message,i,n+1));else if(a.fieldKind==="map"&&!Array.isArray(r)){const i=r;for(const s of Object.keys(i)){const l=i[s];a.mapKind==="scalar"&&a.scalar===b.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):a.mapKind==="message"&&Kt(a.message,l,n+1)}}}}return t}function T(e,t){return oi(e,t===void 0?t:Kt(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function Ja(e,t){const n=Ai(e);if(n)throw t.forEach((o,a)=>{n.metadata.append(a,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new y("protocol error: missing status",R.Internal)}function Pm(e,t,n,o){var a,r;const i=new Headers(n??{});i.set(xd,e?Qd:Md),i.set(Td,"1");const s=(r=(a=i.get("User-Agent"))!==null&&a!==void 0?a:i.get("X-User-Agent"))!==null&&r!==void 0?r:"connect-es/2.2.0";return i.set(Hd,s),o&&i.set(jd,s),t!==void 0&&i.set(zd,`${t}m`),i}function xa(e,t,n,o,a,r){const i=Pm(e,t,n,r);return a!=null&&i.set(hi,a.name),o.length>0&&i.set(Kd,o.map(s=>s.name).join(",")),i}function $m(e){switch(e){case 400:return R.Internal;case 401:return R.Unauthenticated;case 403:return R.PermissionDenied;case 404:return R.Unimplemented;case 429:return R.Unavailable;case 502:return R.Unavailable;case 503:return R.Unavailable;case 504:return R.Unavailable;default:return R.Unknown}}function qm(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(gi),headerError:Ai(t)};throw new y(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),$m(e),t)}function Ka(e,t,n){const{foundStatus:o,headerError:a}=qm(t,n);let r;const i=n.get(hi);if(i!==null&&i.toLowerCase()!=="identity"&&(r=e.find(s=>s.name===i),!r))throw new y(`unsupported response encoding "${i}"`,R.Internal,n);return{foundStatus:o,compression:r,headerError:a}}var za=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values=="function"?__values(e):e[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(r){n[r]=e[r]&&function(i){return new Promise(function(s,l){i=e[r](i),a(s,l,i.done,i.value)})}}function a(r,i,s,l){Promise.resolve(l).then(function(c){r({value:c,done:s})},i)}},ye=function(e){return this instanceof ye?(this.v=e,this):new ye(e)},eb=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),a,r=[];return a=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),a[Symbol.asyncIterator]=function(){return this},a;function i(Z){return function(E){return Promise.resolve(E).then(Z,h)}}function s(Z,E){o[Z]&&(a[Z]=function(G){return new Promise(function(I,k){r.push([Z,G,I,k])>1||l(Z,G)})},E&&(a[Z]=E(a[Z])))}function l(Z,E){try{c(o[Z](E))}catch(G){f(r[0][3],G)}}function c(Z){Z.value instanceof ye?Promise.resolve(Z.value.v).then(u,h):f(r[0][2],Z)}function u(Z){l("next",Z)}function h(Z){l("throw",Z)}function f(Z,E){Z(E),r.shift(),r.length&&l(r[0][0],r[0][1])}};function tb(e){return{async unary(t,n,o,a,r,i){const s=Ba(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await $d({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:xa(e.useBinaryFormat,o,a,e.acceptCompression,e.sendCompression,!0),contextValues:i??Ia(),message:r},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:Jt(ui([l.message]),Ga(s.getI(e.useBinaryFormat)),Wa(e.sendCompression,e.compressMinBytes),va(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Ka(e.acceptCompression,c.status,c.header),{trailer:f,message:Z}=await Sd(c.body,Ya(e.readMaxBytes),Sa(u??null,e.readMaxBytes),Na(s.getO(e.useBinaryFormat),128,Xa()),async E=>{var G,I,k,d;let m,A;try{for(var g=!0,p=za(E),V;V=await p.next(),G=V.done,!G;g=!0){d=V.value,g=!1;const X=d;if(X.end){if(A!==void 0)throw new y("protocol error: received extra trailer",R.Unimplemented);A=X.value}else{if(m!==void 0)throw new y("protocol error: received extra output message for unary method",R.Unimplemented);m=X.value}}}catch(X){I={error:X}}finally{try{!g&&!G&&(k=p.return)&&await k.call(p)}finally{if(I)throw I.error}}return{trailer:A,message:m}},{propagateDownStreamError:!1});if(f===void 0)throw h??new y("protocol error: missing trailer",c.header.has("Grpc-Status")?R.Unimplemented:R.Unknown);if(Ja(f,c.header),Z===void 0)throw new y("protocol error: missing output message for unary method",f.has("Grpc-Status")?R.Unimplemented:R.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:Z,trailer:f}}})},async stream(t,n,o,a,r,i){const s=Ba(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,qd({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:xa(e.useBinaryFormat,o,a,e.acceptCompression,e.sendCompression,!0),contextValues:i??Ia(),message:r},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:Jt(l.message,Ga(s.getI(e.useBinaryFormat)),Wa(e.sendCompression,e.compressMinBytes),va(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:f}=Ka(e.acceptCompression,c.status,c.header);if(f)throw f;const Z=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:Jt(c.body,Ya(e.readMaxBytes),Sa(u??null,e.readMaxBytes),Na(s.getO(e.useBinaryFormat),128,Xa()),function(E){return eb(this,arguments,function*(){var G,I,k,d;if(h){if((yield ye(E[Symbol.asyncIterator]().next())).done!==!0)throw new y("protocol error: extra data for trailers-only",R.InvalidArgument);return yield ye(void 0)}let m=!1;try{for(var A=!0,g=za(E),p;p=yield ye(g.next()),G=p.done,!G;A=!0){d=p.value,A=!1;const V=d;if(V.end){if(m)throw new y("protocol error: received extra trailer",R.InvalidArgument);m=!0,Ja(V.value,c.header),V.value.forEach((X,U)=>Z.trailer.set(U,X));continue}if(m)throw new y("protocol error: received extra message after trailer",R.InvalidArgument);yield yield ye(V.value)}}catch(V){I={error:V}}finally{try{!A&&!G&&(k=g.return)&&(yield ye(k.call(g)))}finally{if(I)throw I.error}}if(!m)throw new y("protocol error: missing trailer",R.Internal)})},{propagateDownStreamError:!0})});return Z}})}}}function tn(e){let t=R.Internal;const n=Ao(e).map(nn);n.some(a=>a.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(a=>a.code=="ERR_STREAM_DESTROYED"||a.code=="ERR_HTTP2_INVALID_STREAM"||a.code=="ECONNRESET")?t=R.Aborted:n.some(a=>a.code=="ETIMEDOUT"||a.code=="ENOTFOUND"||a.code=="EAI_AGAIN"||a.code=="ECONNREFUSED")&&(t=R.Unavailable);const o=y.from(e,t);return o!==e&&(o.cause=e),o}function Ao(e){const t=[];for(;!(!(e instanceof Error)||t.includes(e)||(t.push(e),!("cause"in e)));)e=e.cause;return t}function nn(e){const t={};return e instanceof Error&&("code"in e&&typeof e.code=="string"&&(t.code=e.code),"syscall"in e&&typeof e.syscall=="string"&&(t.syscall=e.syscall)),t}function nb(e){switch(e){case M.PROTOCOL_ERROR:case M.INTERNAL_ERROR:case M.FLOW_CONTROL_ERROR:case M.SETTINGS_TIMEOUT:case M.FRAME_SIZE_ERROR:case M.COMPRESSION_ERROR:case M.CONNECT_ERROR:return new y(`http/2 stream closed with error code ${M[e]} (0x${e.toString(16)})`,R.Internal);case M.REFUSED_STREAM:return new y(`http/2 stream closed with error code ${M[e]} (0x${e.toString(16)})`,R.Unavailable);case M.CANCEL:return new y(`http/2 stream closed with error code ${M[e]} (0x${e.toString(16)})`,R.Canceled);case M.ENHANCE_YOUR_CALM:return new y(`http/2 stream closed with error code ${M[e]} (0x${e.toString(16)})`,R.ResourceExhausted);case M.INADEQUATE_SECURITY:return new y(`http/2 stream closed with error code ${M[e]} (0x${e.toString(16)})`,R.PermissionDenied);case M.HTTP_1_1_REQUIRED:return new y(`http/2 stream closed with error code ${M[e]} (0x${e.toString(16)})`,R.PermissionDenied);default:break}}var M;(function(e){e[e.PROTOCOL_ERROR=1]="PROTOCOL_ERROR",e[e.INTERNAL_ERROR=2]="INTERNAL_ERROR",e[e.FLOW_CONTROL_ERROR=3]="FLOW_CONTROL_ERROR",e[e.SETTINGS_TIMEOUT=4]="SETTINGS_TIMEOUT",e[e.STREAM_CLOSED=5]="STREAM_CLOSED",e[e.FRAME_SIZE_ERROR=6]="FRAME_SIZE_ERROR",e[e.REFUSED_STREAM=7]="REFUSED_STREAM",e[e.CANCEL=8]="CANCEL",e[e.COMPRESSION_ERROR=9]="COMPRESSION_ERROR",e[e.CONNECT_ERROR=10]="CONNECT_ERROR",e[e.ENHANCE_YOUR_CALM=11]="ENHANCE_YOUR_CALM",e[e.INADEQUATE_SECURITY=12]="INADEQUATE_SECURITY",e[e.HTTP_1_1_REQUIRED=13]="HTTP_1_1_REQUIRED"})(M||(M={}));var ob=(0,Mt.promisify)(qe.gzip),ab=(0,Mt.promisify)(qe.gunzip),rb=(0,Mt.promisify)(qe.brotliCompress),ib=(0,Mt.promisify)(qe.brotliDecompress),sb={name:"gzip",compress(e){return jt(ob(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):jt(Yi(ab(e,{maxOutputLength:t}),t))}},lb={name:"br",compress(e){return jt(rb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):jt(Yi(ib(e,{maxOutputLength:t}),t))}};function jt(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function Yi(e,t){return e.catch(n=>{var o;const a=nn(n);let r=R.Internal,i="decompression failed";switch(a.code){case"ERR_BUFFER_TOO_LARGE":r=R.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":r=R.InvalidArgument;break;default:!((o=a.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(r=R.InvalidArgument);break}return Promise.reject(new y(i,r,void 0,void 0,n))})}function on(e){const t=new Headers;for(const[n,o]of Object.entries(e))if(!n.startsWith(":")&&o!==void 0)if(typeof o=="string")t.append(n,o);else if(typeof o=="number")t.append(n,String(o));else for(const a of o)t.append(n,a);return t}function Ii(e,t){if(e===void 0&&t===void 0)return;const n=Object.create(null);if(t!==void 0)if(Array.isArray(t))for(let o=0;o+1<t.length;o+=2){const a=t[o],r=t[o+1];Array.isArray(n[a])?n[a].push(r):typeof n[a]=="string"?n[a]=[n[a],r]:n[a]=r}else for(const[o,a]of Object.entries(t))Array.isArray(a)?n[o]=a.concat():a!==void 0&&(n[o]=a);if(e!==void 0)if(Array.isArray(e))for(const[o,a]of e)gn(n,o,a);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,a)=>{gn(n,a,o)});else for(const[o,a]of Object.entries(e))gn(n,o,a);return n}function gn(e,t,n){t=t.toLowerCase();const o=e[t];Array.isArray(o)?o.push(n):o===void 0?e[t]=n:e[t]=[o.toString(),n]}var Xi=class{state(){return this.s.t=="ready"?this.verifying!==void 0?"verifying":this.s.streamCount()>0?"open":"idle":this.s.t}error(){if(this.s.t=="error")return this.s.reason}constructor(e,t,n){var o,a,r,i;this.s=Bn(),this.shuttingDown=[],this.authority=new URL(e).origin,this.http2SessionOptions=n,this.options={pingIntervalMs:(o=t?.pingIntervalMs)!==null&&o!==void 0?o:Number.POSITIVE_INFINITY,pingTimeoutMs:(a=t?.pingTimeoutMs)!==null&&a!==void 0?a:1e3*15,pingIdleConnection:(r=t?.pingIdleConnection)!==null&&r!==void 0?r:!1,idleConnectionTimeoutMs:(i=t?.idleConnectionTimeoutMs)!==null&&i!==void 0?i:1e3*60*15}}async connect(){try{return(await this.gotoReady()).streamCount()>0?"open":"idle"}catch{return"error"}}async request(e,t,n,o){for(;;){const a=await this.gotoReady();try{const r=a.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return a.registerRequest(r),r}catch(r){if(a.conn.closed||a.conn.destroyed)continue;throw r}}}notifyResponseByteRead(e){this.s.t=="ready"&&this.s.responseByteRead(e);for(const t of this.shuttingDown)t.responseByteRead(e)}abort(e){var t,n,o;const a=e??new y("connection aborted",R.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,a);for(const r of this.shuttingDown)(o=r.abort)===null||o===void 0||o.call(r,a);this.setState(Xt(a))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(An(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(An(this.authority,this.http2SessionOptions));this.s.t!=="ready";){if(this.s.t==="error")throw this.s.reason;this.s.t==="connecting"&&await this.s.conn}return this.s}setState(e){var t,n;if((n=(t=this.s).onExitState)===null||n===void 0||n.call(t),this.s.t=="ready"&&this.s.isShuttingDown()){const o=this.s;this.shuttingDown.push(o),o.onClose=o.onError=()=>{const a=this.shuttingDown.indexOf(o);a!==-1&&this.shuttingDown.splice(a,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(db(o,this.options))},o=>{this.setState(Xt(o))});break;case"ready":e.onClose=()=>this.setState(Bn()),e.onError=o=>this.setState(Xt(o));break;case"closed":break;case"error":break}this.s=e}verify(e){return this.verifying!==void 0?this.verifying:(this.verifying=e.verify().then(t=>{t||this.setState(An(this.authority,this.http2SessionOptions))},t=>{this.setState(Xt(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function Bn(){return{t:"closed"}}function cb(e){return{t:"error",reason:e}}function Xt(e){return e instanceof y&&y.from(e).code==R.Canceled?Bn():cb(e)}function An(e,t){let n,o;const a=new Promise((c,u)=>{n=c,o=u}),r=be.connect(e,t);r.on("connect",i),r.on("error",s);function i(){n?.(r),l()}function s(c){o?.(tn(c)),l()}function l(){r.off("connect",i),r.off("error",s)}return{t:"connecting",conn:a,abort(c){r.destroyed||r.destroy(void 0,be.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function db(e,t){ub(e),e.unref();let n=Date.now(),o=0,a,r,i=!1,s=!1,l;G();const c={t:"ready",conn:e,streamCount(){return o},requiresVerify(){return Date.now()-n>t.pingIntervalMs},isShuttingDown(){return i},onClose:void 0,onError:void 0,registerRequest(g){o++,o==1&&(e.ref(),u(),E()),g.once("response",()=>{n=Date.now(),u()}),g.once("close",()=>{o--,o==0&&(e.unref(),u(),G())})},responseByteRead(g){g.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(g=>{const p=()=>{g(!1)};Z(()=>{o==0&&e.unref(),e.off("error",p),e.off("close",p),g(!0)}),e.once("error",p),e.once("close",p)})},abort(g){e.destroyed||(e.once("error",()=>{}),e.destroy(g,be.constants.NGHTTP2_CANCEL))},onExitState(){c.isShuttingDown()||(A(),this.onError=void 0,this.onClose=void 0)}};function u(){h(),(o>0||t.pingIdleConnection)&&(a=pn(f,t.pingIntervalMs))}function h(){clearTimeout(a),clearTimeout(r)}function f(){Z(u)}function Z(g){clearTimeout(r),r=pn(()=>{e.destroy(new y("PING timed out",R.Unavailable),be.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((p,V)=>{if(clearTimeout(r),p===null){if(V>t.pingTimeoutMs){e.destroy(new y("PING timed out",R.Unavailable),be.constants.NGHTTP2_CANCEL);return}n=Date.now(),g()}})}function E(){clearTimeout(l)}function G(){l=pn(I,t.idleConnectionTimeoutMs)}function I(){e.close(),d()}function k(g,p,V){if(g===be.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new y("received GOAWAY without any open streams",R.Canceled),be.constants.NGHTTP2_NO_ERROR);return}i=!0;const X=Buffer.from("too_many_pings","ascii");V?.equals(X)&&(t.pingIntervalMs=t.pingIntervalMs*2,s=!0)}function d(){var g;A(),(g=c.onClose)===null||g===void 0||g.call(c)}function m(g){var p,V;if(A(),s){const X=new y(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${be.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,R.ResourceExhausted);(p=c.onError)===null||p===void 0||p.call(c,X)}else(V=c.onError)===null||V===void 0||V.call(c,tn(g))}function A(){h(),E(),e.off("error",m),e.off("close",d),e.off("goaway",k)}return e.on("error",m),e.on("close",d),e.on("goaway",k),c}function pn(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function ub(e){if(e.connecting)throw new y("expected open session, but it is connecting",R.Internal);if(e.destroyed)throw new y("expected open session, but it is destroyed",R.Internal);if(e.closed)throw new y("expected open session, but it is closed",R.Internal)}function La(e){var t;return e.httpVersion=="1.1"?mb(e.nodeOptions):bb((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new Xi(n)))}function mb(e){return async function(n){const o=Bi(n.signal);return new Promise((a,r)=>{o.onError(i=>{r(i)}),hb(o,n.url,Object.assign(Object.assign({},e),{headers:Ii(n.header,e?.headers),method:n.method}),i=>{yi(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;a({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:on(s.headers),body:gb(o,s,c),trailer:c})})})})}}function bb(e){return function(n){const o=Bi(n.signal),a=e(n.url);return new Promise((r,i)=>{o.onError(s=>{i(s)}),Ab(o,a,n.url,n.method,Ii(n.header),{},s=>{yi(n,s,o),s.on("response",l=>{var c;r({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:on(l),body:Zb(o,s,a),trailer:pb(s)})})})})}}function hb(e,t,n,o){let a;new URL(t).protocol.startsWith("https")?a=En.request(t,n):a=Vn.request(t,n),e.onError(r=>a.destroy(r)),a.flushHeaders(),a.on("error",e.error),a.on("socket",function(i){function s(){i.off("connect",s),o(a)}i.readyState==="open"?o(a):i.on("connect",s)})}function gb(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const a=await e.race(o.next());return a.done===!0&&(on(t.trailers).forEach((r,i)=>{n.set(i,r)}),e.close()),a},throw(a){throw e.error(a),a}}}}}function Ab(e,t,n,o,a,r,i){const s=new URL(n);if(s.origin!==t.authority){const l=`cannot make a request to ${s.origin}: the http2 session is connected to ${t.authority}`;e.error(new y(l,R.Internal));return}t.request(o,s.pathname+s.search,a,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==R.Canceled?M.CANCEL:M.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&Ao(u).map(nn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=nb(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function pb(e){const t=new Headers;return e.on("trailers",n=>{on(n).forEach((o,a)=>{t.set(a,o)})}),t}function Zb(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const a=await e.race(o.next());return a.done===!0&&e.close(),n?.notifyResponseByteRead(t),a},throw(a){throw e.error(a),a}}}}}async function yi(e,t,n){if(e.body===void 0){await new Promise(a=>t.end(a));return}const o=e.body[Symbol.asyncIterator]();return new Promise(a=>{r();function r(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(a);return}t.write(i.value,"binary",s=>{if(s==null){r();return}o.throw!==void 0&&o.throw(tn(s)).catch(()=>{}),!(t.writableEnded&&Ao(s).map(nn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function Bi(e){let t,n=!1,o,a=[];const r={error(l){if(!n){n=!0,o=l instanceof y?l:tn(l),t?.(o);for(const c of a)c(o);i()}},close(){n||(n=!0,t&&t(new y("sentinel completed early",R.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):a.push(l)},race(l){let c;const u=new Promise((h,f)=>{c=h,t=f});return l.then(h=>{c?.(h)},h=>{t?.(h)}),n&&t?.(o??new y("sentinel completed early",R.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),a=[],t=void 0}function s(){r.error(Vt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&r.error(Vt(e))),r}function fb(e){var t,n,o,a;let r;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new Xi(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),r=La({httpVersion:"2",sessionProvider:()=>i})}else r=La({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:r,useBinaryFormat:(t=e.useBinaryFormat)!==null&&t!==void 0?t:!0,interceptors:(n=e.interceptors)!==null&&n!==void 0?n:[],sendCompression:(o=e.sendCompression)!==null&&o!==void 0?o:null,acceptCompression:(a=e.acceptCompression)!==null&&a!==void 0?a:[sb,lb]}),Zd(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function Rb(e){return tb(fb(e))}function Vb(e){return`cli/${e??"unknown"}`}var Eb=Vb("0.1.0-dev.43.1.03d9a6a"),Gb="/grpc";function Nb(e){return`${e.replace(/\/+$/,"")}${Gb}`}var Wb=e=>async t=>{const{token:n,lang:o}=Wi();return t.header.set("X-Hagi-Client",Eb),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},yt;function Ge(){const e=Nb(Wi().baseUrl);return(!yt||yt.baseUrl!==e)&&(yt={baseUrl:e,transport:Rb({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[Wb]})}),yt.transport}function Be(e){return e?lc(e).toISOString():null}function Ht(e){return e.length>0?e:null}function ja(e,t){const n={earliestAt:Be(e),latestAt:Be(t)};return n.earliestAt||n.latestAt?n:null}function Bt(e){return{lockId:e.lockId,ownerId:e.ownerId,status:e.status,myTurn:e.status==="Holding",position:e.position,epoch:Number(e.epoch),leaseExpiresAt:Be(e.leaseExpiresAt),maxHoldExpiresAt:Be(e.maxHoldExpiresAt),holder:e.holderOwnerId.length>0?{ownerId:e.holderOwnerId,label:Ht(e.holderLabel)}:null,queueLength:e.queueLength,suggestedPollIntervalMs:e.suggestedPollIntervalMs,suggestedHeartbeatIntervalMs:e.suggestedHeartbeatIntervalMs,serverTime:Be(e.serverTime),requisition:e.requisitionedByOwnerId.length>0?{byOwnerId:e.requisitionedByOwnerId,reason:e.requisitionReason,at:Be(e.requisitionedAt)}:null,checkInWindow:ja(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:ja(e.turnEarliestAt,e.turnLatestAt)}}function Sb(e){return{lockId:e.lockId,holderOwnerId:Ht(e.holderOwnerId),holderLabel:Ht(e.holderLabel),epoch:Number(e.epoch),leaseExpiresAt:Be(e.leaseExpiresAt),holdStartedAt:Be(e.holdStartedAt),queueLength:e.queueLength}}function vb(e){return e.locks.map(Sb)}var me=()=>Re(Iu,Ge()),Me=()=>Re(Ju,Ge()),Ue=()=>Re(Tu,Ge()),Ha=()=>Re(Du,Ge()),se=()=>Re(mm,Ge()),Yb=()=>Re(hm,Ge()),Xe=()=>Re(vm,Ge()),Ct=()=>Re(wm,Ge()),bt=()=>Re(Tm,Ge()),Oe=()=>Re(Mm,Ge());async function C(e,t){return _m(e,await t)}function Ib(){return{listSessions:async e=>C(fm,Xe().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>C(pm,Xe().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>C(Ym,Ct().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>C(Am,Xe().openSession({body:T(Nm,e)})),createChatSession:async e=>C(gm,Xe().openChatSession({body:T(Gm,e)})),createHagiTaskSession:async e=>C(Em,Xe().startHagiTaskSession({body:T(Sm,e)})),listHagiTaskSchemas:async()=>C(Mu,Ha().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>C(Ou,Ha().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>C(Zm,Xe().saveSession({sessionId:e,body:T(Wm,t)})),deleteSession:async(e,t)=>C(Rm,Xe().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>C(Xm,Ct().postSessionMessage({sessionId:e,body:T(Cm,t)})),steerSession:async(e,t)=>C(Im,Ct().steerSession({sessionId:e,body:T(Bm,t)})),optimizeProposal:async(e,t)=>C(km,bt().optimizeSessionProposal({sessionId:e,body:T(zm,t)})),generateProposal:async(e,t)=>C(Um,bt().generateProposal({sessionId:e,body:T(Lm,t)})),executeProposal:async(e,t)=>C(xm,bt().executeProposal({sessionId:e,body:T(Hm,t??{})})),archiveProposal:async(e,t)=>C(Jm,bt().archiveSession({sessionId:e,body:T(jm,t??{})})),completeProposal:async e=>C(Km,bt().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>C(ym,Ct().submitSessionAnnotations({sessionId:e,body:T(Fm,t)})),listProjects:async()=>C(bm,Yb().getAggregatedData({forceRefresh:!1})),createProject:async e=>C(gu,me().createProject({body:T(Nu,e)})),updateProject:async(e,t)=>C(Au,me().updateProject({id:e,body:T(Wu,t)})),deleteProject:async e=>{await me().deleteProject({id:e})},getMonoSpecsManagement:async e=>C(pu,me().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>C(Eu,me().updateMonoSpecsManagement({projectId:e,body:T(vu,t)})),initializeMonoSpecsManagement:async e=>C(Vu,me().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>C(Zu,me().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>C(Gu,me().validateMonoSpecsConfig({body:T(Yu,e)})),cloneMonoSpecsRepositories:async(e,t)=>C(fu,me().cloneMonoSpecsRepositories({projectId:e,body:T(Su,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>C(Ru,me().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>C(xu,Ue().listScheduledPlans({})),getPlan:async e=>C(Ku,Ue().getScheduledPlan({id:e})),createPlan:async e=>C(zu,Ue().createScheduledPlan({body:T(Ua,e)})),updatePlan:async(e,t)=>C(Lu,Ue().updateScheduledPlan({id:e,body:T(Ua,t)})),deletePlan:async e=>{await Ue().deleteScheduledPlan({id:e})},runPlan:async e=>C(ju,Ue().runScheduledPlan({id:e})),startPlan:async e=>C(Hu,Ue().startScheduledPlan({id:e})),listVaults:async()=>C(Xu,Me().listVaults({})),createVault:async e=>C(yu,Me().createVault({body:T(ku,e)})),updateVault:async(e,t)=>C(Bu,Me().updateVault({id:e,body:T(Uu,t)})),deleteVault:async(e,t)=>C(Cu,Me().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>C(Fu,Me().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>C(wu,Me().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>C(Vm,Xe().archiveChatSession({sessionId:e})),listLocalSkills:async()=>C(_u,se().getLocalSkills({})),uninstallLocalSkill:async e=>C(Pu,se().uninstallLocalSkill({body:T(sm,e)})),setBuiltInSkillAvailability:async e=>C($u,se().setBuiltInSkillAvailability({body:T(lm,e)})),searchSkillGallery:async e=>C(qu,se().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>C(em,se().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>C(tm,se().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>C(im,se().installSkill({body:T(um,e)})),listTrustedSkillProviders:async()=>C(nm,se().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>C(om,se().upsertTrustedSkillProvider({body:T(cm,e)})),deleteTrustedSkillProvider:async e=>C(am,se().deleteTrustedSkillProvider({body:T(dm,e)})),resetTrustedSkillProviders:async()=>C(rm,se().resetTrustedSkillProviders({})),acquireLock:async e=>Bt((await Oe().acquireLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,label:e.label,sessionId:e.sessionId})).result),getLockStatus:async(e,t)=>Bt((await Oe().getLockStatus({lockId:e.lockId,ownerId:e.ownerId,waitSeconds:e.waitSeconds},{signal:t})).result),renewLock:async(e,t)=>Bt((await Oe().renewLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)},{signal:t})).result),releaseLock:async e=>{const t=await Oe().releaseLock({lockId:e.lockId,ownerId:e.ownerId,epoch:e.epoch===void 0?void 0:BigInt(e.epoch)});return{lockId:e.lockId,ownerId:e.ownerId,released:t.released,previousStatus:t.previousStatus,holderOwnerId:Ht(t.holderOwnerId)}},requisitionLock:async e=>Bt((await Oe().requisitionLock({lockId:e.lockId,ownerId:e.ownerId,reason:e.reason,label:e.label,sessionId:e.sessionId})).result),listLocks:async e=>vb(await Oe().listLocks({prefix:e}))}}function Ci(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function po(e){return new Promise(t=>{setTimeout(t,e)})}function F(e){const t=e?.trim();return t||void 0}function w(e,t){const n=F(e);if(!n)throw new W(`${t} is required.`);return n}function Cn(e){const t=e?.map(n=>F(n)).filter(Boolean);return t&&t.length>0?t:void 0}function Fi(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:Ib(),env:e,io:t,sleep:po}}function Xb(e){return e.option("--base-url <url>",'Backend API base URL. Overrides HAGI_API_BASE_URL and the "baseUrl" config file entry.').option("--token <token>","Bearer token for backend API calls. Overrides HAGI_API_TOKEN.").option("--lang <lang>","Accept-Language value for backend API calls. Overrides HAGI_API_LANG.")}function v(e){return e.option("--json","Emit deterministic JSON instead of human-readable text.")}function Y(e,t){const n=e.optsWithGlobals();return{api:t.api,env:t.env,io:t.io,outputJson:n.json===!0,runtime:bu({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var yb=5e3,Bb=1e3,Cb=1e4;function wi(e){return Math.min(Bb*2**Math.max(0,e-1),Cb)}async function Fn(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const a=new Promise(r=>{o=r,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),a])}finally{n.removeEventListener("abort",o)}}function Fb(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function wb(e){const{read:t,clock:n,signal:o}=e,a=n.now(),r=e.timeoutSeconds*1e3;let i=e.initial,s=0,l=0;const c=u=>({outcome:u,status:i,polls:s,elapsedSeconds:Math.round((n.now()-a)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=r-(n.now()-a);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),f=n.now();let Z;try{Z=await t(h,o)}catch(I){if(o?.aborted)return c("cancelled");if(!Vi(I))throw I;l+=1,await Fn(n,Math.min(wi(l),u),o);continue}l=0,s+=1;const E=i;if(i=Z,Z.status==="Holding")return c("holding");if(Z.status!=="Queued")return c("lost");const G=Fb(E,Z);if(G&&e.onChange?.(Z),!G&&n.now()-f<1e3){const I=Z.suggestedPollIntervalMs>0?Z.suggestedPollIntervalMs:yb;await Fn(n,Math.min(I,Math.max(0,r-(n.now()-a))),o)}}}var kb="HAGI_LOCK_OWNER",Ub="HAGI_SESSION_ID";function $e(e){const t=e?.trim();return t||void 0}function Jb(e,t){const n=$e(e)??$e(t.HAGI_LOCK_OWNER)??$e(t.HAGI_SESSION_ID);if(!n)throw new W(`No lock owner. Pass your own session ID as --owner <session-id>, or set ${kb} (or ${Ub}). The CLI does not invent an owner ID.`);return n}function xb(e){const t=$e(e.lockId),n=$e(e.server),o=$e(e.game);if(t&&(n||o))throw new W("Use either --lock-id or the pair --server and --game, not both.");if(t)return t;if(n&&o)return`${n}/${o}`;throw n||o?new W("--server and --game must be given together."):new W("A lock is required: pass --lock-id <id>, or --server <name> and --game <name>.")}function lt(e){return e.option("--lock-id <id>","Lock to use, for example eu-1/duckov. Alternative to --server and --game.").option("--server <name>","Server name; with --game, the lock is <server>/<game>.").option("--game <name>","Game name; with --server, the lock is <server>/<game>.").option("--owner <id>","Owner ID: your own session ID. Defaults to HAGI_LOCK_OWNER, then HAGI_SESSION_ID.")}function ct(e,t){return{lockId:xb(e),ownerId:Jb(e.owner,t)}}function it(e,t,n){if(e===void 0)return;const o=e.trim();if(!/^\d+$/.test(o))throw new W(`${t} must be a whole number of seconds.`);const a=Number(o);if(a<n)throw new W(`${t} must be ${n} second${n===1?"":"s"} or more.`);return a}function Zo(e){if(e!==void 0){if(!/^\d+$/.test(e.trim()))throw new W("--epoch must be a whole number, the epoch an acquire printed.");return Number(e.trim())}}async function dt(e){try{return await e()}catch(t){throw Ri(t)??t}}function ki(e){return{now:e.now??Date.now,sleep:e.sleep??po}}function Kb(e,t){lt(v(e.command("acquire").description("Take the lock or join its queue. Without --wait: one call, exit 0 for Holding and Queued. With --wait: wait for the turn, exit 0 only when Holding. There is no force option."))).option("--wait","Keep waiting in the queue (long-poll) until you hold the lock. Run it as a continuous watcher.").option("--timeout <seconds>","With --wait: give up after this many seconds (default 900), release the queue entry, exit code 31.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){if(!o.wait&&o.timeout!==void 0)throw new W("--timeout needs --wait.");const a=o.wait?it(o.timeout,"--timeout",1)??900:void 0,r=it(o.leaseSeconds,"--lease-seconds",1),i=Y(this,t),s=ct(o,i.env),l=await dt(()=>i.api.acquireLock({...s,leaseSeconds:r,label:F(o.label)})),c=G=>i.io.stdout(i.outputJson?S(G):et(G,"acquire"));if(a===void 0||l.status==="Holding"){c(l);return}if(l.status!=="Queued")throw c(l),new Ke(`Owner ${s.ownerId} neither holds nor queues for lock ${s.lockId} (${l.status}).`,{reported:!0});i.outputJson||c(l);const u=new AbortController,h=(t.onInterrupt??Ci)(()=>u.abort());let f;try{f=await wb({initial:l,read:(G,I)=>i.api.getLockStatus({...s,waitSeconds:G},I),timeoutSeconds:a,clock:ki(t),signal:u.signal,onChange:G=>{i.outputJson||i.io.stdout(Ws(G))}})}finally{h()}let Z;(f.outcome==="timeout"||f.outcome==="cancelled")&&(Z=await i.api.releaseLock(s).then(()=>!0,()=>!1));const E={outcome:f.outcome,polls:f.polls,elapsedSeconds:f.elapsedSeconds,released:Z};switch(i.outputJson?i.io.stdout(S({...f.status,wait:E})):i.io.stdout(f.outcome==="holding"?et(f.status,"status"):Ss(f,Z)),f.outcome){case"timeout":throw new uo(`Timed out after ${f.elapsedSeconds}s waiting for lock ${s.lockId}; last status ${f.status.status}.`);case"cancelled":throw new st(`Interrupted while waiting for lock ${s.lockId}; the lock was not acquired.`);case"lost":throw new Ke(`The queue entry for lock ${s.lockId} was dropped (${f.status.status}).`,{reported:!0});default:}})}var zb=6e4,Ta=[30*6e4,5*6e4],ht="Stop using the resource now.";function Qa(e,t){switch(t.status){case"Requisitioned":{const n=t.requisition;return`Lock ${e} LOST: requisitioned by ${n?.byOwnerId??"another owner"}${n?.at?` at ${n.at}`:""}, reason: ${n?.reason??"not given"}. ${ht}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${ht}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${ht}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${ht}`}}function Ma(e,t,n){if(!t)return null;const o=Date.parse(t),a=n?Date.parse(n):NaN;return Number.isNaN(a)?o:e.now()+(o-a)}async function Lb(e){const{lockId:t,ownerId:n,api:o,clock:a,signal:r}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=a.now(),h=null,f=null;const Z=new Set;let E=0,G=null,I=!1,k=!1;const d=(A,g,p)=>e.emit({kind:A,message:g,errorCode:p}),m=()=>{if(f===null)return;const A=Ta.filter(p=>!Z.has(p)&&a.now()>=f-p);if(A.length===0)return;A.forEach(p=>Z.add(p));const g=Math.min(...A)/6e4;d("cap-warning",`Lock ${t}: the hard cap (${new Date(f).toISOString()}) is about ${g} minutes away. The lock is taken back at the cap even while heartbeating: finish and release before then.`)};for(;;){if(r.aborted)return{outcome:"stopped",beats:c};let A=u;if(f!==null)for(const p of Ta)Z.has(p)||(A=Math.min(A,f-p));if(A>a.now()&&(await Fn(a,A-a.now(),r),r.aborted))return{outcome:"stopped",beats:c};if(m(),a.now()<u)continue;let g;try{if(i===void 0){const p=await o.getLockStatus({lockId:t,ownerId:n},r);if(p.status!=="Holding"){const V=`Refusing to start: owner ${n} does not hold lock ${t}. ${Qa(t,p)}`;return d("refused",V),{outcome:"refused",message:V,beats:c}}i=p.epoch}g=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},r)}catch(p){if(r.aborted)return{outcome:"stopped",beats:c};const V=Ri(p);if(V){const U=`Lock ${t} LOST: ${V.message}${/stop using/i.test(V.message)?"":` ${ht}`}`;return d("lost",U,V.errorCode),{outcome:"lost",message:U,beats:c}}if(!Vi(p))throw p;E+=1;const X=a.now();G??=X,!I&&X-G>=zb&&(I=!0,d("outage",`Backend unreachable for ${Math.round((X-G)/1e3)}s; still retrying. The lock is only lost when the backend says so, but it is released after the lease runs out.`)),!k&&h!==null&&X>=h&&(k=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=a.now()+wi(E);continue}if(g.status!=="Holding"){const p=Qa(t,g);return d("lost",p),{outcome:"lost",message:p,beats:c}}c+=1,G!==null&&(I&&d("recovered",`Backend reachable again after ${Math.round((a.now()-G)/1e3)}s; heartbeat resumed.`),G=null,I=!1,k=!1),E=0,h=Ma(a,g.leaseExpiresAt,g.serverTime),f=Ma(a,g.maxHoldExpiresAt,g.serverTime)??f,s??=g.suggestedHeartbeatIntervalMs>0?g.suggestedHeartbeatIntervalMs:120*1e3,l?e.verbose&&d("beat",`Heartbeat ok: valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}.`):(l=!0,d("started",`Heartbeat started for lock ${t} as ${n} (epoch ${g.epoch}): renewing every ${s/1e3}s, valid until ${g.leaseExpiresAt??"unknown"}, hard cap ${g.maxHoldExpiresAt??"unknown"}. Quiet unless something needs you.`)),u=a.now()+s}}function jb(e,t){lt(v(e.command("heartbeat").description("Keep a held lock alive: renew now and then every interval. Long-running and quiet on success; run it under a watcher. Exit code 32 when the lock is lost. Stopping it (SIGINT or SIGTERM) exits 0 and does not release."))).option("--epoch <n>","Epoch of your grant. Without it, the epoch of the first status read is used, and only while you hold the lock.").option("--interval <seconds>","Seconds between renewals (default: the interval the backend suggests, 120).").option("--lease-seconds <n>","Requested lease length in seconds on every renewal (the backend clamps it to 30 to 600).").option("--verbose","Also print one line per successful renewal.").action(async function(o){const a=Zo(o.epoch),r=it(o.interval,"--interval",1),i=it(o.leaseSeconds,"--lease-seconds",1),s=Y(this,t),l=ct(o,s.env),c=new AbortController,u=(t.onInterrupt??Ci)(()=>c.abort());try{const h=await Lb({...l,epoch:a,intervalSeconds:r,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:ki(t),signal:c.signal,emit:f=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:f.kind,...l,message:f.message,errorCode:f.errorCode})}
|
|
58
|
+
`:`${f.message}
|
|
59
|
+
`)}});if(h.outcome!=="stopped")throw new Ke(h.message??`Lock ${l.lockId} is lost.`,{reported:!0})}finally{u()}})}function Hb(e,t){v(e.command("list").description("List the locks that have a holder or a queue. An empty result exits 0.")).option("--prefix <text>","Only locks whose ID starts with this text.").action(async function(o){const a=Y(this,t),r=await dt(()=>a.api.listLocks(F(o.prefix)));a.io.stdout(a.outputJson?S({locks:r}):Ys(r))})}function Tb(e,t){lt(v(e.command("release").description("Give the lock back, or leave the queue. Exit code 0 whether or not something was released. Stop the heartbeat first."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused, so a slow old holder cannot release a newer grant.").action(async function(o){const a=Zo(o.epoch),r=Y(this,t),i=ct(o,r.env),s=await dt(()=>r.api.releaseLock({...i,epoch:a}));r.io.stdout(r.outputJson?S(s):vs(s))})}function Qb(e,t){lt(v(e.command("renew").description("Renew the lease once (one heartbeat). Exit code 32 when the lock is no longer yours. Prefer `heartbeat` for keeping a lock alive."))).option("--epoch <n>","Epoch of your grant, as printed by acquire. A stale epoch is refused.").option("--lease-seconds <n>","Requested lease length in seconds (the backend clamps it to 30 to 600).").action(async function(o){const a=Zo(o.epoch),r=it(o.leaseSeconds,"--lease-seconds",1),i=Y(this,t),s=ct(o,i.env),l=await dt(()=>i.api.renewLock({...s,epoch:a,leaseSeconds:r}));if(l.status!=="Holding")throw i.io.stdout(i.outputJson?S(l):et(l,"renew")),new Ke(`Owner ${s.ownerId} no longer holds lock ${s.lockId} (${l.status}).`,{reported:!0});i.io.stdout(i.outputJson?S(l):et(l,"renew"))})}var Oa=200;function Mb(e,t){lt(v(e.command("requisition").description("EMERGENCY: take the lock at once and displace the holder. Only when the user explicitly ordered a forced take; otherwise use acquire and queue."))).requiredOption("--reason <text>","Why the lock is taken (1 to 200 characters). Quote the user's order; the displaced owner is told.").option("--label <text>","Short label shown to others as the holder (at most 200 characters).").action(async function(o){const a=F(o.reason);if(!a||a.length>Oa)throw new W(`--reason must be 1 to ${Oa} characters.`);const r=Y(this,t),i=ct(o,r.env),s=await dt(()=>r.api.requisitionLock({...i,reason:a,label:F(o.label)}));r.io.stdout(r.outputJson?S(s):et(s,"requisition"))})}function Ob(e,t){lt(v(e.command("status").description("Read this owner's state on a lock: Holding, Queued, Expired, Requisitioned or None. Exit code 0 for all of them."))).option("--wait-seconds <n>","Long-poll: return early when the state changes, or after this many seconds (the server caps it at 25).").action(async function(o){const a=it(o.waitSeconds,"--wait-seconds",0),r=Y(this,t),i=ct(o,r.env),s=await dt(()=>r.api.getLockStatus({...i,waitSeconds:a}));r.io.stdout(r.outputJson?S(s):et(s,"status"))})}function Db(e,t){const n=e.command("lock").description("Take turns on a shared resource with other agents: a fair queue lock with a heartbeat.");Kb(n,t),Ob(n,t),Qb(n,t),jb(n,t),Tb(n,t),Mb(n,t),Hb(n,t)}var _b=[Db];function Pb(e,t,n=_b){const o=e.command("agent").description("Manage agent-facing capabilities, such as the shared resource lock.");for(const a of n)a(o,t)}function $b(e,t){v(e.command("archive").description("Archive a chat session through the dedicated chat archive endpoint.")).requiredOption("--session-id <id>","Chat session id to archive.").action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=await a.api.archiveChat(r);if(a.outputJson){a.io.stdout(S({sessionId:r,message:i.message}));return}a.io.stdout(`Chat archived
|
|
60
|
+
sessionId ${r}
|
|
61
|
+
message ${i.message}
|
|
62
|
+
`)})}var Ui=(function(e){return e.INIT="Init",e.COMPLETED="Completed",e.ARCHIVED="Archived",e.DRAFTING="Drafting",e.EXECUTION_COMPLETED="ExecutionCompleted",e.OPTIMIZING="Optimizing",e.OPENSPECING="Openspecing",e.REVIEWING="Reviewing",e.EXECUTING="Executing",e.ARCHIVING="Archiving",e})({});function Da(e){return typeof e=="string"?e.trim():e?.value?.trim()??""}function qb(e){const t=e.userMetadata;return t&&Object.keys(t).length>0?{...t}:void 0}function eh(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(", ")}function pe(e){const t=qb(e);return{sessionId:Da(e.sessionId),title:e.title,type:e.type,status:e.status,projectId:Da(e.projectId),proposalName:e.proposalName??void 0,archived:e.status===Ui.ARCHIVED,lastActiveAt:e.lastActiveAt??void 0,enableIndependentWorkspace:e.enableIndependentWorkspace,baseBranch:e.baseBranch??void 0,metadata:e.metadata??void 0,...t?{userMetadata:t}:{},chatExecutorType:e.chatExecutorType??void 0}}function Ji(e){return{sessions:e.sessions.map(pe)}}function xi(e,t){return t.length===0?`No ${e.toLowerCase()} found.
|
|
63
|
+
`:`${e} (${t.length})
|
|
64
|
+
${te([{header:"Session ID",value:n=>n.sessionId},{header:"Title",value:n=>n.title},{header:"Status",value:n=>n.status},{header:"Project ID",value:n=>n.projectId},{header:"Archived",value:n=>n.archived?"yes":"no"}],t)}
|
|
65
|
+
`}function ve(e,t=[]){return O([["sessionId",e.sessionId],["type",e.type],["title",e.title],["status",e.status],["projectId",e.projectId],["proposalName",e.proposalName],["independentWorkspace",String(e.enableIndependentWorkspace)],["baseBranch",e.baseBranch],["chatExecutorType",e.chatExecutorType],["metadata",e.metadata],["userMetadata",e.userMetadata?eh(e.userMetadata):void 0],...t])}var th="No running task took the message, so it was sent as the next message.";function fo(e){return{requested:e.requested,source:e.source,effective:e.effective,...e.outcome!==void 0?{outcome:e.outcome}:{},...e.messageId!==void 0?{messageId:e.messageId}:{},...e.reason!==void 0?{reason:e.reason}:{}}}function Ro(e,t,n,o=[],a){const r=a&&a.source!=="default"?[["steer",`${a.requested?"on":"off"} (${a.source})`],["effective",a.effective?"yes":"no"],["outcome",a.outcome],["messageId",a.messageId],["reason",a.reason]]:[],i=a?.effective&&a.outcome==="queued"?`${th}
|
|
66
|
+
`:"";return`${e}
|
|
67
|
+
${O([["sessionId",t],["message",n.message],...o,...r])}${i}`}function nh(e,t){if(e.timedOut)return`wait: timed out after ${e.elapsedSeconds}s; status is still ${t}
|
|
68
|
+
`;if(t==="WaitingForReply")return`wait: settled at ${t} after ${e.elapsedSeconds}s; a person must answer
|
|
69
|
+
`;const n=e.transitionSeen?"a status change was seen":"no status change was seen";return`wait: settled at ${t} after ${e.polls} poll(s) in ${e.elapsedSeconds}s; ${n}
|
|
70
|
+
`}function oh(e){if(e.messages.length===0)return`No messages found.
|
|
71
|
+
`;const t=e.messages.map(n=>{const o=n.contentBlocks??[],a=o.filter(s=>s.type==="Text"&&typeof s.text=="string"),r=o.length-a.length,i=[`[${n.timestamp}] ${n.type}`];for(const s of a)for(const l of s.text.split(`
|
|
72
|
+
`))i.push(` ${l}`);return r>0&&i.push(` (${r} other block${r===1?"":"s"} not shown)`),i.join(`
|
|
73
|
+
`)});return`Messages (${e.messages.length} of ${e.totalCount})
|
|
74
|
+
${t.join(`
|
|
75
|
+
|
|
76
|
+
`)}
|
|
77
|
+
`}var ah={readFile:e=>(0,Rn.readFileSync)(e,"utf8"),readStdin:()=>(0,Rn.readFileSync)(0,"utf8")},rh=['Session metadata entry as key=value (repeatable). Split at the first "=", so a value may contain "=".',"Write-once and visible to every reader of the session: do not put secrets in it."].join(" "),ih=["Read session metadata from a JSON object of string values, from a file or from stdin (-). Repeatable.","Keys and values follow the same rules as --metadata."].join(" ");function sh(e,t){return["Metadata limits (the backend checks them and reports a violation as an error):"," - at most 16 entries in total;",' - key: 1 to 64 characters matching ^[a-z][a-z0-9._-]{0,63}$ (lowercase letters, digits, "." "_" "-", starting with a letter);'," - value: 1 to 512 characters, with no control characters;"," - each key may appear once across --metadata and --metadata-json.","","The metadata is returned as userMetadata in --json output and is shown in the human output when present.","","Example (a master session and a worker session that carry role markers, the worker naming its master):",` hagi ${e} ${t} --metadata role=master --metadata batch=2026-11-07`,` hagi ${e} ${t} --metadata role=worker --metadata master=<master-session-id>`].join(`
|
|
78
|
+
`)}function _a(e,t){return[...t??[],e]}function Ki(e,t,n){return e.option("--metadata <key=value>",rh,_a).option("--metadata-json <file|->",ih,_a).addHelpText("after",`
|
|
79
|
+
${sh(t,n)}
|
|
80
|
+
`)}function lh(e){const t=e.indexOf("=");if(t===-1)throw new W(`--metadata expects key=value, got "${e}".`);const n=e.slice(0,t);if(n==="")throw new W(`--metadata key is empty in "${e}".`);return[n,e.slice(t+1)]}function ch(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n]==="\\")n+=1;else if(e[n]==='"')return n;return e.length-1}function dh(e){const t=[];let n=0;for(let o=0;o<e.length;o+=1){const a=e[o];if(a==='"'){const r=ch(e,o);let i=r+1;for(;i<e.length&&/\s/.test(e[i]);)i+=1;n===1&&e[i]===":"&&t.push(JSON.parse(e.slice(o,r+1))),o=r}else a==="{"||a==="["?n+=1:(a==="}"||a==="]")&&(n-=1)}return t}function Vo(e){return e==="-"?"stdin":e}function uh(e,t){const n=Vo(t);let o;try{o=JSON.parse(e)}catch(r){throw new W(`--metadata-json ${n} is not valid JSON: ${r instanceof Error?r.message:String(r)}`)}if(o===null||typeof o!="object"||Array.isArray(o))throw new W(`--metadata-json ${n} must be a JSON object of string values.`);const a=[];for(const[r,i]of Object.entries(o)){if(r==="")throw new W(`--metadata-json ${n} has an empty key.`);if(typeof i!="string")throw new W(`--metadata-json ${n}: the value of "${r}" must be a string.`);a.push([r,i])}return{entries:a,keys:dh(e)}}function zi(e,t=ah){const n=new Map,o=(a,r)=>{if(n.has(a))throw new W(`Metadata key "${a}" is given more than once. Each key may appear once across --metadata and --metadata-json.`);n.set(a,r)};for(const a of e.entries??[]){const[r,i]=lh(a);o(r,i)}for(const a of e.jsonSources??[]){const{entries:r,keys:i}=uh(mh(a,t),a),s=new Set;for(const l of i){if(s.has(l))throw new W(`Metadata key "${l}" is given more than once in --metadata-json ${Vo(a)}.`);s.add(l)}for(const[l,c]of r)o(l,c)}return n.size===0?void 0:Object.fromEntries(n)}function mh(e,t){let n;try{n=e==="-"?t.readStdin():t.readFile(e)}catch(o){const a=o instanceof Error?o.message:String(o);throw new W(`Could not read --metadata-json ${Vo(e)}: ${a}`)}return n.replace(/^\uFEFF/,"")}var an=(function(e){return e.CLAUDE_CODE_CLI="ClaudeCodeCli",e.CODEX_CLI="CodexCli",e.GIT_HUB_COPILOT="GitHubCopilot",e.CODEBUDDY_CLI="CodebuddyCli",e.OPEN_CODE_CLI="OpenCodeCli",e.IFLOW_CLI="IFlowCli",e.HERMES_CLI="HermesCli",e.QODER_CLI="QoderCli",e.KIRO_CLI="KiroCli",e.KIMI_CLI="KimiCli",e.GEMINI_CLI="GeminiCli",e.DEEP_AGENTS_CLI="DeepAgentsCli",e})({});function bh(e,t){Ki(v(e.command("create").description("Create a normal chat session.")).requiredOption("--title <title>","Chat session title.").requiredOption("--project-id <id>","Owning project id.").option("--hero-id <id>","Optional bound hero id.").addOption(new ge("--executor-type <type>","Optional executor override.").choices(Object.values(an))),"chat create",'--title "<title>" --project-id <id>').action(async function(o){const a=Y(this,t),r=w(o.title,"--title"),i=w(o.projectId,"--project-id"),s=zi({entries:o.metadata,jsonSources:o.metadataJson}),l=pe(await a.api.createChatSession({title:r,projectId:i,heroId:F(o.heroId),executorType:o.executorType,...s?{metadata:s}:{}}));if(a.outputJson){a.io.stdout(S({session:l}));return}a.io.stdout(`Chat session created
|
|
81
|
+
${ve(l)}`)})}function hh(e,t){v(e.command("delete").description("Delete a chat session.")).requiredOption("--session-id <id>","Chat session id to delete.").action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=await a.api.deleteSession(r,!1);if(a.outputJson){a.io.stdout(S({sessionId:r,deleted:!0,message:i.message}));return}a.io.stdout(`Chat deleted
|
|
82
|
+
sessionId ${r}
|
|
83
|
+
message ${i.message}
|
|
84
|
+
`)})}var Eo=(function(e){return e.CHAT="Chat",e.PROPOSAL="Proposal",e})({});function gh(e,t){v(e.command("list").description("List normal chat sessions.")).action(async function(o){if(o.projectId&&o.projectIds?.length)throw new W("Use either --project-id or --project-ids, not both.");const a=Y(this,t),r=Ji(await a.api.listSessions({type:Eo.CHAT,projectId:F(o.projectId),projectIds:Cn(o.projectIds),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(xi("Chat sessions",r.sessions))}).option("--project-id <id>","Filter chat sessions by a single project id.").option("--project-ids <ids...>","Filter chat sessions by multiple project ids.").option("--active-only","Only return non-archived chat sessions.").option("--include-archived","Include archived chat sessions.")}var Ah="the backend does not support Steer",Pa="HAGI_SEND_STEER";function Go(){return new ge("--steer","Deliver the message to the running task as a Steer. Overrides HAGI_SEND_STEER and the config file.")}function No(){return new ge("--no-steer","Send a normal message, even when HAGI_SEND_STEER or the config file asks for Steer.")}var ph=new Set(["1","true","yes","on"]),Zh=new Set(["0","false","no","off"]);function fh(e){const t=he(e[Pa]);if(t===void 0)return;const n=t.toLowerCase();if(ph.has(n))return!0;if(Zh.has(n))return!1;throw new W(`${Pa} has an unrecognized value "${t}". Accepted values: 1, true, yes, on (Steer) or 0, false, no, off (no Steer).`)}function Rh({flag:e,env:t}){if(e!==void 0)return{requested:e,source:"flag"};const n=fh(t);if(n!==void 0)return{requested:n,source:"env"};const o=uu(t);return o!==void 0?{requested:o,source:"config"}:{requested:!1,source:"default"}}async function Wo(e){const{context:t,sessionId:n,content:o,mode:a,executorType:r,steerFlag:i}=e,s=Rh({flag:i,env:t.env}),l=async u=>({message:(await t.api.sendMessage(n,{content:o,mode:a,executorType:r})).message,steer:{requested:s.requested,source:s.source,effective:!1,...s.requested&&u!==void 0?{reason:u}:{}}});if(!s.requested)return l();const c=[...a!==void 0?["--mode"]:[],...r!==void 0?["--executor-type"]:[]];if(c.length>0){if(s.source==="flag")throw new W(`--steer cannot be combined with ${c.join(" or ")}.`);return l(`${c.join(" or ")} cannot be combined with Steer`)}try{const u=await t.api.steerSession(n,{content:o}),h=u.outcome==="steered"?"steered":"queued";return{message:h==="steered"?"Steered":"Queued",steer:{requested:!0,source:s.source,effective:!0,outcome:h,...u.messageId!==void 0?{messageId:u.messageId}:{}}}}catch(u){if(s.source!=="flag"&&u instanceof y&&u.code===R.Unimplemented)return l(Ah);throw u}}var So=(function(e){return e.READONLY="Readonly",e.EDIT="Edit",e})({});function Vh(e,t){v(e.command("send").description("Send a follow-up message to a chat session.")).requiredOption("--session-id <id>","Chat session id.").requiredOption("--content <text>","Message content.").addOption(new ge("--mode <mode>","Message mode override.").choices(Object.values(So))).addOption(new ge("--executor-type <type>","Executor override for this message.").choices(Object.values(an))).addOption(Go()).addOption(No()).action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=await Wo({context:a,sessionId:r,content:w(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(a.outputJson){a.io.stdout(S({sessionId:r,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:fo(i.steer)}));return}a.io.stdout(Ro("Chat message sent",r,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function Eh(e,t){const n=e.command("chat").description("Manage normal chat sessions.");gh(n,t),bh(n,t),$b(n,t),hh(n,t),Vh(n,t)}async function Gh(){const e=[];for await(const t of process.stdin)e.push(typeof t=="string"?Buffer.from(t):t);return Buffer.concat(e).toString("utf8")}async function rn(e){const t=e.trim();if(!t)throw new W("Provide --input <file> or --input - for stdin.");const n=t==="-"?await Gh():await(0,ps.readFile)(t,"utf8");try{return JSON.parse(n)}catch(o){throw new W(`Invalid JSON input from ${t}: ${o instanceof Error?o.message:String(o)}`)}}var Nh=["first","random"];async function Wh(e){let t;try{t=await rn(e)}catch(n){throw n instanceof W?n:new W(`Cannot read HagiTask input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new W(`HagiTask input from ${e} must be a JSON object.`);return t}function Sh(e,t,n){if(!t&&!n)throw new W("Provide --task-id or --prompt-id.");if(e.input!==void 0&&!t)throw new W("--input requires --task-id.");if(e.targetBranchName&&e.targetBranchMode!=="new-custom")throw new W("--target-branch-name requires --target-branch-mode new-custom.");if(e.targetBranchMode==="new-custom"&&!F(e.targetBranchName))throw new W("--target-branch-name is required when --target-branch-mode is new-custom.");const o=F(e.heroSelectionMode);if(o&&!Nh.includes(o))throw new W("--hero-selection-mode must be first or random.")}function vh(e,t){v(e.command("create").description("Create a HagiTask session. Read the task schema first with `hagitask schema --task-id <id>`, then pass the input JSON with --input.")).requiredOption("--title <title>","HagiTask session title.").requiredOption("--project-id <id>","Owning project id.").option("--task-id <id>","HagiTask id from `hagitask list`. Required with --input.").option("--prompt-id <id>","Prompt template id, for example auto-compose-commit.en-US. Used when there is no --task-id.").option("--input <file|->","Structured task input: a JSON object file, or - to read it from stdin. Needs --task-id.").option("--message <text>","Optional message that overrides the prompt template.").option("--locale <locale>","Locale for the HagiTask prompt, for example en-US.").option("--repository-path <path>","Optional MonoSpecs sub-repository path, for example repos/cli.").option("--target-type <type>","Explicit target type: repository or vault.").option("--vault-id <id>","Registered vault id for vault-targeted execution.").option("--output-vault-id <id>","Output vault id for research-investigation tasks.").option("--reference-vault-id <ids...>","Reference vault ids the session may read.").option("--editable-vault-id <ids...>","Vault ids the session may edit.").option("--hero-id <id>","Preferred hero id. Takes precedence over --hero-selection-mode.").option("--hero-selection-mode <mode>","Hero choice when --hero-id is not given: first (default) or random.").option("--need-push","Request a push after commit creation when supported.").option("--pull-rebase","Run git pull --rebase before pushing, when push is requested.").option("--target-branch-mode <mode>","Target branch mode: current, new-custom or ai-generated-new. new-custom needs --target-branch-name.").option("--target-branch-name <name>","Custom target branch name. Requires --target-branch-mode new-custom.").option("--script-key <key>","Optional stable scenario script key.").action(async function(o){const a=F(o.taskId),r=F(o.promptId);Sh(o,a,r);const i=o.input!==void 0?await Wh(w(o.input,"--input")):void 0,s=Y(this,t),l={title:w(o.title,"--title"),projectId:w(o.projectId,"--project-id"),promptId:r,presetTaskId:a,presetTaskLocale:F(o.locale),presetTaskInput:i,message:F(o.message),repositoryPath:F(o.repositoryPath),targetType:F(o.targetType),vaultId:F(o.vaultId),outputVaultId:F(o.outputVaultId),referenceVaultIds:Cn(o.referenceVaultId),editableVaultIds:Cn(o.editableVaultId),heroId:F(o.heroId),heroSelectionMode:F(o.heroSelectionMode),needPush:o.needPush?!0:void 0,pullRebaseBeforePush:o.pullRebase?!0:void 0,targetBranchMode:F(o.targetBranchMode),targetBranchName:F(o.targetBranchName),scriptKey:F(o.scriptKey)},c=pe(await s.api.createHagiTaskSession(l));if(s.outputJson){s.io.stdout(S({session:c,presetTaskId:l.presetTaskId??null,promptId:l.promptId??null,requested:l}));return}s.io.stdout(`HagiTask session created
|
|
85
|
+
${ve(c,[["presetTaskId",l.presetTaskId??void 0],["presetTaskLocale",l.presetTaskLocale??void 0],["promptId",l.promptId??void 0],["repositoryPath",l.repositoryPath??void 0],["targetBranchMode",l.targetBranchMode??void 0],["targetBranchName",l.targetBranchName??void 0],["scriptKey",l.scriptKey??void 0],["heroId",l.heroId??void 0],["heroSelectionMode",l.heroSelectionMode??void 0]])}`)})}var Yh=new Set(["Optimizing","Openspecing","Executing","Archiving"]);function Ih(e){return Yh.has(e)}async function Xh(e,t,n){const o=n.now(),a=t.timeoutSeconds*1e3,r=t.graceSeconds*1e3,i=t.intervalSeconds*1e3;let s=0,l=!1;for(;;){const u=await e();s+=1;const h=n.now()-o,f=Ih(u.status);if(l=l||f,!f&&(l||h>=r||h>=a))return c(u,{settled:!0,timedOut:!1});if(h>=a)return c(u,{settled:!1,timedOut:!0});await n.sleep(Math.min(i,a-h))}function c(u,h){return{session:u,...h,transitionSeen:l,polls:s,elapsedSeconds:Math.round((n.now()-o)/100)/10}}}function Zn(e,t,n){const o=e.trim();if(!/^\d+$/.test(o))throw new W(`${t} must be a whole number of seconds.`);const a=Number(o);if(a<n)throw new W(`${t} must be ${n} second${n===1?"":"s"} or more.`);return a}function yh(e){const t=[["--timeout",e.timeout],["--interval",e.interval],["--grace",e.grace]].filter(([,r])=>r!==void 0).map(([r])=>r);if(!e.wait){if(t.length>0)throw new W(`${t.join(", ")} needs --wait.`);return}const n=e.timeout===void 0?900:Zn(e.timeout,"--timeout",1),o=e.interval===void 0?5:Zn(e.interval,"--interval",1),a=e.grace===void 0?10:Zn(e.grace,"--grace",0);if(o>=n)throw new W("--interval must be less than --timeout.");return{intervalSeconds:o,timeoutSeconds:n,graceSeconds:a}}function Li(e,t,n){v(e.command("get").description(n.description)).requiredOption("--session-id <id>","Session id to read.").option("--wait","Poll until the status settles: not Optimizing, Openspecing, Executing or Archiving. WaitingForReply counts as settled.").option("--timeout <seconds>","With --wait: stop waiting after this many seconds (default 900). Exit code 31 on timeout.").option("--interval <seconds>","With --wait: seconds between reads (default 5). Must be less than --timeout.").option("--grace <seconds>","With --wait: keep polling a stable status that never transitioned for this long (default 10, 0 disables).").action(async function(a){const r=yh(a),i=w(a.sessionId,"--session-id"),s=Y(this,t);if(!r){const h=pe(await s.api.getSession(i));if(s.outputJson){s.io.stdout(S({session:h}));return}s.io.stdout(ve(h));return}const l=await Xh(()=>s.api.getSession(i),r,{now:t.now??Date.now,sleep:t.sleep??po}),c=pe(l.session),u={settled:l.settled,timedOut:l.timedOut,transitionSeen:l.transitionSeen,polls:l.polls,elapsedSeconds:l.elapsedSeconds};if(s.outputJson?s.io.stdout(S({session:c,wait:u})):s.io.stdout(`${ve(c)}${nh(u,c.status)}`),l.timedOut)throw new uo(`Timed out after ${l.elapsedSeconds}s waiting for ${n.label} ${i} to settle; last status ${c.status}.`)})}function Bh(e,t){Li(e,t,{description:"Read one HagiTask session by id, including a Super Commit session. With --wait, poll until its status settles.",label:"HagiTask session"})}function Ch(e){if(e===void 0)return;const t=e.trim();if(!/^\d+$/.test(t)||Number(t)<1)throw new W("--last must be a positive whole number.");return Number(t)}function ji(e,t,n){v(e.command("messages").description(n.description)).requiredOption("--session-id <id>","Session id whose messages to read.").option("--last <n>","Read only the n newest messages. Omit it to read the backend default page (50 messages).").action(async function(a){const r=Ch(a.last),i=w(a.sessionId,"--session-id"),s=Y(this,t),l=await s.api.getSessionMessages(i,r===void 0?{page:1,order:"desc"}:{page:1,pageSize:r,order:"desc"});if(s.outputJson){s.io.stdout(S(l));return}s.io.stdout(oh(l))})}function Fh(e,t){ji(e,t,{description:"Read a HagiTask session's messages, newest first. For a Super Commit, --last 1 reads the final result message."})}var j="-";function $a(e){return e?"yes":"no"}function qa(e){return e&&e.length>0?e.join(", "):j}function Tt(e){if(Array.isArray(e))return e.map(t=>Tt(t));if(e&&typeof e=="object"){const t=e;return Object.fromEntries(Object.keys(t).sort().map(n=>[n,Tt(t[n])]))}return e}function Hi(e){return[...e].sort((t,n)=>{const o=t.id??"",a=n.id??"";return o<a?-1:o>a?1:0})}function wh(e){return Tt({tasks:Hi(e)})}function kh(e){if(e.length===0)return`No HagiTask is available.
|
|
86
|
+
`;const t=Hi(e);return`HagiTasks (${t.length})
|
|
87
|
+
${te([{header:"ID",value:n=>n.id??j},{header:"Version",value:n=>n.version??j},{header:"Title",value:n=>n.title??j},{header:"Description",value:n=>n.description??j}],t)}
|
|
88
|
+
`}function Uh(e){const t=[];e.origin==="derived"&&t.push(e.producer?`derived by ${e.producer}`:"derived");for(const n of e.aliases??[])n.key&&t.push(`alias ${n.key} (deprecated)`);return e.options&&e.options.length>0&&t.push(`options: ${e.options.map(n=>n.value??"").join(", ")}`),t.length>0?t.join("; "):j}function Jh(e){const t=e.id??j,n=[];n.push(O([["id",e.id??void 0],["title",e.title??void 0],["version",e.version??void 0],["locale",e.locale??void 0],["description",e.description??void 0]]));const o=e.scope?.targets??[];n.push(`Target scope (default ${e.scope?.defaultTargetType??j})${o.length===0?`
|
|
89
|
+
None.
|
|
90
|
+
`:`
|
|
91
|
+
${te([{header:"ID",value:c=>c.id??j},{header:"Kind",value:c=>c.kind??j},{header:"Selection",value:c=>c.selectionMode??j},{header:"Required",value:c=>$a(c.required)},{header:"Access",value:c=>qa(c.allowedAccessTypes)},{header:"Input key",value:c=>c.requestKey??j},{header:"Scope key",value:c=>c.scopeRequestKey??j}],o)}
|
|
92
|
+
`}`);const a=e.commands?.commands??[];n.push(`Commands${a.length===0?`
|
|
93
|
+
None.
|
|
94
|
+
`:`
|
|
95
|
+
${te([{header:"ID",value:c=>c.id??j},{header:"Group",value:c=>c.groupId??j},{header:"Label",value:c=>c.label??j},{header:"URL",value:c=>c.url??j}],a)}
|
|
96
|
+
`}`);const r=e.parameters??[];n.push(`Parameters${r.length===0?`
|
|
97
|
+
None.
|
|
98
|
+
`:`
|
|
99
|
+
${te([{header:"Key",value:c=>c.key??j},{header:"Required",value:c=>$a(c.required)},{header:"Origin",value:c=>c.origin??j},{header:"Type",value:c=>c.valueType??j},{header:"Label",value:c=>c.label??j},{header:"Notes",value:Uh}],r)}
|
|
100
|
+
`}`);const i=e.requirements??[];n.push(`Requirements${i.length===0?`
|
|
101
|
+
None.
|
|
102
|
+
`:`
|
|
103
|
+
${i.map(c=>`- ${c.type??j}: ${c.name??qa(c.names)}`).join(`
|
|
104
|
+
`)}
|
|
105
|
+
`}`);const s=e.scenes?.registrations??[];n.push(`Scenes${s.length===0?`
|
|
106
|
+
None.
|
|
107
|
+
`:`
|
|
108
|
+
${s.map(c=>`- ${c.sceneKey??j}: ${c.title??j}`).join(`
|
|
109
|
+
`)}
|
|
110
|
+
`}`);const l=e.request;return n.push(O([["endpoint",l?`${l.method??j} ${l.path??j}`:void 0],["presetTaskIdField",l?.presetTaskIdField??void 0],["localeField",l?.localeField??void 0],["requiredFields",l?.requiredFields&&l.requiredFields.length>0?l.requiredFields.join(", "):void 0]])),n.push(`Example
|
|
111
|
+
hagi hagitask schema --task-id ${t} --json # full input JSON Schema and example body
|
|
112
|
+
hagi hagitask create --title "<title>" --project-id <project-id> --task-id ${t} --input input.json
|
|
113
|
+
`),n.join(`
|
|
114
|
+
`)}function xh(e){return Tt(e)}function Kh(e,t){v(e.command("list").description("List the active HagiTasks with their id, version, title and description.")).action(async function(){const o=Y(this,t),a=await o.api.listHagiTaskSchemas();if(o.outputJson){o.io.stdout(S(wh(a)));return}o.io.stdout(kh(a))})}function zh(e,t){const n=e&&typeof e=="object"?e[t]:void 0;return typeof n=="string"&&n.trim()?n.trim():void 0}function Lh(e){const t=e&&typeof e=="object"?e.diagnostics:void 0;return Array.isArray(t)?t:[]}async function jh(e,t){try{return await e.getHagiTaskSchema(t)}catch(n){const o=en(n);if(o?.status===404){const a=Lh(o.body);if(a.length>0){const r=a.map(i=>{const s=i.path?` (${i.path})`:"";return` - ${i.code??"diagnostic"}: ${i.message??""}${s}`});throw new He(404,[zh(o.body,"error")??`HagiTask ${t} is not available.`,...r].join(`
|
|
115
|
+
`),o.body)}}throw n}}function Hh(e,t){v(e.command("schema").description("Show the creation schema of one HagiTask: scope, commands, parameters, requirements, scenes and an example. --json prints the full schema, including the input JSON Schema.")).requiredOption("--task-id <id>","HagiTask id to read.").action(async function(o){const a=w(o.taskId,"--task-id"),r=Y(this,t),i=await jh(r.api,a);if(r.outputJson){r.io.stdout(S(xh(i)));return}r.io.stdout(Jh(i))})}function Th(e,t){v(e.command("send").description("Send a follow-up message to a HagiTask session.")).requiredOption("--session-id <id>","HagiTask session id.").requiredOption("--content <text>","Message content.").addOption(new ge("--mode <mode>","Message mode override.").choices(Object.values(So))).addOption(new ge("--executor-type <type>","Executor override for this message.").choices(Object.values(an))).addOption(Go()).addOption(No()).action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=await Wo({context:a,sessionId:r,content:w(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(a.outputJson){a.io.stdout(S({sessionId:r,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:fo(i.steer)}));return}a.io.stdout(Ro("HagiTask message sent",r,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function Qh(e,t){const n=e.command("hagitask").description("Manage HagiTask sessions: list tasks, read a task schema, create a session from it, read one session with get (--wait to follow a run) and its messages, and send follow-up messages.");Kh(n,t),Hh(n,t),vh(n,t),Th(n,t),Bh(n,t),Fh(n,t)}function ce(e){const t=e?.trim();return t||void 0}function Ti(e){if(!e)return"";const t=ce(e.mode);if(t==="once")return["once",ce(e.runAt)].filter(Boolean).join(" ");const n=ce(e.repeat?.rule)??t??"";return[n,n==="weekly"?(e.repeat?.weekdays??[]).map(o=>o.trim().slice(0,3).toLowerCase()).join(","):void 0,ce(e.timeOfDay),ce(e.timeZone)].filter(Boolean).join(" ")}function Je(e){return{id:ce(e.id)??"",type:ce(e.type)??"",name:ce(e.name)??"",enabled:e.enabled===!0,state:ce(e.state)??"",nextRunAt:ce(e.nextRunAt)??null,schedule:e.schedule,agentPool:e.agentPool,payload:e.payload}}function Mh(e){return{plans:e.map(Je)}}function Oh(e){return e.length===0?`No scheduled plans found.
|
|
116
|
+
`:`Plans (${e.length})
|
|
117
|
+
${te([{header:"ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Enabled",value:t=>t.enabled?"yes":"no"},{header:"State",value:t=>t.state},{header:"Next Run",value:t=>t.nextRunAt??"-"},{header:"Schedule",value:t=>Ti(t.schedule)}],e)}
|
|
118
|
+
`}function Wt(e){return O([["id",e.id],["type",e.type],["name",e.name],["enabled",e.enabled?"yes":"no"],["state",e.state],["nextRun",e.nextRunAt??"-"],["schedule",Ti(e.schedule)]])}function Dh(e){return{planId:e,deleted:!0}}function _h(e){return`Plan deleted
|
|
119
|
+
${O([["planId",e.planId],["deleted",String(e.deleted)]])}`}function Ph(e){return{planId:ce(e.planId)??"",accepted:!0}}function $h(e){return`Plan run accepted
|
|
120
|
+
${O([["planId",e.planId],["accepted",String(e.accepted)]])}`}var qh=["id","createdAt","updatedAt","state","nextRunAt"];async function Qi(e){let t;try{t=await rn(e)}catch(n){throw n instanceof W?n:new W(`Cannot read plan input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new W(`Plan input from ${e} must be a JSON object.`);return t}function Qt(e){const t={...e};for(const n of qh)delete t[n];return t}function eg(e){return{strategy:"random",agents:[{heroId:e}]}}function Mi(e){return{...e.name!==void 0?{name:e.name}:{},...e.heroId!==void 0?{agentPool:eg(e.heroId)}:{},...e.enabled!==void 0?{enabled:e.enabled}:{}}}function Oi(e,t){return{...Qt(e),...Qt(t)}}function tg(e,t){v(e.command("create").description("Create a scheduled plan from a JSON document. Plans are enabled unless --disabled or the document says otherwise.")).requiredOption("--input <file|->","Plan JSON file path, or - to read from stdin.").option("--name <name>","Plan name. Overrides the document name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the document agent pool.").option("--disabled","Create the plan disabled. Overrides the document enabled value.").action(async function(o){const a=Y(this,t),r=Qt(await Qi(o.input)),i=Je(await a.api.createPlan({enabled:!0,...r,...Mi({name:F(o.name),heroId:F(o.heroId),enabled:o.disabled?!1:void 0})}));if(a.outputJson){a.io.stdout(S({plan:i}));return}a.io.stdout(`Plan created
|
|
121
|
+
${Wt(i)}`)})}function ng(e,t){v(e.command("delete").description("Delete a scheduled plan by id.")).requiredOption("--id <id>","Plan id to delete.").action(async function(o){const a=Y(this,t),r=w(o.id,"--id");await a.api.deletePlan(r);const i=Dh(r);if(a.outputJson){a.io.stdout(S(i));return}a.io.stdout(_h(i))})}async function Di(e,t,n){const o=await e.api.getPlan(t);return Je(o).enabled===n?{view:Je(o),changed:!1}:{view:Je(await e.api.updatePlan(t,Oi(o,{enabled:n}))),changed:!0}}function og(e,t){v(e.command("disable").description("Disable a scheduled plan. Nothing is sent when it is already disabled.")).requiredOption("--id <id>","Plan id to disable.").action(async function(o){const a=Y(this,t),{view:r,changed:i}=await Di(a,w(o.id,"--id"),!1);if(a.outputJson){a.io.stdout(S({plan:r,changed:i}));return}a.io.stdout(`${i?"Plan disabled":"Plan was already disabled"}
|
|
122
|
+
${Wt(r)}`)})}function ag(e,t){v(e.command("enable").description("Enable a scheduled plan. Nothing is sent when it is already enabled.")).requiredOption("--id <id>","Plan id to enable.").action(async function(o){const a=Y(this,t),{view:r,changed:i}=await Di(a,w(o.id,"--id"),!0);if(a.outputJson){a.io.stdout(S({plan:r,changed:i}));return}a.io.stdout(`${i?"Plan enabled":"Plan was already enabled"}
|
|
123
|
+
${Wt(r)}`)})}function rg(e,t){v(e.command("get").description("Show one scheduled plan, including its schedule, agent pool and payload in --json mode.")).requiredOption("--id <id>","Plan id to read.").action(async function(o){const a=Y(this,t),r=Je(await a.api.getPlan(w(o.id,"--id")));if(a.outputJson){a.io.stdout(S({plan:r}));return}a.io.stdout(Wt(r))})}function ig(e,t){v(e.command("list").description("List scheduled plans with their state, next run time and schedule.")).action(async function(){const o=Y(this,t),a=Mh(await o.api.listPlans());if(o.outputJson){o.io.stdout(S(a));return}o.io.stdout(Oh(a.plans))})}function sg(e,t){v(e.command("run").description("Run a scheduled plan now from its stored inputs. The schedule is not changed.")).requiredOption("--id <id>","Plan id to run.").option("--background","Start the run and print the accepted plan id without waiting for the session.").action(async function(o){const a=Y(this,t),r=w(o.id,"--id");if(o.background){const s=Ph(await a.api.startPlan(r));if(a.outputJson){a.io.stdout(S(s));return}a.io.stdout($h(s));return}const i=pe(await a.api.runPlan(r));if(a.outputJson){a.io.stdout(S({session:i}));return}a.io.stdout(`Plan run created a session
|
|
124
|
+
${ve(i)}`)})}function lg(e,t){v(e.command("update").description("Update a scheduled plan. The current plan is read first and only the given fields change.")).requiredOption("--id <id>","Plan id to update.").option("--input <file|->","JSON document whose top-level fields replace the same fields of the plan.").option("--name <name>","Updated plan name.").option("--hero-id <id>","Hero for a single-agent pool. Replaces the agent pool.").option("--enabled","Enable the plan.").option("--disabled","Disable the plan.").action(async function(o){const a=w(o.id,"--id"),r=F(o.input),i=F(o.name),s=F(o.heroId);if(o.enabled&&o.disabled)throw new W("Pass either --enabled or --disabled, not both.");const l=o.enabled?!0:o.disabled?!1:void 0;if(!r&&!i&&!s&&l===void 0)throw new W("Provide at least one change: --input, --name, --enabled, --disabled, or --hero-id.");const c=r?Qt(await Qi(r)):{},u=Y(this,t),h=await u.api.getPlan(a),f=Je(await u.api.updatePlan(a,Oi(h,{...c,...Mi({name:i,heroId:s,enabled:l})})));if(u.outputJson){u.io.stdout(S({plan:f}));return}u.io.stdout(`Plan updated
|
|
125
|
+
${Wt(f)}`)})}function cg(e,t){const n=e.command("plan").description("Manage scheduled plans: saved proposal or HagiTask inputs that run on a schedule.");ig(n,t),rg(n,t),tg(n,t),lg(n,t),ag(n,t),og(n,t),ng(n,t),sg(n,t)}function re(e){const t=e?.trim();return t||void 0}function vo(e){return{id:re(e.id)??"",name:re(e.name)??"",path:re(e.path)??"",description:re(e.description),isMonoSpecs:e.isMonoSpecs===!0,monoSpecsVersion:re(e.monoSpecsVersion),monoSpecsRepoDirectory:re(e.monoSpecsRepoDirectory),monoSpecsCommitWhenArchive:typeof e.monoSpecsCommitWhenArchive=="boolean"?e.monoSpecsCommitWhenArchive:void 0,hasError:"hasError"in e?e.hasError===!0:!1,error:"error"in e?re(e.error):void 0}}function _i(e){return{projects:(e??[]).map(vo)}}function dg(e){return e.length===0?`No projects found.
|
|
126
|
+
`:`Projects (${e.length})
|
|
127
|
+
${te([{header:"Project ID",value:t=>t.id},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.path},{header:"MonoSpecs",value:t=>t.isMonoSpecs?"yes":"no"},{header:"Error",value:t=>t.hasError?"yes":"no"}],e)}
|
|
128
|
+
`}function Pi(e,t=[]){return O([["id",e.id],["name",e.name],["path",e.path],["description",e.description],["isMonoSpecs",String(e.isMonoSpecs)],["monoSpecsVersion",e.monoSpecsVersion],["monoSpecsRepoDirectory",e.monoSpecsRepoDirectory],["monoSpecsCommitWhenArchive",typeof e.monoSpecsCommitWhenArchive=="boolean"?String(e.monoSpecsCommitWhenArchive):void 0],["hasError",String(e.hasError)],["error",e.error],...t])}function ug(e){return{projectId:re(e.id)??"",name:re(e.name)??"",isMonoSpecs:e.isMonoSpecs===!0,hasError:e.hasError===!0,error:re(e.error),repositories:(e.repositories??[]).map(t=>({name:re(t.name),path:t.path??void 0,displayName:re(t.displayName),type:re(t.type),branch:re(t.branch),isValidGitRepo:typeof t.isValidGitRepo=="boolean"?t.isValidGitRepo:void 0}))}}function mg(e){return`${O([["projectId",e.projectId],["name",e.name],["isMonoSpecs",String(e.isMonoSpecs)],["hasError",String(e.hasError)],["error",e.error??(e.hasError?"The project failed to load; its repository list may be incomplete.":void 0)]])}
|
|
129
|
+
${e.repositories.length===0?`This project lists no repositories.
|
|
130
|
+
`:`${te([{header:"Name",value:t=>t.name??""},{header:"Path",value:t=>t.path??""},{header:"Display name",value:t=>t.displayName??""},{header:"Type",value:t=>t.type??""},{header:"Branch",value:t=>t.branch??""}],e.repositories)}
|
|
131
|
+
`}`}function bg(e,t){v(e.command("create").description("Create a project through the generated project client.")).requiredOption("--name <name>","Project display name.").requiredOption("--path <path>","Project root path.").option("--description <text>","Optional project description.").action(async function(o){const a=Y(this,t),r=vo(await a.api.createProject({name:w(o.name,"--name"),path:w(o.path,"--path"),description:F(o.description)}));if(a.outputJson){a.io.stdout(S({project:r}));return}a.io.stdout(`Project created
|
|
132
|
+
${Pi(r)}`)})}function hg(e,t){v(e.command("delete").description("Delete a project by id.")).requiredOption("--id <id>","Project id to delete.").action(async function(o){const a=Y(this,t),r=o.id.trim();if(await a.api.deleteProject(r),a.outputJson){a.io.stdout(S({projectId:r,deleted:!0}));return}a.io.stdout(`Project deleted
|
|
133
|
+
projectId ${r}
|
|
134
|
+
`)})}function gg(e,t){v(e.command("list").description("List projects from the aggregation endpoint.")).action(async function(){const o=Y(this,t),a=_i((await o.api.listProjects()).projects);if(o.outputJson){o.io.stdout(S(a));return}o.io.stdout(dg(a.projects))})}function ee(e){const t=e?.trim();return t||void 0}function $i(e){return{key:e.key??"",value:e.value??"",valueKind:e.valueKind??"string"}}function Ag(e){const t=e.isValidGitRepo===!0;return{name:ee(e.name),code:ee(e.code),path:e.path??"",url:ee(e.url),displayName:ee(e.displayName),type:ee(e.type),icon:ee(e.icon),optional:e.optional===!0,tags:e.tags??[],metadata:(e.metadata??[]).map($i),isValidGitRepo:t,branch:t?ee(e.branch):void 0,hasUncommittedChanges:e.hasUncommittedChanges===!0,unpushedCommitCount:e.unpushedCommitCount??0,hasTrackingBranch:e.hasTrackingBranch===!0,trackingBranch:ee(e.trackingBranch),aheadCount:e.aheadCount??0,behindCount:e.behindCount??0,syncState:t?ee(e.syncState):void 0}}function qi(e){return{version:ee(e.version)??"",repoDirectory:ee(e.repoDirectory)??"",configPath:ee(e.configPath)??"",commitWhenArchive:e.commitWhenArchive===!0,yamlPreview:e.yamlPreview??"",metadata:(e.metadata??[]).map($i),repositories:(e.repositories??[]).map(Ag)}}function pg(e){return e.isValidGitRepo?[e.branch??"no branch",e.syncState,e.hasUncommittedChanges?"uncommitted changes":void 0].filter(Boolean).join(", "):"missing or not a Git repository"}function es(e,t={}){return`${O([["version",e.version],["repoDirectory",e.repoDirectory],["configPath",e.configPath],["commitWhenArchive",String(e.commitWhenArchive)]])}
|
|
135
|
+
${e.repositories.length===0?`This document lists no repositories.
|
|
136
|
+
`:`${te([{header:"Path",value:n=>n.path},{header:"Name",value:n=>n.name??""},{header:"Type",value:n=>n.type??""},{header:"URL",value:n=>n.url??""},{header:"Local state",value:n=>pg(n)}],e.repositories)}
|
|
137
|
+
`}${t.yaml?`
|
|
138
|
+
YAML
|
|
139
|
+
${e.yamlPreview}${e.yamlPreview.endsWith(`
|
|
140
|
+
`)?"":`
|
|
141
|
+
`}`:""}`}function ts(e){return{results:(e??[]).map(t=>({path:t.path??"",status:t.status??"",message:ee(t.message)}))}}function ns(e){return e.results.length===0?`No repositories were selected for cloning.
|
|
142
|
+
`:`${te([{header:"Path",value:t=>t.path},{header:"Status",value:t=>t.status},{header:"Message",value:t=>t.message??""}],e.results)}
|
|
143
|
+
`}function Zg(e){return{isValid:e.isValid===!0,config:e.config?{version:ee(e.config.version),repoDirectory:ee(e.config.repoDirectory)}:null,warnings:e.warnings??[],errors:e.errors??[]}}function fg(e){const t=e.isValid?"MonoSpecs configuration is valid.":"MonoSpecs configuration is invalid.",n=O([["version",e.config?.version],["repoDirectory",e.config?.repoDirectory]]),o=e.warnings.map(r=>` - ${r}
|
|
144
|
+
`).join(""),a=e.errors.map(r=>` - ${r}
|
|
145
|
+
`).join("");return[t,n.trimEnd(),e.warnings.length>0?`Warnings:
|
|
146
|
+
${o}`.trimEnd():"",e.errors.length>0?`Errors:
|
|
147
|
+
${a}`.trimEnd():""].filter(Boolean).join(`
|
|
148
|
+
`)+`
|
|
149
|
+
`}function Rg(e){return{path:e.path??"",removed:e.removed===!0,message:ee(e.message)}}function Vg(e){const t=e.removed?`Removed checkout ${e.path}`:`Checkout ${e.path} was not removed`;return`${e.message?`${t}
|
|
150
|
+
${e.message}`:t}
|
|
151
|
+
`}function Yo(e,t,n={}){const o=qi(t);if(e.outputJson){e.io.stdout(S(o));return}const a=n.heading?`${n.heading}
|
|
152
|
+
`:"";e.io.stdout(`${a}${es(o,{yaml:n.yaml})}`)}function wn(e,t){return[...t,e]}function Pe(e){const t=e.trim().replace(/\\/g,"/").replace(/^(\.\/)+/,"").replace(/\/+$/,"");if(!t||t===".")throw new W(`Repository path must name a directory below the project root: "${e}".`);return t}function Eg(e,t){v(e.command("clone").description("Clone the configured repositories that are missing on the backend host. Exits with code 30 when any clone fails.")).requiredOption("--id <id>","Project id.").option("--path <path>","Configured repository path to clone. Repeatable; omit to clone every missing repository.",wn,[]).option("--include-optional","Also clone optional repositories when no --path is given.").action(async function(o){const a=o.path.map(Pe),r=Y(this,t),i=w(o.id,"--id"),s=o.includeOptional===!0,l=ts((await r.api.cloneMonoSpecsRepositories(i,a.length>0?{paths:a,includeOptional:s}:{includeOptional:s})).results);r.outputJson?r.io.stdout(S(l)):r.io.stdout(ns(l));const c=l.results.filter(u=>u.status==="failed");if(c.length>0)throw new st(`${c.length} repository clone(s) failed. See the results above.`)})}function Gg(e,t){v(e.command("init").description("Initialize the MonoSpecs configuration of a project. An initialized project returns its existing document.")).requiredOption("--id <id>","Project id.").action(async function(o){const a=Y(this,t);Yo(a,await a.api.initializeMonoSpecsManagement(w(o.id,"--id")),{heading:"MonoSpecs configuration initialized."})})}function Ng(e,t){v(e.command("reload").description("Reread monospecs.yaml on the backend host and refresh the local Git state of its repositories.")).requiredOption("--id <id>","Project id.").action(async function(o){const a=Y(this,t);Yo(a,await a.api.reloadMonoSpecsManagement(w(o.id,"--id")),{heading:"MonoSpecs configuration reloaded."})})}function Wg(e,t){v(e.command("remove-checkout").description("Delete the local checkout of one configured repository on the backend host. monospecs.yaml is not changed.")).requiredOption("--id <id>","Project id.").requiredOption("--path <path>","Configured repository path whose local checkout to delete.").option("--force","Delete the checkout even with uncommitted changes, unpushed commits or no upstream branch.").action(async function(o){const a=Y(this,t),r=w(o.id,"--id"),i=Pe(w(o.path,"--path")),s=o.force===!0;let l;try{l=await a.api.removeMonoSpecsRepositoryCheckout(r,i,s)}catch(u){const h=Ei(u);throw h.status===409&&!s&&/force/i.test(h.message)?new He(409,`${h.message}
|
|
153
|
+
Re-run with --force to delete this checkout anyway.`,h.details):u}const c=Rg(l);a.outputJson?a.io.stdout(S(c)):a.io.stdout(Vg(c))})}var Sg="--version, --repo-directory, --commit-when-archive, --add-repository, --remove-repository";function vg(e){return{name:e.name,code:e.code,path:e.path,url:e.url,displayName:e.displayName,type:e.type,icon:e.icon,optional:e.optional,tags:e.tags,metadata:e.metadata}}function Yg(e){return e.split("/").at(-1)??e}function fn(e,t,n){const o=qi(t),a=n?ts(n.results):void 0;if(e.outputJson){e.io.stdout(S(a?{...o,clone:a}:o));return}e.io.stdout(`MonoSpecs configuration saved.
|
|
154
|
+
${es(o)}`),a&&e.io.stdout(`
|
|
155
|
+
Clone results
|
|
156
|
+
${ns(a)}`)}function Ig(e,t){v(e.command("set").description("Change the MonoSpecs metadata or repositories. Reads the document, applies the given options and saves it.")).requiredOption("--id <id>","Project id.").option("--version <value>","MonoSpecs configuration version.").option("--repo-directory <dir>","Repository directory relative to the project root.").option("--commit-when-archive <true|false>","Whether archiving commits the MonoSpecs changes.").option("--add-repository <path>","Configured repository path to add. Repeatable.",wn,[]).option("--remove-repository <path>","Configured repository path to remove. Repeatable.",wn,[]).option("--url <url>","Clone URL of the single added repository.").option("--name <name>","Name of the single added repository. Defaults to the last path segment.").option("--display-name <name>","Display name of the single added repository.").option("--type <type>","Type of the single added repository.").option("--clone","Clone the added repositories after saving. Requires at least one --add-repository.").action(async function(o){const a=o.addRepository.map(Pe),r=o.removeRepository.map(Pe);if(!(o.version!==void 0||o.repoDirectory!==void 0||o.commitWhenArchive!==void 0)&&a.length===0&&r.length===0)throw new W(`Provide at least one change: ${Sg}.`);if(o.clone&&a.length===0)throw new W("--clone requires at least one --add-repository.");const i=[o.url!==void 0?"--url":void 0,o.name!==void 0?"--name":void 0,o.displayName!==void 0?"--display-name":void 0,o.type!==void 0?"--type":void 0].filter(Boolean);if(i.length>0&&a.length!==1)throw new W(`${i.join(", ")} apply to a single --add-repository only.`);let s;if(o.commitWhenArchive!==void 0){if(o.commitWhenArchive!=="true"&&o.commitWhenArchive!=="false")throw new W("--commit-when-archive must be true or false.");s=o.commitWhenArchive==="true"}const l=Y(this,t),c=w(o.id,"--id"),u=await l.api.getMonoSpecsManagement(c),h=(u.repositories??[]).map(vg);for(const G of r){const I=h.findIndex(k=>Pe(k.path??"")===G);if(I<0)throw new W(`Repository path ${G} is not configured, so it cannot be removed.`);h.splice(I,1)}for(const G of a){if(h.some(I=>Pe(I.path??"")===G))throw new W(`Repository path ${G} is already configured.`);h.push({name:o.name??Yg(G),code:null,path:G,url:o.url??null,displayName:o.displayName??null,type:o.type??null,icon:null,optional:!1,tags:[],metadata:[]})}const f=await l.api.saveMonoSpecsManagement(c,{version:o.version??u.version,repoDirectory:o.repoDirectory??u.repoDirectory,commitWhenArchive:s??u.commitWhenArchive,repositories:h,metadata:u.metadata??[]});if(!o.clone){fn(l,f);return}let Z;try{Z=(await l.api.cloneMonoSpecsRepositories(c,{paths:a,includeOptional:!1})).results??[]}catch(G){throw fn(l,f),G}fn(l,f,{results:Z});const E=Z.filter(G=>G.status==="failed");if(E.length>0)throw new st(`The configuration was saved, but ${E.length} repository clone(s) failed. See the clone results above.`)})}function Xg(e,t){v(e.command("show").description("Show the MonoSpecs management document of a project, with local Git state per repository.")).requiredOption("--id <id>","Project id.").option("--yaml","Also print the YAML preview in human-readable mode.").action(async function(o){const a=Y(this,t);Yo(a,await a.api.getMonoSpecsManagement(w(o.id,"--id")),{yaml:o.yaml===!0})})}function yg(e,t){v(e.command("validate").description("Validate the MonoSpecs configuration of a project. Exits with code 30 when it is invalid.")).requiredOption("--id <id>","Project id.").action(async function(o){const a=Y(this,t),r=w(o.id,"--id"),i=((await a.api.listProjects()).projects??[]).find(l=>l.id===r);if(!i?.path)throw new He(404,`Project ${r} was not found in the aggregation snapshot.`);const s=Zg(await a.api.validateMonoSpecs({projectPath:i.path}));if(a.outputJson?a.io.stdout(S(s)):a.io.stdout(fg(s)),!s.isValid)throw new st("MonoSpecs configuration is invalid. See the errors above.")})}function Bg(e,t){const n=e.command("monospecs").description("Manage the MonoSpecs configuration and the local repository checkouts of a project.");Xg(n,t),Gg(n,t),Ig(n,t),yg(n,t),Ng(n,t),Eg(n,t),Wg(n,t)}function Cg(e,t){v(e.command("repositories").description("List the repositories of one project from the aggregation snapshot.")).requiredOption("--id <id>","Project id whose repositories to list.").action(async function(o){const a=Y(this,t),r=o.id.trim(),i=((await a.api.listProjects()).projects??[]).find(l=>l.id===r);if(!i)throw new He(404,`Project ${r} was not found in the aggregation snapshot.`);const s=ug(i);if(a.outputJson){a.io.stdout(S(s));return}a.io.stdout(mg(s))})}function Fg(e,t){v(e.command("update").description("Update a project by merging provided fields into the aggregation snapshot.")).requiredOption("--id <id>","Project id to update.").option("--name <name>","Updated project name.").option("--path <path>","Updated project path.").option("--description <text>","Updated project description.").option("--clear-description","Clear the stored description.").action(async function(o){if(!o.name&&!o.path&&!o.description&&!o.clearDescription)throw new W("Provide at least one field to update: --name, --path, --description, or --clear-description.");if(o.description&&o.clearDescription)throw new W("Use either --description or --clear-description, not both.");const a=Y(this,t),r=o.id.trim(),i=_i((await a.api.listProjects()).projects).projects.find(l=>l.id===r);if(!i)throw new He(404,`Project ${r} was not found in the aggregation snapshot.`);const s=vo(await a.api.updateProject(r,{name:F(o.name)??i.name,path:F(o.path)??i.path,description:o.clearDescription?null:F(o.description)??i.description??null}));if(a.outputJson){a.io.stdout(S({project:s}));return}a.io.stdout(`Project updated
|
|
157
|
+
${Pi(s)}`)})}function wg(e,t){const n=e.command("project").description("Manage Hagi projects through generated project and aggregation APIs.");gg(n,t),Cg(n,t),bg(n,t),Fg(n,t),hg(n,t),Bg(n,t)}function kg(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new W("Annotation input must be a JSON object.");const n=t;if(!Array.isArray(n.files))throw new W("Annotation input must include a files array.");const o=typeof n.totalAnnotations=="number"?n.totalAnnotations:n.files.length,a=typeof n.submittedAt=="string"&&n.submittedAt.trim()?n.submittedAt:new Date().toISOString();return{...n,sessionId:e,totalAnnotations:o,submittedAt:a,files:n.files}}function Ug(e,t){v(e.command("annotate").description("Submit proposal annotations from structured JSON input.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=kg(r,await rn(o.input)),s=await a.api.submitAnnotations(r,i);if(a.outputJson){a.io.stdout(S({sessionId:r,message:s.message,annotationCount:s.annotationCount??i.totalAnnotations,fileCount:s.fileCount??i.files.length}));return}a.io.stdout(`Proposal annotations submitted
|
|
158
|
+
sessionId ${r}
|
|
159
|
+
message ${s.message}
|
|
160
|
+
annotationCount ${s.annotationCount??i.totalAnnotations}
|
|
161
|
+
fileCount ${s.fileCount??i.files.length}
|
|
162
|
+
`)})}function Jg(e,t){v(e.command("archive").description("Archive a proposal session through the explicit archive endpoint.")).requiredOption("--session-id <id>","Proposal session id to archive.").option("--hero-id <id>","Optional hero override for archiving.").action(async function(o){const a=Y(this,t),r=pe(await a.api.archiveProposal(o.sessionId.trim(),{heroId:F(o.heroId)}));if(a.outputJson){a.io.stdout(S({session:r}));return}a.io.stdout(`Proposal archive started
|
|
163
|
+
${ve(r)}`)})}function xg(e,t){v(e.command("complete").description("Mark a proposal session as completed through the dedicated completion endpoint.")).requiredOption("--session-id <id>","Proposal session id to complete.").action(async function(o){const a=Y(this,t),r=pe(await a.api.completeProposal(o.sessionId.trim()));if(a.outputJson){a.io.stdout(S({session:r}));return}a.io.stdout(`Proposal completed
|
|
164
|
+
${ve(r)}`)})}function Kg(e){return pe(e)}function zg(e){return Ji(e)}function Lg(e){return xi("Proposal sessions",e)}function jg(e,t=[]){return ve(e,t)}var os="New Proposal";function Hg(e){const t=F(e.title);if(t)return t;if(e.defaultTitle)return os;throw new W("Provide --title or pass --default-title to use the placeholder proposal title.")}function Tg(e,t){Ki(v(e.command("create").description("Create a proposal session only. This command does not trigger later lifecycle APIs.")).requiredOption("--project-id <id>","Project id that owns the new proposal session.").requiredOption("--chief-complaint <text>","Proposal chief complaint to store on the new session.").option("--original-chief-complaint <text>","Optional raw chief complaint text to keep alongside the stitched content.").option("--title <title>","Explicit proposal session title.").option("--default-title",`Mark the title as the placeholder title (${os}).`).option("--enable-independent-workspace","Request an independent workspace for the proposal session.").option("--base-branch <branch>","Optional base branch for the independent workspace."),"proposal create",'--project-id <id> --chief-complaint "<text>" --default-title').action(async function(o){const a=Y(this,t),r=Hg(o),i=zi({entries:o.metadata,jsonSources:o.metadataJson}),s=Kg(await a.api.createProposalSession({title:r,chiefComplaint:o.chiefComplaint.trim(),originalChiefComplaint:F(o.originalChiefComplaint),type:Eo.PROPOSAL,projectId:o.projectId.trim(),enableIndependentWorkspace:o.enableIndependentWorkspace?!0:void 0,baseBranch:F(o.baseBranch),isDefaultTitle:!!o.defaultTitle,...i?{metadata:i}:{}})),l=`hagi proposal optimize-description --session-id ${s.sessionId} --description "<description>"`;if(a.outputJson){a.io.stdout(S({session:s,nextCommand:l}));return}a.io.stdout(`Proposal session created
|
|
165
|
+
${jg(s,[["next",l]])}`)})}function Qg(e,t){v(e.command("execute").description("Start proposal execution only. This command maps to the execute-proposal backend action.")).requiredOption("--session-id <id>","Proposal session id to execute.").option("--hero-id <id>","Optional hero override for the execute stage.").action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=F(o.heroId),s=await a.api.executeProposal(r,{heroId:i});if(a.outputJson){a.io.stdout(S({sessionId:r,message:s.message,requested:{heroId:i}}));return}a.io.stdout(`Proposal execution started
|
|
166
|
+
sessionId ${r}
|
|
167
|
+
message ${s.message}
|
|
168
|
+
`)})}var kn=["zh-CN","zh-Hant","en-US","ja-JP","ko-KR","de-DE","fr-FR","es-ES","pt-BR","ru-RU"];function Mg(e){if(e.enableExploreMode&&e.disableExploreMode)throw new W("Use either --enable-explore-mode or --disable-explore-mode, not both.");if(e.enableExploreMode)return!0;if(e.disableExploreMode)return!1}function Og(e){const t=e.trim();if(!kn.includes(t))throw new W(`--proposal-content-language must be one of: ${kn.join(", ")}.`);return t}function Dg(e,t){v(e.command("generate").description("Start proposal generation only. This command does not execute the proposal.")).requiredOption("--session-id <id>","Proposal session id to generate.").requiredOption("--proposal-content-language <language>",`Language of the generated proposal content (${kn.join(", ")}).`).option("--enable-explore-mode","Explicitly enable explore mode for proposal generation.").option("--disable-explore-mode","Explicitly disable explore mode for proposal generation.").option("--hero-id <id>","Optional hero override for the generate stage.").action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=Mg(o),s=Og(o.proposalContentLanguage),l=await a.api.generateProposal(r,{enableExploreMode:i,heroId:F(o.heroId),proposalContentLanguage:s}),c=`hagi proposal execute --session-id ${r}`;if(a.outputJson){a.io.stdout(S({sessionId:r,message:l.message,requested:{enableExploreMode:i,heroId:F(o.heroId),proposalContentLanguage:s},nextCommand:c}));return}a.io.stdout(`Proposal generation started
|
|
169
|
+
sessionId ${r}
|
|
170
|
+
message ${l.message}
|
|
171
|
+
next Wait for the session to reach Reviewing, then run ${c}
|
|
172
|
+
`)})}function _g(e,t){Li(e,t,{description:"Read one proposal session by id. With --wait, poll until its status settles, so a stage can be followed without guessing.",label:"proposal session"})}function Pg(e,t){ji(e,t,{description:"Read a proposal session's messages, newest first. Use --last 1 to read the final message of a run."})}function $g(e,t){v(e.command("list").description("List proposal sessions from the backend Sessions API.")).option("--project-id <id>","Filter proposal sessions by a single project id.").option("--project-ids <ids...>","Filter proposal sessions by multiple project ids.").option("--active-only","Only return non-archived proposal sessions.").option("--include-archived","Include archived proposal sessions in the result set.").action(async function(o){if(o.projectId&&o.projectIds?.length)throw new W("Use either --project-id or --project-ids, not both.");const a=Y(this,t),r=zg(await a.api.listSessions({type:Eo.PROPOSAL,projectId:F(o.projectId),projectIds:o.projectIds?.map(F).filter(Boolean),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(Lg(r.sessions))})}function qg(e,t){const n=t.summary,o=t.result,a=o?.validation?.isValid===!0,r=n?.appliedTitle||o?.optimizedTitle||"",i=n?.appliedProposalName||o?.optimizedProposalName||"",s=o?.validation?.diagnostics??[],l=[a?"Proposal optimized":"Proposal optimization returned diagnostics",`sessionId ${e}`,`title ${r}`,`proposalName ${i}`,`valid ${a?"yes":"no"}`];for(const c of s)l.push(`diagnostic ${c.code??"UNKNOWN"}: ${c.message??""}`.trimEnd());return a&&l.push(`next hagi proposal generate --session-id ${e}`),`${l.join(`
|
|
173
|
+
`)}
|
|
174
|
+
`}function eA(e,t){v(e.command("optimize-description").description("Optimize the proposal description, title, and name in one backend step.")).requiredOption("--session-id <id>","Proposal session id to optimize.").requiredOption("--description <text>","Description text to optimize.").option("--title <title>","Current title snapshot. The session title is used when omitted.").option("--default-title","Treat the current title as the placeholder title.").option("--optimization-direction <text>","Optional optimization direction for AI guidance.").option("--original-chief-complaint <text>","Optional original chief complaint to keep as context.").action(async function(o){const a=Y(this,t),r=w(o.sessionId,"--session-id"),i=await a.api.optimizeProposal(r,{description:w(o.description,"--description"),title:F(o.title),isDefaultTitle:o.defaultTitle?!0:void 0,optimizationDirection:F(o.optimizationDirection),originalChiefComplaint:F(o.originalChiefComplaint)});if(a.outputJson){a.io.stdout(S({sessionId:r,...i}));return}a.io.stdout(qg(r,i))})}function tA(e,t){v(e.command("send").description("Send a follow-up message to a proposal session.")).requiredOption("--session-id <id>","Proposal session id.").requiredOption("--content <text>","Message content.").addOption(new ge("--mode <mode>","Message mode override.").choices(Object.values(So))).addOption(new ge("--executor-type <type>","Executor override for this message.").choices(Object.values(an))).addOption(Go()).addOption(No()).action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=await Wo({context:a,sessionId:r,content:w(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(a.outputJson){a.io.stdout(S({sessionId:r,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:fo(i.steer)}));return}a.io.stdout(Ro("Proposal message sent",r,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function nA(e,t){v(e.command("status").description("Update proposal session status through read-before-write merging.")).requiredOption("--session-id <id>","Proposal session id.").addOption(new ge("--status <status>","Target session status.").choices(Object.values(Ui)).makeOptionMandatory()).action(async function(o){const a=Y(this,t),r=o.sessionId.trim(),i=await a.api.getSession(r);await a.api.updateSession(r,{title:i.title,description:i.description,status:o.status,metadata:i.metadata});const s=pe({...i,status:o.status});if(a.outputJson){a.io.stdout(S({session:s}));return}a.io.stdout(`Proposal status updated
|
|
175
|
+
${ve(s)}`)})}function oA(e,t){const n=e.command("proposal").description("Manage proposal sessions through backend session APIs: create, generate, execute and archive stages, read one session with get (--wait to follow a stage), and read its messages.");$g(n,t),Tg(n,t),eA(n,t),Dg(n,t),Ug(n,t),Qg(n,t),Jg(n,t),nA(n,t),_g(n,t),Pg(n,t),xg(n,t),tA(n,t)}function ze(e){return e?"yes":"no"}function aA(e){return e&&e.length>0?e.join(", "):"-"}function as(e){return e.origin??"user"}function rs(e){return as(e)==="built-in"}function rA(e){return rs(e)?ze(e.builtIn?.enabled):"-"}function iA(e){return(rs(e)?e.builtIn?.version:e.managedInstallMetadata?.version)??"-"}function sA(e){const t=e.items??[];return t.length===0?`No local skills installed.
|
|
176
|
+
`:`Local skills (${t.length})
|
|
177
|
+
${te([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:as},{header:"Enabled",value:rA},{header:"Version",value:iA},{header:"Scope",value:n=>n.scope??"-"},{header:"Agents",value:n=>aA(n.agents)},{header:"Path",value:n=>n.path??"-"}],t)}
|
|
178
|
+
`}function lA(e){return O([["skillName",e.skillName??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function cA(e){return O([["skillName",e.slug??void 0],["enabled",ze(e.enabled)],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function dA(e){const t=e.items??[];return t.length===0?`No gallery skills found.
|
|
179
|
+
`:`Gallery skills (${t.length})
|
|
180
|
+
${te([{header:"ID",value:n=>n.id??"-"},{header:"Source",value:n=>n.source??"-"},{header:"Installs",value:n=>String(n.installs??0)},{header:"Trusted",value:n=>ze(n.isTrustedSource)}],t)}
|
|
181
|
+
`}function uA(e){return`skills.sh audit (${e.provider}): risk=${e.risk??"--"}, alerts=${e.alerts??"--"}, score=${e.score??"--"}, analyzedAt=${e.analyzedAt??"--"}`}function mA(e,t={providers:[]}){const n=e.trustedProvider;return`${O([["id",e.id??void 0],["source",e.source??void 0],["skillSlug",e.skillSlug??void 0],["installable",ze(e.isInstallable)],["description",e.description??void 0],["repository",e.repositoryFullName??e.repositoryName??void 0],["repositoryUrl",e.repositoryUrl??void 0],["defaultBranch",e.repositoryDefaultBranch??void 0],["trustedSource",ze(e.isTrustedSource)],["trustedProvider",n?`${n.displayName??n.providerId??"-"}`:void 0],["installReference",e.installReference??void 0],["installCommand",e.installCommandPreview??void 0],["installVersion",e.installVersion??void 0],["installHint",e.installHint??void 0]])}${t.providers.map(o=>`${uA(o)}
|
|
182
|
+
`).join("")}`}function bA(e){return O([["installReference",e.installReference??void 0],["normalizedSkillKey",e.normalizedSkillKey??void 0],["version",e.version??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0],["commandPreview",e.commandPreview??void 0]])}function Ft(e){const t=e.items??[];return t.length===0?`No trusted providers (directory version ${e.version??0}).
|
|
183
|
+
`:`Trusted providers (${t.length}, directory version ${e.version??0})
|
|
184
|
+
${te([{header:"Provider ID",value:n=>n.providerId??"-"},{header:"Name",value:n=>n.displayName??"-"},{header:"Enabled",value:n=>ze(n.isEnabled)},{header:"Preset",value:n=>ze(n.isPreset)},{header:"Rules",value:n=>String(n.ruleCount??0)}],t)}
|
|
185
|
+
`}function hA(e,t){const n=e.command("gallery").description("Search the skill gallery, read skill details, and start managed installs.");v(n.command("search").description("Search the skill gallery by keyword.")).option("--query <query>","Keyword to search for. Omit to list the gallery.").action(async function(a){const r=Y(this,t),i=await r.api.searchSkillGallery(F(a.query));if(r.outputJson){r.io.stdout(S(i));return}r.io.stdout(dA(i))}),v(n.command("detail").description("Show one gallery skill with installability, trust, and repository details.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").action(async function(a){const r=Y(this,t),i=w(a.id,"--id"),s=w(a.source,"--source"),[l,c]=await Promise.allSettled([r.api.getSkillGalleryDetail(i,s),r.api.getSkillGalleryAudit(i,s)]);if(l.status==="rejected")throw l.reason;const u=l.value,h={providers:c.status==="fulfilled"?c.value?.providers??[]:[]};if(r.outputJson){r.io.stdout(S({...u,audit:h}));return}r.io.stdout(mA(u,h))}),v(n.command("install").description("Start a managed install of one gallery skill.")).requiredOption("--id <id>","Gallery skill id.").requiredOption("--source <source>","Gallery skill source.").requiredOption("--skill-slug <slug>","Skill slug inside the source repository.").option("--version <version>","Optional version token to install.").action(async function(a){const r=Y(this,t),i=await r.api.installGallerySkill({id:w(a.id,"--id"),source:w(a.source,"--source"),skillSlug:w(a.skillSlug,"--skill-slug"),version:F(a.version)});if(r.outputJson){r.io.stdout(S(i));return}r.io.stdout(bA(i))})}var gA="The change applies to agent runs that start afterwards; a run already in progress keeps its skills.";function er(e,t,n){const o=n?"enable":"disable";v(e.command(o).description(`${n?"Turn on":"Turn off"} one built-in skill by name. ${gA}`)).requiredOption("--skill-name <name>",`Built-in skill name to ${o}.`).action(async function(r){const i=Y(this,t),s=await i.api.setBuiltInSkillAvailability({slug:w(r.skillName,"--skill-name"),enabled:n});if(i.outputJson?i.io.stdout(S(s)):i.io.stdout(cA(s)),!s.succeeded)throw new st(s.userMessage??`The built-in skill availability was not changed for ${s.slug??r.skillName}.`)})}function AA(e,t){const n=e.command("local").description("List, enable or disable built-in skills, and uninstall user-installed local skills.");v(n.command("list").description("List installed local skills with their managed install metadata.")).action(async function(){const a=Y(this,t),r=await a.api.listLocalSkills();if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(sA(r))}),er(n,t,!0),er(n,t,!1),v(n.command("uninstall").description("Uninstall one user-installed local skill by name. Built-in skills cannot be uninstalled; use `skills local disable --skill-name <name>` to stop one from loading.")).requiredOption("--skill-name <name>","Local skill name to uninstall.").action(async function(a){const r=Y(this,t),i=await r.api.uninstallLocalSkill({skillName:w(a.skillName,"--skill-name")});if(r.outputJson){r.io.stdout(S(i));return}r.io.stdout(lA(i))})}async function pA(e,t){const n=await rn(e);if(!n||typeof n!="object"||Array.isArray(n))throw new W(`${t} must be a JSON object.`);return n}function ZA(e,t){const n=e.command("trusted").description("Manage the trusted skill provider directory.");v(n.command("list").description("List trusted skill providers.")).action(async function(){const a=Y(this,t),r=await a.api.listTrustedSkillProviders();if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(Ft(r))}),v(n.command("upsert").description("Create or update a trusted provider from a JSON document.")).requiredOption("--input <file>","JSON file path, or - to read from stdin.").action(async function(a){const r=Y(this,t),i=await pA(w(a.input,"--input"),"Trusted provider input"),s=await r.api.upsertTrustedSkillProvider(i);if(r.outputJson){r.io.stdout(S(s));return}r.io.stdout(Ft(s))}),v(n.command("delete").description("Delete one trusted provider by id.")).requiredOption("--provider-id <id>","Trusted provider id to delete.").action(async function(a){const r=Y(this,t),i={providerId:w(a.providerId,"--provider-id")},s=await r.api.deleteTrustedSkillProvider(i);if(r.outputJson){r.io.stdout(S(s));return}r.io.stdout(Ft(s))}),v(n.command("reset").description("Reset trusted providers to the backend defaults.")).action(async function(){const a=Y(this,t),r=await a.api.resetTrustedSkillProviders();if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(Ft(r))})}function fA(e,t){const n=e.command("skills").description("Manage local skills, the skill gallery, and trusted providers.");AA(n,t),hA(n,t),ZA(n,t)}function K(e){const t=e?.trim();return t||void 0}function RA(e){return{severity:K(e.severity)??"",code:K(e.code)??"",message:K(e.message)??"",relativePath:K(e.relativePath)}}function Io(e){return{id:K(e.id)??"",name:K(e.name)??"",type:K(e.type)??"",physicalPath:K(e.physicalPath)??"",gitUrl:K(e.gitUrl),createdAtUtc:K(e.createdAtUtc),updatedAtUtc:K(e.updatedAtUtc),bootstrapDiagnostics:(e.bootstrapDiagnostics??[]).map(RA)}}function is(e){return{generatedAtUtc:K(e.generatedAtUtc),vaults:(e.items??[]).map(Io)}}function VA(e){return e.length===0?`No vaults found.
|
|
186
|
+
`:`Vaults (${e.length})
|
|
187
|
+
${te([{header:"Vault ID",value:t=>t.id},{header:"Type",value:t=>t.type},{header:"Name",value:t=>t.name},{header:"Path",value:t=>t.physicalPath}],e)}
|
|
188
|
+
`}function ss(e,t=[]){return O([["id",e.id],["name",e.name],["type",e.type],["physicalPath",e.physicalPath],["gitUrl",e.gitUrl],["createdAtUtc",e.createdAtUtc],["updatedAtUtc",e.updatedAtUtc],["bootstrapDiagnostics",String(e.bootstrapDiagnostics.length)],...t])}function EA(e){return{relativePath:K(e.relativePath)??"",fileName:K(e.fileName)??"",isDirectory:e.isDirectory===!0,extension:K(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:K(e.lastModifiedUtc),previewSupported:e.previewSupported===!0}}function GA(e){return{vaultId:K(e.id)??"",deleted:e.deleted===!0,deleteLocalFilesRequested:e.deleteLocalFilesRequested===!0,localFilesDeletionStatus:K(e.localFilesDeletionStatus),localFilesDeleted:e.localFilesDeleted===!0}}function NA(e){return`Vault deleted
|
|
189
|
+
${O([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function WA(e){return{vaultId:K(e.vaultId)??"",vaultName:K(e.vaultName)??"",physicalPath:K(e.physicalPath)??"",status:K(e.status)??"",errorCode:K(e.errorCode),message:K(e.message),isTruncated:e.isTruncated===!0,totalFileCount:typeof e.totalFileCount=="number"?e.totalFileCount:0,items:(e.items??[]).map(EA)}}function SA(e){const t=O([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["status",e.status],["errorCode",e.errorCode],["message",e.message],["isTruncated",String(e.isTruncated)],["totalFileCount",String(e.totalFileCount)]]);return e.items.length===0?`Vault files
|
|
190
|
+
${t}No files found.
|
|
191
|
+
`:`Vault files
|
|
192
|
+
${t}${te([{header:"Relative Path",value:n=>n.relativePath},{header:"Directory",value:n=>n.isDirectory?"yes":"no"},{header:"Extension",value:n=>n.extension},{header:"Size",value:n=>String(n.sizeBytes)},{header:"Preview",value:n=>n.previewSupported?"yes":"no"}],e.items)}
|
|
193
|
+
`}function vA(e){return{vaultId:K(e.vaultId)??"",vaultName:K(e.vaultName)??"",physicalPath:K(e.physicalPath)??"",relativePath:K(e.relativePath)??"",fileName:K(e.fileName)??"",extension:K(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:K(e.lastModifiedUtc),status:K(e.status)??"",errorCode:K(e.errorCode),message:K(e.message),previewSupported:e.previewSupported===!0,contentTruncated:e.contentTruncated===!0,content:K(e.content)}}function YA(e){const t=O([["vaultId",e.vaultId],["vaultName",e.vaultName],["physicalPath",e.physicalPath],["relativePath",e.relativePath],["fileName",e.fileName],["extension",e.extension],["sizeBytes",String(e.sizeBytes)],["lastModifiedUtc",e.lastModifiedUtc],["status",e.status],["errorCode",e.errorCode],["message",e.message],["previewSupported",String(e.previewSupported)],["contentTruncated",String(e.contentTruncated)]]);if(!e.content)return`Vault file preview
|
|
194
|
+
${t}`;const n=e.content.endsWith(`
|
|
195
|
+
`)?"":`
|
|
196
|
+
`;return`Vault file preview
|
|
197
|
+
${t}content
|
|
198
|
+
-------
|
|
199
|
+
${e.content}${n}`}function IA(e,t){v(e.command("create").description("Create a vault through the generated vault client.")).requiredOption("--name <name>","Vault display name.").requiredOption("--type <type>","Vault type, such as folder, obsidian, or coderef.").requiredOption("--physical-path <path>","Vault physical path.").option("--git-url <url>","Optional git remote URL for git-backed vaults.").action(async function(o){const a=Y(this,t),r=Io(await a.api.createVault({name:w(o.name,"--name"),type:w(o.type,"--type"),physicalPath:w(o.physicalPath,"--physical-path"),gitUrl:F(o.gitUrl)}));if(a.outputJson){a.io.stdout(S({vault:r}));return}a.io.stdout(`Vault created
|
|
200
|
+
${ss(r)}`)})}function XA(e,t){v(e.command("delete").description("Delete a vault by id and optionally request local file cleanup.")).requiredOption("--id <id>","Vault id to delete.").option("--delete-local-files","Request backend deletion of local vault files.").action(async function(o){const a=Y(this,t),r=GA(await a.api.deleteVault(w(o.id,"--id"),o.deleteLocalFiles===!0));if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(NA(r))})}function yA(e,t){v(e.command("list").description("List files under a registered vault path.")).requiredOption("--id <id>","Vault id to browse.").option("--path <path>","Optional relative path under the vault root.").action(async function(o){const a=Y(this,t),r=WA(await a.api.listVaultFiles(w(o.id,"--id"),F(o.path)));if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(SA(r))})}function BA(e,t){v(e.command("preview").description("Preview supported file content from a registered vault.")).requiredOption("--id <id>","Vault id to browse.").requiredOption("--path <path>","Relative file path to preview.").action(async function(o){const a=Y(this,t),r=vA(await a.api.previewVaultFile(w(o.id,"--id"),w(o.path,"--path")));if(a.outputJson){a.io.stdout(S(r));return}a.io.stdout(YA(r))})}function CA(e,t){v(e.command("list").description("List registered vaults through the generated vault client.")).action(async function(){const o=Y(this,t),a=is(await o.api.listVaults());if(o.outputJson){o.io.stdout(S(a));return}o.io.stdout(VA(a.vaults))})}function FA(e,t){v(e.command("update").description("Update a vault by merging provided fields into the current vault snapshot.")).requiredOption("--id <id>","Vault id to update.").option("--name <name>","Updated vault display name.").option("--type <type>","Updated vault type.").option("--physical-path <path>","Updated vault physical path.").option("--git-url <url>","Updated git remote URL.").action(async function(o){const a=F(o.name),r=F(o.type),i=F(o.physicalPath),s=F(o.gitUrl);if(!a&&!r&&!i&&!s)throw new W("Provide at least one field to update: --name, --type, --physical-path, or --git-url.");const l=Y(this,t),c=w(o.id,"--id"),u=is(await l.api.listVaults()).vaults.find(f=>f.id===c);if(!u)throw new He(404,`Vault ${c} was not found in the latest vault snapshot.`);const h=Io(await l.api.updateVault(c,{name:a??u.name,type:r??u.type,physicalPath:i??u.physicalPath,gitUrl:s??u.gitUrl??null}));if(l.outputJson){l.io.stdout(S({vault:h}));return}l.io.stdout(`Vault updated
|
|
201
|
+
${ss(h)}`)})}function wA(e,t){const n=e.command("vault").description("Manage Hagi vaults and vault file browsing through generated backend APIs.");CA(n,t),IA(n,t),FA(n,t),XA(n,t);const o=n.command("files").description("Browse registered vault files and preview supported content.");yA(o,t),BA(o,t)}function kA(e){return e.includes("--json")}function ls(e=Fi(),t=!1){const n=new Gs;return n.name("hagi").description("HagiCode CLI for project, proposal, vault, chat, HagiTask, and scheduled plan management, plus agent-facing capabilities.").showHelpAfterError().exitOverride(),n.configureOutput({writeOut:o=>{e.io.stdout(o)},writeErr:o=>{t||e.io.stderr(o)},getOutHelpWidth:()=>100,getErrHelpWidth:()=>100}),Xb(n),wg(n,e),oA(n,e),wA(n,e),Eh(n,e),Qh(n,e),cg(n,e),fA(n,e),Pb(n,e),n}function UA(e,t,n){return e.exitCode===0||e.code==="commander.helpDisplayed"||e.code==="commander.version"?0:(n&&t.io.stderr(Gi({exitCode:_.USAGE,message:e.message},{json:!0})),_.USAGE)}async function JA(e=process.argv,t=Fi()){const n=kA(e),o=ls(t,n);try{return await o.parseAsync([...e]),0}catch(a){if(a instanceof Es)return UA(a,t,n);const r=Ei(a,{baseUrl:hu()});return a instanceof Ke&&a.reported||t.io.stderr(Gi(r,{json:n})),r.exitCode}}Object.defineProperty(exports,"EXIT_CODES",{enumerable:!0,get:function(){return _}});Object.defineProperty(exports,"createCliApp",{enumerable:!0,get:function(){return ls}});Object.defineProperty(exports,"runCli",{enumerable:!0,get:function(){return JA}});
|