@hagicode/cli 0.6.0 → 0.7.0

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.
@@ -0,0 +1,266 @@
1
+ var Ol=Object.create,ui=Object.defineProperty,Dl=Object.getOwnPropertyDescriptor,_l=Object.getOwnPropertyNames,$l=Object.getPrototypeOf,Pl=Object.prototype.hasOwnProperty,ot=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ql=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(var r=_l(t),a=0,i=r.length,s;a<i;a++)s=r[a],!Pl.call(e,s)&&s!==n&&ui(e,s,{get:(l=>t[l]).bind(null,s),enumerable:!(o=Dl(t,s))||o.enumerable});return e},rt=(e,t,n)=>(n=e!=null?Ol($l(e)):{},ql(t||!e||!e.__esModule?ui(n,"default",{value:e,enumerable:!0}):n,e));let E=require("node:path");E=rt(E);let Y=require("node:fs");Y=rt(Y);let ec=require("node:os"),pt=require("node:zlib");pt=rt(pt);let Zn=require("node:util"),eo=require("node:http");eo=rt(eo);let to=require("node:https");to=rt(to);let Re=require("node:http2");Re=rt(Re);let tc=require("node:fs/promises"),je=require("node:crypto"),mi=require("node:url");var Rn=ot((e=>{var t=class extends Error{constructor(o,r,a){super(a),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,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})),So=ot((e=>{var{InvalidArgumentError:t}=Rn(),n=class{constructor(r,a){switch(this.description=a||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,r[0]){case"<":this.required=!0,this._name=r.slice(1,-1);break;case"[":this.required=!1,this._name=r.slice(1,-1);break;default:this.required=!0,this._name=r;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(r,a){return a===this.defaultValue||!Array.isArray(a)?[r]:(a.push(r),a)}default(r,a){return this.defaultValue=r,this.defaultValueDescription=a,this}argParser(r){return this.parseArg=r,this}choices(r){return this.argChoices=r.slice(),this.parseArg=(a,i)=>{if(!this.argChoices.includes(a))throw new t(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(a,i):a},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function o(r){const a=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+a+">":"["+a+"]"}e.Argument=n,e.humanReadableArgName=o})),hi=ot((e=>{var{humanReadableArgName:t}=So(),n=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(r){this.helpWidth=this.helpWidth??r.helpWidth??80}visibleCommands(r){const a=r.commands.filter(s=>!s._hidden),i=r._getHelpCommand();return i&&!i._hidden&&a.push(i),this.sortSubcommands&&a.sort((s,l)=>s.name().localeCompare(l.name())),a}compareOptions(r,a){const i=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return i(r).localeCompare(i(a))}visibleOptions(r){const a=r.options.filter(s=>!s.hidden),i=r._getHelpOption();if(i&&!i.hidden){const s=i.short&&r._findOption(i.short),l=i.long&&r._findOption(i.long);!s&&!l?a.push(i):i.long&&!l?a.push(r.createOption(i.long,i.description)):i.short&&!s&&a.push(r.createOption(i.short,i.description))}return this.sortOptions&&a.sort(this.compareOptions),a}visibleGlobalOptions(r){if(!this.showGlobalOptions)return[];const a=[];for(let i=r.parent;i;i=i.parent){const s=i.options.filter(l=>!l.hidden);a.push(...s)}return this.sortOptions&&a.sort(this.compareOptions),a}visibleArguments(r){return r._argsDescription&&r.registeredArguments.forEach(a=>{a.description=a.description||r._argsDescription[a.name()]||""}),r.registeredArguments.find(a=>a.description)?r.registeredArguments:[]}subcommandTerm(r){const a=r.registeredArguments.map(i=>t(i)).join(" ");return r._name+(r._aliases[0]?"|"+r._aliases[0]:"")+(r.options.length?" [options]":"")+(a?" "+a:"")}optionTerm(r){return r.flags}argumentTerm(r){return r.name()}longestSubcommandTermLength(r,a){return a.visibleCommands(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleSubcommandTerm(a.subcommandTerm(s)))),0)}longestOptionTermLength(r,a){return a.visibleOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestGlobalOptionTermLength(r,a){return a.visibleGlobalOptions(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleOptionTerm(a.optionTerm(s)))),0)}longestArgumentTermLength(r,a){return a.visibleArguments(r).reduce((i,s)=>Math.max(i,this.displayWidth(a.styleArgumentTerm(a.argumentTerm(s)))),0)}commandUsage(r){let a=r._name;r._aliases[0]&&(a=a+"|"+r._aliases[0]);let i="";for(let s=r.parent;s;s=s.parent)i=s.name()+" "+i;return i+a+" "+r.usage()}commandDescription(r){return r.description()}subcommandDescription(r){return r.summary()||r.description()}optionDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&(r.required||r.optional||r.isBoolean()&&typeof r.defaultValue=="boolean")&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),r.presetArg!==void 0&&r.optional&&a.push(`preset: ${JSON.stringify(r.presetArg)}`),r.envVar!==void 0&&a.push(`env: ${r.envVar}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}argumentDescription(r){const a=[];if(r.argChoices&&a.push(`choices: ${r.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),r.defaultValue!==void 0&&a.push(`default: ${r.defaultValueDescription||JSON.stringify(r.defaultValue)}`),a.length>0){const i=`(${a.join(", ")})`;return r.description?`${r.description} ${i}`:i}return r.description}formatItemList(r,a,i){return a.length===0?[]:[i.styleTitle(r),...a,""]}groupItems(r,a,i){const s=new Map;return r.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[])}),a.forEach(l=>{const c=i(l);s.has(c)||s.set(c,[]),s.get(c).push(l)}),s}formatHelp(r,a){const i=a.padWidth(r,a),s=a.helpWidth??80;function l(f,p){return a.formatItem(f,i,p,a)}let c=[`${a.styleTitle("Usage:")} ${a.styleUsage(a.commandUsage(r))}`,""];const u=a.commandDescription(r);u.length>0&&(c=c.concat([a.boxWrap(a.styleCommandDescription(u),s),""]));const h=a.visibleArguments(r).map(f=>l(a.styleArgumentTerm(a.argumentTerm(f)),a.styleArgumentDescription(a.argumentDescription(f))));if(c=c.concat(this.formatItemList("Arguments:",h,a)),this.groupItems(r.options,a.visibleOptions(r),f=>f.helpGroupHeading??"Options:").forEach((f,p)=>{const R=f.map(V=>l(a.styleOptionTerm(a.optionTerm(V)),a.styleOptionDescription(a.optionDescription(V))));c=c.concat(this.formatItemList(p,R,a))}),a.showGlobalOptions){const f=a.visibleGlobalOptions(r).map(p=>l(a.styleOptionTerm(a.optionTerm(p)),a.styleOptionDescription(a.optionDescription(p))));c=c.concat(this.formatItemList("Global Options:",f,a))}return this.groupItems(r.commands,a.visibleCommands(r),f=>f.helpGroup()||"Commands:").forEach((f,p)=>{const R=f.map(V=>l(a.styleSubcommandTerm(a.subcommandTerm(V)),a.styleSubcommandDescription(a.subcommandDescription(V))));c=c.concat(this.formatItemList(p,R,a))}),c.join(`
2
+ `)}displayWidth(r){return o(r).length}styleTitle(r){return r}styleUsage(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a==="[command]"?this.styleSubcommandText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleCommandText(a)).join(" ")}styleCommandDescription(r){return this.styleDescriptionText(r)}styleOptionDescription(r){return this.styleDescriptionText(r)}styleSubcommandDescription(r){return this.styleDescriptionText(r)}styleArgumentDescription(r){return this.styleDescriptionText(r)}styleDescriptionText(r){return r}styleOptionTerm(r){return this.styleOptionText(r)}styleSubcommandTerm(r){return r.split(" ").map(a=>a==="[options]"?this.styleOptionText(a):a[0]==="["||a[0]==="<"?this.styleArgumentText(a):this.styleSubcommandText(a)).join(" ")}styleArgumentTerm(r){return this.styleArgumentText(r)}styleOptionText(r){return r}styleArgumentText(r){return r}styleSubcommandText(r){return r}styleCommandText(r){return r}padWidth(r,a){return Math.max(a.longestOptionTermLength(r,a),a.longestGlobalOptionTermLength(r,a),a.longestSubcommandTermLength(r,a),a.longestArgumentTermLength(r,a))}preformatted(r){return/\n[^\S\r\n]/.test(r)}formatItem(r,a,i,s){const c=" ".repeat(2);if(!i)return c+r;const u=r.padEnd(a+r.length-s.displayWidth(r)),h=2,f=(this.helpWidth??80)-a-h-2;let p;return f<this.minWidthToWrap||s.preformatted(i)?p=i:p=s.boxWrap(i,f).replace(/\n/g,`
3
+ `+" ".repeat(a+h)),c+u+" ".repeat(h)+p.replace(/\n/g,`
4
+ ${c}`)}boxWrap(r,a){if(a<this.minWidthToWrap)return r;const i=r.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(p=>{const R=this.displayWidth(p);if(f+R<=a){h.push(p),f+=R;return}l.push(h.join(""));const V=p.trimStart();h=[V],f=this.displayWidth(V)}),l.push(h.join(""))}),l.join(`
5
+ `)}};function o(r){return r.replace(/\x1b\[\d*(;\d*)*m/g,"")}e.Help=n,e.stripColor=o})),bi=ot((e=>{var{InvalidArgumentError:t}=Rn(),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=a(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?r(this.name().replace(/^no-/,"")):r(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 r(i){return i.split("-").reduce((s,l)=>s+l[0].toUpperCase()+l.slice(1))}function a(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],p=`option creation failed due to '${f}' in option flags '${i}'`;throw/^-[^-][^-]/.test(f)?new Error(`${p}
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(`${p}
9
+ - too many short flags`):u.test(f)?new Error(`${p}
10
+ - too many long flags`):new Error(`${p}
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})),nc=ot((e=>{var t=3;function n(r,a){if(Math.abs(r.length-a.length)>t)return Math.max(r.length,a.length);const i=[];for(let s=0;s<=r.length;s++)i[s]=[s];for(let s=0;s<=a.length;s++)i[0][s]=s;for(let s=1;s<=a.length;s++)for(let l=1;l<=r.length;l++){let c=1;r[l-1]===a[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&&r[l-1]===a[s-2]&&r[l-2]===a[s-1]&&(i[l][s]=Math.min(i[l][s],i[l-2][s-2]+1))}return i[r.length][a.length]}function o(r,a){if(!a||a.length===0)return"";a=Array.from(new Set(a));const i=r.startsWith("--");i&&(r=r.slice(2),a=a.map(u=>u.slice(2)));let s=[],l=t;const c=.4;return a.forEach(u=>{if(u.length<=1)return;const h=n(r,u),f=Math.max(r.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})),oc=ot((e=>{var t=require("node:events").EventEmitter,n=require("node:child_process"),o=require("node:path"),r=require("node:fs"),a=require("node:process"),{Argument:i,humanReadableArgName:s}=So(),{CommanderError:l}=Rn(),{Help:c,stripColor:u}=hi(),{Option:h,DualOptions:f}=bi(),{suggestSimilar:p}=nc(),R=class gi 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=>a.stdout.write(m),writeErr:m=>a.stderr.write(m),outputError:(m,A)=>A(m),getOutHelpWidth:()=>a.stdout.isTTY?a.stdout.columns:void 0,getErrHelpWidth:()=>a.stderr.isTTY?a.stderr.columns:void 0,getOutHasColors:()=>X()??(a.stdout.isTTY&&a.stdout.hasColors?.()),getErrHasColors:()=>X()??(a.stderr.isTTY&&a.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,Z=A;typeof g=="object"&&g!==null&&(Z=g,g=null),Z=Z||{};const[,G,C]=d.match(/([^ ]+) *(.*)/),K=this.createCommand(G);return g&&(K.description(g),K._executableHandler=!0),Z.isDefault&&(this._defaultCommandName=K._name),K._hidden=!!(Z.noHelp||Z.hidden),K._executableFile=Z.executableFile||null,C&&K.arguments(C),this._registerCommand(K),K.parent=this,K.copyInheritedSettings(this),g?this:K}createCommand(d){return new gi(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 Z=this.createArgument(d,m);return typeof A=="function"?Z.default(g).argParser(A):Z.default(A),this.addArgument(Z),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(/([^ ]+) *(.*)/),Z=m??"display help for command",G=this.createCommand(A);return G.helpOption(!1),g&&G.arguments(g),Z&&G.description(Z),this._addImplicitHelpCommand=!0,this._helpCommand=G,(d||m)&&this._initCommandGroup(G),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)),a.exit(d)}action(d){const m=A=>{const g=this.registeredArguments.length,Z=A.slice(0,g);return this._storeOptionsAsProperties?Z[g]=this:Z[g]=this.opts(),Z.push(this),d.apply(this,Z)};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(Z){if(Z.code==="commander.invalidArgument"){const G=`${g} ${Z.message}`;this.error(G,{exitCode:Z.exitCode,code:Z.code})}throw Z}}_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("|"),Z=m(d).join("|");throw new Error(`cannot add command '${Z}' 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 Z=d.long.replace(/^--no-/,"--");this._findOption(Z)||this.setOptionValueWithSource(A,d.defaultValue===void 0?!0:d.defaultValue,"default")}else d.defaultValue!==void 0&&this.setOptionValueWithSource(A,d.defaultValue,"default");const g=(Z,G,C)=>{Z==null&&d.presetArg!==void 0&&(Z=d.presetArg);const K=this.getOptionValue(A);Z!==null&&d.parseArg?Z=this._callParseArg(d,Z,K,G):Z!==null&&d.variadic&&(Z=d._collectValue(Z,K)),Z==null&&(d.negate?Z=!1:d.isBoolean()||d.optional?Z=!0:Z=""),this.setOptionValueWithSource(A,Z,C)};return this.on("option:"+m,Z=>{g(Z,`error: option '${d.flags}' argument '${Z}' is invalid.`,"cli")}),d.envVar&&this.on("optionEnv:"+m,Z=>{g(Z,`error: option '${d.flags}' value '${Z}' from env '${d.envVar}' is invalid.`,"env")}),this}_optionEx(d,m,A,g,Z){if(typeof m=="object"&&m instanceof h)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");const G=this.createOption(m,A);if(G.makeOptionMandatory(!!d.mandatory),typeof g=="function")G.default(Z).argParser(g);else if(g instanceof RegExp){const C=g;g=(K,O)=>{const w=C.exec(K);return w?w[0]:O},G.default(Z).argParser(g)}else G.default(g);return this.addOption(G)}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){a.versions?.electron&&(m.from="electron");const g=a.execArgv??[];(g.includes("-e")||g.includes("--eval")||g.includes("-p")||g.includes("--print"))&&(m.from="eval")}d===void 0&&(d=a.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":a.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(r.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 Z(w,L){const ee=o.resolve(w,L);if(r.existsSync(ee))return ee;if(g.includes(o.extname(L)))return;const yr=g.find(Ml=>r.existsSync(`${ee}${Ml}`));if(yr)return`${ee}${yr}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let G=d._executableFile||`${this._name}-${d._name}`,C=this._executableDir||"";if(this._scriptPath){let w;try{w=r.realpathSync(this._scriptPath)}catch{w=this._scriptPath}C=o.resolve(o.dirname(w),C)}if(C){let w=Z(C,G);if(!w&&!d._executableFile&&this._scriptPath){const L=o.basename(this._scriptPath,o.extname(this._scriptPath));L!==this._name&&(w=Z(C,`${L}-${d._name}`))}G=w||G}A=g.includes(o.extname(G));let K;a.platform!=="win32"?A?(m.unshift(G),m=V(a.execArgv).concat(m),K=n.spawn(a.argv[0],m,{stdio:"inherit"})):K=n.spawn(G,m,{stdio:"inherit"}):(this._checkForMissingExecutable(G,C,d._name),m.unshift(G),m=V(a.execArgv).concat(m),K=n.spawn(a.execPath,m,{stdio:"inherit"})),K.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(w=>{a.on(w,()=>{K.killed===!1&&K.exitCode===null&&K.kill(w)})});const O=this._exitCallback;K.on("close",w=>{w=w??1,O?O(new l(w,"commander.executeSubCommandAsync","(close)")):a.exit(w)}),K.on("error",w=>{if(w.code==="ENOENT")this._checkForMissingExecutable(G,C,d._name);else if(w.code==="EACCES")throw new Error(`'${G}' not executable`);if(!O)a.exit(1);else{const L=new l(1,"commander.executeSubCommandAsync","(error)");L.nestedError=w,O(L)}}),this.runningCommand=K}_dispatchSubcommand(d,m,A){const g=this._findCommand(d);g||this.help({error:!0}),g._prepareForParse();let Z;return Z=this._chainOrCallSubCommandHook(Z,g,"preSubcommand"),Z=this._chainOrCall(Z,()=>{if(g._executableHandler)this._executeSubCommand(g,m.concat(A));else return g._parseCommand(m,A)}),Z}_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,Z)=>{let G=g;if(g!==null&&A.parseArg){const C=`error: command-argument value '${g}' is invalid for argument '${A.name()}'.`;G=this._callParseArg(A,g,Z,C)}return G};this._checkNumberOfArguments();const m=[];this.registeredArguments.forEach((A,g)=>{let Z=A.defaultValue;A.variadic?g<this.args.length?(Z=this.args.slice(g),A.parseArg&&(Z=Z.reduce((G,C)=>d(A,C,G),A.defaultValue))):Z===void 0&&(Z=[]):g<this.args.length&&(Z=this.args[g],A.parseArg&&(Z=d(A,Z,A.defaultValue))),m[g]=Z}),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(Z=>Z._lifeCycleHooks[m]!==void 0).forEach(Z=>{Z._lifeCycleHooks[m].forEach(G=>{g.push({hookedCommand:Z,callback:G})})}),m==="postAction"&&g.reverse(),g.forEach(Z=>{A=this._chainOrCall(A,()=>Z.callback(Z.hookedCommand,this))}),A}_chainOrCallSubCommandHook(d,m,A){let g=d;return this._lifeCycleHooks[A]!==void 0&&this._lifeCycleHooks[A].forEach(Z=>{g=this._chainOrCall(g,()=>Z(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])},Z=`command:${this.name()}`;if(this._actionHandler){g(),this._processArguments();let G;return G=this._chainOrCallHooks(G,"preAction"),G=this._chainOrCall(G,()=>this._actionHandler(this.processedArgs)),this.parent&&(G=this._chainOrCall(G,()=>{this.parent.emit(Z,d,m)})),G=this._chainOrCallHooks(G,"postAction"),G}if(this.parent?.listenerCount(Z))g(),this._processArguments(),this.parent.emit(Z,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 Z(w){return w.length>1&&w[0]==="-"}const G=w=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(w)?!this._getCommandAndAncestors().some(L=>L.options.map(ee=>ee.short).some(ee=>/^-\d$/.test(ee))):!1;let C=null,K=null,O=0;for(;O<d.length||K;){const w=K??d[O++];if(K=null,w==="--"){g===A&&g.push(w),g.push(...d.slice(O));break}if(C&&(!Z(w)||G(w))){this.emit(`option:${C.name()}`,w);continue}if(C=null,Z(w)){const L=this._findOption(w);if(L){if(L.required){const ee=d[O++];ee===void 0&&this.optionMissingArgument(L),this.emit(`option:${L.name()}`,ee)}else if(L.optional){let ee=null;O<d.length&&(!Z(d[O])||G(d[O]))&&(ee=d[O++]),this.emit(`option:${L.name()}`,ee)}else this.emit(`option:${L.name()}`);C=L.variadic?L:null;continue}}if(w.length>2&&w[0]==="-"&&w[1]!=="-"){const L=this._findOption(`-${w[1]}`);if(L){L.required||L.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${L.name()}`,w.slice(2)):(this.emit(`option:${L.name()}`),K=`-${w.slice(2)}`);continue}}if(/^--[^=]+=/.test(w)){const L=w.indexOf("="),ee=this._findOption(w.slice(0,L));if(ee&&(ee.required||ee.optional)){this.emit(`option:${ee.name()}`,w.slice(L+1));continue}}if(g===m&&Z(w)&&!(this.commands.length===0&&G(w))&&(g=A),(this._enablePositionalOptions||this._passThroughOptions)&&m.length===0&&A.length===0){if(this._findCommand(w)){m.push(w),A.push(...d.slice(O));break}else if(this._getHelpCommand()&&w===this._getHelpCommand().name()){m.push(w,...d.slice(O));break}else if(this._defaultCommandName){A.push(w,...d.slice(O));break}}if(this._passThroughOptions){g.push(w,...d.slice(O));break}g.push(w)}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,Z=A.code||"commander.error";this._exit(g,Z,d)}_parseOptionsEnv(){this.options.forEach(d=>{if(d.envVar&&d.envVar in a.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()}`,a.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=G=>{const C=G.attributeName(),K=this.getOptionValue(C),O=this.options.find(L=>L.negate&&C===L.attributeName()),w=this.options.find(L=>!L.negate&&C===L.attributeName());return O&&(O.presetArg===void 0&&K===!1||O.presetArg!==void 0&&K===O.presetArg)?O:w||G},g=G=>{const C=A(G),K=C.attributeName();return this.getOptionValueSource(K)==="env"?`environment variable '${C.envVar}'`:`option '${C.flags}'`},Z=`error: ${g(d)} cannot be used with ${g(m)}`;this.error(Z,{code:"commander.conflictingOption"})}unknownOption(d){if(this._allowUnknownOption)return;let m="";if(d.startsWith("--")&&this._showSuggestionAfterError){let g=[],Z=this;do{const G=Z.createHelp().visibleOptions(Z).filter(C=>C.long).map(C=>C.long);g=g.concat(G),Z=Z.parent}while(Z&&!Z._enablePositionalOptions);m=p(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(Z=>{g.push(Z.name()),Z.alias()&&g.push(Z.alias())}),m=p(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,Z;return m?(A=C=>this._outputConfiguration.writeErr(C),g=this._outputConfiguration.getErrHasColors(),Z=this._outputConfiguration.getErrHelpWidth()):(A=C=>this._outputConfiguration.writeOut(C),g=this._outputConfiguration.getOutHasColors(),Z=this._outputConfiguration.getOutHelpWidth()),{error:m,write:C=>(g||(C=this._outputConfiguration.stripColor(C)),A(C)),hasColors:g,helpWidth:Z}}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(G=>G.emit("beforeAllHelp",g)),this.emit("beforeHelp",g);let Z=this.helpInformation({error:A.error});if(m&&(Z=m(Z),typeof Z!="string"&&!Buffer.isBuffer(Z)))throw new Error("outputHelp callback must return a string or a Buffer");A.write(Z),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",g),this._getCommandAndAncestors().forEach(G=>G.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(a.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,Z=>{let G;typeof m=="function"?G=m({error:Z.error,command:Z.command}):G=m,G&&Z.write(`${G}
26
+ `)}),this}_outputHelpIfRequested(d){const m=this._getHelpOption();m&&d.find(A=>m.is(A))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function V(J){return J.map(d=>{if(!d.startsWith("--inspect"))return d;let m,A="127.0.0.1",g="9229",Z;return(Z=d.match(/^(--inspect(-brk)?)$/))!==null?m=Z[1]:(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(m=Z[1],/^\d+$/.test(Z[3])?g=Z[3]:A=Z[3]):(Z=d.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(m=Z[1],A=Z[3],g=Z[4]),m&&g!=="0"?`${m}=${A}:${parseInt(g)+1}`:d})}function X(){if(a.env.NO_COLOR||a.env.FORCE_COLOR==="0"||a.env.FORCE_COLOR==="false")return!1;if(a.env.FORCE_COLOR||a.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=R,e.useColor=X})),rc=ot((e=>{var{Argument:t}=So(),{Command:n}=oc(),{CommanderError:o,InvalidArgumentError:r}=Rn(),{Help:a}=hi(),{Option:i}=bi();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=a,e.CommanderError=o,e.InvalidArgumentError=r,e.InvalidOptionArgumentError=r})),ac=rt(rc(),1),{program:BZ,createCommand:wZ,createArgument:FZ,createOption:kZ,CommanderError:ic,InvalidArgumentError:UZ,InvalidOptionArgumentError:JZ,Command:sc,Argument:xZ,Option:Se,Help:KZ}=ac.default;function pi(e){return e.replace(/\s+/g," ").trim()}function ie(e,t){const n=t.map(a=>e.map(i=>pi(i.value(a)))),o=e.map((a,i)=>{const s=n.map(l=>l[i].length);return Math.max(a.header.length,...s)}),r=a=>a.map((i,s)=>i.padEnd(o[s])).join(" ").trimEnd();return[r(e.map(a=>a.header)),r(o.map(a=>"-".repeat(a))),...n.map(r)].join(`
27
+ `)}function q(e){const t=e.filter(([,o])=>o!==void 0&&o!==""),n=Math.max(...t.map(([o])=>o.length));return`${t.map(([o,r])=>`${o.padEnd(n)} ${pi(r??"")}`).join(`
28
+ `)}
29
+ `}function lc(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 mt(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"} ${lc(Math.abs(n))})`}function Dt(e,t){if(!e)return;const n=mt(e.earliestAt,t),o=mt(e.latestAt,t);return n&&o?`between ${n} and ${o}`:n?`from ${n}`:o?`by ${o}`:void 0}function Ai(e){return e.holder?`${e.holder.ownerId}${e.holder.label?` (${e.holder.label})`:""}`:void 0}function Ir(e){return`--lock-id ${e.lockId} --owner ${e.ownerId}`}function At(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 r=[o,q([["Epoch",String(e.epoch)],["Valid until",mt(e.leaseExpiresAt,n)?`${mt(e.leaseExpiresAt,n)} unless a heartbeat renews it`:void 0],["Hard cap",mt(e.maxHoldExpiresAt,n)?`${mt(e.maxHoldExpiresAt,n)}; the lock is taken back then even with heartbeats`:void 0],["Check in",Dt(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 ${Ir(e)} --epoch ${e.epoch}`];return t==="acquire"&&r.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."),`${r.join(`
30
+ `)}
31
+ `}if(e.status==="Queued")return[o,q([["Position",`${e.position} of ${e.queueLength}`],["Held by",Ai(e)],["Check in",Dt(e.checkInWindow,n)],["Your turn",Dt(e.turnWindow,n)?`${Dt(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 ${Ir(e)} --wait`].join(`
32
+ `)+`
33
+ `;if(e.status==="Requisitioned"){const r=e.requisition;return`${o}
34
+ Requisitioned by ${r?.byOwnerId??"another owner"}${r?.at?` at ${r.at}`:""}, reason: ${r?.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 cc(e){const t=Ai(e);return`Lock ${e.lockId}: still queued, position ${e.position} of ${e.queueLength}${t?`, held by ${t}`:""}.
41
+ `}function dc(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 uc(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 mc(e){return e.length===0?`No busy locks.
47
+ `:`Locks (${e.length})
48
+ ${ie([{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 W(e){return`${JSON.stringify(e,null,2)}
50
+ `}var S;(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"})(S||(S={}));function Vo(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 hc(){const e=this.buf;let t=this.pos,n=0,o=0;for(let a=0;a<28;a+=7){const i=e[t++];if(n|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}const r=e[t++];if(n|=(r&15)<<28,o=(r&112)>>4,(r&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}for(let a=3;a<=31;a+=7){const i=e[t++];if(o|=(i&127)<<a,(i&128)==0){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=o;return}}throw new Error("invalid varint")}var sn=4294967296;function Xr(e){const t=e[0]==="-";t&&(e=e.slice(1));const n=1e6;let o=0,r=0;function a(i,s){const l=Number(e.slice(i,s));r*=n,o=o*n+l,o>=sn&&(r=r+(o/sn|0),o=o%sn)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Zi(o,r):Go(o,r)}function bc(e,t){let n=Go(e,t);const o=n.hi&2147483648;o&&(n=Zi(n.lo,n.hi));const r=fi(n.lo,n.hi);return o?"-"+r:r}function fi(e,t){if({lo:e,hi:t}=gc(e,t),t<=2097151)return String(sn*t+e);const n=e&16777215,o=(e>>>24|t<<8)&16777215,r=t>>16&65535;let a=n+o*6777216+r*6710656,i=o+r*8147497,s=r*2;const l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(s+=Math.floor(i/l),i%=l),s.toString()+Yr(i)+Yr(a)}function gc(e,t){return{lo:e>>>0,hi:t>>>0}}function Go(e,t){return{lo:e|0,hi:t|0}}function Zi(e,t){return t=~t,e?e=~e+1:t+=1,Go(e,t)}var Yr=e=>{const t=String(e);return"0000000".slice(t.length)+t};function pc(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 Ac(){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 H=fc();function fc(){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"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>n||i<t)throw new Error(`invalid int64: ${a}`);return i},uParse(a){const i=typeof a=="bigint"?a:BigInt(a);if(i>r||i<o)throw new Error(`invalid uint64: ${a}`);return i},enc(a){return e.setBigInt64(0,this.parse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(a){return e.setBigInt64(0,this.uParse(a),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)},uDec(a,i){return e.setInt32(0,a,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Cr(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Br(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Cr(t),Xr(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Br(t),Xr(t)},dec(t,n){return bc(t,n)},uDec(t,n){return fi(t,n)}}}function Cr(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Br(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function Be(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":H.zero;case b.BYTES:return new Uint8Array(0);default:return 0}}function Zc(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 Ri=2,me=Symbol.for("reflect unsafe local");function Rc(e,t){const n=e[t.localName].case;return n===void 0?n:t.fields.find(o=>o.localName===n)}function Ec(e,t){const n=t.localName;if(t.oneof)return e[t.oneof.localName].case===n;if(t.presence!=Ri)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!Zc(t.scalar,e[n]);case"enum":return e[n]!==t.enum.values[0].number}throw new Error("message field with implicit presence")}function Jt(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0}function Sc(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 Vc(e,t,n){t.oneof?e[t.oneof.localName]={case:t.localName,value:n}:e[t.localName]=n}function fe(e,t,n){t==="__proto__"?Object.defineProperty(e,"__proto__",{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function Gc(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function Nc(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!=Ri)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]=Be(t.scalar,t.longAsString);break}}function Te(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function No(e,t){var n,o,r,a;if(Te(e)&&me 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)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function vo(e,t){var n,o,r,a;if(Te(e)&&me 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)&&((r=i.enum)===null||r===void 0?void 0:r.typeName)===((a=s.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function Wo(e,t){return Te(e)&&me in e&&"desc"in e&&Te(e.desc)&&e.desc.kind==="message"&&(t===void 0||e.desc.typeName==t.typeName)}function vc(e){return Si(e.$typeName)}function at(e){const t=e.fields[0];return Si(e.typeName)&&t!==void 0&&t.fieldKind=="scalar"&&t.name=="value"&&t.number==1}function Ei(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 at(e)}}var Wc=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 Si(e){return Wc.has(e)}var yc=999,Ic=998,Vi=2;function ce(e,t){return Vo(t,e)?t:Gi(e)(t)}var wr=new WeakMap;function Gi(e){let t=wr.get(e);return t===void 0&&(t=Xc(e),wr.set(e,t)),t}var no=0,Ni=1,vi=2,Wi=3;function Xc(e){const t=e.typeName,{properties:n,prototype:o}=Yc(e);return r=>{let a;o!==void 0?(a=Object.create(o),a.$typeName=t):a={$typeName:t};for(let i=0;i<n.length;i++){const s=n[i],l=s.name,c=r?.[l];switch(s.kind){case no:c!=null?a[l]=s.convert!==void 0?s.convert(c):c:s.constant!==void 0&&(a[l]=s.constant);break;case Ni:a[l]=s.convert!==void 0&&Array.isArray(c)?c.map(s.convert):c??[];break;case vi:if(s.convert===void 0||!Te(c))a[l]=c??{};else{const u={},h=Object.keys(c);for(let f=0;f<h.length;f++)fe(u,h[f],s.convert(c[h[f]]));a[l]=u}break;case Wi:{const u=c;if(u?.case!=null){const h=s.convert.get(u.case);if(h!==void 0){a[l]={case:u.case,value:h(u.value)};break}}a[l]={case:void 0};break}}}return a}}function Yc(e){var t,n;const o=[],r={},a=Bc(e);for(const i of e.members){const s=i.localName;if(i.kind=="oneof"){o.push({name:s,kind:Wi,constant:void 0,convert:Cc(i)});continue}switch(i.fieldKind){case"message":o.push({name:s,kind:no,constant:void 0,convert:ln(i)});break;case"list":o.push({name:s,kind:Ni,constant:void 0,convert:i.listKind=="message"?(t=ln(i))!==null&&t!==void 0?t:(l=>l):i.scalar==b.BYTES?kt:void 0});break;case"map":o.push({name:s,kind:vi,constant:void 0,convert:i.mapKind=="message"?(n=ln(i))!==null&&n!==void 0?n:(l=>l):i.scalar==b.BYTES?kt:void 0});break;default:{const l=wc(i);o.push({name:s,kind:no,constant:i.presence==Vi?l:void 0,convert:i.fieldKind=="scalar"&&i.scalar==b.BYTES?kt:void 0}),a&&(r[s]=l);break}}}return{properties:o,prototype:a?r:void 0}}function Cc(e){const t=new Map;for(const n of e.fields){let o;n.fieldKind=="message"?o=ln(n):n.fieldKind=="scalar"&&n.scalar==b.BYTES&&(o=kt),t.set(n.localName,o??(r=>r))}return t}function ln(e){if(e.fieldKind=="message"&&!e.oneof&&at(e.message))return e.message.fields[0].scalar==b.BYTES?kt:void 0;if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return;const t=e.message;let n;return o=>!Te(o)||Vo(o,t)?o:(n!=null||(n=Gi(t)),n(o))}function kt(e){return Array.isArray(e)?new Uint8Array(e):e}function Bc(e){switch(e.file.edition){case yc:return!1;case Ic:return!0;default:return e.fields.some(t=>t.presence!=Vi&&t.fieldKind!="message"&&!t.oneof)}}function wc(e){const t=e.getDefaultValue();return t!==void 0?e.fieldKind=="scalar"&&e.longAsString?t.toString():t:e.fieldKind=="scalar"?Be(e.scalar,e.longAsString):e.enum.values[0].number}var Fc=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],Q=class extends Error{constructor(e,t,n="FieldValueInvalidError"){super(t),this.name=n,this.field=()=>e}};function kc(e){return e instanceof Error&&Fc.includes(e.name)&&"field"in e&&typeof e.field=="function"}var oo;function Uc(e){var t;oo=Object.assign(Object.assign({},e),{encodeUtf8Into:(t=e.encodeUtf8Into)!==null&&t!==void 0?t:yi(e.encodeUtf8.bind(e))})}function yo(){if(!oo){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 r={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&&(r.encodeUtf8Into=t.encodeInto.bind(t));const a=String.prototype.isWellFormed;a&&(r.checkUtf8=i=>a.call(i)),Uc(r)}return oo}function yi(e){return(t,n)=>{const o=e(t);return n.set(o),{written:o.byteLength}}}var _;(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"})(_||(_={}));var Ii=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?yi(e):yo().encodeUtf8Into,this.buffer=Xi,this.viewCache=xc,this.pos=0}ensureCapacity(e){const t=this.pos+e;if(t>this.buffer.length){let n=this.buffer.length||Jc;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(Yt),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-Yt,n=xn(t);return n>Yt&&(this.ensureCapacity(n-Yt),this.buffer.copyWithin(e+n,e+Yt,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(Fr(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(Kn(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<=Yi){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=xn(t),o=this.buffer,r=this.pos,{written:a}=this.encodeUtf8Into(e,o.subarray(r+n)),i=xn(a);return i!=n&&o.copyWithin(r+i,r+n,r+n+a),this.uint32(a),this.pos+=a,this}float(e){return Kc(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 Fr(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return Kn(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return Kn(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){const t=H.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=H.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=H.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){const t=H.enc(e),n=t.hi>>31,o=t.lo<<1^n,r=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(o,r)}uint64(e){const t=H.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 r=e>>>28&15|(t&7)<<4,a=t>>3!=0;if(n[o++]=(a?r|128:r)&255,!a)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}},Jc=128,Yt=1,Xi=new Uint8Array(0),xc=new DataView(Xi.buffer),Yi=32;function xn(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var xt=class{constructor(e,t=yo().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=hc,this.uint32=Ac,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,r=t&7;if(o<=0||r>5)throw new Error("illegal tag: field no "+o+" wire type "+r);return[o,r]}skip(e,t,n=100){let o=this.pos;switch(e){case _.Varint:for(;this.buf[this.pos++]&128;);break;case _.Bit64:this.pos+=4;case _.Bit32:this.pos+=4;break;case _.LengthDelimited:let r=this.uint32();this.pos+=r;break;case _.StartGroup:if(n<=0)throw new Error("maximum recursion depth reached");for(;;){const[a,i]=this.tag();if(i===_.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a,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(),H.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),H.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,H.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 H.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return H.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<=Yi){const o=new Array(n);for(let r=0;r<n;r++){const a=t[r];if(a>127)return this.decodeUtf8(t,e);o[r]=a}return String.fromCharCode.apply(String,o)}return this.decodeUtf8(t,e)}};function Kn(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 Fr(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 Kc(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 Ci(e,t){const n=e.fieldKind=="list"?No(t,e):e.fieldKind=="map"?vo(t,e):Io(e,t);if(n===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${wi(e)}, got ${te(t)}`;break;case"map":o=`expected ${Fi(e)}, got ${te(t)}`;break;default:o=pe(e,t,n)}return new Q(e,o)}function kr(e,t,n){const o=Io(e,n);if(o!==!0)return new Q(e,`list item #${t+1}: ${pe(e,n,o)}`)}function zc(e,t,n){const o=He(e.mapKey)(t);if(o!==!0)return new Q(e,`invalid map key: ${pe({scalar:e.mapKey},t,o)}`);const r=Io(e,n);if(r!==!0)return new Q(e,`map entry ${te(t)}: ${pe(e,n,r)}`)}function Io(e,t){return e.scalar!==void 0?He(e.scalar)(t):e.enum!==void 0?e.enum.open?He(b.INT32)(t):e.enum.values.some(n=>n.number===t):Wo(t,e.message)}function He(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:yo().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 H.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 H.uParse(t),!0}catch{return`${t} out of range`}return!1}}}function pe(e,t,n){return n=typeof n=="string"?`: ${n}`:`, got ${te(t)}`,e.scalar!==void 0?`expected ${Lc(e.scalar)}`+n:e.enum!==void 0?`expected ${e.enum.toString()}`+n:`expected ${Bi(e.message)}`+n}function te(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:No(e)?wi(e.field()):vo(e)?Fi(e.field()):Wo(e)?Bi(e.desc):Vo(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 Bi(e){return`ReflectMessage (${e.typeName})`}function wi(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 Fi(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 Lc(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 jc=0;function Ge(e){if(Tc(e))return{toMessage:n=>Xo(n),toLocal:n=>Yo(n)};if(e.fieldKind=="message"&&!e.oneof&&at(e.message)){const n=e.message,o=n.fields[0].localName;return{toMessage:r=>{const a=ce(n);return r!==void 0&&(a[o]=r),a},toLocal:r=>r[o]}}const t=e.message;return{toMessage:n=>n===void 0?ce(t):n,toLocal:n=>n}}function Tc(e){return e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"}function Xo(e){const t={$typeName:"google.protobuf.Struct",fields:{}};if(Te(e))for(const n of Object.keys(e))fe(t.fields,n,Ui(e[n]));return t}function Yo(e){const t={};for(const n of Object.keys(e.fields))fe(t,n,ki(e.fields[n]));return t}function ki(e){switch(e.kind.case){case"structValue":return Yo(e.kind.value);case"listValue":return e.kind.value.values.map(ki);case"nullValue":case void 0:return null;default:return e.kind.value}}function Ui(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:jc};else if(Array.isArray(e)){const n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(const o of e)n.values.push(Ui(o));t.kind={case:"listValue",value:n}}else t.kind={case:"structValue",value:Xo(e)};break}return t}function Hc(e,t,n=!0){return new Ji(e,t,n)}var Ur=new WeakMap,Ji=class{get sortedFields(){const e=Ur.get(this.desc);if(e)return e;const t=this.desc.fields.concat().sort((n,o)=>n.number-o.number);return Ur.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[me]=t??ce(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 Ct(this.message,e),Rc(this.message,e)}isSet(e){return Ct(this.message,e),Ec(this.message,e)}clear(e){Ct(this.message,e),Nc(this.message,e)}get(e){Ct(this.message,e);const t=Sc(this.message,e);switch(e.fieldKind){case"list":let n=this.lists.get(e);return(!n||n[me]!==t)&&this.lists.set(e,n=new Qc(e,t,this.check)),n;case"map":let o=this.maps.get(e);return(!o||o[me]!==t)&&this.maps.set(e,o=new Mc(e,t,this.check)),o;case"message":return Bo(e,t,this.check);case"scalar":return t===void 0?Be(e.scalar,!1):wo(e,t);case"enum":return t??e.enum.values[0].number}}set(e,t){if(Ct(this.message,e),this.check){const o=Ci(e,t);if(o)throw o}let n;e.fieldKind=="message"?n=Co(e,t):vo(t)||No(t)?n=t[me]:n=Fo(e,t),Vc(this.message,e,n)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Ct(e,t){if(t.parent.typeName!==e.$typeName)throw new Q(t,`cannot use ${t.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var Qc=class{field(){return this._field}get size(){return this._arr.length}constructor(e,t,n){this._field=e,this._arr=this[me]=t,this.check=n}get(e){const t=this._arr[e];return t===void 0?void 0:zn(this._field,t,this.check)}set(e,t){if(e<0||e>=this._arr.length)throw new Q(this._field,`list item #${e+1}: out of range`);if(this.check){const n=kr(this._field,e,t);if(n)throw n}this._arr[e]=Jr(this._field,t)}add(e){if(this.check){const t=kr(this._field,this._arr.length,e);if(t)throw t}this._arr.push(Jr(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 zn(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,zn(this._field,this._arr[e],this.check)]}},Mc=class{constructor(e,t,n=!0){this.obj=this[me]=t??{},this.check=n,this._field=e}field(){return this._field}set(e,t){if(this.check){const n=zc(this._field,e,t);if(n)throw n}return fe(this.obj,_t(e),Oc(this._field,t)),this}delete(e){const t=_t(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=Gc(this.obj,_t(e));return t!==void 0&&(t=Ln(this._field,t,this.check)),t}has(e){return Object.prototype.hasOwnProperty.call(this.obj,_t(e))}*keys(){for(const e of Object.keys(this.obj))yield xr(e,this._field.mapKey)}*entries(){for(const e of Object.entries(this.obj))yield[xr(e[0],this._field.mapKey),Ln(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 Ln(this._field,e,this.check)}forEach(e,t){for(const n of this.entries())e.call(t,n[1],n[0],this)}};function Co(e,t){return Wo(t)?vc(t.message)&&!e.oneof&&e.fieldKind=="message"?t.message.value:t.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?Yo(t.message):t.message:t}function Bo(e,t,n){return t!==void 0&&(at(e.message)&&!e.oneof&&e.fieldKind=="message"?t={$typeName:e.message.typeName,value:wo(e.message.fields[0],t)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&Te(t)&&(t=Xo(t))),new Ji(e.message,t,n)}function Jr(e,t){return e.listKind=="message"?Co(e,t):Fo(e,t)}function zn(e,t,n){return e.listKind=="message"?Bo(e,t,n):wo(e,t)}function Oc(e,t){return e.mapKind=="message"?Co(e,t):Fo(e,t)}function Ln(e,t,n){return e.mapKind=="message"?Bo(e,t,n):t}function _t(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function xr(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 H.uParse(e)}catch{}break;default:try{return H.parse(e)}catch{}break}return e}function wo(e,t){switch(e.scalar){case b.INT64:case b.SFIXED64:case b.SINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString&&typeof t=="string"&&(t=H.uParse(t));break}return t}function Fo(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=H.parse(t));break;case b.FIXED64:case b.UINT64:"longAsString"in e&&e.longAsString?t=String(t):(typeof t=="string"||typeof t=="number")&&(t=H.uParse(t));break}return t}var Kr=Uint8Array.prototype.setFromBase64;function ko(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 r=-1;if(Kr)try{const a=Kr.call(o,e);a.read==t&&(r=a.written)}catch{}return r<0&&(r=Dc(o,e)),r==n?o:o.subarray(0,r)}function Dc(e,t){const n=Pc();let o=0,r=0,a,i=0;for(let s=0;s<t.length;s++){if(a=n[t.charCodeAt(s)],a===void 0)switch(t[s]){case"=":r=0;case`
51
+ `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(r){case 0:i=a,r=1;break;case 1:e[o++]=i<<2|(a&48)>>4,i=a,r=2;break;case 2:e[o++]=(i&15)<<4|(a&60)>>2,i=a,r=3;break;case 3:e[o++]=(i&3)<<6|a,r=0;break}}if(r==1)throw Error("invalid base64 string");return o}var zr=Uint8Array.prototype.toBase64,_c={std:{alphabet:"base64",omitPadding:!1},std_raw:{alphabet:"base64",omitPadding:!0},url:{alphabet:"base64url",omitPadding:!0}};function $c(e,t="std"){if(zr)return zr.call(e,_c[t]);const n=xi(t),o=t=="std";let r="",a=0,i,s=0;for(let l=0;l<e.length;l++)switch(i=e[l],a){case 0:r+=n[i>>2],s=(i&3)<<4,a=1;break;case 1:r+=n[s|i>>4],s=(i&15)<<2,a=2;break;case 2:r+=n[s|i>>6],r+=n[i&63],a=0;break}return a&&(r+=n[s],o&&(r+="=",a==1&&(r+="="))),r}var $t,Lr,st;function xi(e){return $t||($t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Lr=$t.slice(0,-2).concat("-","_")),e=="url"?Lr:$t}function Pc(){if(!st){st=[];const e=xi("std");for(let t=0;t<e.length;t++)st[e[t].charCodeAt(0)]=t;st[45]=e.indexOf("+"),st[95]=e.indexOf("/")}return st}function ft(e){let t=!1;const n=[];for(let o=0;o<e.length;o++){let r=e.charAt(o);switch(r){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(r),t=!1;break;default:t&&(t=!1,r=r.toUpperCase()),n.push(r);break}}return n.join("")}function Ki(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}var qc=new Set(["constructor","toString","toJSON","valueOf"]);function Kt(e){return qc.has(e)?e+"$":e}function Uo(e){for(const t of e.field)Jt(t,"jsonName")||(t.jsonName=ft(t.name));e.nestedType.forEach(Uo)}function ed(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 td(e,t){switch(e){case b.STRING:return t;case b.BYTES:{const n=nd(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 H.parse(t);case b.UINT64:case b.FIXED64:return H.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 nd(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 r=this.tail.substring(0,o);return this.tail=this.tail.substring(o),r}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,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,8);if(Number.isNaN(a))return!1;t.push(a);break}case"x":{const o=n.c,r=n.take(2);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;t.push(a);break}case"u":{const o=n.c,r=n.take(4);if(r===!1)return!1;const a=parseInt(o+r,16);if(Number.isNaN(a))return!1;const i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),t.push(i[0],i[1],i[2],i[3]);break}case"U":{const o=n.c,r=n.take(8);if(r===!1)return!1;const a=H.uEnc(o+r),i=new Uint8Array(8),s=new DataView(i.buffer);s.setInt32(0,a.lo,!0),s.setInt32(4,a.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*ro(e){switch(e.kind){case"file":for(const t of e.messages)yield t,yield*ro(t);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(const t of e.nestedMessages)yield t,yield*ro(t);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function zi(...e){const t=od();if(!e.length)return t;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(const o of e[0].file)Qr(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||a.has(c))continue;const u=r(c);if(!u)throw new Error(`Unable to resolve ${c}, imported by ${s.name}`);"kind"in u?t.addFile(u,!1,!0):(a.add(u.name),l.push(u))}return l.concat(...l.map(i))};var n=i;const o=e[0],r=e[1],a=new Set;for(const s of[o,...i(o)].reverse())Qr(s,t)}else for(const o of e)for(const r of o.files)t.addFile(r);return t}function od(){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,r,a){if(n.set(o.proto.name,o),!r)for(const i of ro(o))this.add(i);if(a)for(const i of o.dependencies)this.addFile(i,r,a)},add(o){if(o.kind=="extension"){let r=t.get(o.extendee.typeName);r||t.set(o.extendee.typeName,r=new Map),r.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return n.get(o)},getMessage(o){const r=e.get(o);return r?.kind=="message"?r:void 0},getEnum(o){const r=e.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){const r=e.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var a;return(a=t.get(o.typeName))===null||a===void 0?void 0:a.get(r)},getService(o){const r=e.get(o);return r?.kind=="service"?r:void 0}}}var rd=998,ad=999,id=9999,sd=9,zt=10,Ut=11,ld=12,jr=14,Jo=3,cd=2,Tr=1,dd=0,jn=1,Hr=2,ud=3,md=1,hd=2,bd=1,gd=2,pd=1002,Li={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 Qr(e,t){var n,o;const r={kind:"file",proto:e,deprecated:(o=(n=e.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:Rd(e),name:e.name.replace(/\.proto$/,""),dependencies:Ed(e,t),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(s){return a.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),a.set(s.typeName,s)}};for(const s of e.enumType)ji(s,r,void 0,t);for(const s of e.messageType)Ti(s,r,void 0,t,i);for(const s of e.service)Ad(s,r,t);ao(r,t);for(const s of a.values())io(s,t,i);for(const s of r.messages)io(s,t,i),ao(s,t);t.addFile(r,!0)}function ao(e,t){switch(e.kind){case"file":for(const n of e.proto.extension){const o=so(n,e,t);e.extensions.push(o),t.add(o)}break;case"message":for(const n of e.proto.extension){const o=so(n,e,t);e.nestedExtensions.push(o),t.add(o)}for(const n of e.nestedMessages)ao(n,t);break}}function io(e,t,n){const o=e.proto.oneofDecl.map(a=>Zd(a,e)),r=new Set;for(const a of e.proto.field){const i=Nd(a,o),s=so(a,e,t,i,n);e.fields.push(s),e.field[s.localName]=s,i===void 0?e.members.push(s):(i.fields.push(s),r.has(i)||(r.add(i),e.members.push(i)))}for(const a of o.filter(i=>r.has(i)))e.oneofs.push(a);for(const a of e.nestedMessages)io(a,t,n)}function ji(e,t,n,o){var r,a,i,s,l,c;const u=Sd(e.name,e.value),h={kind:"enum",proto:e,deprecated:(a=(r=e.options)===null||r===void 0?void 0:r.deprecated)!==null&&a!==void 0?a:!1,file:t,parent:n,open:!0,name:e.name,typeName:En(e,n,t),value:{},values:[],sharedPrefix:u,toString(){return`enum ${this.typeName}`}};h.open=Id(h),o.add(h);for(const f of e.value){const p=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:p,localName:Kt(u==null?p:p.substring(u.length)),number:f.number,jsonName:(l=Vd(f))!==null&&l!==void 0?l:p,toString(){return`enum value ${h.typeName}.${p}`}})}((c=n?.nestedEnums)!==null&&c!==void 0?c:t.enums).push(h)}function Ti(e,t,n,o,r){var a,i,s,l;const c={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:t,parent:n,name:e.name,typeName:En(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?r.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:t.messages).push(c),o.add(c));for(const u of e.enumType)ji(u,t,c,o);for(const u of e.nestedType)Ti(u,t,c,o,r)}function Ad(e,t,n){var o,r;const a={kind:"service",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,file:t,name:e.name,typeName:En(e,void 0,t),methods:[],method:{},toString(){return`service ${this.typeName}`}};t.services.push(a),n.add(a);for(const i of e.method){const s=fd(i,a,n);a.methods.push(s),a.method[s.localName]=s}}function fd(e,t,n){var o,r,a,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(Ce(e.inputType)),c=n.getMessage(Ce(e.outputType));be(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),be(c,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);const u=e.name;return{kind:"rpc",proto:e,deprecated:(r=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,parent:t,name:u,localName:Kt(u.length?Kt(u[0].toLowerCase()+u.substring(1)):u),methodKind:s,input:l,output:c,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:dd,toString(){return`rpc ${t.typeName}.${u}`}}}function Zd(e,t){return{kind:"oneof",proto:e,deprecated:!1,parent:t,fields:[],name:e.name,localName:Kt(ft(e.name)),toString(){return`oneof ${t.typeName}.${this.name}`}}}function so(e,t,n,o,r){var a,i,s;const l=r===void 0,c={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:vd(e,o,l,t),utf8Validation:Xd(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 R=t.kind=="file"?t:t.file,V=t.kind=="file"?void 0:t,X=En(e,V,R);c.kind="extension",c.file=R,c.parent=V,c.oneof=void 0,c.typeName=X,c.jsonName=`[${X}]`,u=()=>`extension ${X}`;const J=n.getMessage(Ce(e.extendee));be(J,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),c.extendee=J}else{const R=t;be(R.kind=="message"),c.parent=R,c.oneof=o,c.localName=o?ft(e.name):Kt(ft(e.name)),c.jsonName=e.jsonName,u=()=>`field ${R.typeName}.${e.name}`}Object.defineProperty(c,"toString",{value:u,writable:!0,enumerable:!0,configurable:!0});const h=e.label,f=e.type,p=(s=e.options)===null||s===void 0?void 0:s.jstype;if(h===Jo){const R=f==Ut?r?.get(Ce(e.typeName)):void 0;if(R){c.fieldKind="map";const{key:V,value:X}=yd(R);return c.mapKey=V.scalar,c.mapKind=X.fieldKind,c.message=X.message,c.delimitedEncoding=!1,c.enum=X.enum,c.scalar=X.scalar,c}switch(c.fieldKind="list",f){case Ut:case zt:c.listKind="message",c.message=n.getMessage(Ce(e.typeName)),be(c.message),c.delimitedEncoding=Mr(e,t);break;case jr:c.listKind="enum",c.enum=n.getEnum(Ce(e.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=f,c.longAsString=p==Tr;break}return c.packed=Wd(e,t),c}switch(f){case Ut:case zt:c.fieldKind="message",c.message=n.getMessage(Ce(e.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.delimitedEncoding=Mr(e,t),c.getDefaultValue=()=>{};break;case jr:{const R=n.getEnum(Ce(e.typeName));be(R!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Ce(e.typeName)),c.getDefaultValue=()=>Jt(e,"defaultValue")?ed(R,e.defaultValue):void 0;break}default:c.fieldKind="scalar",c.scalar=f,c.longAsString=p==Tr,c.getDefaultValue=()=>Jt(e,"defaultValue")?td(f,e.defaultValue):void 0;break}return c}function Rd(e){switch(e.syntax){case"":case"proto2":return rd;case"proto3":return ad;case"editions":if(e.edition===id)return pd;if(e.edition in Li)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function Ed(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 Sd(e,t){const n=Gd(e)+"_";for(const o of t){if(!o.name.toLowerCase().startsWith(n))return;const r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function Vd(e){var t,n;let a;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!==_.LengthDelimited)continue;const s=new xt(new xt(i.data).bytes());for(;s.pos<s.len;){const[l,c]=s.tag();l===1&&c===_.LengthDelimited?a=s.string():s.skip(c,l)}}return a}function Gd(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,t=>"_"+t)).toLowerCase()}function En(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 Ce(e){return e.startsWith(".")?e.substring(1):e}function Nd(e,t){if(!Jt(e,"oneofIndex")||e.proto3Optional)return;const n=t[e.oneofIndex];return be(n,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),n}function vd(e,t,n,o){if(e.label==cd)return ud;if(e.label==Jo)return Hr;if(t||e.proto3Optional||n)return jn;const r=qe("fieldPresence",{proto:e,parent:o});return r==Hr&&(e.type==Ut||e.type==zt)?jn:r}function Wd(e,t){if(e.label!=Jo)return!1;switch(e.type){case sd:case ld:case zt:case Ut:return!1}const n=e.options;return n&&Jt(n,"packed")?n.packed:md==qe("repeatedFieldEncoding",{proto:e,parent:t})}function yd(e){const t=e.fields.find(o=>o.number===1),n=e.fields.find(o=>o.number===2);return be(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 Id(e){var t;return bd==qe("enumType",{proto:e.proto,parent:(t=e.parent)!==null&&t!==void 0?t:e.file})}function Mr(e,t){return e.type==zt?!0:hd==qe("messageEncoding",{proto:e,parent:t})}function Xd(e,t){return gd==qe("utf8Validation",{proto:e,parent:t})}function qe(e,t){var n,o;const r=(n=t.proto.options)===null||n===void 0?void 0:n.features;if(r){const a=r[e];if(a!=0)return a}if("kind"in t){if(t.kind=="message")return qe(e,(o=t.parent)!==null&&o!==void 0?o:t.file);const a=Li[t.edition];if(!a)throw new Error(`feature default for edition ${t.edition} not found`);return a[e]}return qe(e,t.parent)}function be(e,t){if(!e)throw new Error(t)}function Yd(e){const t=Cd(e);return t.messageType.forEach(Uo),zi(t,()=>{}).getFile(t.name)}function Cd(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(Hi),enumType:e.enumType.map(Qi)}))}function Hi(e){var t,n,o,r,a,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(Bd))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=e.nestedType)===null||o===void 0?void 0:o.map(Hi))!==null&&r!==void 0?r:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Qi))!==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 Bd(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?wd(e.options):void 0}))}function wd(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(r=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},r)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Qi(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 v(e,t,...n){return n.reduce((o,r)=>o.nestedMessages[r],e.messages[t])}var Fd=Yd({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}]}]}),kd=v(Fd,1),Or;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(Or||(Or={}));var Dr;(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"})(Dr||(Dr={}));var _r;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(_r||(_r={}));var $r;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})($r||($r={}));var Pr;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Pr||(Pr={}));var qr;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(qr||(qr={}));var ea;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(ea||(ea={}));var ta;(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"})(ta||(ta={}));var na;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(na||(na={}));var oa;(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"})(oa||(oa={}));var ra;(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"})(ra||(ra={}));var aa;(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"})(aa||(aa={}));var ia;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(ia||(ia={}));var sa;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(sa||(sa={}));var la;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(la||(la={}));var ca;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(ca||(ca={}));var da;(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"})(da||(da={}));var ua;(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"})(ua||(ua={}));var ma;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(ma||(ma={}));var ha;(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"})(ha||(ha={}));var ba;(function(e){e[e.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",e[e.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",e[e.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(ba||(ba={}));function Mi(e){return Object.assign(Object.assign({readUnknownFields:!0,recursionLimit:100},e),{depth:0})}function Ht(e,t,n){const o=ce(e);return xo(e).read(o,new xt(t),Mi(n),t.byteLength),o}var Oi=new WeakMap;function xo(e){let t=Oi.get(e);return t===void 0&&(t=Ud(e)),t}function Ud(e){const t=String(e),n=new Map,o={read:Jd(t,n),readGroup:xd(t,n)};Oi.set(e,o);for(const r of e.fields)n.set(r.number,Di(r));return o}function Jd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.recursionLimit} reached`);const s=o.pos+a,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,r.recursionLimit-r.depth);r.readUnknownFields&&l.push({no:c,wireType:u,data:f});continue}h(n,o,r,u)}l.length>0&&(n.$unknown=l),r.depth--}}function xd(e,t){return(n,o,r,a)=>{var i;if(++r.depth>r.recursionLimit)throw new Error(`cannot decode ${e} from binary: maximum recursion depth of ${r.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!=_.EndGroup);){const u=t.get(s);if(u===void 0){const h=o.skip(l,s,r.recursionLimit-r.depth);r.readUnknownFields&&c.push({no:s,wireType:l,data:h});continue}u(n,o,r,l)}if(l!=_.EndGroup||s!==a)throw new Error("invalid end group tag");c.length>0&&(n.$unknown=c),r.depth--}}function Kd(e,t,n,o,r){Di(n)(e[me],t,r,o)}function Di(e){switch(e.fieldKind){case"scalar":return zd(e);case"enum":return Ld(e);case"message":return jd(e);case"list":return Td(e);case"map":return Hd(e)}}function zd(e){const t=hn(e.scalar,e.utf8Validation,e.longAsString),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a)=>{r[o]={case:n,value:t(a)}}}return(o,r)=>{o[n]=t(r)}}function Ld(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 r=e.enum.values,a=e.number;return(i,s,l,c)=>{var u;const h=s.int32();if(r.some(f=>f.number===h))o!==void 0?i[o]={case:n,value:h}:i[n]=h;else if(l.readUnknownFields){const f=[];pc(h,f);const p=(u=i.$unknown)!==null&&u!==void 0?u:[];p.push({no:a,wireType:c,data:new Uint8Array(f)}),i.$unknown=p}}}function jd(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=_i(e);if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=i[a],u=n(c.case===t?c.value:void 0);r(u,s,l),i[a]={case:t,value:o(u)}}}return(a,i,s)=>{const l=n(a[t]);r(l,i,s),a[t]=o(l)}}function _i(e){const t=xo(e.message);if(e.delimitedEncoding){const n=e.number;return(o,r,a)=>t.readGroup(o,r,a,n)}return(n,o,r)=>t.read(n,o,r,o.uint32())}function Td(e){const t=e.localName;if(e.listKind=="message"){const{toMessage:i,toLocal:s}=Ge(e),l=_i(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,r=hn(n,e.utf8Validation,o),a=n!=b.STRING&&n!=b.BYTES;return(i,s,l,c)=>{const u=i[t];if(c==_.LengthDelimited&&a){const h=s.uint32()+s.pos;for(;s.pos<h;)u.push(r(s))}else u.push(r(s))}}function Hd(e){const t=e.localName,n=hn(e.mapKey,e.utf8Validation,!1),o=Be(e.mapKey,!1);let r,a;switch(e.mapKind){case"scalar":{const i=e.scalar,s=hn(i,e.utf8Validation,!1);if(r=l=>s(l),i==b.BYTES)a=()=>new Uint8Array(0);else{const l=Be(i,!1);a=()=>l}break}case"enum":{const i=e.enum.values[0].number;r=s=>s.int32(),a=()=>i;break}case"message":{const{toMessage:i,toLocal:s}=Ge(e),l=xo(e.message).read;r=(c,u,h)=>{const f=i(h);return l(f,c,u,c.uint32()),s(f)},a=()=>s(i(void 0));break}}return(i,s,l)=>{const c=i[t];let u,h;const f=s.uint32(),p=s.pos+f;for(;s.pos<p;){const[R]=s.tag();switch(R){case 1:u=n(s);break;case 2:h=r(s,l,h);break}}u===void 0&&(u=o),h===void 0&&(h=a()),fe(c,u,h)}}function hn(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 oe(e,t){var n;const o=Ht(kd,ko(e));return o.messageType.forEach(Uo),o.dependency=(n=t?.map(r=>r.proto.name))!==null&&n!==void 0?n:[],zi(o,r=>t?.find(a=>a.proto.name===r)).getFile(o.name)}var Ne=oe("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function Qd(e){return new Date(Md(e))}function Md(e){return Number(e.seconds)*1e3+Math.round(e.nanos/1e6)}var $i=oe("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Od=v($i,0),Dd=2,_d=3,ga={writeUnknownFields:!0};function $d(e){return e?Object.assign(Object.assign({},ga),e):ga}function Pi(e,t,n){const o=new Ii;return Ko(e)(o,$d(n),t),o.finish()}var qi=new WeakMap;function Ko(e){let t=qi.get(e);return t===void 0&&(t=Pd(e)),t}function Pd(e){const t=e.typeName,n=e.fields.concat().sort((i,s)=>i.number-s.number),o=n[0],r=[],a=(i,s,l)=>{if(l.$typeName!==t&&o!==void 0)throw new Q(o,`cannot use ${o} with message ${l.$typeName}`,"ForeignFieldError");for(let u=0;u<r.length;u++)r[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:p}=c[u];i.tag(h,f).raw(p)}};qi.set(e,a);for(const i of n)r.push(es(i));return a}function es(e){switch(e.fieldKind){case"message":case"scalar":case"enum":return qd(e);case"list":return tu(e);case"map":return nu(e)}}function qd(e){const t=eu(e),n=e.localName;if(e.oneof){const o=e.oneof.localName;return(r,a,i)=>{const s=i[o];s.case===n&&t(r,a,s.value)}}if(e.presence!=Dd){const o=e.presence==_d?`cannot encode ${e} to binary: required field not set`:void 0;return(r,a,i)=>{const s=i[n];if(s!==void 0&&Object.prototype.hasOwnProperty.call(i,n))t(r,a,s);else if(o!==void 0)throw new Error(o)}}if(e.fieldKind=="enum"){const o=e.enum.values[0].number;return(r,a,i)=>{const s=i[n];s!==o&&t(r,a,s)}}switch(e.scalar){case b.BOOL:return(o,r,a)=>{const i=a[n];i!==!1&&t(o,r,i)};case b.STRING:return(o,r,a)=>{const i=a[n];i!==""&&t(o,r,i)};case b.BYTES:return(o,r,a)=>{const i=a[n];(!(i instanceof Uint8Array)||i.byteLength>0)&&t(o,r,i)};case b.DOUBLE:case b.FLOAT:return(o,r,a)=>{const i=a[n];Object.is(i,0)||t(o,r,i)};default:return(o,r,a)=>{const i=a[n];i!=0&&t(o,r,i)}}}function eu(e){switch(e.fieldKind){case"message":{const{toMessage:t}=Ge(e),n=ts(e);return(o,r,a)=>{n(o,r,t(a))}}case"scalar":case"enum":{const t=e.fieldKind=="enum"?b.INT32:e.scalar,n=e.number,o=Vn(t),r=Sn(t,e.parent.typeName,e.name);return(a,i,s)=>{a.tag(n,o),r(a,s)}}}}function tu(e){const t=e.localName,n=e.number;switch(e.listKind){case"message":{const{toMessage:o}=Ge(e),r=ts(e);return(a,i,s)=>{const l=s[t];for(let c=0;c<l.length;c++)r(a,i,o(l[c]))}}case"scalar":case"enum":{const o=e.listKind=="enum"?b.INT32:e.scalar,r=Sn(o,e.parent.typeName,e.name);if(e.packed)return(i,s,l)=>{const c=l[t];if(c.length!=0){i.tag(n,_.LengthDelimited).fork();for(let u=0;u<c.length;u++)r(i,c[u]);i.join()}};const a=Vn(o);return(i,s,l)=>{const c=l[t];for(let u=0;u<c.length;u++)i.tag(n,a),r(i,c[u])}}}}function nu(e){const t=e.localName,n=e.number,o=ou(e);if(e.mapKind=="message"){const{toMessage:s}=Ge(e),l=Ko(e.message);return(c,u,h)=>{const f=h[t],p=Object.keys(f);for(let R=0;R<p.length;R++){const V=p[R];c.tag(n,_.LengthDelimited).fork(),o(c,V),c.tag(2,_.LengthDelimited).fork(),l(c,u,s(f[V])),c.join(),c.join()}}}const r=e.mapKind=="enum"?b.INT32:e.scalar,a=Vn(r),i=Sn(r,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 p=h[f];s.tag(n,_.LengthDelimited).fork(),o(s,p),s.tag(2,a),i(s,u[p]),s.join()}}}function ou(e){const t=Vn(e.mapKey),n=Sn(e.mapKey,e.parent.typeName,e.name),o=ru(e.mapKey);return(r,a)=>{r.tag(1,t),n(r,o(a))}}function ru(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 H.uParse(t)}catch{return t}};case b.INT64:case b.SFIXED64:case b.SINT64:return t=>{try{return H.parse(t)}catch{return t}};default:return t=>{const n=Number.parseInt(t);return Number.isFinite(n)?n:t}}}function Sn(e,t,n){const o=au(e);return(r,a)=>{try{o(r,a)}catch(i){throw i instanceof Error?new Error(`cannot encode field ${t}.${n} to binary: ${i.message}`):i}}}function au(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 iu(e,t,n,o){es(o)(e,t,n[me])}function ts(e){const t=e.number,n=Ko(e.message);return e.delimitedEncoding?(o,r,a)=>{o.tag(t,_.StartGroup),n(o,r,a),o.tag(t,_.EndGroup)}:(o,r,a)=>{o.tag(t,_.LengthDelimited).fork(),n(o,r,a),o.join()}}function Vn(e){switch(e){case b.BYTES:case b.STRING:return _.LengthDelimited;case b.DOUBLE:case b.FIXED64:case b.SFIXED64:return _.Bit64;case b.FIXED32:case b.SFIXED32:case b.FLOAT:return _.Bit32;default:return _.Varint}}function su(e,t,n){let o=!1;return n||(n=ce(Od),o=!0),n.value=Pi(e,t),n.typeUrl=du(t.$typeName),o?n:void 0}function lu(e,t){return e.typeUrl===""?!1:(typeof t=="string"?t:t.typeName)===ns(e.typeUrl)}function cu(e,t){if(e.typeUrl==="")return;const n=t.kind=="message"?t:t.getMessage(ns(e.typeUrl));if(!(!n||!lu(e,n)))return Ht(n,e.value)}function du(e){return`type.googleapis.com/${e}`}function ns(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 Ue=oe("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),uu=v(Ue,0),os=v(Ue,1),mu=v(Ue,2),lo;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(lo||(lo={}));var rs=oe("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");function hu(e,t,n){as(t,e);const o=gu(e.$unknown,t),[r,a,i]=Gn(t),s=Mi(n);for(const l of o)Kd(r,new xt(l.data),a,l.wireType,s);return i()}function bu(e,t,n){var o;as(t,e);const r=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==t.number),[a,i]=Gn(t,n),s=new Ii;iu(s,{writeUnknownFields:!0},a,i);const l=new xt(s.finish());for(;l.pos<l.len;){const[c,u]=l.tag(),h=l.skip(u,c);r.push({no:c,wireType:u,data:h})}e.$unknown=r}function gu(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 Gn(e,t){const n=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:n}),r=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),a=ce(r,t!==void 0?{[n]:t}:void 0);return[Hc(r,a),o,()=>{const i=a[n];if(i===void 0){const s=e.message;return at(s)?Be(s.fields[0].scalar,s.fields[0].longAsString):ce(s)}return i}]}function as(e,t){if(e.extendee.typeName!=t.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var is=Date.parse("0001-01-01T00:00:00Z"),ss=Date.parse("9999-12-31T23:59:59Z");var pu=3,Au=2,pa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function fu(e){return e?Object.assign(Object.assign({},pa),e):pa}function ls(e,t,n){return bn(e)(fu(n),t)}function Zu(e,t,n){var o;const r=ls(e,t,n);return JSON.stringify(r,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}var co=new WeakMap;function bn(e){let t=co.get(e);return t===void 0&&(t=Ru(e)),t}function Ru(e){const t=e.typeName,n=Su(e);if(n!==void 0){const s=e.fields[0],l=(c,u)=>{if(u.$typeName!==t&&s!==void 0)throw new Q(s,`cannot use ${s} with message ${u.$typeName}`,"ForeignFieldError");return n(c,u)};return co.set(e,l),l}const o=e.fields.concat().sort((s,l)=>s.number-l.number),r=o[0],a=[],i=(s,l)=>{if(l.$typeName!==t&&r!==void 0)throw new Q(r,`cannot use ${r} with message ${l.$typeName}`,"ForeignFieldError");const c={};for(let u=0;u<a.length;u++)a[u](s,l,c);return s.registry&&yu(c,s,s.registry,l,e),c};co.set(e,i);for(const s of o){const l=Vu(s);a.push(s.jsonName==="__proto__"||s.name==="__proto__"?Eu(l):l)}return i}function Eu(e){return(t,n,o)=>{const r=Object.create(null);e(t,n,r);for(const a of Object.keys(r))fe(o,a,r[a])}}function Su(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n)=>Iu(n,t);case"google.protobuf.Timestamp":return(t,n)=>Cu(n);case"google.protobuf.Duration":return(t,n)=>Xu(n);case"google.protobuf.FieldMask":return(t,n)=>Yu(n);case"google.protobuf.Struct":return(t,n)=>ms(n);case"google.protobuf.Value":return(t,n)=>jo(n);case"google.protobuf.ListValue":return(t,n)=>hs(n);default:if(at(e)){const t=e.fields[0],n=t.localName,o=Be(t.scalar,!1),r=Nn(t);return(a,i)=>{const s=i[n];return r(a,s===void 0?o:s)}}return}}function Vu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return Gu(e);case"list":case"map":{const t=e.fieldKind=="list"?ds(e):us(e),n=e.name,o=e.jsonName,r=e.localName;return(a,i,s)=>{const l=t(a,i[r]);l!==void 0&&(s[a.useProtoFieldName?n:o]=l)}}}}function Gu(e){const t=cs(e),n=e.name,o=e.jsonName,r=e.localName;if(e.oneof){const a=e.oneof.localName;return(i,s,l)=>{const c=s[a];c.case===r&&(l[i.useProtoFieldName?n:o]=t(i,c.value))}}if(e.presence!=Au){const a=e.presence==pu?`cannot encode ${e} to JSON: required field not set`:void 0;return(i,s,l)=>{const c=s[r];if(c!==void 0&&Object.prototype.hasOwnProperty.call(s,r))l[i.useProtoFieldName?n:o]=t(i,c);else if(a!==void 0)throw new Error(a)}}if(e.fieldKind=="enum"){const a=e.enum.values[0].number;return(i,s,l)=>{const c=s[r];(c!==a||i.alwaysEmitImplicit)&&(l[i.useProtoFieldName?n:o]=t(i,c))}}switch(e.scalar){case b.BOOL:return(a,i,s)=>{const l=i[r];(l!==!1||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.STRING:return(a,i,s)=>{const l=i[r];(l!==""||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.BYTES:return(a,i,s)=>{const l=i[r];(!(l instanceof Uint8Array)||l.byteLength>0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};case b.DOUBLE:case b.FLOAT:return(a,i,s)=>{const l=i[r];(!Object.is(l,0)||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))};default:return(a,i,s)=>{const l=i[r];(l!=0||a.alwaysEmitImplicit)&&(s[a.useProtoFieldName?n:o]=t(a,l))}}}function Nu(e){switch(e.fieldKind){case"scalar":case"enum":case"message":return cs(e);case"list":return ds(e);case"map":return us(e)}}function cs(e){switch(e.fieldKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function zo(e){const{toMessage:t}=Ge(e),n=bn(e.message);return(o,r)=>n(o,t(r))}function ds(e){const t=vu(e);return(n,o)=>{const r=o;if(r.length==0&&!n.alwaysEmitImplicit)return;const a=[];for(let i=0;i<r.length;i++)a.push(t(n,r[i]));return a}}function vu(e){switch(e.listKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function us(e){const t=Wu(e);return(n,o)=>{const r=o,a=Object.keys(r);if(a.length==0&&!n.alwaysEmitImplicit)return;const i={};for(let s=0;s<a.length;s++){const l=a[s];fe(i,l,t(n,r[l]))}return i}}function Wu(e){switch(e.mapKind){case"scalar":return Nn(e);case"enum":return Lo(e);case"message":return zo(e)}}function Lo(e){const t=e.enum;return t.typeName=="google.protobuf.NullValue"?(n,o)=>{if(typeof o!="number")throw Aa(t,o);return null}:(n,o)=>{var r,a;if(typeof o!="number")throw Aa(t,o);return n.enumAsInteger?o:(a=(r=t.value[o])===null||r===void 0?void 0:r.jsonName)!==null&&a!==void 0?a:o}}function Aa(e,t){return new Error(`cannot encode ${e} to JSON: expected number, got ${te(t)}`)}function Nn(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 lt(e,n);return n};case b.FLOAT:case b.DOUBLE:return(t,n)=>{if(typeof n!="number")throw lt(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 lt(e,n);return n};case b.BOOL:return(t,n)=>{if(typeof n!="boolean")throw lt(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 lt(e,n)};case b.BYTES:return(t,n)=>{if(n instanceof Uint8Array)return $c(n);throw lt(e,n)}}}function lt(e,t){var n;return new Error(`cannot encode ${e} to JSON: ${(n=Ci(e,t))===null||n===void 0?void 0:n.message}`)}function yu(e,t,n,o,r){const a=o.$unknown;if(a===void 0)return;const i=new Set;for(let s=0;s<a.length;s++){const{no:l}=a[s];if(!i.has(l)){i.add(l);const c=n.getExtensionFor(r,l);if(!c)continue;const[u,h]=Gn(c,hu(o,c)),f=u[me],p=Nu(h)(t,f[h.localName]);p!==void 0&&(e[c.jsonName]=p)}}}function Iu(e,t){if(e.typeUrl==="")return{};const{registry:n}=t;let o,r;if(n&&(o=cu(e,n),o&&(r=n.getMessage(o.$typeName))),!r||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);const a=Ei(r)?{value:bn(r)(t,o)}:bn(r)(t,o);return a["@type"]=e.typeUrl,a}function Xu(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 r=Math.abs(n).toString();r="0".repeat(9-r.length)+r,r.substring(3)==="000000"?r=r.substring(0,3):r.substring(6)==="000"&&(r=r.substring(0,6)),o+="."+r,n<0&&t==0&&(o="-"+o)}return o+"s"}function Yu(e){return e.paths.map(t=>{if(Ki(ft(t))!==t)throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "${t}" is irreversible`);return ft(t)}).join(",")}function ms(e){const t={},n=Object.keys(e.fields);for(let o=0;o<n.length;o++){const r=n[o];fe(t,r,jo(e.fields[r]))}return t}function jo(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 ms(e.kind.value);case"listValue":return hs(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function hs(e){return e.values.map(jo)}function Cu(e){const t=Number(e.seconds)*1e3;if(t<is||t>ss)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 Bu=2;function wu(e){return Object.assign(Object.assign({ignoreUnknownFields:!1,recursionLimit:100},e),{depth:0})}function Fu(e,t,n){return bs(e,Qu(t,e.typeName),n)}function bs(e,t,n){const o=ce(e);return ku(e,o,t,n),o}function ku(e,t,n,o){try{Zt(e)(t,n,wu(o))}catch(r){throw kc(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}}var uo=new WeakMap;function Zt(e){let t=uo.get(e);return t===void 0&&(t=Uu(e)),t}function Uu(e){const t=String(e),n=Ju(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 uo.set(e,i),i}const o=e.typeName,r=new Map,a=(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: ${te(s)}`);const u=new Map,h=new Set,f=Object.keys(s);for(let p=0;p<f.length;p++){const R=f[p],V=s[R],X=r.get(R);if(X!==void 0){const J=X.field;if(h.has(J))throw new Q(J,"set multiple times");if(h.add(J),X.oneofScalarNullSkip&&V===null)continue;if(X.oneof){const d=u.get(X.oneof);if(d!==void 0)throw new Q(X.oneof,`oneof set multiple times by ${d.name} and ${J.name}`);u.set(X.oneof,J)}X.read(i,V,l)}else{const J=R.startsWith("[")&&R.endsWith("]")?(c=l.registry)===null||c===void 0?void 0:c.getExtension(R.substring(1,R.length-1)):void 0;if(J?.extendee.typeName==o){const[d,m,A]=Gn(J);fa(m)(d[me],V,l),bu(i,J,A())}if(J===void 0&&!l.ignoreUnknownFields)throw new Error(`cannot decode ${t} from JSON: key "${R}" is unknown`)}}l.depth--};uo.set(e,a);for(const i of e.fields){const s={read:fa(i),field:i,oneof:i.oneof,oneofScalarNullSkip:i.oneof!==void 0&&i.fieldKind=="scalar"};r.set(i.name,s).set(i.jsonName,s)}return a}function Ju(e){if(e.typeName.startsWith("google.protobuf."))switch(e.typeName){case"google.protobuf.Any":return(t,n,o)=>Ou(t,n,o);case"google.protobuf.Timestamp":return(t,n)=>Du(t,n);case"google.protobuf.Duration":return(t,n)=>_u(t,n);case"google.protobuf.FieldMask":return(t,n)=>$u(t,n);case"google.protobuf.Struct":return(t,n,o)=>fs(t,n,o);case"google.protobuf.Value":return(t,n,o)=>Oo(t,n,o);case"google.protobuf.ListValue":return(t,n,o)=>Zs(t,n,o);default:if(at(e)){const t=e.fields[0],n=t.localName,o=t.scalar,r=t.longAsString,a=ps(t);return(i,s)=>{s===null?i[n]=Be(o,r):i[n]=a(s)}}return}}function fa(e){switch(e.fieldKind){case"scalar":return xu(e);case"enum":return Ku(e);case"message":return zu(e);case"list":return Lu(e);case"map":return Tu(e)}}function xu(e){const t=ps(e),n=e.localName;if(e.oneof){const r=e.oneof.localName;return(a,i)=>{a[r]={case:n,value:t(i)}}}const o=gs(e);return(r,a)=>{a===null?o(r):r[n]=t(a)}}function gs(e){const t=e.localName;if(e.presence!=Bu)return r=>{delete r[t]};if(e.fieldKind=="enum"){const r=e.enum.values[0].number;return a=>{a[t]=r}}const n=e.scalar,o=e.longAsString;return r=>{r[t]=Be(n,o)}}function Ku(e){const t=To(e.enum),n=Ho(e.enum),o=e.localName,r=e.enum.typeName!="google.protobuf.NullValue";if(e.oneof){const i=e.oneof.localName;return(s,l,c)=>{if(l===null&&r){s[i].case===o&&(s[i]={case:void 0});return}const u=t(l,c.ignoreUnknownFields);if(u===Rt)return;const h=n(u);if(h!==!0)throw new Q(e,pe(e,u,h));s[i]={case:o,value:u}}}const a=gs(e);return(i,s,l)=>{if(s===null&&r){a(i);return}const c=t(s,l.ignoreUnknownFields);if(c===Rt)return;const u=n(c);if(u!==!0)throw new Q(e,pe(e,c,u));i[o]=c}}function zu(e){const t=e.localName,{toMessage:n,toLocal:o}=Ge(e),r=Zt(e.message),a=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&&a){u.case===t&&(s[i]={case:void 0});return}const h=n(u.case===t?u.value:void 0);r(h,l,c),s[i]={case:t,value:o(h)}}}return(i,s,l)=>{if(s===null&&a){delete i[t];return}const c=n(i[t]);r(c,s,l),i[t]=o(c)}}function Lu(e){const t=e.localName,n=ju(e);return(o,r,a)=>{if(r===null)return;if(!Array.isArray(r))throw new Q(e,"expected Array, got "+te(r));const i=o[t];for(let s=0;s<r.length;s++){const l=n(r[s],a,i.length);l!==Rt&&i.push(l)}}}function ju(e){switch(e.listKind){case"scalar":{const t=Qo(e),n=He(e.scalar),o=Mo(e);return(r,a,i)=>{if(r===null)throw new Q(e,"list item must not be null");const s=t(r),l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return o(s)}}case"enum":{const t=To(e.enum),n=Ho(e.enum),o=e.enum.typeName!="google.protobuf.NullValue";return(r,a,i)=>{if(r===null&&o)throw new Q(e,"list item must not be null");const s=t(r,a.ignoreUnknownFields);if(s===Rt)return s;const l=n(s);if(l!==!0)throw new Q(e,`list item #${i+1}: ${pe(e,s,l)}`);return s}}case"message":{const{toMessage:t,toLocal:n}=Ge(e),o=Zt(e.message),r=e.message.typeName!="google.protobuf.Value";return(a,i)=>{if(a===null&&r)throw new Q(e,"list item must not be null");const s=t(void 0);return o(s,a,i),n(s)}}}}function Tu(e){const t=e.localName,n=e.mapKey,o=Hu(n),r=He(n);let a,i,s=c=>c,l=!0;switch(e.mapKind){case"scalar":a=Qo(e),i=He(e.scalar),s=Mo(e);break;case"enum":{const c=To(e.enum);a=(u,h)=>c(u,h.ignoreUnknownFields),i=Ho(e.enum),l=e.enum.typeName!="google.protobuf.NullValue";break}case"message":{const{toMessage:c,toLocal:u}=Ge(e),h=Zt(e.message);l=e.message.typeName!="google.protobuf.Value",a=(f,p)=>{const R=c(void 0);return h(R,f,p),u(R)};break}}return(c,u,h)=>{if(u===null)return;if(typeof u!="object"||Array.isArray(u))throw new Q(e,"expected object, got "+te(u));const f=c[t],p=new Set,R=Object.keys(u);for(let V=0;V<R.length;V++){const X=R[V],J=u[X],d=o(X);if(p.has(d))throw new Q(e,`duplicate map key "${X}"`);if(p.add(d),J===null&&l)throw new Q(e,"map value must not be null");const m=a(J,h);if(m===Rt)continue;const A=r(d);if(A!==!0)throw new Q(e,`invalid map key: ${pe({scalar:n},d,A)}`);if(i!==void 0){const g=i(m);if(g!==!0)throw new Q(e,`map entry ${te(d)}: ${pe(e,m,g)}`)}fe(f,d,s(m))}}}var Rt=Symbol();function To(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,r)=>{if(o===null)return t;switch(typeof o){case"number":if(Number.isInteger(o))return o;break;case"string":{const a=n.get(o);if(a!==void 0)return a;if(r)return Rt;break}}throw new Error(`cannot decode ${e} from JSON: ${te(o)}`)}}function Ho(e){if(e.open)return He(b.INT32);const t=e.values;return n=>t.some(o=>o.number===n)}function ps(e){const t=Qo(e),n=He(e.scalar),o=Mo(e);return r=>{const a=t(r),i=n(a);if(i!==!0)throw new Q(e,pe(e,a,i));return o(a)}}function Qo(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 Q(e,"unexpected NaN number");if(!Number.isFinite(t))throw new Q(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 As;case b.BYTES:return t=>{if(typeof t=="string"){if(t==="")return new Uint8Array(0);try{return ko(t)}catch(n){throw new Q(e,n instanceof Error?n.message:String(n))}}return t};default:return t=>t}}function Mo(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"?H.parse(n):n;case b.FIXED64:case b.UINT64:return t?n=>String(n):n=>typeof n=="string"||typeof n=="number"?H.uParse(n):n;default:return n=>n}}function Hu(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 As;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 As(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 Qu(e,t){let n;try{n=JSON.parse(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new Error(`cannot decode message ${t} from JSON: ${r}`,{cause:o})}return Mu(e,t),n}function Mu(e,t){const n=[];let o=!1,r=0;for(;r<e.length;)switch(e[r]){case"{":n.push(new Set),o=!0,r++;break;case"[":n.push(null),o=!1,r++;break;case"}":case"]":n.pop(),o=!1,r++;break;case",":o=n[n.length-1]!=null,r++;break;case":":o=!1,r++;break;case'"':{const a=r++;let i=!1;for(;r<e.length;){if(e[r]=="\\"){i=!0,r+=2;continue}if(e[r]=='"')break;r++}const s=r++,l=n[n.length-1];if(o&&l){const c=i?JSON.parse(e.substring(a,s+1)):e.substring(a+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:r++;break}}function Ou(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 ${te(t)}`);if(Object.keys(t).length==0)return;const r=t["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);const a=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!a.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(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${r} is not in the type registry`);const s=ce(i);if(Ei(i)&&Object.prototype.hasOwnProperty.call(t,"value"))Zt(i)(s,t.value,n);else{const l={};for(const c of Object.keys(t))c!=="@type"&&fe(l,c,t[c]);Zt(i)(s,l,n)}su(i,s,e)}function Du(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(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<is||o>ss)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=H.parse(o/1e3),e.nanos=0,n[7]&&(e.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function _u(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const n=t.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);const o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(t)}`);if(e.seconds=H.parse(o),typeof n[2]!="string")return;const r=n[2]+"0".repeat(9-n[2].length);e.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function $u(e,t){if(typeof t!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${te(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 Ki(n)}))}function fs(e,t,n){if(typeof t!="object"||t==null||Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);const o=Object.keys(t);for(let r=0;r<o.length;r++){const a=o[r],i=ce(os);Oo(i,t[a],n),fe(e.fields,a,i)}}function Oo(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:lo.NULL_VALUE};else if(Array.isArray(t)){const o=ce(mu);Zs(o,t,n),e.kind={case:"listValue",value:o}}else{const o=ce(uu);fs(o,t,n),e.kind={case:"structValue",value:o}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`)}return n.depth--,e}function Zs(e,t,n){if(!Array.isArray(t))throw new Error(`cannot decode message ${e.$typeName} from JSON ${te(t)}`);for(let o=0;o<t.length;o++){const r=ce(os);Oo(r,t[o],n),e.values.push(r)}}function Za(e){const t=S[e];return typeof t!="string"?e.toString():t[0].toLowerCase()+t.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var B=class ut extends Error{constructor(t,n=S.Unknown,o,r,a){super(Pu(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=r??[],this.cause=a}static from(t,n=S.Unknown){return t instanceof ut?t:t instanceof Error?t.name=="AbortError"||t.name=="TimeoutError"?new ut(t.message,S.Canceled):new ut(t.message,n,void 0,void 0,t):new ut(String(t),n,void 0,void 0,t)}static[Symbol.hasInstance](t){return t instanceof Error?Object.getPrototypeOf(t)===ut.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:r=>r===t.typeName?t:void 0}:t,o=[];for(const r of this.details){if("desc"in r){n.getMessage(r.desc.typeName)&&o.push(ce(r.desc,r.value));continue}const a=n.getMessage(r.type);if(a)try{o.push(Ht(a,r.value))}catch{}}return o}};function Pu(e,t){return e.length?`[${Za(t)}] ${e}`:`[${Za(t)}]`}function qu(e,t,n){try{const o=ko(e);return t?Ht(t,o,n):o}catch(o){throw B.from(o,S.DataLoss)}}function em(e,t){const n={};for(const o of e.methods){const r=t(o);r!=null&&(n[o.localName]=r)}return n}var cn=4294967295,Tn=cn,tm=1024;function nm(e,t,n){if(t!=null||(t=Tn),e!=null||(e=cn),n!=null||(n=tm),t<1||t>Tn)throw new B(`writeMaxBytes ${t} must be >= 1 and <= ${Tn}`,S.Internal);if(e<1||e>cn)throw new B(`readMaxBytes ${e} must be >= 1 and <= ${cn}`,S.Internal);return{readMaxBytes:e,writeMaxBytes:t,compressMinBytes:n}}function om(e,t){if(t>e)throw new B(`message size ${t} is larger than configured writeMaxBytes ${e}`,S.ResourceExhausted)}function Rs(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 B(o,S.ResourceExhausted)}}function rm(e){return new am(e)}var am=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 Rs(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 im(e,t,n){let{flags:o,data:r}=e;if((o&1)===1)throw new B("invalid envelope, already compressed",S.Internal);return t&&r.byteLength>=n&&(r=await t.compress(r),o=o|1),{data:r,flags:o}}async function sm(e,t,n){let{flags:o,data:r}=e;if((o&1)===1){if(!t)throw new B("received compressed envelope, but do not know how to decompress",S.Internal);r=await t.decompress(r,n),o=o^1}return{data:r,flags:o}}function lm(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 we=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},z=function(e){return this instanceof z?(this.v=e,this):new z(e)},Ve=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof z?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}},cm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:z(e[r](i)),done:!1}:a?a(i):i}:a}};function dm(e,...t){const[n,o,r]=um(t);let a=e,i;return r?.propagateDownStreamError===!0&&(a=i=Es(a)),a=dn(a,...n,{propagateDownStreamError:!1}),o(a).catch(s=>i?i.abort(s).then(()=>Promise.reject(s)):Promise.reject(s))}function um(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,e.pop(),t]}function dn(e,...t){return Ve(this,arguments,function*(){var o;const[r,a]=mm(t);let i;const s=e[Symbol.asyncIterator]();let l={[Symbol.asyncIterator](){return s}};a?.propagateDownStreamError===!0&&(l=i=Es(l));for(const u of r)l=u(l);const c=l[Symbol.asyncIterator]();try{for(;;){const u=yield z(c.next());if(u.done===!0)break;if(!i){yield yield z(u.value);continue}try{yield yield z(u.value)}catch(h){throw yield z(i.abort(h)),h}}}finally{a?.propagateDownStreamError===!0&&((o=s.return)===null||o===void 0||o.call(s).catch(()=>{}))}})}function mm(e){let t;return typeof e[e.length-1]!="function"&&(t=e.pop()),[e,t]}function Ra(e,t,n){return t===void 0||n===void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;yield yield z({flags:0,data:e.serialize(h)})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const h=s;let f,p=0;h.end?(p=p|t,f=n.serialize(h.value)):f=e.serialize(h.value),yield yield z({flags:p,data:f})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Ea(e,t,n){return n&&t!==void 0?function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;l=!0){s=u.value,l=!1;const{flags:h,data:f}=s;(h&t)===t?yield yield z({value:n.parse(f),end:!0}):yield yield z({value:e.parse(f),end:!1})}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}:function(o){return Ve(this,arguments,function*(){var r,a,i,s;try{for(var l=!0,c=we(o),u;u=yield z(c.next()),r=u.done,!r;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 B("unexpected end flag",S.InvalidArgument);continue}yield yield z(e.parse(f))}}catch(h){a={error:h}}finally{try{!l&&!r&&(i=c.return)&&(yield z(i.call(c)))}finally{if(a)throw a.error}}})}}function Sa(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=we(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(im(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Va(e,t){return function(n){return Ve(this,arguments,function*(){var o,r,a,i;try{for(var s=!0,l=we(n),c;c=yield z(l.next()),o=c.done,!o;s=!0)i=c.value,s=!1,yield yield z(yield z(sm(i,e,t)))}catch(u){r={error:u}}finally{try{!s&&!o&&(a=l.return)&&(yield z(a.call(l)))}finally{if(r)throw r.error}}})}}function Ga(){return function(e){return Ve(this,arguments,function*(){var t,n,o,r;try{for(var a=!0,i=we(e),s;s=yield z(i.next()),t=s.done,!t;a=!0){r=s.value,a=!1;const{flags:l,data:c}=r;yield yield z(lm(l,c))}}catch(l){n={error:l}}finally{try{!a&&!t&&(o=i.return)&&(yield z(o.call(i)))}finally{if(n)throw n.error}}})}}function Na(e){return function(t){return Ve(this,arguments,function*(){var n,o,r,a;const i=rm(e);try{for(var s=!0,l=we(t),c;c=yield z(l.next()),n=c.done,!n;s=!0){a=c.value,s=!1;const u=a;for(const h of i.decode(u))yield yield z(h)}}catch(u){o={error:u}}finally{try{!s&&!n&&(r=l.return)&&(yield z(r.call(l)))}finally{if(o)throw o.error}}if(i.byteLength>0)throw new B("protocol error: incomplete envelope",S.InvalidArgument)})}}function Es(e){const t=e[Symbol.asyncIterator]();if(t.throw===void 0)throw new Error("AsyncIterable does not implement throw");const n=t;let o,r,a={next(){return r=n.next().finally(()=>{r=void 0}),r},throw(s){return n.throw(s)}};t.return!==void 0&&(a=Object.assign(Object.assign({},a),{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 r?(o={reason:s,state:r.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,a}}}function Ss(e){return Ve(this,arguments,function*(){yield z(yield*cm(we(e)))})}var Vs=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},Et=function(e){return this instanceof Et?(this.v=e,this):new Et(e)},hm=function(e){var t,n;return t={},o("next"),o("throw",function(r){throw r}),o("return"),t[Symbol.iterator]=function(){return this},t;function o(r,a){t[r]=e[r]?function(i){return(n=!n)?{value:Et(e[r](i)),done:!1}:a?a(i):i}:a}},bm=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof Et?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}};function ve(e,t){return em(e,n=>{switch(n.methodKind){case"unary":return gm(t,n);case"server_streaming":return pm(t,n);case"client_streaming":return Am(t,n);case"bidi_streaming":return fm(t,n);default:return null}})}function gm(e,t){return async(n,o)=>{var r,a;const i=await e.unary(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(r=o?.onHeader)===null||r===void 0||r.call(o,i.header),(a=o?.onTrailer)===null||a===void 0||a.call(o,i.trailer),i.message}}function pm(e,t){return(n,o)=>Gs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,Ss([n]),o?.contextValues),o)}function Am(e,t){return async(n,o)=>{var r,a,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 p=!0,R=Vs(u.message),V;V=await R.next(),r=V.done,!r;p=!0)s=V.value,p=!1,h=s,f++}catch(X){a={error:X}}finally{try{!p&&!r&&(i=R.return)&&await i.call(R)}finally{if(a)throw a.error}}if(!h)throw new B("protocol error: missing response message",S.Unimplemented);if(f>1)throw new B("protocol error: received extra messages for client streaming method",S.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,u.trailer),h}}function fm(e,t){return(n,o)=>Gs(e.stream(t,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function Gs(e,t){const n=(function(){return bm(this,arguments,function*(){var o,r;const a=yield Et(e);(o=t?.onHeader)===null||o===void 0||o.call(t,a.header),yield Et(yield*hm(Vs(a.message))),(r=t?.onTrailer)===null||r===void 0||r.call(t,a.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Zm(...e){const t=new AbortController,n=e.filter(r=>r!==void 0).concat(t.signal);for(const r of n){if(r.aborted){o.apply(r);break}r.addEventListener("abort",o)}function o(){t.signal.aborted||t.abort(Lt(this));for(const r of n)r.removeEventListener("abort",o)}return t}function Rm(e){const t=new AbortController,n=()=>{t.abort(new B("the operation timed out",S.DeadlineExceeded))};let o;return e!==void 0&&(e<=0?n():o=setTimeout(n,e)),{signal:t.signal,cleanup:()=>clearTimeout(o)}}function Lt(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 va(){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 Em(e){const t=new Headers,n=new TextDecoder().decode(e).split(`\r
52
+ `);for(const o of n){if(o==="")continue;const r=o.indexOf(":");if(r>0){const a=o.substring(0,r).trim(),i=o.substring(r+1).trim();t.append(a,i)}}return t}function Sm(e){const t=[];return e.forEach((n,o)=>{t.push(`${o}: ${n}\r
53
+ `)}),new TextEncoder().encode(t.join(""))}function Wa(){return{serialize:Sm,parse:Em}}var Vm="Content-Type",Ns="Grpc-Encoding",Gm="Grpc-Accept-Encoding",Nm="Grpc-Timeout",vs="Grpc-Status";var vm="Grpc-Status-Details-Bin",Wm="User-Agent",ym="X-User-Agent",Im="X-Grpc-Web",Xm="application/grpc-web+proto",Ym="application/grpc-web+json";function We(e,t,...n){if(n.length>0)throw new Error;return e.services[t]}var Cm=oe("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[$i]),Bm=v(Cm,0);function Ws(e){var t;const n=e.get(vm);if(n!=null){const r=qu(n,Bm);if(r.code==0)return;const a=new B(r.message,r.code,e);return a.details=r.details.map(i=>({type:i.typeUrl.substring(i.typeUrl.lastIndexOf("/")+1),value:i.value})),a.isWireError=!0,a}const o=e.get(vs);if(o!=null){if(o==="0")return;const r=parseInt(o,10);let a;return r in S?a=new B(decodeURIComponent((t=e.get("Grpc-Message"))!==null&&t!==void 0?t:""),r,e):a=new B(`invalid grpc-status: ${o}`,S.Internal,e),a.isWireError=!0,a}}function ya(e,t){return e.toString().replace(/\/?$/,`/${t.parent.typeName}/${t.name}`)}function ys(e,t){return ce(e,t)}function wm(e,t){function n(o){return o.done===!0?o:{done:o.done,value:ys(e,o.value)}}return{[Symbol.asyncIterator](){const o=t[Symbol.asyncIterator](),r={next:()=>o.next().then(n)};return o.throw!==void 0&&(r.throw=a=>o.throw(a).then(n)),o.return!==void 0&&(r.return=a=>o.return(a).then(n)),r}}}function Is(e,t){if(!t)return e;for(const n of t.concat().reverse())e=n(e);return e}function Fm(e){var t;const n=Object.assign({},e);return(t=n.ignoreUnknownFields)!==null&&t!==void 0||(n.ignoreUnknownFields=!0),n}function Ia(e,t,n,o){const r=Pt(Xa(e.input,t),o),a=Pt(Ya(e.input,n),o),i=Pt(Xa(e.output,t),o),s=Pt(Ya(e.output,n),o);return{getI(l){return l?r:a},getO(l){return l?i:s}}}function Pt(e,t){return{serialize(n){const o=e.serialize(n);return om(t.writeMaxBytes,o.byteLength),o},parse(n){return Rs(t.readMaxBytes,n.byteLength,!0),e.parse(n)}}}function Xa(e,t){return{parse(n){try{return Ht(e,n,t)}catch(o){throw new B(`parse binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}},serialize(n){try{return Pi(e,n,t)}catch(o){throw new B(`serialize binary: ${o instanceof Error?o.message:String(o)}`,S.Internal)}}}}function Ya(e,t){var n,o;const r=(n=t?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,a=(o=t?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,i=Fm(t);return{parse(s){try{return Fu(e,a.decode(s),i)}catch(l){throw B.from(l,S.InvalidArgument)}},serialize(s){try{const l=Zu(e,s,i);return r.encode(l)}catch(l){throw B.from(l,S.Internal)}}}}function km(e){const t=Is(e.next,e.interceptors),[n,o,r]=Xs(e);return t(Object.assign(Object.assign({},e.req),{message:ys(e.req.method.input,e.req.message),signal:n})).then(a=>(r(),a),o)}function Um(e){const t=Is(e.next,e.interceptors),[n,o,r]=Xs(e),a=Object.assign(Object.assign({},e.req),{message:wm(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(a).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){const l=s.message[Symbol.asyncIterator]();return{next(){return!i&&n.aborted?o(Lt(n)):l.next().then(c=>(c.done==!0&&(i=!0,r()),c),o)}}}}}),o)}function Xs(e){const{signal:t,cleanup:n}=Rm(e.timeoutMs),o=Zm(e.signal,t);return[o.signal,function(a){const i=o.signal.aborted?B.from(Lt(o.signal),S.Canceled):B.from(a);return o.abort(i),n(),Promise.reject(i)},function(){n(),o.abort()}]}var Jm=oe("CiVoYWdpY29kZS9jb21tb24vdjEvZXJyb3JfZGV0YWlsLnByb3RvEhJoYWdpY29kZS5jb21tb24udjEiQgoLRXJyb3JEZXRhaWwSDAoEY29kZRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIoqgIlUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW1vbi5WMWIGcHJvdG8z",[Ue]),xm=v(Jm,0),$={REFUSED:1,USAGE:2,SAGA_RESOURCE_CONFLICT:4,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,QUOTA_UNKNOWN:34,HTTP_CLIENT_ERROR:40,HTTP_SERVER_ERROR:50,TRANSPORT:60,UNKNOWN:70},N=class extends Error{constructor(e){super(e),this.name="CliUsageError"}},U=class extends Error{constructor(e){super(e),this.name="CliOperationFailedError"}},Km=class extends Error{constructor(e){super(`Saga resources conflict with existing files: ${e.join(", ")}. Re-run with --force to replace them.`),this.name="SagaResourceConflictError"}},T=class extends Error{reasons;details;reported;constructor(e,t={}){super(e.join("; ")),this.name="CliSagaRefusalError",this.reasons=e,this.details=t.details??{},this.reported=t.reported??!1}},mo=class extends Error{constructor(e){super(e),this.name="CliQuotaUnknownError"}},Do=class extends Error{constructor(e){super(e),this.name="CliWaitTimeoutError"}},et=class extends Error{errorCode;reported;constructor(e,t={}){super(e),this.name="CliLockLostError",this.errorCode=t.errorCode,this.reported=t.reported??!1}},ye=class extends Error{status;details;constructor(e,t,n){super(t),this.name="CliHttpError",this.status=e,this.details=n}};function _o(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return e}function St(e,t){const n=_o(e)?.[t];return typeof n=="string"&&n.trim()?n.trim():void 0}function $o(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 Ca(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 zm={[S.InvalidArgument]:400,[S.OutOfRange]:400,[S.Unauthenticated]:401,[S.PermissionDenied]:403,[S.NotFound]:404,[S.AlreadyExists]:409,[S.FailedPrecondition]:409,[S.Aborted]:409,[S.Unimplemented]:501,[S.Internal]:500,[S.Unknown]:500,[S.DataLoss]:500,[S.Unavailable]:503,[S.DeadlineExceeded]:504},Lm=/exceeds?\s+the\s+maximum|too\s+large|payload\s+too\s+large/i;function jm(e){return e.code===S.ResourceExhausted?Lm.test(e.rawMessage)?413:429:zm[e.code]??500}function Tm(e){return e.code!==S.Unavailable&&e.code!==S.Unknown&&e.code!==S.Internal&&e.code!==S.Aborted?!1:e.cause instanceof Error||$o(e.rawMessage)}function vn(e){if(!(e instanceof B)||e.code===S.Canceled||Tm(e))return;const[t]=e.findDetails(xm),n=t&&t.code.length>0?t.code:void 0,o=t?.data??{},r=e.rawMessage.trim()||`The backend rejected the request (${S[e.code]}).`;return{status:jm(e),message:r,code:n,body:{error:r,...n?{code:n}:{},...o}}}function Ys(e){if(!(e instanceof B)||e.code!==S.FailedPrecondition)return;const t=vn(e);return new et(t?.message??e.rawMessage,{errorCode:t?.code})}function Cs(e){return e instanceof B?e.code===S.Unavailable||e.code===S.DeadlineExceeded||e.code!==S.Canceled&&vn(e)===void 0:e instanceof Error&&$o(e.message)}function Ba(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 Bs(e,t={}){if(e instanceof N)return{exitCode:$.USAGE,message:e.message};if(e instanceof U)return{exitCode:$.OPERATION_FAILED,message:e.message};if(e instanceof Km)return{exitCode:$.SAGA_RESOURCE_CONFLICT,message:e.message};if(e instanceof T)return{exitCode:$.REFUSED,message:[e.reasons.length>1?"Refused:":"Refused.",...e.reasons.map(n=>` - ${n}`)].join(`
54
+ `),details:{errors:e.reasons}};if(e instanceof mo)return{exitCode:$.QUOTA_UNKNOWN,message:e.message};if(e instanceof Do)return{exitCode:$.WAIT_TIMEOUT,message:e.message};if(e instanceof et)return{exitCode:$.LOCK_LOST,message:e.message,errorCode:e.errorCode};if(e instanceof ye)return{exitCode:Ca(e.status),status:e.status,message:e.message,details:e.details};if(e instanceof B){const n=vn(e);if(n){const o=Qm(n.body);return{exitCode:Ca(n.status),status:n.status,message:o.length>0?[n.message,...o].join(`
55
+ `):n.message,errorCode:St(n.body,"errorCode")??n.code,correlationId:St(n.body,"correlationId"),details:n.body}}return e.code===S.Canceled?{exitCode:$.UNKNOWN,message:"The request was cancelled."}:Ba(e.rawMessage,t)}return e instanceof Error?$o(e.message)?Ba(e.message,t):{exitCode:$.UNKNOWN,message:e.message}:{exitCode:$.UNKNOWN,message:String(e)}}function Hm(e){const t=_o(e)?.errors;return Array.isArray(t)?t.flatMap(n=>{const o=St(n,"field"),r=St(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function Qm(e){const t=_o(e)?.fieldErrors;return Array.isArray(t)?t.flatMap(n=>{const o=St(n,"field"),r=St(n,"message");return o&&r?[` - ${o}: ${r}`]:[]}):[]}function ws(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)}
56
+ `;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}`,...Hm(e.details)].join(`
57
+ `)+`
58
+ `}var Mm="--base-url",Om="HAGI_API_BASE_URL";function Ee(e){const t=e?.trim();return t||void 0}function Po(e=process.env){return(0,E.join)(Ee(e.XDG_CONFIG_HOME)??(0,E.join)((0,ec.homedir)(),".config"),"hagi","config.json")}function Fs(e){const t=Po(e);let n;try{n=(0,Y.readFileSync)(t,"utf8")}catch(r){if(r.code==="ENOENT")return;throw new N(`Cannot read CLI config file ${t}: ${r instanceof Error?r.message:String(r)}`)}let o;try{o=JSON.parse(n)}catch{throw new N(`CLI config file ${t} is not valid JSON.`)}return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function Dm(e=process.env){const t=Fs(e)?.baseUrl;return typeof t=="string"?Ee(t):void 0}function _m(e=process.env){const t=Fs(e)?.steer;if(t===void 0||typeof t=="boolean")return t;throw new N(`CLI config file ${Po(e)} has a "steer" value that is not true or false.`)}function $m(e={},t=process.env){const n=Ee(e.baseUrl)??Ee(t.HAGI_API_BASE_URL)??Dm(t);if(!n)throw new N(`No backend base URL is configured. Set ${Mm} <url>, the ${Om} environment variable, or "baseUrl" in ${Po(t)}.`);return{baseUrl:n,token:Ee(e.token)??Ee(t.HAGI_API_TOKEN),lang:Ee(e.lang)??Ee(t.HAGI_API_LANG)}}var jt;function Pm(e={},t=process.env){return jt=$m(e,t),jt}function ks(){if(!jt)throw new N("The backend connection is not configured. Resolve the API runtime before calling the backend.");return jt}function qm(){return Ee(jt?.baseUrl)}var se=oe("CiFoYWdpY29kZS9wcm9qZWN0L3YxL3Byb2plY3QucHJvdG8SE2hhZ2ljb2RlLnByb2plY3QudjEiSwoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSMwoEYm9keRgBIAEoCzIlLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdER0byJIChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USLwoGcmVzdWx0GAEgASgLMh8uaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0RHRvIhoKGENyZWF0ZURlbW9Qcm9qZWN0UmVxdWVzdCJMChlDcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEi8KBnJlc3VsdBgBIAEoCzIfLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdER0byJXChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIzCgRib2R5GAIgASgLMiUuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0RHRvIkgKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIvCgZyZXN1bHQYASABKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REdG8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIkUKHkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB3JlZnJlc2gYAiABKAgiZwofR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzUmVzcG9uc2VEdG8iPgooR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInsKKUdldFByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8ikAEKKVNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSTwoEYm9keRgCIAEoCzJBLmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3REdG8ifAoqU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlc3BvbnNlEk4KBnJlc3VsdBgBIAEoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50RG9jdW1lbnREdG8iMwodR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJdCh5HZXRNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvIiwKFlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJWChdSZWxvYWRNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8igAEKIUNsb25lTW9ub1NwZWNzUmVwb3NpdG9yaWVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkcKBGJvZHkYAiABKAsyOS5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yaWVzUmVxdWVzdER0byJwCiJDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0byJpCihSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEg0KBWZvcmNlGAMgASgIQgcKBV9wYXRoInQKKVJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0byIwChpJbml0aWFsaXplTW9ub1NwZWNzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIloKG0luaXRpYWxpemVNb25vU3BlY3NSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnREdG8ifgogVXBkYXRlTW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRJGCgRib2R5GAIgASgLMjguaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0byJgCiFVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50RHRvImcKH0dldFByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIcCg9yZXBvc2l0b3J5X3BhdGgYAiABKAlIAIgBAUISChBfcmVwb3NpdG9yeV9wYXRoImEKIEdldFByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdERlc2lnbkRvY3VtZW50RHRvIoABCiBTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEkgKBGJvZHkYAiABKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8ibAohU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3BvbnNlEkcKBnJlc3VsdBgBIAEoCzI3LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlc3VsdER0byI2CiBHZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJImMKIUdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXNwb25zZRI+CgZyZXN1bHQYASABKAsyLi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhEdG8iRwojR2V0UHJvamVjdERlc2lnblNpdGVEb2N1bWVudFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRzbHVnGAIgASgJImkKJEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlRG9jdW1lbnREdG8ieQocVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKC2JyYW5jaF9uYW1lGAIgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgDIAEoCUgAiAEBQhIKEF9yZXBvc2l0b3J5X3BhdGgiYQodVmFsaWRhdGVQcm9qZWN0QnJhbmNoUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucHJvamVjdC52MS5CcmFuY2hWYWxpZGF0aW9uUmVzcG9uc2VEdG8iKgoaVmFsaWRhdGVQcm9qZWN0UGF0aFJlcXVlc3QSDAoEcGF0aBgBIAEoCSJdChtWYWxpZGF0ZVByb2plY3RQYXRoUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5QYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvIlcKGlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0EjkKBGJvZHkYASABKAsyKy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc1JlcXVlc3REdG8iWwobU2NhbkdpdFJlcG9zaXRvcmllc1Jlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnByb2plY3QudjEuU2NhbkdpdFJlcG9zUmVzcG9uc2VEdG8iYAoeVmFsaWRhdGVNb25vU3BlY3NDb25maWdSZXF1ZXN0Ej4KBGJvZHkYASABKAsyMC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzUmVxdWVzdER0byJkCh9WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAEoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVNb25vU3BlY3NSZXNwb25zZUR0byItChdHZXRQcm9qZWN0VmF1bHRzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlUKGEdldFByb2plY3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIqABCh5PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgCIAEoCUgAiAEBEhUKCHN1Yl9wYXRoGAMgASgJSAGIAQFCHQobX2N1cnJlbnRfaW50ZXJmYWNlX2xhbmd1YWdlQgsKCV9zdWJfcGF0aCJlCh9PcGVuUHJvamVjdEluQ29kZVNlcnZlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnByb2plY3QudjEuVnNDb2RlU2VydmVyTGF1bmNoUmVzcG9uc2VEdG8iNQofR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIl4KIEdldFByb2plY3RHaXRXYXRjaFN0YXR1c1Jlc3BvbnNlEjoKBnJlc3VsdBgBIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdEdpdFdhdGNoU3RhdHVzIkAKDlN1YlJlcG9JbmZvRHRvEgwKBG5hbWUYASABKAkSDAoEcGF0aBgCIAEoCRISCgpoYXNfYWdlbnRzGAMgASgIIvEDCgpQcm9qZWN0RHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjEKDWNyZWF0aW9uX3RpbWUYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKFmxhc3RfbW9kaWZpY2F0aW9uX3RpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWlzX21vbm9fc3BlY3MYByABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAggASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgJIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgKIAEoCEgDiAEBEj0KEHN1Yl9yZXBvc2l0b3JpZXMYCyADKAsyIy5oYWdpY29kZS5wcm9qZWN0LnYxLlN1YlJlcG9JbmZvRHRvQg4KDF9kZXNjcmlwdGlvbkIVChNfbW9ub19zcGVjc192ZXJzaW9uQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiWAoQQ3JlYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iWAoQVXBkYXRlUHJvamVjdER0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i5gIKG1Byb2plY3RTdGFuZGFyZFdvcmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIWCglwYXJlbnRfaWQYAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEg0KBW9yZGVyGAUgASgFEhMKC3NvdXJjZV90eXBlGAYgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAcgASgJEgwKBHRhZ3MYCCADKAkSFQoIbGFuZ3VhZ2UYCSABKAlIAYgBARJQCghtZXRhZGF0YRgKIAMoCzI+LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIu0CChxQcm9qZWN0U3RhbmRhcmRXb3JkUGhyYXNlRHRvEhAKCGdyb3VwX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIWCg5zdWJtaXR0ZWRfdGV4dBgEIAEoCRIPCgdlbmFibGVkGAUgASgIEg0KBW9yZGVyGAYgASgFEhMKC3NvdXJjZV90eXBlGAcgASgJEhwKFHNvdXJjZV9yZWxhdGl2ZV9wYXRoGAggASgJEgwKBHRhZ3MYCSADKAkSFQoIbGFuZ3VhZ2UYCiABKAlIAIgBARJRCghtZXRhZGF0YRgLIAMoCzI/LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFBocmFzZUR0by5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUILCglfbGFuZ3VhZ2UinAEKHFByb2plY3RTdGFuZGFyZFdvcmRTb3VyY2VEdG8SDAoEdHlwZRgBIAEoCRIVCg1yZWxhdGl2ZV9wYXRoGAIgASgJEhEKCWZ1bGxfcGF0aBgDIAEoCRIOCgZleGlzdHMYBCABKAgSNAoQbGFzdF9tb2RpZmllZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiygEKIVByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGAoLc291cmNlX3R5cGUYBCABKAlIAIgBARIaCg1yZWxhdGl2ZV9wYXRoGAUgASgJSAGIAQESEgoFZmllbGQYBiABKAlIAogBAUIOCgxfc291cmNlX3R5cGVCEAoOX3JlbGF0aXZlX3BhdGhCCAoGX2ZpZWxkIr0DCh9Qcm9qZWN0U3RhbmRhcmRXb3Jkc1Jlc3BvbnNlRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZnJvbV9jYWNoZRgFIAEoCBJCCgdzb3VyY2VzGAYgAygLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3JkU291cmNlRHRvEkAKBmdyb3VwcxgHIAMoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZEdyb3VwRHRvEkIKB3BocmFzZXMYCCADKAsyMS5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRQaHJhc2VEdG8SSwoLZGlhZ25vc3RpY3MYCSADKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRGlhZ25vc3RpY0R0byK6AgolUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZVBocmFzZUR0bxILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAkSFgoOc3VibWl0dGVkX3RleHQYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSACIAQESWgoIbWV0YWRhdGEYCCADKAsySC5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCwoJX2xhbmd1YWdlIpIDCiRQcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBINCgVvcmRlchgFIAEoBRIMCgR0YWdzGAYgAygJEhUKCGxhbmd1YWdlGAcgASgJSAGIAQESWQoIbWV0YWRhdGEYCCADKAsyRy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVHcm91cER0by5NZXRhZGF0YUVudHJ5EksKB3BocmFzZXMYCSADKAsyOi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzRWRpdGFibGVQaHJhc2VEdG8aLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9wYXJlbnRfaWRCCwoJX2xhbmd1YWdlIsQBCiVQcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEhMKC3NvdXJjZV90eXBlGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhMKC2dyb3VwX2NvdW50GAQgASgFEhQKDHBocmFzZV9jb3VudBgFIAEoBRI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLWAQokUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhMKC3NvdXJjZV90eXBlGAIgASgJEhUKDXJlbGF0aXZlX3BhdGgYAyABKAkSEQoJZnVsbF9wYXRoGAQgASgJEg4KBmV4aXN0cxgFIAEoCBI0ChBsYXN0X21vZGlmaWVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglzaWduYXR1cmUYByABKAkilgEKIVByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxITCgtncm91cF9jb3VudBgBIAEoBRIUCgxwaHJhc2VfY291bnQYAiABKAUSHAoUZGlzYWJsZWRfZW50cnlfY291bnQYAyABKAUSEQoJdGFnX2NvdW50GAQgASgFEhUKDXNvdXJjZV9zdGF0dXMYBSABKAki8wQKKVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudERvY3VtZW50RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFAoMcHJvamVjdF9yb290GAMgASgJEi0KCWxvYWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoGZ3JvdXBzGAUgAygLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0VkaXRhYmxlR3JvdXBEdG8SQgoHc291cmNlcxgGIAMoCzIxLmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZFNvdXJjZUR0bxJaChZ1c2VyX292ZXJsYXlfc3VtbWFyaWVzGAcgAygLMjouaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc092ZXJsYXlTdW1tYXJ5RHRvEkoKCnN0YXRpc3RpY3MYCCABKAsyNi5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3RTdGFuZGFyZFdvcmRzU3RhdGlzdGljc0R0bxJRCg5zb3VyY2VfdmVyc2lvbhgJIAEoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNTb3VyY2VWZXJzaW9uRHRvEksKC2RpYWdub3N0aWNzGAogAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc0RpYWdub3N0aWNEdG8i5AEKLFNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0RHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgJEkkKBmdyb3VwcxgCIAMoCzI5LmhhZ2ljb2RlLnByb2plY3QudjEuUHJvamVjdFN0YW5kYXJkV29yZHNFZGl0YWJsZUdyb3VwRHRvElEKDnNvdXJjZV92ZXJzaW9uGAMgASgLMjkuaGFnaWNvZGUucHJvamVjdC52MS5Qcm9qZWN0U3RhbmRhcmRXb3Jkc1NvdXJjZVZlcnNpb25EdG8iVQojTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEhIKCnZhbHVlX2tpbmQYAyABKAki5gQKIE1vbm9TcGVjc01hbmFnZW1lbnRSZXBvc2l0b3J5RHRvEgwKBG5hbWUYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEgwKBHBhdGgYAyABKAkSEAoDdXJsGAQgASgJSAGIAQESGQoMZGlzcGxheV9uYW1lGAUgASgJSAKIAQESEQoEdHlwZRgGIAEoCUgDiAEBEhEKBGljb24YByABKAlIBIgBARIQCghvcHRpb25hbBgIIAEoCBIMCgR0YWdzGAkgAygJEkoKCG1ldGFkYXRhGAogAygLMjguaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50TWV0YWRhdGFFbnRyeUR0bxIZChFpc192YWxpZF9naXRfcmVwbxgLIAEoCBITCgZicmFuY2gYDCABKAlIBYgBARIfChdoYXNfdW5jb21taXR0ZWRfY2hhbmdlcxgNIAEoCBIdChV1bnB1c2hlZF9jb21taXRfY291bnQYDiABKAUSGwoTaGFzX3RyYWNraW5nX2JyYW5jaBgPIAEoCBI1Cg90cmFja2luZ19icmFuY2gYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSEwoLYWhlYWRfY291bnQYESABKAUSFAoMYmVoaW5kX2NvdW50GBIgASgFEhcKCnN5bmNfc3RhdGUYEyABKAlIBogBAUIHCgVfY29kZUIGCgRfdXJsQg8KDV9kaXNwbGF5X25hbWVCBwoFX3R5cGVCBwoFX2ljb25CCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSKiAgoWTW9ub1NwZWNzTWFuYWdlbWVudER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhMKC2NvbmZpZ19wYXRoGAMgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYBCABKAgSFAoMeWFtbF9wcmV2aWV3GAUgASgJEksKDHJlcG9zaXRvcmllcxgGIAMoCzI1LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudFJlcG9zaXRvcnlEdG8SSgoIbWV0YWRhdGEYByADKAsyOC5oYWdpY29kZS5wcm9qZWN0LnYxLk1vbm9TcGVjc01hbmFnZW1lbnRNZXRhZGF0YUVudHJ5RHRvImMKIU1vbm9TcGVjc0Nsb25lUmVwb3NpdG9yeVJlc3VsdER0bxIMCgRwYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQFCCgoIX21lc3NhZ2UicAolTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXNwb25zZUR0bxJHCgdyZXN1bHRzGAEgAygLMjYuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDbG9uZVJlcG9zaXRvcnlSZXN1bHREdG8iTwokTW9ub1NwZWNzQ2xvbmVSZXBvc2l0b3JpZXNSZXF1ZXN0RHRvEg0KBXBhdGhzGAEgAygJEhgKEGluY2x1ZGVfb3B0aW9uYWwYAiABKAgiZQoiTW9ub1NwZWNzUmVtb3ZlQ2hlY2tvdXRSZXNwb25zZUR0bxIMCgRwYXRoGAEgASgJEg8KB3JlbW92ZWQYAiABKAgSFAoHbWVzc2FnZRgDIAEoCUgAiAEBQgoKCF9tZXNzYWdlIoQCCiNVcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVxdWVzdER0bxIPCgd2ZXJzaW9uGAEgASgJEhYKDnJlcG9fZGlyZWN0b3J5GAIgASgJEhsKE2NvbW1pdF93aGVuX2FyY2hpdmUYAyABKAgSSwoMcmVwb3NpdG9yaWVzGAQgAygLMjUuaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NNYW5hZ2VtZW50UmVwb3NpdG9yeUR0bxJKCghtZXRhZGF0YRgFIAMoCzI4LmhhZ2ljb2RlLnByb2plY3QudjEuTW9ub1NwZWNzTWFuYWdlbWVudE1ldGFkYXRhRW50cnlEdG8inQEKGFByb2plY3REZXNpZ25Eb2N1bWVudER0bxIMCgRwYXRoGAEgASgJEhwKD3JlcG9zaXRvcnlfcGF0aBgCIAEoCUgAiAEBEg8KB2NvbnRlbnQYAyABKAkSDgoGZXhpc3RzGAQgASgIEhQKB3ZlcnNpb24YBSABKAlIAYgBAUISChBfcmVwb3NpdG9yeV9wYXRoQgoKCF92ZXJzaW9uIoYBCiJTYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzdWx0RHRvEgwKBHBhdGgYASABKAkSHAoPcmVwb3NpdG9yeV9wYXRoGAIgASgJSACIAQESDwoHY3JlYXRlZBgDIAEoCBIPCgd2ZXJzaW9uGAQgASgJQhIKEF9yZXBvc2l0b3J5X3BhdGgingEKJVVwZGF0ZVByb2plY3REZXNpZ25Eb2N1bWVudFJlcXVlc3REdG8SHAoPcmVwb3NpdG9yeV9wYXRoGAEgASgJSACIAQESDwoHY29udGVudBgCIAEoCRIdChBleHBlY3RlZF92ZXJzaW9uGAMgASgJSAGIAQFCEgoQX3JlcG9zaXRvcnlfcGF0aEITChFfZXhwZWN0ZWRfdmVyc2lvbiLAAQoeUHJvamVjdERlc2lnblNpdGVJbmRleEVudHJ5RHRvEgwKBHNsdWcYASABKAkSDQoFdGl0bGUYAiABKAkSDwoHc3VtbWFyeRgDIAEoCRISCgpkZXRhaWxfdXJsGAQgASgJEhsKE2Rlc2lnbl9kb3dubG9hZF91cmwYBSABKAkSHwoXcHJldmlld19saWdodF9pbWFnZV91cmwYBiABKAkSHgoWcHJldmlld19kYXJrX2ltYWdlX3VybBgHIAEoCSK+AgoZUHJvamVjdERlc2lnblNpdGVJbmRleER0bxITCgtjYXRhbG9nX3VybBgBIAEoCRIVCg1zb3VyY2Vfc3RhdHVzGAIgASgJEhMKC2VudHJ5X2NvdW50GAMgASgFEkQKB2VudHJpZXMYBCADKAsyMy5oYWdpY29kZS5wcm9qZWN0LnYxLlByb2plY3REZXNpZ25TaXRlSW5kZXhFbnRyeUR0bxIaCg1jYWNoZV9jb250cm9sGAUgASgJSACIAQESEgoFZV90YWcYBiABKAlIAYgBARIaCg1sYXN0X21vZGlmaWVkGAcgASgJSAKIAQESFAoHZXhwaXJlcxgIIAEoCUgDiAEBQhAKDl9jYWNoZV9jb250cm9sQggKBl9lX3RhZ0IQCg5fbGFzdF9tb2RpZmllZEIKCghfZXhwaXJlcyKZAgocUHJvamVjdERlc2lnblNpdGVEb2N1bWVudER0bxIMCgRzbHVnGAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB2NvbnRlbnQYAyABKAkSEgoKZGV0YWlsX3VybBgEIAEoCRIbChNkZXNpZ25fZG93bmxvYWRfdXJsGAUgASgJEhoKDWNhY2hlX2NvbnRyb2wYBiABKAlIAIgBARISCgVlX3RhZxgHIAEoCUgBiAEBEhoKDWxhc3RfbW9kaWZpZWQYCCABKAlIAogBARIUCgdleHBpcmVzGAkgASgJSAOIAQFCEAoOX2NhY2hlX2NvbnRyb2xCCAoGX2VfdGFnQhAKDl9sYXN0X21vZGlmaWVkQgoKCF9leHBpcmVzImoKG0JyYW5jaFZhbGlkYXRpb25SZXNwb25zZUR0bxIOCgZleGlzdHMYASABKAgSEAoIaXNfdmFsaWQYAiABKAgSFAoMaXNfYXZhaWxhYmxlGAMgASgIEhMKC2JyYW5jaF9uYW1lGAQgASgJIogDChlQYXRoVmFsaWRhdGlvblJlc3BvbnNlRHRvEhAKCGlzX3ZhbGlkGAEgASgIEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhYKCXBhdGhfdHlwZRgEIAEoCUgAiAEBEiIKFWhhc19tb25vX3NwZWNzX2NvbmZpZxgFIAEoCEgBiAEBEiMKFm1vbm9fc3BlY3NfY29uZmlnX3BhdGgYBiABKAlIAogBARImChltb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5GAcgASgJSAOIAQESKwoebW9ub19zcGVjc19jb21taXRfd2hlbl9hcmNoaXZlGAggASgISASIAQFCDAoKX3BhdGhfdHlwZUIYChZfaGFzX21vbm9fc3BlY3NfY29uZmlnQhkKF19tb25vX3NwZWNzX2NvbmZpZ19wYXRoQhwKGl9tb25vX3NwZWNzX3JlcG9fZGlyZWN0b3J5QiEKH19tb25vX3NwZWNzX2NvbW1pdF93aGVuX2FyY2hpdmUiVgoKR2l0UmVwb0R0bxIMCgRuYW1lGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNcmVsYXRpdmVfcGF0aBgDIAEoCRIVCg1pc19tb25vX3NwZWNzGAQgASgIIqQBChdTY2FuR2l0UmVwb3NSZXNwb25zZUR0bxI1CgxyZXBvc2l0b3JpZXMYASADKAsyHy5oYWdpY29kZS5wcm9qZWN0LnYxLkdpdFJlcG9EdG8SEwoLdG90YWxfY291bnQYAiABKAUSDwoHc3VjY2VzcxgDIAEoCBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UijwEKFlNjYW5HaXRSZXBvc1JlcXVlc3REdG8SEQoJcm9vdF9wYXRoGAEgASgJEhEKCW1heF9kZXB0aBgCIAEoBRIWCg5leGNsdWRlX2hpZGRlbhgDIAEoCBIdChVtYXhfZm9sZGVyc19wZXJfbGV2ZWwYBCABKAUSGAoQZXhjbHVkZV9wYXR0ZXJucxgFIAMoCSJEChlNb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEg8KB3ZlcnNpb24YASABKAkSFgoOcmVwb19kaXJlY3RvcnkYAiABKAkikgEKHFZhbGlkYXRlTW9ub1NwZWNzUmVzcG9uc2VEdG8SEAoIaXNfdmFsaWQYASABKAgSPgoGY29uZmlnGAIgASgLMi4uaGFnaWNvZGUucHJvamVjdC52MS5Nb25vU3BlY3NDb25maWdEZXRhaWxzRHRvEhAKCHdhcm5pbmdzGAMgAygJEg4KBmVycm9ycxgEIAMoCSIzChtWYWxpZGF0ZU1vbm9TcGVjc1JlcXVlc3REdG8SFAoMcHJvamVjdF9wYXRoGAEgASgJInwKG1ZhdWx0Qm9vdHN0cmFwRGlhZ25vc3RpY0R0bxIQCghzZXZlcml0eRgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSGgoNcmVsYXRpdmVfcGF0aBgEIAEoCUgAiAEBQhAKDl9yZWxhdGl2ZV9wYXRoIt8CCgxWYXVsdEl0ZW1EdG8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEhUKDXBoeXNpY2FsX3BhdGgYBCABKAkSFAoHZ2l0X3VybBgFIAEoCUgAiAEBEjIKDmNyZWF0ZWRfYXRfdXRjGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVkX2F0X3V0YxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASTwoVYm9vdHN0cmFwX2RpYWdub3N0aWNzGAggAygLMjAuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEJvb3RzdHJhcERpYWdub3N0aWNEdG8SDQoFc2NvcGUYCSABKAkSFwoKcHJvamVjdF9pZBgKIAEoCUgBiAEBQgoKCF9naXRfdXJsQg0KC19wcm9qZWN0X2lkIn4KFFZhdWx0TGlzdFJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKBWl0ZW1zGAIgAygLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8inwQKHFZzQ29kZVNlcnZlclJ1bnRpbWVTdGF0dXNEdG8SDgoGc3RhdHVzGAEgASgJEhsKE2FjdGl2ZV9jYXBhYmlsaXRpZXMYAiADKAkSEQoEaG9zdBgDIAEoCUgAiAEBEhwKD2NvbmZpZ3VyZWRfcG9ydBgEIAEoBUgBiAEBEhsKDmVmZmVjdGl2ZV9wb3J0GAUgASgFSAKIAQESFQoIYmFzZV91cmwYBiABKAlIA4gBARIWCglhdXRoX21vZGUYByABKAlIBIgBARITCgZzb3VyY2UYCCABKAlIBYgBARIVCg1zb3VyY2VfbG9ja2VkGAkgASgIEhIKCmhhc19zZWNyZXQYCiABKAgSGgoNc2VjcmV0X3NvdXJjZRgLIAEoCUgGiAEBEjkKFWxhc3RfYXR0ZW1wdGVkX2F0X3V0YxgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKbGFzdF9lcnJvchgNIAEoCUgHiAEBEhsKDnN0YXR1c19tZXNzYWdlGA4gASgJSAiIAQFCBwoFX2hvc3RCEgoQX2NvbmZpZ3VyZWRfcG9ydEIRCg9fZWZmZWN0aXZlX3BvcnRCCwoJX2Jhc2VfdXJsQgwKCl9hdXRoX21vZGVCCQoHX3NvdXJjZUIQCg5fc2VjcmV0X3NvdXJjZUINCgtfbGFzdF9lcnJvckIRCg9fc3RhdHVzX21lc3NhZ2UinAIKHVZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvEhIKCmxhdW5jaF91cmwYASABKAkSHQoQY29ubmVjdGlvbl90b2tlbhgCIAEoCUgAiAEBEhEKCW9wZW5fbW9kZRgDIAEoCRJCCgdydW50aW1lGAQgASgLMjEuaGFnaWNvZGUucHJvamVjdC52MS5Wc0NvZGVTZXJ2ZXJSdW50aW1lU3RhdHVzRHRvEhgKC2luc3RhbmNlX2lkGAUgASgJSAGIAQESMgoOZXhwaXJlc19hdF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhMKEV9jb25uZWN0aW9uX3Rva2VuQg4KDF9pbnN0YW5jZV9pZCKXAgoVUHJvamVjdEdpdFdhdGNoU3RhdHVzEh4KFm1vbml0b3JlZF9yZXBvc2l0b3JpZXMYASADKAkSNAoQbGFzdF9zY2FuX2F0X3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbmV4dF9zY2FuX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQcmVwb3NpdG9yeV9jb3VudBgEIAEoBRISCgppc19ydW5uaW5nGAUgASgIEiIKGm1heF9tb25pdG9yZWRfcmVwb3NpdG9yaWVzGAYgASgFEiAKGGdpdF9hdXRvX3JlZnJlc2hfZW5hYmxlZBgHIAEoCDL1GAoOUHJvamVjdFNlcnZpY2USZgoNQ3JlYXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJyChFDcmVhdGVEZW1vUHJvamVjdBItLmhhZ2ljb2RlLnByb2plY3QudjEuQ3JlYXRlRGVtb1Byb2plY3RSZXF1ZXN0Gi4uaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVEZW1vUHJvamVjdFJlc3BvbnNlEmYKDVVwZGF0ZVByb2plY3QSKS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USZgoNRGVsZXRlUHJvamVjdBIpLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaKi5oYWdpY29kZS5wcm9qZWN0LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRKEAQoXR2V0UHJvamVjdFN0YW5kYXJkV29yZHMSMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RTdGFuZGFyZFdvcmRzUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFN0YW5kYXJkV29yZHNSZXNwb25zZRKiAQohR2V0UHJvamVjdFN0YW5kYXJkV29yZHNNYW5hZ2VtZW50Ej0uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXF1ZXN0Gj4uaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKlAQoiU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudBI+LmhhZ2ljb2RlLnByb2plY3QudjEuU2F2ZVByb2plY3RTdGFuZGFyZFdvcmRzTWFuYWdlbWVudFJlcXVlc3QaPy5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0U3RhbmRhcmRXb3Jkc01hbmFnZW1lbnRSZXNwb25zZRKBAQoWR2V0TW9ub1NwZWNzTWFuYWdlbWVudBIyLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0TW9ub1NwZWNzTWFuYWdlbWVudFJlcXVlc3QaMy5oYWdpY29kZS5wcm9qZWN0LnYxLkdldE1vbm9TcGVjc01hbmFnZW1lbnRSZXNwb25zZRJsCg9SZWxvYWRNb25vU3BlY3MSKy5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1JlcXVlc3QaLC5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbG9hZE1vbm9TcGVjc1Jlc3BvbnNlEo0BChpDbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllcxI2LmhhZ2ljb2RlLnByb2plY3QudjEuQ2xvbmVNb25vU3BlY3NSZXBvc2l0b3JpZXNSZXF1ZXN0GjcuaGFnaWNvZGUucHJvamVjdC52MS5DbG9uZU1vbm9TcGVjc1JlcG9zaXRvcmllc1Jlc3BvbnNlEqIBCiFSZW1vdmVNb25vU3BlY3NSZXBvc2l0b3J5Q2hlY2tvdXQSPS5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlcXVlc3QaPi5oYWdpY29kZS5wcm9qZWN0LnYxLlJlbW92ZU1vbm9TcGVjc1JlcG9zaXRvcnlDaGVja291dFJlc3BvbnNlEngKE0luaXRpYWxpemVNb25vU3BlY3MSLy5oYWdpY29kZS5wcm9qZWN0LnYxLkluaXRpYWxpemVNb25vU3BlY3NSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5Jbml0aWFsaXplTW9ub1NwZWNzUmVzcG9uc2USigEKGVVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZU1vbm9TcGVjc01hbmFnZW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5VcGRhdGVNb25vU3BlY3NNYW5hZ2VtZW50UmVzcG9uc2UShwEKGEdldFByb2plY3REZXNpZ25Eb2N1bWVudBI0LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVxdWVzdBo1LmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGVNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnQSNS5oYWdpY29kZS5wcm9qZWN0LnYxLlNhdmVQcm9qZWN0RGVzaWduRG9jdW1lbnRSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5TYXZlUHJvamVjdERlc2lnbkRvY3VtZW50UmVzcG9uc2USigEKGUdldFByb2plY3REZXNpZ25TaXRlSW5kZXgSNS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlSW5kZXhSZXF1ZXN0GjYuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZUluZGV4UmVzcG9uc2USkwEKHEdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnQSOC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3REZXNpZ25TaXRlRG9jdW1lbnRSZXF1ZXN0GjkuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0RGVzaWduU2l0ZURvY3VtZW50UmVzcG9uc2USfgoVVmFsaWRhdGVQcm9qZWN0QnJhbmNoEjEuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXF1ZXN0GjIuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RCcmFuY2hSZXNwb25zZRJ4ChNWYWxpZGF0ZVByb2plY3RQYXRoEi8uaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZVByb2plY3RQYXRoUmVxdWVzdBowLmhhZ2ljb2RlLnByb2plY3QudjEuVmFsaWRhdGVQcm9qZWN0UGF0aFJlc3BvbnNlEngKE1NjYW5HaXRSZXBvc2l0b3JpZXMSLy5oYWdpY29kZS5wcm9qZWN0LnYxLlNjYW5HaXRSZXBvc2l0b3JpZXNSZXF1ZXN0GjAuaGFnaWNvZGUucHJvamVjdC52MS5TY2FuR2l0UmVwb3NpdG9yaWVzUmVzcG9uc2UShAEKF1ZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnEjMuaGFnaWNvZGUucHJvamVjdC52MS5WYWxpZGF0ZU1vbm9TcGVjc0NvbmZpZ1JlcXVlc3QaNC5oYWdpY29kZS5wcm9qZWN0LnYxLlZhbGlkYXRlTW9ub1NwZWNzQ29uZmlnUmVzcG9uc2USbwoQR2V0UHJvamVjdFZhdWx0cxIsLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0UHJvamVjdFZhdWx0c1JlcXVlc3QaLS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFByb2plY3RWYXVsdHNSZXNwb25zZRKEAQoXT3BlblByb2plY3RJbkNvZGVTZXJ2ZXISMy5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5Qcm9qZWN0SW5Db2RlU2VydmVyUmVxdWVzdBo0LmhhZ2ljb2RlLnByb2plY3QudjEuT3BlblByb2plY3RJbkNvZGVTZXJ2ZXJSZXNwb25zZRKHAQoYR2V0UHJvamVjdEdpdFdhdGNoU3RhdHVzEjQuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXF1ZXN0GjUuaGFnaWNvZGUucHJvamVjdC52MS5HZXRQcm9qZWN0R2l0V2F0Y2hTdGF0dXNSZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlByb2plY3QuVjFiBnByb3RvMw",[Ne,rs]),eh=v(se,1),th=v(se,5),nh=v(se,15),oh=v(se,17),rh=v(se,19),ah=v(se,21),ih=v(se,23),sh=v(se,25),lh=v(se,41),ch=v(se,50),dh=v(se,51),uh=v(se,69),mh=v(se,71),hh=v(se,85),bh=We(se,0),Je=oe("Ch9oYWdpY29kZS9wcm9qZWN0L3YxL3ZhdWx0LnByb3RvEhNoYWdpY29kZS5wcm9qZWN0LnYxIhMKEUxpc3RWYXVsdHNSZXF1ZXN0Ik8KEkxpc3RWYXVsdHNSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0TGlzdFJlc3BvbnNlRHRvIk4KEkNyZWF0ZVZhdWx0UmVxdWVzdBI4CgRib2R5GAEgASgLMiouaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3REdG8iSAoTQ3JlYXRlVmF1bHRSZXNwb25zZRIxCgZyZXN1bHQYASABKAsyIS5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0SXRlbUR0byJaChJVcGRhdGVWYXVsdFJlcXVlc3QSCgoCaWQYASABKAkSOAoEYm9keRgCIAEoCzIqLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXF1ZXN0RHRvIkgKE1VwZGF0ZVZhdWx0UmVzcG9uc2USMQoGcmVzdWx0GAEgASgLMiEuaGFnaWNvZGUucHJvamVjdC52MS5WYXVsdEl0ZW1EdG8iPAoSRGVsZXRlVmF1bHRSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEmRlbGV0ZV9sb2NhbF9maWxlcxgCIAEoCCJSChNEZWxldGVWYXVsdFJlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXNwb25zZUR0byI+ChRHZXRWYXVsdEZpbGVzUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRwYXRoGAIgASgJSACIAQFCBwoFX3BhdGgiVgoVR2V0VmF1bHRGaWxlc1Jlc3BvbnNlEj0KBnJlc3VsdBgBIAEoCzItLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlTGlzdFJlc3BvbnNlRHRvIjYKGkdldFZhdWx0RmlsZVByZXZpZXdSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBHBhdGgYAiABKAkiXwobR2V0VmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlEkAKBnJlc3VsdBgBIAEoCzIwLmhhZ2ljb2RlLnByb2plY3QudjEuVmF1bHRGaWxlUHJldmlld1Jlc3BvbnNlRHRvIo4BChxPcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARInChpjdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZRgDIAEoCUgBiAEBQgcKBV9wYXRoQh0KG19jdXJyZW50X2ludGVyZmFjZV9sYW5ndWFnZSJjCh1PcGVuVmF1bHRJbkNvZGVTZXJ2ZXJSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wcm9qZWN0LnYxLlZzQ29kZVNlcnZlckxhdW5jaFJlc3BvbnNlRHRvImwKFUNyZWF0ZVZhdWx0UmVxdWVzdER0bxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSFQoNcGh5c2ljYWxfcGF0aBgDIAEoCRIUCgdnaXRfdXJsGAQgASgJSACIAQFCCgoIX2dpdF91cmwibAoVVXBkYXRlVmF1bHRSZXF1ZXN0RHRvEgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhQKB2dpdF91cmwYBCABKAlIAIgBAUIKCghfZ2l0X3VybCKdAQoWRGVsZXRlVmF1bHRSZXNwb25zZUR0bxIKCgJpZBgBIAEoCRIPCgdkZWxldGVkGAIgASgIEiQKHGRlbGV0ZV9sb2NhbF9maWxlc19yZXF1ZXN0ZWQYAyABKAgSIwobbG9jYWxfZmlsZXNfZGVsZXRpb25fc3RhdHVzGAQgASgJEhsKE2xvY2FsX2ZpbGVzX2RlbGV0ZWQYBSABKAgizAEKEVZhdWx0RmlsZUVudHJ5RHRvEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSEQoJZmlsZV9uYW1lGAIgASgJEhQKDGlzX2RpcmVjdG9yeRgDIAEoCBIRCglleHRlbnNpb24YBCABKAkSEgoKc2l6ZV9ieXRlcxgFIAEoAxI1ChFsYXN0X21vZGlmaWVkX3V0YxgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRcHJldmlld19zdXBwb3J0ZWQYByABKAgimAIKGFZhdWx0RmlsZUxpc3RSZXNwb25zZUR0bxIQCgh2YXVsdF9pZBgBIAEoCRISCgp2YXVsdF9uYW1lGAIgASgJEhUKDXBoeXNpY2FsX3BhdGgYAyABKAkSDgoGc3RhdHVzGAQgASgJEhcKCmVycm9yX2NvZGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFAoMaXNfdHJ1bmNhdGVkGAcgASgIEhgKEHRvdGFsX2ZpbGVfY291bnQYCCABKAUSNQoFaXRlbXMYCSADKAsyJi5oYWdpY29kZS5wcm9qZWN0LnYxLlZhdWx0RmlsZUVudHJ5RHRvQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIpQDChtWYXVsdEZpbGVQcmV2aWV3UmVzcG9uc2VEdG8SEAoIdmF1bHRfaWQYASABKAkSEgoKdmF1bHRfbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhUKDXJlbGF0aXZlX3BhdGgYBCABKAkSEQoJZmlsZV9uYW1lGAUgASgJEhEKCWV4dGVuc2lvbhgGIAEoCRISCgpzaXplX2J5dGVzGAcgASgDEjUKEWxhc3RfbW9kaWZpZWRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzdGF0dXMYCSABKAkSFwoKZXJyb3JfY29kZRgKIAEoCUgAiAEBEhQKB21lc3NhZ2UYCyABKAlIAYgBARIZChFwcmV2aWV3X3N1cHBvcnRlZBgMIAEoCBIZChFjb250ZW50X3RydW5jYXRlZBgNIAEoCBIUCgdjb250ZW50GA4gASgJSAKIAQFCDQoLX2Vycm9yX2NvZGVCCgoIX21lc3NhZ2VCCgoIX2NvbnRlbnQy9QUKDFZhdWx0U2VydmljZRJdCgpMaXN0VmF1bHRzEiYuaGFnaWNvZGUucHJvamVjdC52MS5MaXN0VmF1bHRzUmVxdWVzdBonLmhhZ2ljb2RlLnByb2plY3QudjEuTGlzdFZhdWx0c1Jlc3BvbnNlEmAKC0NyZWF0ZVZhdWx0EicuaGFnaWNvZGUucHJvamVjdC52MS5DcmVhdGVWYXVsdFJlcXVlc3QaKC5oYWdpY29kZS5wcm9qZWN0LnYxLkNyZWF0ZVZhdWx0UmVzcG9uc2USYAoLVXBkYXRlVmF1bHQSJy5oYWdpY29kZS5wcm9qZWN0LnYxLlVwZGF0ZVZhdWx0UmVxdWVzdBooLmhhZ2ljb2RlLnByb2plY3QudjEuVXBkYXRlVmF1bHRSZXNwb25zZRJgCgtEZWxldGVWYXVsdBInLmhhZ2ljb2RlLnByb2plY3QudjEuRGVsZXRlVmF1bHRSZXF1ZXN0GiguaGFnaWNvZGUucHJvamVjdC52MS5EZWxldGVWYXVsdFJlc3BvbnNlEmYKDUdldFZhdWx0RmlsZXMSKS5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZXNSZXF1ZXN0GiouaGFnaWNvZGUucHJvamVjdC52MS5HZXRWYXVsdEZpbGVzUmVzcG9uc2USeAoTR2V0VmF1bHRGaWxlUHJldmlldxIvLmhhZ2ljb2RlLnByb2plY3QudjEuR2V0VmF1bHRGaWxlUHJldmlld1JlcXVlc3QaMC5oYWdpY29kZS5wcm9qZWN0LnYxLkdldFZhdWx0RmlsZVByZXZpZXdSZXNwb25zZRJ+ChVPcGVuVmF1bHRJbkNvZGVTZXJ2ZXISMS5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlcXVlc3QaMi5oYWdpY29kZS5wcm9qZWN0LnYxLk9wZW5WYXVsdEluQ29kZVNlcnZlclJlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuUHJvamVjdC5WMWIGcHJvdG8z",[Ne,se]),gh=v(Je,1),ph=v(Je,3),Ah=v(Je,5),fh=v(Je,7),Zh=v(Je,9),Rh=v(Je,11),Eh=v(Je,14),Sh=v(Je,15),Vh=We(Je,0),Qe=oe("CitoYWdpY29kZS9jb21tdW5pdHkvdjEvc2NoZWR1bGVkX3BsYW5zLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiQwoZTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiWgoaTGlzdFNjaGVkdWxlZFBsYW5zUmVzcG9uc2USPAoGcmVzdWx0GAEgAygLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSIlChdHZXRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJYChhHZXRTY2hlZHVsZWRQbGFuUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5SZXNwb25zZSI2CiBMaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIm0KIUxpc3RTY2hlZHVsZWRQbGFuUHJvYmxlbXNSZXNwb25zZRJICgZyZXN1bHQYASADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkRlZmluaXRpb25Qcm9ibGVtRHRvIvMBCiNMaXN0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VzUmVxdWVzdBIYCgtyYW5nZV9zdGFydBgBIAEoCUgAiAEBEhYKCXJhbmdlX2VuZBgCIAEoCUgBiAEBEh4KEWRpc3BsYXlfdGltZV96b25lGAMgASgJSAKIAQESEwoGY3Vyc29yGAQgASgJSAOIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgEiAEBQg4KDF9yYW5nZV9zdGFydEIMCgpfcmFuZ2VfZW5kQhQKEl9kaXNwbGF5X3RpbWVfem9uZUIJCgdfY3Vyc29yQg0KC19wcm9qZWN0X2lkInIKJExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VQYWdlUmVzcG9uc2UiWwoaQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSPQoEYm9keRgBIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiZwoaVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkSPQoEYm9keRgCIAEoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuU2F2ZVJlcXVlc3QiWwobVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoaRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiHQobRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlInkKIkVkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkSRwoEYm9keRgCIAEoCzI5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0ImMKI0VkaXRTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiYAokRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhoKDW9jY3VycmVuY2VfYXQYAiABKAlIAIgBAUIQCg5fb2NjdXJyZW5jZV9hdCJlCiVEZWxldGVTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiJQoXUnVuU2NoZWR1bGVkUGxhblJlcXVlc3QSCgoCaWQYASABKAkiVQoYUnVuU2NoZWR1bGVkUGxhblJlc3BvbnNlEjkKBnJlc3VsdBgBIAEoCzIpLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXNzaW9uUmVzcG9uc2VEdG8iJwoZU3RhcnRTY2hlZHVsZWRQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpTdGFydFNjaGVkdWxlZFBsYW5SZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvIjUKJ0NvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBIKCgJpZBgBIAEoCSJuCihDb25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUnVuQWNjZXB0ZWREdG8iNAomQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlcXVlc3QSCgoCaWQYASABKAkiZwonQ2FuY2VsU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUmVzcG9uc2UiKAoVU2NoZWR1bGVkUGxhbkFnZW50RHRvEg8KB2hlcm9faWQYASABKAkiawoZU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxIQCghzdHJhdGVneRgBIAEoCRI8CgZhZ2VudHMYAiADKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50RHRvIuABCidTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USKgoGcnVuX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgRuYW1lGAIgASgJSACIAQESRAoKYWdlbnRfcG9vbBgDIAEoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuQWdlbnRQb29sRHRvEicKB3BheWxvYWQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFX25hbWUi4wEKHlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIvCgtvcmlnaW5hbF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEa2luZBgCIAEoCRJQCghvdmVycmlkZRgDIAEoCzI+LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuT2NjdXJyZW5jZU92ZXJyaWRlUmVzcG9uc2USHAoPaW5wdXRfZmlsZV9wYXRoGAQgASgJSACIAQFCEgoQX2lucHV0X2ZpbGVfcGF0aCI4ChZTY2hlZHVsZWRQbGFuUmVwZWF0RHRvEgwKBHJ1bGUYASABKAkSEAoId2Vla2RheXMYAiADKAkiiAIKGlNjaGVkdWxlZFBsYW5RdW90YVJlc2V0RHRvEhMKBndpbmRvdxgBIAEoCUgAiAEBEiIKFW1pbl9yZW1haW5pbmdfcGVyY2VudBgCIAEoBUgBiAEBEiUKGG1heF9taW51dGVzX2JlZm9yZV9yZXNldBgDIAEoBUgCiAEBEigKG3JlcXVpcmVfbWFudWFsX2NvbmZpcm1hdGlvbhgEIAEoCEgDiAEBQgkKB193aW5kb3dCGAoWX21pbl9yZW1haW5pbmdfcGVyY2VudEIbChlfbWF4X21pbnV0ZXNfYmVmb3JlX3Jlc2V0Qh4KHF9yZXF1aXJlX21hbnVhbF9jb25maXJtYXRpb24i9wIKGFNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxIMCgRtb2RlGAEgASgJEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdGltZV96b25lGAMgASgJSACIAQESFwoKc3RhcnRfZGF0ZRgEIAEoCUgBiAEBEhUKCGVuZF9kYXRlGAUgASgJSAKIAQESGAoLdGltZV9vZl9kYXkYBiABKAlIA4gBARI9CgZyZXBlYXQYByABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlcGVhdER0bxJGCgtxdW90YV9yZXNldBgIIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TY2hlZHVsZWRQbGFuUXVvdGFSZXNldER0b0IMCgpfdGltZV96b25lQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki0AYKFVNjaGVkdWxlZFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEg0KBXNjb3BlGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSIQoUZGVmaW5pdGlvbl9maWxlX3BhdGgYBSABKAlIAIgBARIMCgRuYW1lGAYgASgJEg8KB2VuYWJsZWQYByABKAgSEQoEaWNvbhgIIAEoCUgBiAEBEhIKBWNvbG9yGAkgASgJSAKIAQESLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoIc2NoZWR1bGUYDCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblNjaGVkdWxlRHRvEkQKCmFnZW50X3Bvb2wYDSABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGA4gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg0KBXN0YXRlGA8gASgJEi8KC25leHRfcnVuX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgpleGNlcHRpb25zGBEgAygLMjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5FeGNlcHRpb25SZXNwb25zZRIcCg9pbnB1dF9maWxlX3BhdGgYEiABKAlIA4gBARI7ChdsYXN0X3RyaWdnZXJlZF9yZXNldF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASWQoVcGVuZGluZ19xdW90YV90cmlnZ2VyGBQgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5QZW5kaW5nUXVvdGFUcmlnZ2VyRHRvQhcKFV9kZWZpbml0aW9uX2ZpbGVfcGF0aEIHCgVfaWNvbkIICgZfY29sb3JCEgoQX2lucHV0X2ZpbGVfcGF0aCKJAQojU2NoZWR1bGVkUGxhblBlbmRpbmdRdW90YVRyaWdnZXJEdG8SLQoJcmFpc2VkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg93aW5kb3dfcmVzZXRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkcKIVNjaGVkdWxlZFBsYW5EZWZpbml0aW9uUHJvYmxlbUR0bxIRCglmaWxlX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLTAQofU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIMCgRtb2RlGAEgASgJEhEKBHJ1bGUYAiABKAlIAIgBARIQCgh3ZWVrZGF5cxgDIAMoCRIXCgpzdGFydF9kYXRlGAQgASgJSAGIAQESFQoIZW5kX2RhdGUYBSABKAlIAogBARIYCgt0aW1lX29mX2RheRgGIAEoCUgDiAEBQgcKBV9ydWxlQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIOCgxfdGltZV9vZl9kYXki6gMKH1NjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USDwoHcGxhbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKDW9jY3VycmVuY2VfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSDAoEdHlwZRgFIAEoCRIPCgdlbmFibGVkGAYgASgIEhEKBGljb24YByABKAlIAIgBARISCgVjb2xvchgIIAEoCUgBiAEBEg0KBXN0YXRlGAkgASgJEh8KEnNjaGVkdWxlX3RpbWVfem9uZRgKIAEoCUgCiAEBEkoKCnJlY3VycmVuY2UYCyABKAsyNi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhblJlY3VycmVuY2VSZXNwb25zZRIvCgtuZXh0X3J1bl9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLb3JpZ2luYWxfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2lzX21vZGlmaWVkGA4gASgIQgcKBV9pY29uQggKBl9jb2xvckIVChNfc2NoZWR1bGVfdGltZV96b25lIpMCCiNTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZVBhZ2VSZXNwb25zZRIvCgtyYW5nZV9zdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJcmFuZ2VfZW5kGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFkaXNwbGF5X3RpbWVfem9uZRgDIAEoCRJHCgdlbnRyaWVzGAQgAygLMjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2USGAoLbmV4dF9jdXJzb3IYBSABKAlIAIgBAUIOCgxfbmV4dF9jdXJzb3Ii0QIKGFNjaGVkdWxlZFBsYW5TYXZlUmVxdWVzdBIMCgR0eXBlGAEgASgJEhIKBXNjb3BlGAIgASgJSACIAQESDAoEbmFtZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEhEKBGljb24YBSABKAlIAYgBARISCgVjb2xvchgGIAEoCUgCiAEBEkEKCHNjaGVkdWxlGAcgASgLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5TY2hlZHVsZUR0bxJECgphZ2VudF9wb29sGAggASgLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNjaGVkdWxlZFBsYW5BZ2VudFBvb2xEdG8SJwoHcGF5bG9hZBgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIICgZfc2NvcGVCBwoFX2ljb25CCAoGX2NvbG9yIo4CCiJTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZUVkaXRSZXF1ZXN0EjEKDW9jY3VycmVuY2VfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKBnJ1bl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoEbmFtZRgDIAEoCUgAiAEBEkQKCmFnZW50X3Bvb2wYBCABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2NoZWR1bGVkUGxhbkFnZW50UG9vbER0bxInCgdwYXlsb2FkGAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQgcKBV9uYW1lIs4DChJDaGF0SGVyb1N1bW1hcnlEdG8SDwoHaGVyb19pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBSABKAkSGQoMYWdlbnRfY2xpX2lkGAYgASgJSAKIAQESGwoOYWdlbnRfY2xpX25hbWUYByABKAlIA4gBARIbCg5hZ2VudF9jbGlfaWNvbhgIIAEoCUgEiAEBEhUKCG1vZGVsX2lkGAkgASgJSAWIAQESFwoKbW9kZWxfbmFtZRgKIAEoCUgGiAEBEhcKCm1vZGVsX2ljb24YCyABKAlIB4gBARIiChVzZWNvbmRhcnlfbW9kZWxfbGFiZWwYDCABKAlICIgBAUIOCgxfZGVzY3JpcHRpb25CBwoFX2ljb25CDwoNX2FnZW50X2NsaV9pZEIRCg9fYWdlbnRfY2xpX25hbWVCEQoPX2FnZW50X2NsaV9pY29uQgsKCV9tb2RlbF9pZEINCgtfbW9kZWxfbmFtZUINCgtfbW9kZWxfaWNvbkIYChZfc2Vjb25kYXJ5X21vZGVsX2xhYmVsIjgKFE9wZW5TcGVjVGFza1Byb2dyZXNzEhEKCWNvbXBsZXRlZBgBIAEoBRINCgV0b3RhbBgCIAEoBSKAAgoQT3BlblNwZWNGaWxlSW5mbxIRCglmaWxlX25hbWUYASABKAkSFQoNcmVsYXRpdmVfcGF0aBgCIAEoCRIOCgZleGlzdHMYAyABKAgSEQoJZmlsZV90eXBlGAQgASgJEhMKC2lzX3JlcXVpcmVkGAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEjEKDWFyY2hpdmVkX2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkIKDXRhc2tfcHJvZ3Jlc3MYCCABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuT3BlblNwZWNUYXNrUHJvZ3Jlc3MiXgoRT3BlblNwZWNGaWxlc0luZm8SEQoJYmFzZV9wYXRoGAEgASgJEjYKBWZpbGVzGAIgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLk9wZW5TcGVjRmlsZUluZm8izAEKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCEIXChVfZXhlY3V0aW9uX21lc3NhZ2VfaWQigAEKFlNlc3Npb25Ob3RpZmljYXRpb25EdG8SDAoEa2luZBgBIAEoCRIvCgtvYnNlcnZlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoHcGF5bG9hZBgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSLtAQoWU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIaCg1wcm9tcHRfdG9rZW5zGAEgASgFSACIAQESIQoUY2FjaGVkX3Byb21wdF90b2tlbnMYAiABKAVIAYgBARIeChFjb21wbGV0aW9uX3Rva2VucxgDIAEoBUgCiAEBEjMKD2xhc3RfdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCEAoOX3Byb21wdF90b2tlbnNCFwoVX2NhY2hlZF9wcm9tcHRfdG9rZW5zQhQKEl9jb21wbGV0aW9uX3Rva2VucyJfChRTdGFnZUV4ZWN1dG9ySW5mb0R0bxIVCg1wcm92aWRlcl90eXBlGAEgASgJEjAKDGxhc3RfdXBkYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAivAIKFVN0YWdlSGVyb1NlbGVjdGlvbkR0bxIRCglzdGFnZV9rZXkYASABKAkSEgoKc2NyaXB0X2tleRgCIAEoCRIVCg1zY2VuYXJpb19uYW1lGAMgASgJEhQKB2hlcm9faWQYBCABKAlIAIgBARIWCgloZXJvX25hbWUYBSABKAlIAYgBARIWCgloZXJvX2ljb24YBiABKAlIAogBARIVCg1leGVjdXRvcl90eXBlGAcgASgJEhUKDXVzZWRfZmFsbGJhY2sYCCABKAgSGAoQc2VsZWN0aW9uX3NvdXJjZRgJIAEoCRIvCgtzZWxlY3RlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uIrcLChJTZXNzaW9uUmVzcG9uc2VEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRINCgV0aXRsZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhwKD2NoaWVmX2NvbXBsYWludBgEIAEoCUgBiAEBEgwKBGNvZGUYBSABKAUSDAoEdHlwZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJaXNfYWN0aXZlGAggASgIEjIKDmxhc3RfYWN0aXZlX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwcm9qZWN0X2lkGAogASgJEhQKDHByb2plY3RfbmFtZRgLIAEoCRIUCgxwcm9qZWN0X3BhdGgYDCABKAkSGgoNcHJvcG9zYWxfbmFtZRgNIAEoCUgCiAEBEkEKD29wZW5fc3BlY19maWxlcxgOIAEoCzIoLmhhZ2ljb2RlLmNvbW11bml0eS52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSRQoOcXVldWVfbWVzc2FnZXMYECADKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuUXVldWVNZXNzYWdlU3VtbWFyeUR0bxIeChF3b3JraW5nX2RpcmVjdG9yeRgRIAEoCUgDiAEBEhUKCG1ldGFkYXRhGBIgASgJSASIAQESHwoSY2hhdF9leGVjdXRvcl90eXBlGBMgASgJSAWIAQESPAoJY2hhdF9oZXJvGBQgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoYXRIZXJvU3VtbWFyeUR0bxJbChJzdGFnZV9leGVjdXRvcl9tYXAYFSADKAsyPy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJmChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyRC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlSGVyb1NlbGVjdGlvbk1hcEVudHJ5EiAKE3J1bnRpbWVfbW9kZWxfbGFiZWwYFyABKAlIBogBARI5ChVwcm9jZXNzaW5nX3N0YXJ0ZWRfYXQYGCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDXNlc3Npb25fdXNhZ2UYGSABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuU2Vzc2lvblVzYWdlU3VtbWFyeUR0bxIcCg9wcmV2aW91c19zdGF0dXMYGiABKAlIB4gBARJECg1ub3RpZmljYXRpb25zGBsgAygLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8aZAoVU3RhZ2VFeGVjdXRvck1hcEVudHJ5EgsKA2tleRgBIAEoCRI6CgV2YWx1ZRgCIAEoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaagoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YWdlSGVyb1NlbGVjdGlvbkR0bzoCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMiLgobU2NoZWR1bGVkUGxhblJ1bkFjY2VwdGVkRHRvEg8KB3BsYW5faWQYASABKAkymQ4KFVNjaGVkdWxlZFBsYW5zU2VydmljZRJ5ChJMaXN0U2NoZWR1bGVkUGxhbnMSMC5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5zUmVxdWVzdBoxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhbnNSZXNwb25zZRJzChBHZXRTY2hlZHVsZWRQbGFuEi4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXF1ZXN0Gi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNjaGVkdWxlZFBsYW5SZXNwb25zZRKOAQoZTGlzdFNjaGVkdWxlZFBsYW5Qcm9ibGVtcxI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVxdWVzdBo4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0U2NoZWR1bGVkUGxhblByb2JsZW1zUmVzcG9uc2USlwEKHExpc3RTY2hlZHVsZWRQbGFuT2NjdXJyZW5jZXMSOi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1JlcXVlc3QaOy5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlc1Jlc3BvbnNlEnwKE0NyZWF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ3JlYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE1VwZGF0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBkYXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEnwKE0RlbGV0ZVNjaGVkdWxlZFBsYW4SMS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhblJlc3BvbnNlEpQBChtFZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRWRpdFNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVxdWVzdBo6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5FZGl0U2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXNwb25zZRKaAQodRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2USOy5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlU2NoZWR1bGVkUGxhbk9jY3VycmVuY2VSZXF1ZXN0GjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVNjaGVkdWxlZFBsYW5PY2N1cnJlbmNlUmVzcG9uc2UScwoQUnVuU2NoZWR1bGVkUGxhbhIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SdW5TY2hlZHVsZWRQbGFuUmVzcG9uc2USeQoSU3RhcnRTY2hlZHVsZWRQbGFuEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlN0YXJ0U2NoZWR1bGVkUGxhblJlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuU3RhcnRTY2hlZHVsZWRQbGFuUmVzcG9uc2USowEKIENvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbmZpcm1TY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyUmVxdWVzdBo/LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db25maXJtU2NoZWR1bGVkUGxhblF1b3RhVHJpZ2dlclJlc3BvbnNlEqABCh9DYW5jZWxTY2hlZHVsZWRQbGFuUXVvdGFUcmlnZ2VyEj0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXF1ZXN0Gj4uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNhbmNlbFNjaGVkdWxlZFBsYW5RdW90YVRyaWdnZXJSZXNwb25zZUIrqgIoUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvbW11bml0eS5WMWIGcHJvdG8z",[Ue,Ne]),Gh=v(Qe,1),Nh=v(Qe,3),vh=v(Qe,9),Wh=v(Qe,11),yh=v(Qe,19),Ih=v(Qe,21),wa=v(Qe,39),Xh=We(Qe,0),Yh=oe("Ci1oYWdpY29kZS9jb21tdW5pdHkvdjEvY29tbXVuaXR5X3ByZXNldHMucHJvdG8SFWhhZ2ljb2RlLmNvbW11bml0eS52MSIdChtMaXN0Q29tbXVuaXR5UHJlc2V0c1JlcXVlc3QiYwocTGlzdENvbW11bml0eVByZXNldHNSZXNwb25zZRJDCgZyZXN1bHQYASABKAsyMy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RSZXNwb25zZUR0byJmCh1JbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVxdWVzdBJFCgRib2R5GAEgASgLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvImwKHkluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8ifAogU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3QSEQoJcHJlc2V0X2lkGAEgASgJEkUKBGJvZHkYAiABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8ibwohU2V0Q29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRPcGVyYXRpb25SZXNwb25zZUR0byI0Ch9Vbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXF1ZXN0EhEKCXByZXNldF9pZBgBIAEoCSJuCiBVbmluc3RhbGxDb21tdW5pdHlQcmVzZXRSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0T3BlcmF0aW9uUmVzcG9uc2VEdG8iIAoeUmVmcmVzaENvbW11bml0eVByZXNldHNSZXF1ZXN0IiEKH1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UihwEKFkNvbW11bml0eVByZXNldFJpc2tEdG8SGQoRZGVjbGFyZXNfY29tbWFuZHMYASABKAgSFwoPZGVjbGFyZXNfc2tpbGxzGAIgASgIEhYKDmRlY2xhcmVzX2hvb2tzGAMgASgIEiEKGWRlY2xhcmVzX2NsaV9yZXF1aXJlbWVudHMYBCABKAgi2QQKGExvY2FsSGFnaVRhc2tMaXN0SXRlbUR0bxIRCglwcmVzZXRfaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAkSEwoLc291cmNlX2tpbmQYBCABKAkSGQoRaW5zdGFsbGF0aW9uX2tpbmQYBSABKAkSFwoPbWFuYWdlbWVudF9raW5kGAYgASgJEiAKGGlzX3Nlc3Npb25fY3JlYXRpb25fb25seRgHIAEoCBIPCgdlbmFibGVkGAggASgIEhQKDGlzX3JlbW92YWJsZRgJIAEoCBIRCglwdWJsaXNoZXIYCiABKAkSHQoQc291cmNlX3JlZmVyZW5jZRgLIAEoCUgAiAEBEhsKDmFyY2hpdmVfc2hhMjU2GAwgASgJSAGIAQESNAoQaW5zdGFsbGVkX2F0X3V0YxgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoScmVsYXRpdmVfZGlyZWN0b3J5GA4gASgJEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAKIAQESPAoFcmlza3MYECABKAsyLS5oYWdpY29kZS5jb21tdW5pdHkudjEuQ29tbXVuaXR5UHJlc2V0Umlza0R0bxIWCglzb3VyY2VfaWQYESABKAlIA4gBARIRCgRpY29uGBIgASgJSASIAQFCEwoRX3NvdXJjZV9yZWZlcmVuY2VCEQoPX2FyY2hpdmVfc2hhMjU2Qg4KDF9kZXNjcmlwdGlvbkIMCgpfc291cmNlX2lkQgcKBV9pY29uIloKHVByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgRwYXRoGAMgASgJSACIAQFCBwoFX3BhdGgiqQEKHExvY2FsSGFnaVRhc2tMaXN0UmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxIYWdpVGFza0xpc3RJdGVtRHRvEkkKC2RpYWdub3N0aWNzGAIgAygLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQbHVnaW5EaWFnbm9zdGljRHRvIqwDCh5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SEQoJcHJlc2V0X2lkGAEgASgJEhYKCW5hbWVzcGFjZRgCIAEoCUgAiAEBEg8KB3ZlcnNpb24YAyABKAkSEQoJcHVibGlzaGVyGAQgASgJEh0KEHNvdXJjZV9yZWZlcmVuY2UYBSABKAlIAYgBARIWCg5hcmNoaXZlX3NoYTI1NhgGIAEoCRI0ChBpbnN0YWxsZWRfYXRfdXRjGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJyZWxhdGl2ZV9kaXJlY3RvcnkYCCABKAkSDwoHZW5hYmxlZBgJIAEoCBI8CgVyaXNrcxgKIAEoCzItLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRSaXNrRHRvEhYKCXNvdXJjZV9pZBgLIAEoCUgCiAEBEhEKBGljb24YDCABKAlIA4gBAUIMCgpfbmFtZXNwYWNlQhMKEV9zb3VyY2VfcmVmZXJlbmNlQgwKCl9zb3VyY2VfaWRCBwoFX2ljb24ilAIKI0NvbW11bml0eVByZXNldE9wZXJhdGlvblJlc3BvbnNlRHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIWCglwcmVzZXRfaWQYAiABKAlIAIgBARISCgVlcnJvchgDIAEoCUgBiAEBEksKDGluc3RhbGxhdGlvbhgEIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Db21tdW5pdHlQcmVzZXRJbnN0YWxsYXRpb25EdG8SSQoLZGlhZ25vc3RpY3MYBSADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG9CDAoKX3ByZXNldF9pZEIICgZfZXJyb3IisgIKIENvbW11bml0eVByZXNldEluc3RhbGxSZXF1ZXN0RHRvEhYKDmFyY2hpdmVfYmFzZTY0GAEgASgJEh8KEmV4cGVjdGVkX3ByZXNldF9pZBgCIAEoCUgAiAEBEh0KEGV4cGVjdGVkX3ZlcnNpb24YAyABKAlIAYgBARIcCg9leHBlY3RlZF9zaGEyNTYYBCABKAlIAogBARIWCglwdWJsaXNoZXIYBSABKAlIA4gBARIdChBzb3VyY2VfcmVmZXJlbmNlGAYgASgJSASIAQFCFQoTX2V4cGVjdGVkX3ByZXNldF9pZEITChFfZXhwZWN0ZWRfdmVyc2lvbkISChBfZXhwZWN0ZWRfc2hhMjU2QgwKCl9wdWJsaXNoZXJCEwoRX3NvdXJjZV9yZWZlcmVuY2UiMwogQ29tbXVuaXR5UHJlc2V0RW5hYmxlZFJlcXVlc3REdG8SDwoHZW5hYmxlZBgBIAEoCDLMBQoXQ29tbXVuaXR5UHJlc2V0c1NlcnZpY2USfwoUTGlzdENvbW11bml0eVByZXNldHMSMi5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdENvbW11bml0eVByZXNldHNSZXF1ZXN0GjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RDb21tdW5pdHlQcmVzZXRzUmVzcG9uc2UShQEKFkluc3RhbGxDb21tdW5pdHlQcmVzZXQSNC5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNS5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbENvbW11bml0eVByZXNldFJlc3BvbnNlEo4BChlTZXRDb21tdW5pdHlQcmVzZXRFbmFibGVkEjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXF1ZXN0GjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldENvbW11bml0eVByZXNldEVuYWJsZWRSZXNwb25zZRKLAQoYVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0EjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbENvbW11bml0eVByZXNldFJlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuVW5pbnN0YWxsQ29tbXVuaXR5UHJlc2V0UmVzcG9uc2USiAEKF1JlZnJlc2hDb21tdW5pdHlQcmVzZXRzEjUuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlZnJlc2hDb21tdW5pdHlQcmVzZXRzUmVxdWVzdBo2LmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZWZyZXNoQ29tbXVuaXR5UHJlc2V0c1Jlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ne]),qo=oe("CihoYWdpY29kZS9jb21tdW5pdHkvdjEvcHJlc2V0X3Rhc2tzLnByb3RvEhVoYWdpY29kZS5jb21tdW5pdHkudjEiHQobR2V0UHJlc2V0VGFza0NhdGFsb2dSZXF1ZXN0ImMKHEdldFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8ibwoiQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrUmVxdWVzdER0byJzCiNDaGVja1ByZXNldFRhc2tSZXF1aXJlbWVudHNSZXNwb25zZRJMCgZyZXN1bHQYASABKAsyPC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tSZXNwb25zZUR0byIeChxMaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0ImIKHUxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEkEKBnJlc3VsdBgBIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hU3VtbWFyeUR0byI0ChpHZXRQcmVzZXRUYXNrU2NoZW1hUmVxdWVzdBIWCg5wcmVzZXRfdGFza19pZBgBIAEoCSJhChtHZXRQcmVzZXRUYXNrU2NoZW1hUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDcmVhdGlvblNjaGVtYUR0byLKAQogUHJlc2V0VGFza0NhdGFsb2dEaXNhYmxlZEl0ZW1EdG8SCgoCaWQYASABKAkSEAoIZ3JvdXBfaWQYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhgKEHBsdWdpbl9yb290X3BhdGgYBSABKAkSSQoLZGlhZ25vc3RpY3MYBiADKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BsdWdpbkRpYWdub3N0aWNEdG8iPQodUHJlc2V0VGFza0FnZW50UmVxdWlyZW1lbnREdG8SDAoEbW9kZRgBIAEoCRIOCgZhZ2VudHMYAiADKAki6gEKFFByZXNldFRhc2tDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhIKBXNraWxsGAUgASgJSACIAQESEAoDdXJsGAYgASgJSAGIAQESFgoJZG9jc19zbHVnGAcgASgJSAKIAQESHQoQcHJlbHVkZV90ZW1wbGF0ZRgIIAEoCUgDiAEBQggKBl9za2lsbEIGCgRfdXJsQgwKCl9kb2NzX3NsdWdCEwoRX3ByZWx1ZGVfdGVtcGxhdGUiNgoZUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxIKCgJpZBgBIAEoCRINCgV0aXRsZRgCIAEoCSLMAQobUHJlc2V0VGFza0NvbW1hbmRDYXRhbG9nRHRvEhQKDHBhcmFtZXRlcl9pZBgBIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgCIAEoCRJACgZncm91cHMYAyADKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NvbW1hbmRHcm91cER0bxI9Cghjb21tYW5kcxgEIAMoCzIrLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tbWFuZER0byJWChpQcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxIOCgZsZWdhY3kYASABKAkSDwoHYmluZGluZxgCIAEoCRIXCg9kaWFnbm9zdGljX2NvZGUYAyABKAkidAoWUHJlc2V0VGFza0V4ZWN1dGlvbkR0bxIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoCRIQCghzdHJhdGVneRgCIAEoCRIcCg9leHRlbnNpb25fcG9pbnQYAyABKAlIAIgBAUISChBfZXh0ZW5zaW9uX3BvaW50Ip8CChlQcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEg0KBWlucHV0GAEgASgJEh0KEHByb21wdF9wYXJhbWV0ZXIYAiABKAlIAIgBARIZCgxtZXRhZGF0YV9rZXkYAyABKAlIAYgBARIQCghyZXF1aXJlZBgEIAEoCBIVCghwcm9kdWNlchgFIAEoCUgCiAEBEhcKCnZhbHVlX3R5cGUYBiABKAlIA4gBARIWCgl0cmFuc2Zvcm0YByABKAlIBIgBARIPCgdhbGlhc2VzGAggAygJQhMKEV9wcm9tcHRfcGFyYW1ldGVyQg8KDV9tZXRhZGF0YV9rZXlCCwoJX3Byb2R1Y2VyQg0KC192YWx1ZV90eXBlQgwKCl90cmFuc2Zvcm0iOAoYUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvEg0KBXZhbHVlGAEgASgJEg0KBWxhYmVsGAIgASgJIt4DCiBQcmVzZXRUYXNrRmllbGRDb21wb25lbnRQcm9wc0R0bxIgChN0YXJnZXRfc2VsZWN0aW9uX2lkGAEgASgJSACIAQESFwoKZW1wdHlfdGV4dBgCIAEoCUgBiAEBEiMKFmFsbG93X291dHB1dF9zZWxlY3Rpb24YAyABKAhIAogBARIlChhyZXF1aXJlX291dHB1dF9zZWxlY3Rpb24YBCABKAhIA4gBARIYCgtlbXB0eV90aXRsZRgFIAEoCUgEiAEBEh4KEWVtcHR5X2Rlc2NyaXB0aW9uGAYgASgJSAWIAQESHQoQcmVxdWlyZWRfbWVzc2FnZRgHIAEoCUgGiAEBEkAKB29wdGlvbnMYCCADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkT3B0aW9uRHRvQhYKFF90YXJnZXRfc2VsZWN0aW9uX2lkQg0KC19lbXB0eV90ZXh0QhkKF19hbGxvd19vdXRwdXRfc2VsZWN0aW9uQhsKGV9yZXF1aXJlX291dHB1dF9zZWxlY3Rpb25CDgoMX2VtcHR5X3RpdGxlQhQKEl9lbXB0eV9kZXNjcmlwdGlvbkITChFfcmVxdWlyZWRfbWVzc2FnZSL3AgoXUHJlc2V0VGFza1BhbmVsRmllbGREdG8SCgoCaWQYASABKAkSEAoIcmVuZGVyZXIYAiABKAkSEgoKaW5wdXRfdHlwZRgDIAEoCRISCgp2YWx1ZV90eXBlGAQgASgJEhIKBWxhYmVsGAUgASgJSACIAQESEQoEaGludBgGIAEoCUgBiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAKIAQESEAoIcmVxdWlyZWQYCCABKAgSEwoGb3V0cHV0GAkgASgJSAOIAQESGwoOc2VsZWN0aW9uX21vZGUYCiABKAlIBIgBARJQCg9jb21wb25lbnRfcHJvcHMYCyABKAsyNy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0ZpZWxkQ29tcG9uZW50UHJvcHNEdG9CCAoGX2xhYmVsQgcKBV9oaW50Qg4KDF9wbGFjZWhvbGRlckIJCgdfb3V0cHV0QhEKD19zZWxlY3Rpb25fbW9kZSJ3ChlQcmVzZXRUYXNrUGFuZWxTZWN0aW9uRHRvEgoKAmlkGAEgASgJEg4KBmxheW91dBgCIAEoCRI+CgZmaWVsZHMYAyADKAsyLi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1BhbmVsRmllbGREdG8iyQEKIVByZXNldFRhc2tQcm9tcHRWYXJpYW50U3VtbWFyeUR0bxIKCgJpZBgBIAEoCRJSCgVtYXRjaBgCIAMoCzJDLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUHJvbXB0VmFyaWFudFN1bW1hcnlEdG8uTWF0Y2hFbnRyeRpECgpNYXRjaEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi/gEKIlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SDAoEdHlwZRgBIAEoCRIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCRIZChFzdXBwb3J0ZWRfbG9jYWxlcxgDIAMoCRIRCglzZWxlY3RvcnMYBCADKAkSSgoIdmFyaWFudHMYBSADKAsyOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1Byb21wdFZhcmlhbnRTdW1tYXJ5RHRvEiAKE2ZhbGxiYWNrX3ZhcmlhbnRfaWQYBiABKAlIAIgBAUIWChRfZmFsbGJhY2tfdmFyaWFudF9pZCJFChhQcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SDAoEdHlwZRgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBW5hbWVzGAMgAygJIqoDCh5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8SEQoJc2NlbmVfa2V5GAEgASgJEg0KBXRpdGxlGAIgASgJEg8KB3N1bW1hcnkYAyABKAkSYQoPdGl0bGVfYnlfbG9jYWxlGAQgAygLMkguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZVJlZ2lzdHJhdGlvbkR0by5UaXRsZUJ5TG9jYWxlRW50cnkSZQoRc3VtbWFyeV9ieV9sb2NhbGUYBSADKAsySi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjZW5lUmVnaXN0cmF0aW9uRHRvLlN1bW1hcnlCeUxvY2FsZUVudHJ5Eh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgGIAEoBRo0ChJUaXRsZUJ5TG9jYWxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo2ChRTdW1tYXJ5QnlMb2NhbGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo8BChJQcmVzZXRUYXNrU2NlbmVEdG8SEAoIcHJvdmlkZXIYASABKAkSGQoRZGVmYXVsdF9zY2VuZV9rZXkYAiABKAkSTAoNcmVnaXN0cmF0aW9ucxgDIAMoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NlbmVSZWdpc3RyYXRpb25EdG8ivAEKHFByZXNldFRhc2tUYXJnZXRTZWxlY3Rpb25EdG8SCgoCaWQYASABKAkSDAoEa2luZBgCIAEoCRIWCg5zZWxlY3Rpb25fbW9kZRgDIAEoCRIcChRhbGxvd2VkX2FjY2Vzc190eXBlcxgEIAMoCRIOCgZvdXRwdXQYBSABKAkSGQoMc2NvcGVfc291cmNlGAYgASgJSACIAQESEAoIcmVxdWlyZWQYByABKAhCDwoNX3Njb3BlX3NvdXJjZSKBCQoYUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSEQoEaWNvbhgFIAEoCUgAiAEBEhQKDGRpc3BsYXlfbmFtZRgGIAEoCRINCgV0aXRsZRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIVCg1kZWZhdWx0X3RpdGxlGAkgASgJEhQKDHN1Ym1pdF9sYWJlbBgKIAEoCRIYChBzdWJtaXR0aW5nX2xhYmVsGAsgASgJEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYDCABKAkSGwoTYWxsb3dfaGVyb19vdmVycmlkZRgNIAEoCBISCgpzb3J0X29yZGVyGA4gASgFEhkKEXN1cHBvcnRlZF9sb2NhbGVzGA8gAygJEkIKCHNlY3Rpb25zGBAgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQYW5lbFNlY3Rpb25EdG8SSwoPY29tbWFuZF9jYXRhbG9nGBEgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kQ2F0YWxvZ0R0bxJOChF0YXJnZXRfc2VsZWN0aW9ucxgSIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrVGFyZ2V0U2VsZWN0aW9uRHRvEk8KEWFnZW50X3JlcXVpcmVtZW50GBMgASgLMjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tBZ2VudFJlcXVpcmVtZW50RHRvEkUKDHJlcXVpcmVtZW50cxgUIAMoCzIvLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrUmVxdWlyZW1lbnREdG8SUgoPcHJvbXB0X3N0cmF0ZWd5GBUgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tQcm9tcHRTdHJhdGVneVN1bW1hcnlEdG8SQAoJZXhlY3V0aW9uGBYgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tFeGVjdXRpb25EdG8SSAoNY29tcGF0aWJpbGl0eRgXIAMoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrQ29tcGF0aWJpbGl0eUR0bxJICg5pbnB1dF9iaW5kaW5ncxgYIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrSW5wdXRCaW5kaW5nRHRvEjgKBXNjZW5lGBkgASgLMikuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2VuZUR0bxIjChZzZXJ2ZXJfZGVjaWRlZF9oZXJvX2lkGBogASgJSAGIAQFCBwoFX2ljb25CGQoXX3NlcnZlcl9kZWNpZGVkX2hlcm9faWQirwEKHFByZXNldFRhc2tDYXRhbG9nUmVzcG9uc2VEdG8SPgoFaXRlbXMYASADKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza0NhdGFsb2dJdGVtRHRvEk8KDmRpc2FibGVkX2l0ZW1zGAIgAygLMjcuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDYXRhbG9nRGlzYWJsZWRJdGVtRHRvIkgKJ1ByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrRGlhZ25vc3RpY0R0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkitQEKIVByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0bxIMCgR0eXBlGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGcGFzc2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkSUwoLZGlhZ25vc3RpY3MYBSADKAsyPi5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1JlcXVpcmVtZW50Q2hlY2tEaWFnbm9zdGljRHRvIqMBCiVQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1Jlc3BvbnNlRHRvEhYKDnByZXNldF90YXNrX2lkGAEgASgJEhIKCmFsbF9wYXNzZWQYAiABKAgSTgoMcmVxdWlyZW1lbnRzGAMgAygLMjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudENoZWNrSXRlbUR0byI+CiRQcmVzZXRUYXNrUmVxdWlyZW1lbnRDaGVja1JlcXVlc3REdG8SFgoOcHJlc2V0X3Rhc2tfaWQYASABKAkiygEKGlByZXNldFRhc2tTY2hlbWFTdW1tYXJ5RHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhMKC3NvdXJjZV9raW5kGAMgASgJEg8KB3ZlcnNpb24YBCABKAkSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3JpcHRpb24YBiABKAkSFAoMdGFyZ2V0X2NvdW50GAcgASgFEhUKDWNvbW1hbmRfY291bnQYCCABKAUSFwoPcGFyYW1ldGVyX2NvdW50GAkgASgFIngKGlByZXNldFRhc2tTY2hlbWFDb21tYW5kRHRvEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEg0KBWxhYmVsGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhAKA3VybBgFIAEoCUgAiAEBQgYKBF91cmwi0gEKG1ByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxIUCgxwYXJhbWV0ZXJfaWQYASABKAkSFgoOc2VsZWN0aW9uX21vZGUYAiABKAkSQAoGZ3JvdXBzGAMgAygLMjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tDb21tYW5kR3JvdXBEdG8SQwoIY29tbWFuZHMYBCADKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYUNvbW1hbmREdG8iOwoYUHJlc2V0VGFza1NjaGVtYUFsaWFzRHRvEgsKA2tleRgBIAEoCRISCgpkZXByZWNhdGVkGAIgASgIIrQCChxQcmVzZXRUYXNrU2NoZW1hUGFyYW1ldGVyRHRvEgsKA2tleRgBIAEoCRIOCgZvcmlnaW4YAiABKAkSFQoIcHJvZHVjZXIYAyABKAlIAIgBARISCgp2YWx1ZV90eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEg0KBWxhYmVsGAYgASgJEhEKBGhpbnQYByABKAlIAYgBARJACgdvcHRpb25zGAggAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tGaWVsZE9wdGlvbkR0bxJACgdhbGlhc2VzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFBbGlhc0R0b0ILCglfcHJvZHVjZXJCBwoFX2hpbnQihwEKGlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEg4KBm1ldGhvZBgBIAEoCRIMCgRwYXRoGAIgASgJEhwKFHByZXNldF90YXNrX2lkX2ZpZWxkGAMgASgJEhQKDGxvY2FsZV9maWVsZBgEIAEoCRIXCg9yZXF1aXJlZF9maWVsZHMYBSADKAkieAokUHJlc2V0VGFza1NjaGVtYVNjZW5lUmVnaXN0cmF0aW9uRHRvEhEKCXNjZW5lX2tleRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEh0KFWJhY2tncm91bmRfaW1hZ2Vfc2xvdBgEIAEoBSKcAQoZUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxIQCghwcm92aWRlchgBIAEoCRIZChFkZWZhdWx0X3NjZW5lX2tleRgCIAEoCRJSCg1yZWdpc3RyYXRpb25zGAMgAygLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFTY2VuZVJlZ2lzdHJhdGlvbkR0byL0AQoZUHJlc2V0VGFza1NjaGVtYVRhcmdldER0bxIKCgJpZBgBIAEoCRIMCgRraW5kGAIgASgJEhYKDnNlbGVjdGlvbl9tb2RlGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIEhwKFGFsbG93ZWRfYWNjZXNzX3R5cGVzGAUgAygJEhkKDHNjb3BlX3NvdXJjZRgGIAEoCUgAiAEBEhMKC3JlcXVlc3Rfa2V5GAcgASgJEh4KEXNjb3BlX3JlcXVlc3Rfa2V5GAggASgJSAGIAQFCDwoNX3Njb3BlX3NvdXJjZUIUChJfc2NvcGVfcmVxdWVzdF9rZXkiegoYUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEhsKE2RlZmF1bHRfdGFyZ2V0X3R5cGUYASABKAkSQQoHdGFyZ2V0cxgCIAMoCzIwLmhhZ2ljb2RlLmNvbW11bml0eS52MS5QcmVzZXRUYXNrU2NoZW1hVGFyZ2V0RHRvIuMEChtQcmVzZXRUYXNrQ3JlYXRpb25TY2hlbWFEdG8SCgoCaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFdGl0bGUYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSPgoFc2NvcGUYBiABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjb3BlRHRvEkQKCGNvbW1hbmRzGAcgASgLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFDb21tYW5kc0R0bxJHCgpwYXJhbWV0ZXJzGAggAygLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFQYXJhbWV0ZXJEdG8SRQoMcmVxdWlyZW1lbnRzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tSZXF1aXJlbWVudER0bxJACgZzY2VuZXMYCiABKAsyMC5oYWdpY29kZS5jb21tdW5pdHkudjEuUHJlc2V0VGFza1NjaGVtYVNjZW5lc0R0bxJCCgdyZXF1ZXN0GAsgASgLMjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlByZXNldFRhc2tTY2hlbWFSZXF1ZXN0RHRvEi0KDGlucHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKAoHZXhhbXBsZRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QyrwQKElByZXNldFRhc2tzU2VydmljZRJ/ChRHZXRQcmVzZXRUYXNrQ2F0YWxvZxIyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRQcmVzZXRUYXNrQ2F0YWxvZ1JlcXVlc3QaMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza0NhdGFsb2dSZXNwb25zZRKUAQobQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzEjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkNoZWNrUHJlc2V0VGFza1JlcXVpcmVtZW50c1JlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuQ2hlY2tQcmVzZXRUYXNrUmVxdWlyZW1lbnRzUmVzcG9uc2USggEKFUxpc3RQcmVzZXRUYXNrU2NoZW1hcxIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5MaXN0UHJlc2V0VGFza1NjaGVtYXNSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RQcmVzZXRUYXNrU2NoZW1hc1Jlc3BvbnNlEnwKE0dldFByZXNldFRhc2tTY2hlbWESMS5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlcXVlc3QaMi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0UHJlc2V0VGFza1NjaGVtYVJlc3BvbnNlQiuqAihQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuQ29tbXVuaXR5LlYxYgZwcm90bzM",[Ue,Yh]),Ch=v(qo,5),Bh=v(qo,7),wh=We(qo,0),re=oe("CiloYWdpY29kZS9jb21tdW5pdHkvdjEvc2tpbGxfZ2FsbGVyeS5wcm90bxIVaGFnaWNvZGUuY29tbXVuaXR5LnYxIhcKFUdldExvY2FsU2tpbGxzUmVxdWVzdCJfChZHZXRMb2NhbFNraWxsc1Jlc3BvbnNlEkUKBnJlc3VsdBgBIAEoCzI1LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8iLAocR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBIMCgRzbHVnGAEgASgJIl0KHUdldEJ1aWx0SW5Ta2lsbERldGFpbFJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLmNvbW11bml0eS52MS5CdWlsdEluU2tpbGxEZXRhaWxEdG8iYAoaVW5pbnN0YWxsTG9jYWxTa2lsbFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vbmluc3RhbGxMb2NhbFNraWxsUmVxdWVzdER0byJiChtVbmluc3RhbGxMb2NhbFNraWxsUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXN1bHREdG8icAoiU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVxdWVzdBJKCgRib2R5GAEgASgLMjwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3REdG8icgojU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2USSwoGcmVzdWx0GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0byI2ChZHZXRTa2lsbEdhbGxlcnlSZXF1ZXN0EhIKBXF1ZXJ5GAEgASgJSACIAQFCCAoGX3F1ZXJ5IlkKF0dldFNraWxsR2FsbGVyeVJlc3BvbnNlEj4KBnJlc3VsdBgBIAEoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlSZXNwb25zZUR0byI6ChxHZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCSJdCh1HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXNwb25zZRI8CgZyZXN1bHQYASABKAsyLC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5RGV0YWlsRHRvIjkKG0dldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkiWwocR2V0U2tpbGxHYWxsZXJ5QXVkaXRSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5QXVkaXREdG8itAEKHFNraWxsR2FsbGVyeUF1ZGl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSEQoEcmlzaxgCIAEoCUgAiAEBEhMKBmFsZXJ0cxgDIAEoBUgBiAEBEhIKBXNjb3JlGAQgASgFSAKIAQESGAoLYW5hbHl6ZWRfYXQYBSABKAlIA4gBAUIHCgVfcmlza0IJCgdfYWxlcnRzQggKBl9zY29yZUIOCgxfYW5hbHl6ZWRfYXQijgEKFFNraWxsR2FsbGVyeUF1ZGl0RHRvEgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRISCgpza2lsbF9zbHVnGAMgASgJEkYKCXByb3ZpZGVycxgEIAMoCzIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Ta2lsbEdhbGxlcnlBdWRpdFByb3ZpZGVyRHRvIkIKJEdldFNraWxsR2FsbGVyeUluc3RhbGxDb250ZXh0UmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkibQolR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRJECgZyZXN1bHQYASABKAsyNC5oYWdpY29kZS5jb21tdW5pdHkudjEuU2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHREdG8iIQofR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVxdWVzdCJuCiBHZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8ibgohVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0EkkKBGJvZHkYASABKAsyOy5oYWdpY29kZS5jb21tdW5pdHkudjEuVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvInAKIlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVzcG9uc2USSgoGcmVzdWx0GAEgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyTGlzdFJlc3BvbnNlRHRvIm4KIURlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBJJCgRib2R5GAEgASgLMjsuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkRlbGV0ZVRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdER0byJwCiJEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckxpc3RSZXNwb25zZUR0byIjCiFSZXNldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QicAoiUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8iUgoTSW5zdGFsbFNraWxsUmVxdWVzdBI7CgRib2R5GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3REdG8iVAoUSW5zdGFsbFNraWxsUmVzcG9uc2USPAoGcmVzdWx0GAEgASgLMiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlc3VsdER0byL3AQoYTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvEg8KB2VuYWJsZWQYASABKAgSFAoHdmVyc2lvbhgCIAEoCUgAiAEBEhMKBnNvdXJjZRgDIAEoCUgBiAEBEhcKCnJlcG9zaXRvcnkYBCABKAlIAogBARIQCgNyZWYYBSABKAlIA4gBARIRCgRwYXRoGAYgASgJSASIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAWIAQFCCgoIX3ZlcnNpb25CCQoHX3NvdXJjZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQg8KDV9jb250ZW50X2hhc2givAIKI0xvY2FsU2tpbGxNYW5hZ2VkSW5zdGFsbE1ldGFkYXRhRHRvEhYKDnNjaGVtYV92ZXJzaW9uGAEgASgFEhAKCHNraWxsX2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRISCgpza2lsbF9zbHVnGAQgASgJEhQKB3ZlcnNpb24YBSABKAlIAIgBARIhChRub3JtYWxpemVkX3NraWxsX2tleRgGIAEoCUgBiAEBEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSAKIAQESMwoPcmVjb3JkZWRfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfdmVyc2lvbkIXChVfbm9ybWFsaXplZF9za2lsbF9rZXlCFAoSX2luc3RhbGxfcmVmZXJlbmNlIosCChFMb2NhbFNraWxsSXRlbUR0bxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBXNjb3BlGAMgASgJEgwKBHBhdGgYBCABKAkSDgoGYWdlbnRzGAUgAygJElwKGG1hbmFnZWRfaW5zdGFsbF9tZXRhZGF0YRgGIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5Mb2NhbFNraWxsTWFuYWdlZEluc3RhbGxNZXRhZGF0YUR0bxIOCgZvcmlnaW4YByABKAkSQQoIYnVpbHRfaW4YCCABKAsyLy5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEJ1aWx0SW5JbmZvRHRvIo8BCh5Mb2NhbFNraWxsSW52ZW50b3J5UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoFaXRlbXMYAiADKAsyKC5oYWdpY29kZS5jb21tdW5pdHkudjEuTG9jYWxTa2lsbEl0ZW1EdG8isQEKG0J1aWx0SW5Ta2lsbERldGFpbFNvdXJjZUR0bxIRCgR0eXBlGAEgASgJSACIAQESFwoKcmVwb3NpdG9yeRgCIAEoCUgBiAEBEhAKA3JlZhgDIAEoCUgCiAEBEhEKBHBhdGgYBCABKAlIA4gBARIQCgN1cmwYBSABKAlIBIgBAUIHCgVfdHlwZUINCgtfcmVwb3NpdG9yeUIGCgRfcmVmQgcKBV9wYXRoQgYKBF91cmwiPAoYQnVpbHRJblNraWxsRmlsZUVudHJ5RHRvEgwKBHBhdGgYASABKAkSEgoKc2l6ZV9ieXRlcxgCIAEoAyI5ChtCdWlsdEluU2tpbGxNZXRhZGF0YVBhaXJEdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJIo4EChVCdWlsdEluU2tpbGxEZXRhaWxEdG8SDAoEc2x1ZxgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhQKB3ZlcnNpb24YBCABKAlIAIgBARIPCgdlbmFibGVkGAUgASgIEkQKCG1ldGFkYXRhGAYgAygLMjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbE1ldGFkYXRhUGFpckR0bxJCCgZzb3VyY2UYByABKAsyMi5oYWdpY29kZS5jb21tdW5pdHkudjEuQnVpbHRJblNraWxsRGV0YWlsU291cmNlRHRvEhkKDGNvbnRlbnRfaGFzaBgIIAEoCUgBiAEBEj4KBWZpbGVzGAkgAygLMi8uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkJ1aWx0SW5Ta2lsbEZpbGVFbnRyeUR0bxISCgpmaWxlX2NvdW50GAogASgFEhgKEHRvdGFsX3NpemVfYnl0ZXMYCyABKAMSFwoPZmlsZXNfdHJ1bmNhdGVkGAwgASgIEhUKDWxpY2Vuc2VfZmlsZXMYDSADKAkSDAoEYm9keRgOIAEoCRIWCg5ib2R5X3RydW5jYXRlZBgPIAEoCBIXCg9ib2R5X3NpemVfYnl0ZXMYECABKANCCgoIX3ZlcnNpb25CDwoNX2NvbnRlbnRfaGFzaCLXAQocVW5pbnN0YWxsTG9jYWxTa2lsbFJlc3VsdER0bxISCgpza2lsbF9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIZCgx1c2VyX21lc3NhZ2UYAyABKAlIAIgBARIfChJkaWFnbm9zdGljX21lc3NhZ2UYBCABKAlIAYgBARIvCgtvY2N1cnJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3VzZXJfbWVzc2FnZUIVChNfZGlhZ25vc3RpY19tZXNzYWdlIjMKHVVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0RHRvEhIKCnNraWxsX25hbWUYASABKAkivAEKJFNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlc3VsdER0bxIMCgRzbHVnGAEgASgJEg8KB2VuYWJsZWQYAiABKAgSEQoJc3VjY2VlZGVkGAMgASgIEhkKDHVzZXJfbWVzc2FnZRgEIAEoCUgAiAEBEh8KEmRpYWdub3N0aWNfbWVzc2FnZRgFIAEoCUgBiAEBQg8KDV91c2VyX21lc3NhZ2VCFQoTX2RpYWdub3N0aWNfbWVzc2FnZSJGCiVTZXRCdWlsdEluU2tpbGxBdmFpbGFiaWxpdHlSZXF1ZXN0RHRvEgwKBHNsdWcYASABKAkSDwoHZW5hYmxlZBgCIAEoCCKlAgoiU2tpbGxHYWxsZXJ5UmVwb3NpdG9yeURpc2NvdmVyeUR0bxIMCgRtb2RlGAEgASgJEhwKD3JlcXVlc3RlZF9xdWVyeRgCIAEoCUgAiAEBEh4KEW5vcm1hbGl6ZWRfc291cmNlGAMgASgJSAGIAQESGwoOcmVwb3NpdG9yeV91cmwYBCABKAlIAogBARIPCgdvdXRjb21lGAUgASgJEhcKCmVycm9yX2NvZGUYBiABKAlIA4gBARIUCgdtZXNzYWdlGAcgASgJSASIAQFCEgoQX3JlcXVlc3RlZF9xdWVyeUIUChJfbm9ybWFsaXplZF9zb3VyY2VCEQoPX3JlcG9zaXRvcnlfdXJsQg0KC19lcnJvcl9jb2RlQgoKCF9tZXNzYWdlIuYBCiNUcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSHgoRbWF0Y2hlZF9ydWxlX3R5cGUYBCABKAlIAIgBARIfChJtYXRjaGVkX3J1bGVfdmFsdWUYBSABKAlIAYgBARIRCglpc19wcmVzZXQYBiABKAhCFAoSX21hdGNoZWRfcnVsZV90eXBlQhUKE19tYXRjaGVkX3J1bGVfdmFsdWUiwwEKFFNraWxsR2FsbGVyeVNraWxsRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc291cmNlGAMgASgJEhAKCGluc3RhbGxzGAQgASgFEhkKEWlzX3RydXN0ZWRfc291cmNlGAUgASgIElQKEHRydXN0ZWRfcHJvdmlkZXIYBiABKAsyOi5oYWdpY29kZS5jb21tdW5pdHkudjEuVHJ1c3RlZFNraWxsUHJvdmlkZXJUcnVzdFN1bW1hcnlEdG8i5AEKF1NraWxsR2FsbGVyeVJlc3BvbnNlRHRvEjQKEGdlbmVyYXRlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKBWl0ZW1zGAIgAygLMisuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVNraWxsRHRvElcKFHJlcG9zaXRvcnlfZGlzY292ZXJ5GAMgASgLMjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNraWxsR2FsbGVyeVJlcG9zaXRvcnlEaXNjb3ZlcnlEdG8i7AUKFVNraWxsR2FsbGVyeURldGFpbER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhwKD3JlcG9zaXRvcnlfbmFtZRgFIAEoCUgBiAEBEiEKFHJlcG9zaXRvcnlfZnVsbF9uYW1lGAYgASgJSAKIAQESGwoOcmVwb3NpdG9yeV91cmwYByABKAlIA4gBARImChlyZXBvc2l0b3J5X2RlZmF1bHRfYnJhbmNoGAggASgJSASIAQESHwoScmVwb3NpdG9yeV9wcml2YXRlGAkgASgISAWIAQESFgoOaXNfaW5zdGFsbGFibGUYCiABKAgSGQoRaXNfdHJ1c3RlZF9zb3VyY2UYCyABKAgSVAoQdHJ1c3RlZF9wcm92aWRlchgMIAEoCzI6LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlclRydXN0U3VtbWFyeUR0bxIeChFpbnN0YWxsX3JlZmVyZW5jZRgNIAEoCUgGiAEBEiQKF2luc3RhbGxfY29tbWFuZF9wcmV2aWV3GA4gASgJSAeIAQESHAoPaW5zdGFsbF92ZXJzaW9uGA8gASgJSAiIAQESGQoMaW5zdGFsbF9oaW50GBAgASgJSAmIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9yZXBvc2l0b3J5X25hbWVCFwoVX3JlcG9zaXRvcnlfZnVsbF9uYW1lQhEKD19yZXBvc2l0b3J5X3VybEIcChpfcmVwb3NpdG9yeV9kZWZhdWx0X2JyYW5jaEIVChNfcmVwb3NpdG9yeV9wcml2YXRlQhQKEl9pbnN0YWxsX3JlZmVyZW5jZUIaChhfaW5zdGFsbF9jb21tYW5kX3ByZXZpZXdCEgoQX2luc3RhbGxfdmVyc2lvbkIPCg1faW5zdGFsbF9oaW50Iq4DCh1Ta2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIWCg5pc19pbnN0YWxsYWJsZRgEIAEoCBIZChFpc190cnVzdGVkX3NvdXJjZRgFIAEoCBJUChB0cnVzdGVkX3Byb3ZpZGVyGAYgASgLMjouaGFnaWNvZGUuY29tbXVuaXR5LnYxLlRydXN0ZWRTa2lsbFByb3ZpZGVyVHJ1c3RTdW1tYXJ5RHRvEh4KEWluc3RhbGxfcmVmZXJlbmNlGAcgASgJSACIAQESJAoXaW5zdGFsbF9jb21tYW5kX3ByZXZpZXcYCCABKAlIAYgBARIcCg9pbnN0YWxsX3ZlcnNpb24YCSABKAlIAogBARIZCgxpbnN0YWxsX2hpbnQYCiABKAlIA4gBAUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCGgoYX2luc3RhbGxfY29tbWFuZF9wcmV2aWV3QhIKEF9pbnN0YWxsX3ZlcnNpb25CDwoNX2luc3RhbGxfaGludCJFCiBUcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0bxISCgptYXRjaF90eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJIo8CChdUcnVzdGVkU2tpbGxQcm92aWRlckR0bxITCgtwcm92aWRlcl9pZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLYmFkZ2VfbGFiZWwYAyABKAkSEQoJaXNfcHJlc2V0GAQgASgIEhIKCmlzX2VuYWJsZWQYBSABKAgSEgoKc29ydF9vcmRlchgGIAEoBRISCgpydWxlX2NvdW50GAcgASgFEhcKD3NvdXJjZV9leGFtcGxlcxgIIAMoCRJMCgttYXRjaF9ydWxlcxgJIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0byKrAQojVHJ1c3RlZFNraWxsUHJvdmlkZXJMaXN0UmVzcG9uc2VEdG8SNAoQZ2VuZXJhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmVyc2lvbhgCIAEoBRI9CgVpdGVtcxgDIAMoCzIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlckR0byLxAQokVXBzZXJ0VHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtiYWRnZV9sYWJlbBgDIAEoCUgAiAEBEhIKCmlzX2VuYWJsZWQYBCABKAgSEgoKc29ydF9vcmRlchgFIAEoBRJMCgttYXRjaF9ydWxlcxgGIAMoCzI3LmhhZ2ljb2RlLmNvbW11bml0eS52MS5UcnVzdGVkU2tpbGxQcm92aWRlck1hdGNoUnVsZUR0b0IOCgxfYmFkZ2VfbGFiZWwiOwokRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXF1ZXN0RHRvEhMKC3Byb3ZpZGVyX2lkGAEgASgJIrgDChVJbnN0YWxsU2tpbGxSZXN1bHREdG8SEAoIc2tpbGxfaWQYASABKAkSDgoGc291cmNlGAIgASgJEhIKCnNraWxsX3NsdWcYAyABKAkSIQoUbm9ybWFsaXplZF9za2lsbF9rZXkYBCABKAlIAIgBARIeChFpbnN0YWxsX3JlZmVyZW5jZRgFIAEoCUgBiAEBEhwKD2NvbW1hbmRfcHJldmlldxgGIAEoCUgCiAEBEhQKB3ZlcnNpb24YByABKAlIA4gBARIOCgZzdGF0dXMYCCABKAkSGQoMdXNlcl9tZXNzYWdlGAkgASgJSASIAQESHwoSZGlhZ25vc3RpY19tZXNzYWdlGAogASgJSAWIAQESLwoLb2NjdXJyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9ub3JtYWxpemVkX3NraWxsX2tleUIUChJfaW5zdGFsbF9yZWZlcmVuY2VCEgoQX2NvbW1hbmRfcHJldmlld0IKCghfdmVyc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19kaWFnbm9zdGljX21lc3NhZ2UiagoWSW5zdGFsbFNraWxsUmVxdWVzdER0bxIKCgJpZBgBIAEoCRIOCgZzb3VyY2UYAiABKAkSEgoKc2tpbGxfc2x1ZxgDIAEoCRIUCgd2ZXJzaW9uGAQgASgJSACIAQFCCgoIX3ZlcnNpb24iGwoZTGlzdFVzZXJTa2lsbEJhc2VzUmVxdWVzdCJfChpMaXN0VXNlclNraWxsQmFzZXNSZXNwb25zZRJBCgZyZXN1bHQYASABKAsyMS5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8iWgoXQWRkVXNlclNraWxsQmFzZVJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdER0byJZChhBZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVtb3ZlVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJiChtSZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlbW92ZVVzZXJTa2lsbEJhc2VSZXN1bHREdG8iLQoaUmVzY2FuVXNlclNraWxsQmFzZVJlcXVlc3QSDwoHYmFzZV9pZBgBIAEoCSJcChtSZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VSZXN1bHREdG8iYAoaU2V0VXNlclNraWxsRW5hYmxlZFJlcXVlc3QSQgoEYm9keRgBIAEoCzI0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdER0byJiChtTZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldFVzZXJTa2lsbEVuYWJsZWRSZXN1bHREdG8i+AEKEFVzZXJTa2lsbEJhc2VEdG8SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEcGF0aBgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGgoNc3RhdHVzX3JlYXNvbhgFIAEoCUgAiAEBEhsKDnN0YXR1c19tZXNzYWdlGAYgASgJSAGIAQESMwoGc2tpbGxzGAcgAygLMiMuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbER0bxIYChBza2lsbHNfdHJ1bmNhdGVkGAggASgIQhAKDl9zdGF0dXNfcmVhc29uQhEKD19zdGF0dXNfbWVzc2FnZSL9AQoMVXNlclNraWxsRHRvEgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg8KB2VuYWJsZWQYBCABKAgSDgoGc3RhdHVzGAUgASgJEhsKDmNvbmZsaWN0c193aXRoGAYgASgJSAGIAQESPAoIcHJvYmxlbXMYByADKAsyKi5oYWdpY29kZS5jb21tdW5pdHkudjEuVXNlclNraWxsUHJvYmxlbUR0bxIKCgJpZBgIIAEoCRIMCgRwYXRoGAkgASgJQg4KDF9kZXNjcmlwdGlvbkIRCg9fY29uZmxpY3RzX3dpdGgiNAoTVXNlclNraWxsUHJvYmxlbUR0bxIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkiSAoaQWRkVXNlclNraWxsQmFzZVJlcXVlc3REdG8SDAoEcGF0aBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBQggKBl9sYWJlbCKTAQoaVXNlclNraWxsQmFzZUxpc3RSZXN1bHREdG8SEQoJc3VjY2VlZGVkGAEgASgIEhkKDHVzZXJfbWVzc2FnZRgCIAEoCUgAiAEBEjYKBWJhc2VzGAMgAygLMicuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVzZXJTa2lsbEJhc2VEdG9CDwoNX3VzZXJfbWVzc2FnZSKOAQoWVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESNQoEYmFzZRgDIAEoCzInLmhhZ2ljb2RlLmNvbW11bml0eS52MS5Vc2VyU2tpbGxCYXNlRHRvQg8KDV91c2VyX21lc3NhZ2UibgocUmVtb3ZlVXNlclNraWxsQmFzZVJlc3VsdER0bxIRCglzdWNjZWVkZWQYASABKAgSGQoMdXNlcl9tZXNzYWdlGAIgASgJSACIAQESDwoHYmFzZV9pZBgDIAEoCUIPCg1fdXNlcl9tZXNzYWdlIlUKHVNldFVzZXJTa2lsbEVuYWJsZWRSZXF1ZXN0RHRvEg8KB2Jhc2VfaWQYASABKAkSEgoKc2tpbGxfc2x1ZxgCIAEoCRIPCgdlbmFibGVkGAMgASgIIpMBChxTZXRVc2VyU2tpbGxFbmFibGVkUmVzdWx0RHRvEhEKCXN1Y2NlZWRlZBgBIAEoCBIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAIgBARIPCgdiYXNlX2lkGAMgASgJEhIKCnNraWxsX3NsdWcYBCABKAkSDwoHZW5hYmxlZBgFIAEoCEIPCg1fdXNlcl9tZXNzYWdlMtASChNTa2lsbEdhbGxlcnlTZXJ2aWNlEm0KDkdldExvY2FsU2tpbGxzEiwuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldExvY2FsU2tpbGxzUmVxdWVzdBotLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRMb2NhbFNraWxsc1Jlc3BvbnNlEoIBChVHZXRCdWlsdEluU2tpbGxEZXRhaWwSMy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0QnVpbHRJblNraWxsRGV0YWlsUmVxdWVzdBo0LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRCdWlsdEluU2tpbGxEZXRhaWxSZXNwb25zZRJ8ChNVbmluc3RhbGxMb2NhbFNraWxsEjEuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXF1ZXN0GjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVuaW5zdGFsbExvY2FsU2tpbGxSZXNwb25zZRKUAQobU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5EjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlNldEJ1aWx0SW5Ta2lsbEF2YWlsYWJpbGl0eVJlcXVlc3QaOi5oYWdpY29kZS5jb21tdW5pdHkudjEuU2V0QnVpbHRJblNraWxsQXZhaWxhYmlsaXR5UmVzcG9uc2UScAoPR2V0U2tpbGxHYWxsZXJ5Ei0uaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeVJlcXVlc3QaLi5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5UmVzcG9uc2USggEKFUdldFNraWxsR2FsbGVyeURldGFpbBIzLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlEZXRhaWxSZXF1ZXN0GjQuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeURldGFpbFJlc3BvbnNlEn8KFEdldFNraWxsR2FsbGVyeUF1ZGl0EjIuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFNraWxsR2FsbGVyeUF1ZGl0UmVxdWVzdBozLmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlBdWRpdFJlc3BvbnNlEpoBCh1HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dBI7LmhhZ2ljb2RlLmNvbW11bml0eS52MS5HZXRTa2lsbEdhbGxlcnlJbnN0YWxsQ29udGV4dFJlcXVlc3QaPC5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0U2tpbGxHYWxsZXJ5SW5zdGFsbENvbnRleHRSZXNwb25zZRKLAQoYR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzEjYuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkdldFRydXN0ZWRTa2lsbFByb3ZpZGVyc1JlcXVlc3QaNy5oYWdpY29kZS5jb21tdW5pdHkudjEuR2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USkQEKGlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyEjguaGFnaWNvZGUuY29tbXVuaXR5LnYxLlVwc2VydFRydXN0ZWRTa2lsbFByb3ZpZGVyUmVxdWVzdBo5LmhhZ2ljb2RlLmNvbW11bml0eS52MS5VcHNlcnRUcnVzdGVkU2tpbGxQcm92aWRlclJlc3BvbnNlEpEBChpEZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlchI4LmhhZ2ljb2RlLmNvbW11bml0eS52MS5EZWxldGVUcnVzdGVkU2tpbGxQcm92aWRlclJlcXVlc3QaOS5oYWdpY29kZS5jb21tdW5pdHkudjEuRGVsZXRlVHJ1c3RlZFNraWxsUHJvdmlkZXJSZXNwb25zZRKRAQoaUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnMSOC5oYWdpY29kZS5jb21tdW5pdHkudjEuUmVzZXRUcnVzdGVkU2tpbGxQcm92aWRlcnNSZXF1ZXN0GjkuaGFnaWNvZGUuY29tbXVuaXR5LnYxLlJlc2V0VHJ1c3RlZFNraWxsUHJvdmlkZXJzUmVzcG9uc2USZwoMSW5zdGFsbFNraWxsEiouaGFnaWNvZGUuY29tbXVuaXR5LnYxLkluc3RhbGxTa2lsbFJlcXVlc3QaKy5oYWdpY29kZS5jb21tdW5pdHkudjEuSW5zdGFsbFNraWxsUmVzcG9uc2USeQoSTGlzdFVzZXJTa2lsbEJhc2VzEjAuaGFnaWNvZGUuY29tbXVuaXR5LnYxLkxpc3RVc2VyU2tpbGxCYXNlc1JlcXVlc3QaMS5oYWdpY29kZS5jb21tdW5pdHkudjEuTGlzdFVzZXJTa2lsbEJhc2VzUmVzcG9uc2UScwoQQWRkVXNlclNraWxsQmFzZRIuLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVxdWVzdBovLmhhZ2ljb2RlLmNvbW11bml0eS52MS5BZGRVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVtb3ZlVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZW1vdmVVc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTUmVzY2FuVXNlclNraWxsQmFzZRIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5SZXNjYW5Vc2VyU2tpbGxCYXNlUmVzcG9uc2USfAoTU2V0VXNlclNraWxsRW5hYmxlZBIxLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVxdWVzdBoyLmhhZ2ljb2RlLmNvbW11bml0eS52MS5TZXRVc2VyU2tpbGxFbmFibGVkUmVzcG9uc2VCK6oCKFBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5Db21tdW5pdHkuVjFiBnByb3RvMw",[Ne]),Fh=v(re,1),kh=v(re,5),Uh=v(re,7),Jh=v(re,9),xh=v(re,11),Kh=v(re,13),zh=v(re,19),Lh=v(re,21),jh=v(re,23),Th=v(re,25),Hh=v(re,27),Qh=v(re,37),Mh=v(re,39),Oh=v(re,49),Dh=v(re,50),_h=v(re,52),$h=We(re,0),er=oe("CiVoYWdpY29kZS9wbGF0Zm9ybS92MS9zdGF0aXN0aWNzLnByb3RvEhRoYWdpY29kZS5wbGF0Zm9ybS52MSJ1ChhHZXRBZ2dyZWdhdGVkRGF0YVJlcXVlc3QSFQoNZm9yY2VfcmVmcmVzaBgBIAEoCBIlChhnaXRfYXV0b19yZWZyZXNoX2VuYWJsZWQYAiABKAhIAIgBAUIbChlfZ2l0X2F1dG9fcmVmcmVzaF9lbmFibGVkIl0KGUdldEFnZ3JlZ2F0ZWREYXRhUmVzcG9uc2USQAoGcmVzdWx0GAEgASgLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8iHQobR2V0VG9rZW5Nb25pdG9yVXNhZ2VSZXF1ZXN0ImIKHEdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USQgoGcmVzdWx0GAEgASgLMjIuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yVXNhZ2VTbmFwc2hvdER0byK/AQodR2V0VG9rZW5Nb25pdG9ySGlzdG9yeVJlcXVlc3QSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgAiAEBEhcKCnBhZ2VfdG9rZW4YBCABKAlIAYgBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuImIKHkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRJACgZyZXN1bHQYASABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JIaXN0b3J5UGFnZUR0byKTAQoaVG9rZW5Nb25pdG9ySGlzdG9yeVBhZ2VEdG8SQwoHc2FtcGxlcxgBIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlTYW1wbGVEdG8SHAoPbmV4dF9wYWdlX3Rva2VuGAIgASgJSACIAQFCEgoQX25leHRfcGFnZV90b2tlbiKhAwocVG9rZW5Nb25pdG9ySGlzdG9yeVNhbXBsZUR0bxIzCg9vYnNlcnZlZF9hdF91dGMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGwoOZmFpbHVyZV9yZWFzb24YBCABKAlIAIgBARIVCghkYXRlX2tleRgFIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgGIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAcgASgBSAOIAQESQwoHcGVyaW9kcxgIIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlQZXJpb2REdG8SQwoHd2luZG93cxgJIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhpc3RvcnlXaW5kb3dEdG9CEQoPX2ZhaWx1cmVfcmVhc29uQgsKCV9kYXRlX2tleUIPCg1fdG90YWxfdG9rZW5zQgsKCV9jb3N0X3VzZCKOAwocVG9rZW5Nb25pdG9ySGlzdG9yeVBlcmlvZER0bxIOCgZwZXJpb2QYASABKAkSFAoMdG90YWxfdG9rZW5zGAIgASgDEhAKCGNvc3RfdXNkGAMgASgBEh4KEWNhY2hlX3JlYWRfdG9rZW5zGAQgASgDSACIAQESHwoSY2FjaGVfd3JpdGVfdG9rZW5zGAUgASgDSAGIAQESGgoNb3V0cHV0X3Rva2VucxgGIAEoA0gCiAEBEhkKDHRpbWVkX3Rva2VucxgHIAEoA0gDiAEBEiAKE3RpbWVkX291dHB1dF90b2tlbnMYCCABKANIBIgBARIeChF0aW1lZF9kdXJhdGlvbl9tcxgJIAEoA0gFiAEBQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQg8KDV90aW1lZF90b2tlbnNCFgoUX3RpbWVkX291dHB1dF90b2tlbnNCFAoSX3RpbWVkX2R1cmF0aW9uX21zIp0DChxUb2tlbk1vbml0b3JIaXN0b3J5V2luZG93RHRvEhAKCHByb3ZpZGVyGAEgASgJEhcKCnBsYW5fbGFiZWwYAiABKAlIAIgBARIXCg9wcm92aWRlcl9zdGF0dXMYAyABKAkSDAoEa2luZBgEIAEoCRISCgVsYWJlbBgFIAEoCUgBiAEBEhsKDndpbmRvd19taW51dGVzGAYgASgFSAKIAQESGQoMdXNlZF9wZXJjZW50GAcgASgBSAOIAQESHgoRcmVtYWluaW5nX3BlcmNlbnQYCCABKAFIBIgBARIxCg1yZXNldHNfYXRfdXRjGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVzb3VyY2VfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wbGFuX2xhYmVsQggKBl9sYWJlbEIRCg9fd2luZG93X21pbnV0ZXNCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnQidQohR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2VSZXF1ZXN0EigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJmCiJHZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEkAKBnJlc3VsdBgBIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckhvdXJseVVzYWdlRHRvItcCChpUb2tlbk1vbml0b3JIb3VybHlVc2FnZUR0bxIyCg5ob3VyX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXRjX29mZnNldF9taW51dGVzGAIgASgFEg4KBnRva2VucxgDIAEoAxIQCghjb3N0X3VzZBgEIAEoARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSACIAQESHgoRY2FjaGVfcmVhZF90b2tlbnMYBiABKANIAYgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYByABKANIAogBARIYChBvYnNlcnZlZF9zZWNvbmRzGAggASgFEhEKCWVzdGltYXRlZBgJIAEoCEIQCg5fb3V0cHV0X3Rva2Vuc0IUChJfY2FjaGVfcmVhZF90b2tlbnNCFQoTX2NhY2hlX3dyaXRlX3Rva2VucyIlCiNHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVxdWVzdCJgCiRHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0RHRvIkQKIEdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXF1ZXN0EhQKB21pbnV0ZXMYASABKAVIAIgBAUIKCghfbWludXRlcyJiCiFHZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVzcG9uc2USPQoGcmVzdWx0GAEgAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5UaHJvdWdocHV0U25hcHNob3QiOAoaR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QSEQoEZGF0ZRgBIAEoCUgAiAEBQgcKBV9kYXRlIlgKG0dldEhlcm9CYXR0bGVSZXBvcnRSZXNwb25zZRI5CgZyZXN1bHQYASABKAsyKS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RHRvIkAKIEdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXF1ZXN0EhIKBXJhbmdlGAEgASgJSACIAQFCCAoGX3JhbmdlImcKIUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvIuwCChxHZXRIaXN0b3JpY2FsVGltZWxpbmVSZXF1ZXN0EhgKC2VudGl0eV90eXBlGAEgASgJSACIAQESFgoJZW50aXR5X2lkGAIgASgJSAGIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgCiAEBEhcKCnNlc3Npb25faWQYBCABKAlIA4gBARIzCg9yYW5nZV9zdGFydF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjEKDXJhbmdlX2VuZF91dGMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBmN1cnNvchgHIAEoCUgEiAEBEhYKCXBhZ2Vfc2l6ZRgIIAEoBUgFiAEBQg4KDF9lbnRpdHlfdHlwZUIMCgpfZW50aXR5X2lkQg0KC19wcm9qZWN0X2lkQg0KC19zZXNzaW9uX2lkQgkKB19jdXJzb3JCDAoKX3BhZ2Vfc2l6ZSJpCh1HZXRIaXN0b3JpY2FsVGltZWxpbmVSZXNwb25zZRJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvIiUKI0dldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXF1ZXN0InIKJEdldEhpc3RvcmljYWxUaW1lbGluZVNhbXBsZXNSZXNwb25zZRJKCgZyZXN1bHQYASABKAsyOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VEdG8iqgEKFkFnZ3JlZ2F0aW9uTWV0YWRhdGFEdG8SLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg50b3RhbF9wcm9qZWN0cxgCIAEoBRIaChJ0b3RhbF9yZXBvc2l0b3JpZXMYAyABKAUSFwoPZmFpbGVkX3Byb2plY3RzGAQgASgFEhQKDGhhc19mYWlsdXJlcxgFIAEoCCKyBQoYUmVwb3NpdG9yeUFnZ3JlZ2F0aW9uRHRvEhEKBGNvZGUYASABKAlIAIgBARIMCgRuYW1lGAIgASgJEgwKBHBhdGgYAyABKAkSFQoNcmVsYXRpdmVfcGF0aBgEIAEoCRIUCgxkaXNwbGF5X25hbWUYBSABKAkSEQoEdHlwZRgGIAEoCUgBiAEBEgwKBHRhZ3MYByADKAkSEQoEaWNvbhgIIAEoCUgCiAEBEhAKA3VybBgJIAEoCUgDiAEBEhgKEGNvbGxhcHNlX3RvX21vcmUYCiABKAgSGQoRaXNfdmFsaWRfZ2l0X3JlcG8YCyABKAgSHAoUZ2l0X3N0YXR1c19hdmFpbGFibGUYDCABKAgSEwoGYnJhbmNoGA0gASgJSASIAQESHwoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYDiABKAgSHQoVdW5wdXNoZWRfY29tbWl0X2NvdW50GA8gASgFEhsKE2hhc190cmFja2luZ19icmFuY2gYECABKAgSNQoPdHJhY2tpbmdfYnJhbmNoGBEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEhMKC2FoZWFkX2NvdW50GBIgASgFEhQKDGJlaGluZF9jb3VudBgTIAEoBRIXCgpzeW5jX3N0YXRlGBQgASgJSAWIAQESEwoLaXNfb3B0aW9uYWwYFSABKAgSFAoMaXNfc2FuaXRpemVkGBYgASgIEhsKE3Nhbml0aXphdGlvbl9yZWFzb24YFyABKAkSGAoQaGFzX25hbWVfd2FybmluZxgYIAEoCBIVCg1uYW1lX3dhcm5pbmdzGBkgAygJQgcKBV9jb2RlQgcKBV90eXBlQgcKBV9pY29uQgYKBF91cmxCCQoHX2JyYW5jaEINCgtfc3luY19zdGF0ZSK6BAoVUHJvamVjdEFnZ3JlZ2F0aW9uRHRvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcGF0aBgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWlzX21vbm9fc3BlY3MYBSABKAgSHwoSbW9ub19zcGVjc192ZXJzaW9uGAYgASgJSAGIAQESJgoZbW9ub19zcGVjc19yZXBvX2RpcmVjdG9yeRgHIAEoCUgCiAEBEisKHm1vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZRgIIAEoCEgDiAEBEkQKDHJlcG9zaXRvcmllcxgJIAMoCzIuLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlJlcG9zaXRvcnlBZ2dyZWdhdGlvbkR0bxJBCh1naXRfc25hcHNob3RfcmVmcmVzaGVkX2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIQoZZ2l0X3NuYXBzaG90X3NlcnZlZF9zdGFsZRgLIAEoCBIrCgVlcnJvchgMIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRIRCgloYXNfZXJyb3IYDSABKAhCDgoMX2Rlc2NyaXB0aW9uQhUKE19tb25vX3NwZWNzX3ZlcnNpb25CHAoaX21vbm9fc3BlY3NfcmVwb19kaXJlY3RvcnlCIQofX21vbm9fc3BlY3NfY29tbWl0X3doZW5fYXJjaGl2ZSKbAQoaRGF0YUFnZ3JlZ2F0aW9uUmVzcG9uc2VEdG8SPQoIcHJvamVjdHMYASADKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Qcm9qZWN0QWdncmVnYXRpb25EdG8SPgoIbWV0YWRhdGEYAiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5BZ2dyZWdhdGlvbk1ldGFkYXRhRHRvIqkDChxUb2tlbk1vbml0b3JVc2FnZVNuYXBzaG90RHRvEg4KBnN0YXR1cxgBIAEoCRIOCgZzb3VyY2UYAiABKAkSGwoOZmFpbHVyZV9yZWFzb24YAyABKAlIAIgBARIVCghkYXRlX2tleRgEIAEoCUgBiAEBEhkKDHRvdGFsX3Rva2VucxgFIAEoA0gCiAEBEhUKCGNvc3RfdXNkGAYgASgBSAOIAQESLwoLcmVhZF9hdF91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhgKEHNuYXBzaG90X3ZlcnNpb24YCCABKAMSOwoGbGltaXRzGAkgASgLMisuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yTGltaXRzRHRvEj0KB3BlcmlvZHMYCiABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RzRHRvQhEKD19mYWlsdXJlX3JlYXNvbkILCglfZGF0ZV9rZXlCDwoNX3RvdGFsX3Rva2Vuc0ILCglfY29zdF91c2QiugEKFVRva2VuTW9uaXRvckxpbWl0c0R0bxIyCg51cGRhdGVkX2F0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcmVmcmVzaF9tcxgCIAEoBUgAiAEBEkUKCXByb3ZpZGVycxgDIAMoCzIyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG9CDQoLX3JlZnJlc2hfbXMi0wIKHFRva2VuTW9uaXRvckxpbWl0UHJvdmlkZXJEdG8SEAoIcHJvdmlkZXIYASABKAkSDgoGc3RhdHVzGAIgASgJEhcKCnBsYW5fbGFiZWwYAyABKAlIAIgBARIyCg51cGRhdGVkX2F0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoHd2luZG93cxgFIAMoCzIwLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEhgKC2JhbGFuY2VfdXNkGAYgASgBSAGIAQESSAoNcmVzZXRfY3JlZGl0cxgHIAEoCzIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLlRva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0b0INCgtfcGxhbl9sYWJlbEIOCgxfYmFsYW5jZV91c2Qi9QMKGlRva2VuTW9uaXRvckxpbWl0V2luZG93RHRvEgwKBGtpbmQYASABKAkSEgoFbGFiZWwYAiABKAlIAIgBARIZCgx1c2VkX3BlcmNlbnQYAyABKAFIAYgBARIeChFyZW1haW5pbmdfcGVyY2VudBgEIAEoAUgCiAEBEhEKBHVzZWQYBSABKAFIA4gBARISCgVsaW1pdBgGIAEoAUgEiAEBEhYKCXJlbWFpbmluZxgHIAEoAUgFiAEBEhUKCGN1cnJlbmN5GAggASgJSAaIAQESMQoNcmVzZXRzX2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOd2luZG93X21pbnV0ZXMYCiABKAVIB4gBARIeChFyZXNldF9kZXNjcmlwdGlvbhgLIAEoCUgIiAEBEhoKDW1ldGVyX3Zpc2libGUYDCABKAhICYgBAUIICgZfbGFiZWxCDwoNX3VzZWRfcGVyY2VudEIUChJfcmVtYWluaW5nX3BlcmNlbnRCBwoFX3VzZWRCCAoGX2xpbWl0QgwKCl9yZW1haW5pbmdCCwoJX2N1cnJlbmN5QhEKD193aW5kb3dfbWludXRlc0IUChJfcmVzZXRfZGVzY3JpcHRpb25CEAoOX21ldGVyX3Zpc2libGUivQEKG1Rva2VuTW9uaXRvclJlc2V0Q3JlZGl0c0R0bxIcCg9hdmFpbGFibGVfY291bnQYASABKAVIAIgBARI3ChNuZXh0X2V4cGlyZXNfYXRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9leHBpcmF0aW9uc191dGMYAyADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhIKEF9hdmFpbGFibGVfY291bnQizwEKFlRva2VuTW9uaXRvclBlcmlvZHNEdG8SOgoFdG9kYXkYASABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SOgoFbW9udGgYAiABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8SPQoIYWxsX3RpbWUYAyABKAsyKy5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2REdG8iigQKFVRva2VuTW9uaXRvclBlcmlvZER0bxIUCgx0b3RhbF90b2tlbnMYASABKAMSEAoIY29zdF91c2QYAiABKAESHgoRY2FjaGVfcmVhZF90b2tlbnMYAyABKANIAIgBARIfChJjYWNoZV93cml0ZV90b2tlbnMYBCABKANIAYgBARIaCg1vdXRwdXRfdG9rZW5zGAUgASgDSAKIAQESGQoMdGltZWRfdG9rZW5zGAYgASgDSAOIAQESIAoTdGltZWRfb3V0cHV0X3Rva2VucxgHIAEoA0gEiAEBEh4KEXRpbWVkX2R1cmF0aW9uX21zGAggASgDSAWIAQESTQoMY2FwYWJpbGl0aWVzGAkgASgLMjcuaGFnaWNvZGUucGxhdGZvcm0udjEuVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEkIKB2NsaWVudHMYCiADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5Ub2tlbk1vbml0b3JQZXJpb2RDbGllbnREdG9CFAoSX2NhY2hlX3JlYWRfdG9rZW5zQhUKE19jYWNoZV93cml0ZV90b2tlbnNCEAoOX291dHB1dF90b2tlbnNCDwoNX3RpbWVkX3Rva2Vuc0IWChRfdGltZWRfb3V0cHV0X3Rva2Vuc0IUChJfdGltZWRfZHVyYXRpb25fbXMifwohVG9rZW5Nb25pdG9yUGVyaW9kQ2FwYWJpbGl0aWVzRHRvEh0KEHRva2VuX2NvbXBvbmVudHMYASABKAhIAIgBARIXCgp0aHJvdWdocHV0GAIgASgISAGIAQFCEwoRX3Rva2VuX2NvbXBvbmVudHNCDQoLX3Rocm91Z2hwdXQiTwobVG9rZW5Nb25pdG9yUGVyaW9kQ2xpZW50RHRvEg4KBmNsaWVudBgBIAEoCRIOCgZ0b2tlbnMYAiABKAMSEAoIY29zdF91c2QYAyABKAEi2AIKElRva2VuVGhyb3VnaHB1dER0bxIfChdpbnB1dF90b2tlbnNfcGVyX21pbnV0ZRgBIAEoBRIgChhvdXRwdXRfdG9rZW5zX3Blcl9taW51dGUYAiABKAUSGgoSdG90YWxfaW5wdXRfdG9rZW5zGAMgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYBCABKAMSMAoMbGFzdF91cGRhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCh9yZWd1bGFyX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAYgASgFEiUKHWNhY2hlX2lucHV0X3Rva2Vuc19wZXJfbWludXRlGAcgASgFEiIKGnRvdGFsX3JlZ3VsYXJfaW5wdXRfdG9rZW5zGAggASgDEiAKGHRvdGFsX2NhY2hlX2lucHV0X3Rva2VucxgJIAEoAyKvAQoXVG9rZW5UaHJvdWdocHV0U25hcHNob3QSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxpbnB1dF90b2tlbnMYAiABKAUSFQoNb3V0cHV0X3Rva2VucxgDIAEoBRIcChRyZWd1bGFyX2lucHV0X3Rva2VucxgEIAEoBRIaChJjYWNoZV9pbnB1dF90b2tlbnMYBSABKAUi4AEKLEhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvEhUKDWNhbm9uaWNhbF9rZXkYASABKAkSEAoIbmFtZV9rZXkYAiABKAkSEwoLc291cmNlX2tpbmQYAyABKAkSMwoPdW5sb2NrZWRfYXRfdXRjGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5wcm9ncmVzc19hZnRlchgFIAEoBRIOCgZ0YXJnZXQYBiABKAUSFQoNcmV3YXJkX2Ftb3VudBgHIAEoAyK7AQopSGVyb0JhdHRsZVJlcG9ydFBlbmRpbmdBY2hpZXZlbWVudEhpbnREdG8SFQoNY2Fub25pY2FsX2tleRgBIAEoCRIQCghuYW1lX2tleRgCIAEoCRIRCglnb2FsX3R5cGUYAyABKAkSEAoIcHJvZ3Jlc3MYBCABKAUSDgoGdGFyZ2V0GAUgASgFEhcKD3JlbWFpbmluZ19jb3VudBgGIAEoBRIXCg9jb21wbGV0aW9uX3JhdGUYByABKAEivQIKJUhlcm9CYXR0bGVSZXBvcnRBY2hpZXZlbWVudFN1bW1hcnlEdG8SGAoQaGFzX2FyY2hpdmVfZGF0YRgBIAEoCBIXCg9jb21wbGV0ZWRfY291bnQYAiABKAUSEwoLdG90YWxfY291bnQYAyABKAUSFwoPY29tcGxldGlvbl9yYXRlGAQgASgBElsKD2xhdGVzdF91bmxvY2tlZBgFIAEoCzJCLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRMYXRlc3RVbmxvY2tlZEFjaGlldmVtZW50RHRvElYKDXBlbmRpbmdfaGludHMYBiADKAsyPy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UGVuZGluZ0FjaGlldmVtZW50SGludER0byL0AgojSGVyb0JhdHRsZVJlcG9ydEhpZ2hsaWdodFNlc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRISCgV0aXRsZRgCIAEoCUgAiAEBEhkKDHNlc3Npb25fY29kZRgDIAEoCUgBiAEBEhkKDHNlc3Npb25fdHlwZRgEIAEoCUgCiAEBEhoKDXByb3Bvc2FsX25hbWUYBSABKAlIA4gBARIWCg5hY3Rpdml0eV9jb3VudBgGIAEoBRIiChpjb21wbGV0ZWRfYXNzaXN0YW5jZV9jb3VudBgHIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgIIAEoBRI4ChRsYXN0X2FjdGl2aXR5X2F0X3V0YxgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX3RpdGxlQg8KDV9zZXNzaW9uX2NvZGVCDwoNX3Nlc3Npb25fdHlwZUIQCg5fcHJvcG9zYWxfbmFtZSKnAwoiSGVyb0JhdHRsZVJlcG9ydEFjdGl2aXR5U3VtbWFyeUR0bxIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYASABKAUSIgoaY2hhdF9zZXNzaW9uX2NyZWF0ZWRfY291bnQYAiABKAUSJgoecHJvcG9zYWxfc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgFEhYKDnByb3Bvc2FsX2NvdW50GAQgASgFEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgFIAEoBRIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgGIAEoBRIfChdwcm9wb3NhbF9hcmNoaXZlZF9jb3VudBgHIAEoBRIiChphc3Npc3RhbmNlX2NvbXBsZXRlZF9jb3VudBgIIAEoBRIfChdhc3Npc3RhbmNlX2ZhaWxlZF9jb3VudBgJIAEoBRJVChJoaWdobGlnaHRfc2Vzc2lvbnMYCiADKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGlnaGxpZ2h0U2Vzc2lvbkR0byJGCiNIZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxIQCghwcmV2aW91cxgBIAEoAxINCgVkZWx0YRgCIAEoAyK8BQodSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25EdG8SGAoQaGFzX3ByZXZpb3VzX2RheRgBIAEoCBIaCg1wcmV2aW91c19kYXRlGAIgASgJSACIAQESVAoRYWN0aXZlX2hlcm9fY291bnQYAyABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg9leGVjdXRpb25fY291bnQYBCABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJSCg90b29sX2NhbGxfY291bnQYBSABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJPCgx0b3RhbF90b2tlbnMYBiABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJYChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYByABKAsyOS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbk1ldHJpY0R0bxJRCg5wcm9wb3NhbF9jb3VudBgIIAEoCzI5LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhlcm9CYXR0bGVSZXBvcnRDb21wYXJpc29uTWV0cmljRHRvElcKFGhhZ2lwb3dlcl9uZXRfY2hhbmdlGAkgASgLMjkuaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydENvbXBhcmlzb25NZXRyaWNEdG9CEAoOX3ByZXZpb3VzX2RhdGUixgEKG0hlcm9CYXR0bGVSZXBvcnRFeGVjdXRvckR0bxIVCg1leGVjdXRvcl90eXBlGAEgASgJEhIKCmhlcm9fY291bnQYAiABKAUSGQoRYWN0aXZlX2hlcm9fY291bnQYAyABKAUSFwoPZXhlY3V0aW9uX2NvdW50GAQgASgFEhcKD3Rvb2xfY2FsbF9jb3VudBgFIAEoBRIUCgx0b3RhbF90b2tlbnMYBiABKAMSGQoRdG90YWxfZHVyYXRpb25fbXMYByABKAMiuAEKIUhlcm9CYXR0bGVSZXBvcnRIYWdpcG93ZXJQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItwDChxIZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEjMKD3JhbmdlX3N0YXJ0X3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNcmFuZ2VfZW5kX3V0YxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOYnVja2V0X21pbnV0ZXMYAyABKAUSFwoPaGFzX2ZpbGxlZF9nYXBzGAQgASgIEhwKFGhhc19yZWNvcmRlZF9oaXN0b3J5GAUgASgIEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYBiABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAcgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgIIAEoAxISCgpuZXRfY2hhbmdlGAkgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk4KDXB1YmxpY19zZXJpZXMYCyADKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyUG9pbnREdG8iiQQKF0hlcm9CYXR0bGVSZXBvcnRIZXJvRHRvEg8KB2hlcm9faWQYASABKAkSEQoJaGVyb19uYW1lGAIgASgJEhYKCWhlcm9faWNvbhgDIAEoCUgAiAEBEhUKDWV4ZWN1dG9yX3R5cGUYBCABKAkSEgoFbW9kZWwYBSABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgGIAEoCUgCiAEBEgwKBHJhbmsYByABKAUSDgoGc3RhdHVzGAggASgJEg0KBWdyYWRlGAkgASgJEhQKDGJhdHRsZV9zY29yZRgKIAEoBRIXCg9leGVjdXRpb25fY291bnQYCyABKAUSFwoPdG9vbF9jYWxsX2NvdW50GAwgASgFEhQKDGlucHV0X3Rva2VucxgNIAEoAxIaChJjYWNoZV9pbnB1dF90b2tlbnMYDiABKAMSFQoNb3V0cHV0X3Rva2VucxgPIAEoAxIbChNjYWNoZV9vdXRwdXRfdG9rZW5zGBAgASgDEhQKDHRvdGFsX3Rva2VucxgRIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgSIAEoAxI5ChVsYXN0X2NvbXBsZXRlZF9hdF91dGMYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsQg4KDF9kZXNjcmlwdGlvbiKAAgoiSGVyb0JhdHRsZVJlcG9ydFByb2plY3RBY3Rpdml0eUR0bxISCgpwcm9qZWN0X2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCg5hY3Rpdml0eV9jb3VudBgDIAEoBRIdChVzZXNzaW9uX2NyZWF0ZWRfY291bnQYBCABKAUSFgoOcHJvcG9zYWxfY291bnQYBSABKAUSIgoaYXNzaXN0YW5jZV9jb21wbGV0ZWRfY291bnQYBiABKAUSHwoXYXNzaXN0YW5jZV9mYWlsZWRfY291bnQYByABKAUSFgoOYWN0aXZpdHlfc2hhcmUYCCABKAFCBwoFX25hbWUi+gEKIUhlcm9CYXR0bGVSZXBvcnRQcm9qZWN0UHJvZmlsZUR0bxIQCghoYXNfZGF0YRgBIAEoCBIdChVwcm9qZWN0X2NyZWF0ZWRfY291bnQYAiABKAMSHQoVc2Vzc2lvbl9jcmVhdGVkX2NvdW50GAMgASgDEiAKGHByb3Bvc2FsX2dlbmVyYXRlZF9jb3VudBgEIAEoAxIfChdwcm9wb3NhbF9leGVjdXRlZF9jb3VudBgFIAEoAxITCgt0b2tlbl90b3RhbBgGIAEoAxItCglhc19vZl91dGMYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIo0CChtIZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SGwoTdG90YWxfcHJvamVjdF9jb3VudBgBIAEoBRIcChRhY3RpdmVfcHJvamVjdF9jb3VudBgCIAEoBRIZChFuZXdfcHJvamVjdF9jb3VudBgDIAEoBRJOCgx0b3BfcHJvamVjdHMYBCADKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdEFjdGl2aXR5RHRvEkgKB3Byb2ZpbGUYBSABKAsyNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdFByb2ZpbGVEdG8irQIKFkhlcm9CYXR0bGVSZXBvcnRNdnBEdG8SDwoHaGVyb19pZBgBIAEoCRIRCgloZXJvX25hbWUYAiABKAkSFgoJaGVyb19pY29uGAMgASgJSACIAQESFQoNZXhlY3V0b3JfdHlwZRgEIAEoCRISCgVtb2RlbBgFIAEoCUgBiAEBEgwKBHJhbmsYBiABKAUSFAoMYmF0dGxlX3Njb3JlGAcgASgFEg0KBWdyYWRlGAggASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgJIAEoBRIXCg90b29sX2NhbGxfY291bnQYCiABKAUSFAoMdG90YWxfdG9rZW5zGAsgASgDEhkKEXRvdGFsX2R1cmF0aW9uX21zGAwgASgDQgwKCl9oZXJvX2ljb25CCAoGX21vZGVsItkCChpIZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxIYChB0b3RhbF9oZXJvX2NvdW50GAEgASgFEhkKEWFjdGl2ZV9oZXJvX2NvdW50GAIgASgFEhoKEnRvdGFsX2JhdHRsZV9zY29yZRgDIAEoBRIYChB0b3RhbF90b29sX2NhbGxzGAQgASgFEhQKDHRvdGFsX3Rva2VucxgFIAEoAxIZChF0b3RhbF9kdXJhdGlvbl9tcxgGIAEoAxIUCgxpbnB1dF90b2tlbnMYByABKAMSGgoSY2FjaGVfaW5wdXRfdG9rZW5zGAggASgDEhUKDW91dHB1dF90b2tlbnMYCSABKAMSGwoTY2FjaGVfb3V0cHV0X3Rva2VucxgKIAEoAxI5CgNtdnAYCyABKAsyLC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0TXZwRHRvIqYGChNIZXJvQmF0dGxlUmVwb3J0RHRvEhMKC3JlcG9ydF9kYXRlGAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHRpbWVfem9uZV9pZBgDIAEoCRI1ChFjb3ZlcmVkX3N0YXJ0X3V0YxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoPY292ZXJlZF9lbmRfdXRjGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJFCgloYWdpcG93ZXIYBiABKAsyMi5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0SGFnaXBvd2VyRHRvEkEKB3N1bW1hcnkYByABKAsyMC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0U3VtbWFyeUR0bxJRCgxhY2hpZXZlbWVudHMYCCABKAsyOy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWNoaWV2ZW1lbnRTdW1tYXJ5RHRvElIKEGFjdGl2aXR5X3N1bW1hcnkYCSABKAsyOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0QWN0aXZpdHlTdW1tYXJ5RHRvEkcKCmNvbXBhcmlzb24YCiABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0Q29tcGFyaXNvbkR0bxJECglleGVjdXRvcnMYCyADKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0RXhlY3V0b3JEdG8SQwoIcHJvamVjdHMYDCABKAsyMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5IZXJvQmF0dGxlUmVwb3J0UHJvamVjdHNEdG8SPQoGaGVyb2VzGA0gAygLMi0uaGFnaWNvZGUucGxhdGZvcm0udjEuSGVyb0JhdHRsZVJlcG9ydEhlcm9EdG8itQEKHkhhZ2lwb3dlclB1YmxpY0hpc3RvcnlQb2ludER0bxI1ChFidWNrZXRfbWludXRlX3V0YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHYmFsYW5jZRgCIAEoAxIVCg10b3RhbF9iYWxhbmNlGAMgASgDEiEKGWFjY3VtdWxhdGVkX3RvdGFsX2JhbGFuY2UYBCABKAMSEQoJaXNfZmlsbGVkGAUgASgIItcBCh5IYWdpcG93ZXJTdGF0aXN0aWNzTWV0YWRhdGFEdG8SMwoPcmFuZ2Vfc3RhcnRfdXRjGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1yYW5nZV9lbmRfdXRjGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCg5idWNrZXRfbWludXRlcxgDIAEoBRIXCg9oYXNfZmlsbGVkX2dhcHMYBCABKAgSHAoUaGFzX3JlY29yZGVkX2hpc3RvcnkYBSABKAgi1gEKHUhhZ2lwb3dlclN0YXRpc3RpY3NTdW1tYXJ5RHRvEh4KFmN1cnJlbnRfcHVibGljX2JhbGFuY2UYASABKAMSHQoVY3VycmVudF90b3RhbF9iYWxhbmNlGAIgASgDEikKIWN1cnJlbnRfYWNjdW11bGF0ZWRfdG90YWxfYmFsYW5jZRgDIAEoAxISCgpuZXRfY2hhbmdlGAQgASgDEjcKE2xhc3RfdXBkYXRlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIogCChxIYWdpcG93ZXJTdGF0aXN0aWNzUmVwb3J0RHRvEg0KBXJhbmdlGAEgASgJEkYKCG1ldGFkYXRhGAIgASgLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyU3RhdGlzdGljc01ldGFkYXRhRHRvEkQKB3N1bW1hcnkYAyABKAsyMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5IYWdpcG93ZXJTdGF0aXN0aWNzU3VtbWFyeUR0bxJLCg1wdWJsaWNfc2VyaWVzGAQgAygLMjQuaGFnaWNvZGUucGxhdGZvcm0udjEuSGFnaXBvd2VyUHVibGljSGlzdG9yeVBvaW50RHRvIrsDChpIaXN0b3JpY2FsVGltZWxpbmVFdmVudER0bxIQCghldmVudF9pZBgBIAEoCRIzCg9vY2N1cnJlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDmNyZWF0ZWRfYXRfdXRjGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtlbnRpdHlfdHlwZRgEIAEoCRIRCgllbnRpdHlfaWQYBSABKAkSFwoKcHJvamVjdF9pZBgGIAEoCUgAiAEBEhcKCnNlc3Npb25faWQYByABKAlIAYgBARIMCgRjb2RlGAggASgJEigKCG1ldGFkYXRhGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhMKBnNvdXJjZRgKIAEoCUgCiAEBEhUKCGFjdG9yX2lkGAsgASgJSAOIAQESGwoOY29ycmVsYXRpb25faWQYDCABKAlIBIgBAUINCgtfcHJvamVjdF9pZEINCgtfc2Vzc2lvbl9pZEIJCgdfc291cmNlQgsKCV9hY3Rvcl9pZEIRCg9fY29ycmVsYXRpb25faWQiiAEKH0hpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8SEQoJcGFnZV9zaXplGAEgASgFEhYKDnJldHVybmVkX2NvdW50GAIgASgFEhAKCGhhc19tb3JlGAMgASgIEhgKC25leHRfY3Vyc29yGAQgASgJSACIAQFCDgoMX25leHRfY3Vyc29yIrABCiJIaXN0b3JpY2FsVGltZWxpbmVRdWVyeVJlc3BvbnNlRHRvEj8KBWl0ZW1zGAEgAygLMjAuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnREdG8SSQoKcGFnaW5hdGlvbhgCIAEoCzI1LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkhpc3RvcmljYWxUaW1lbGluZVBhZ2luYXRpb25EdG8imwMKIEhpc3RvcmljYWxUaW1lbGluZUV2ZW50U2FtcGxlRHRvEhMKC2VudGl0eV90eXBlGAEgASgJEgwKBGNvZGUYAiABKAkSGAoQc2FtcGxlX2VudGl0eV9pZBgDIAEoCRIeChFzYW1wbGVfcHJvamVjdF9pZBgEIAEoCUgAiAEBEh4KEXNhbXBsZV9zZXNzaW9uX2lkGAUgASgJSAGIAQESGgoNc2FtcGxlX3NvdXJjZRgGIAEoCUgCiAEBEhwKD3NhbXBsZV9hY3Rvcl9pZBgHIAEoCUgDiAEBEiIKFXNhbXBsZV9jb3JyZWxhdGlvbl9pZBgIIAEoCUgEiAEBEjAKEG1ldGFkYXRhX2V4YW1wbGUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCFAoSX3NhbXBsZV9wcm9qZWN0X2lkQhQKEl9zYW1wbGVfc2Vzc2lvbl9pZEIQCg5fc2FtcGxlX3NvdXJjZUISChBfc2FtcGxlX2FjdG9yX2lkQhgKFl9zYW1wbGVfY29ycmVsYXRpb25faWQibQokSGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1Jlc3BvbnNlRHRvEkUKBWl0ZW1zGAEgAygLMjYuaGFnaWNvZGUucGxhdGZvcm0udjEuSGlzdG9yaWNhbFRpbWVsaW5lRXZlbnRTYW1wbGVEdG8y7QoKEVN0YXRpc3RpY3NTZXJ2aWNlEnQKEUdldEFnZ3JlZ2F0ZWREYXRhEi4uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXF1ZXN0Gi8uaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0QWdncmVnYXRlZERhdGFSZXNwb25zZRJ9ChRHZXRUb2tlbk1vbml0b3JVc2FnZRIxLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVxdWVzdBoyLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvclVzYWdlUmVzcG9uc2USgwEKFkdldFRva2VuTW9uaXRvckhpc3RvcnkSMy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIaXN0b3J5UmVxdWVzdBo0LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuTW9uaXRvckhpc3RvcnlSZXNwb25zZRKPAQoaR2V0VG9rZW5Nb25pdG9ySG91cmx5VXNhZ2USNy5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlcXVlc3QaOC5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlbk1vbml0b3JIb3VybHlVc2FnZVJlc3BvbnNlEpUBChxHZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0VG9rZW5UaHJvdWdocHV0U3RhdGlzdGljc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRTdGF0aXN0aWNzUmVzcG9uc2USjAEKGUdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnkSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRUb2tlblRocm91Z2hwdXRIaXN0b3J5UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldFRva2VuVGhyb3VnaHB1dEhpc3RvcnlSZXNwb25zZRJ6ChNHZXRIZXJvQmF0dGxlUmVwb3J0EjAuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGVyb0JhdHRsZVJlcG9ydFJlcXVlc3QaMS5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIZXJvQmF0dGxlUmVwb3J0UmVzcG9uc2USjAEKGUdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnQSNi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIYWdpcG93ZXJIaXN0b3J5UmVwb3J0UmVxdWVzdBo3LmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhhZ2lwb3dlckhpc3RvcnlSZXBvcnRSZXNwb25zZRKAAQoVR2V0SGlzdG9yaWNhbFRpbWVsaW5lEjIuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lUmVxdWVzdBozLmhhZ2ljb2RlLnBsYXRmb3JtLnYxLkdldEhpc3RvcmljYWxUaW1lbGluZVJlc3BvbnNlEpUBChxHZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzEjkuaGFnaWNvZGUucGxhdGZvcm0udjEuR2V0SGlzdG9yaWNhbFRpbWVsaW5lU2FtcGxlc1JlcXVlc3QaOi5oYWdpY29kZS5wbGF0Zm9ybS52MS5HZXRIaXN0b3JpY2FsVGltZWxpbmVTYW1wbGVzUmVzcG9uc2VCKqoCJ1BDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5QbGF0Zm9ybS5WMWIGcHJvdG8z",[Ue,Ne,rs]),Ph=v(er,1),qh=v(er,3),eb=We(er,0),de=oe("CiJoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25zLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIlUKFk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QSOwoEYm9keRgBIAEoCzItLmhhZ2ljb2RlLnNlc3Npb24udjEuQ3JlYXRlQ2hhdFNlc3Npb25SZXF1ZXN0IlIKF09wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIk0KEk9wZW5TZXNzaW9uUmVxdWVzdBI3CgRib2R5GAEgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdCJOChNPcGVuU2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIicKEUdldFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiTQoSR2V0U2Vzc2lvblJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvImEKElNhdmVTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjcKBGJvZHkYAiABKAsyKS5oYWdpY29kZS5zZXNzaW9uLnYxLlVwZGF0ZVNlc3Npb25SZXF1ZXN0Ik4KE1NhdmVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8izAEKE0xpc3RTZXNzaW9uc1JlcXVlc3QSEQoEdHlwZRgBIAEoCUgAiAEBEhgKC2FjdGl2ZV9vbmx5GAIgASgISAGIAQESHQoQaW5jbHVkZV9hcmNoaXZlZBgDIAEoCEgCiAEBEhcKCnByb2plY3RfaWQYBCABKAlIA4gBARITCgtwcm9qZWN0X2lkcxgFIAMoCUIHCgVfdHlwZUIOCgxfYWN0aXZlX29ubHlCEwoRX2luY2x1ZGVfYXJjaGl2ZWRCDQoLX3Byb2plY3RfaWQiUwoUTGlzdFNlc3Npb25zUmVzcG9uc2USOwoGcmVzdWx0GAEgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTGlzdFJlc3BvbnNlRHRvIkAKFERlbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSFAoMZGVsZXRlX2ZpbGVzGAIgASgIIlYKFURlbGV0ZVNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIvChlBcmNoaXZlQ2hhdFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWwoaQXJjaGl2ZUNoYXRTZXNzaW9uUmVzcG9uc2USPQoGcmVzdWx0GAEgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5TaW1wbGVNZXNzYWdlUmVzcG9uc2VEdG8idAoZU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEkMKBGJvZHkYAiABKAsyNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0IlUKGlN3aXRjaFN0b3BwZWRBZ2VudFJlc3BvbnNlEjcKBnJlc3VsdBgBIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIl4KG1N0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBI/CgRib2R5GAEgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVIYWdpVGFza1Nlc3Npb25SZXF1ZXN0IlcKHFN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iZAohU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXF1ZXN0Ej8KBGJvZHkYASABKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkNyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QiXQoiU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byLOAwoSQ2hhdEhlcm9TdW1tYXJ5RHRvEg8KB2hlcm9faWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARIVCg1leGVjdXRvcl90eXBlGAUgASgJEhkKDGFnZW50X2NsaV9pZBgGIAEoCUgCiAEBEhsKDmFnZW50X2NsaV9uYW1lGAcgASgJSAOIAQESGwoOYWdlbnRfY2xpX2ljb24YCCABKAlIBIgBARIVCghtb2RlbF9pZBgJIAEoCUgFiAEBEhcKCm1vZGVsX25hbWUYCiABKAlIBogBARIXCgptb2RlbF9pY29uGAsgASgJSAeIAQESIgoVc2Vjb25kYXJ5X21vZGVsX2xhYmVsGAwgASgJSAiIAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQg8KDV9hZ2VudF9jbGlfaWRCEQoPX2FnZW50X2NsaV9uYW1lQhEKD19hZ2VudF9jbGlfaWNvbkILCglfbW9kZWxfaWRCDQoLX21vZGVsX25hbWVCDQoLX21vZGVsX2ljb25CGAoWX3NlY29uZGFyeV9tb2RlbF9sYWJlbCI4ChRPcGVuU3BlY1Rhc2tQcm9ncmVzcxIRCgljb21wbGV0ZWQYASABKAUSDQoFdG90YWwYAiABKAUi/gEKEE9wZW5TcGVjRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhUKDXJlbGF0aXZlX3BhdGgYAiABKAkSDgoGZXhpc3RzGAMgASgIEhEKCWZpbGVfdHlwZRgEIAEoCRITCgtpc19yZXF1aXJlZBgFIAEoCBITCgtpc19hcmNoaXZlZBgGIAEoCBIxCg1hcmNoaXZlZF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJACg10YXNrX3Byb2dyZXNzGAggASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY1Rhc2tQcm9ncmVzcyJcChFPcGVuU3BlY0ZpbGVzSW5mbxIRCgliYXNlX3BhdGgYASABKAkSNAoFZmlsZXMYAiADKAsyJS5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TcGVjRmlsZUluZm8i3gIKFlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SDQoFaW5kZXgYASABKAUSDAoEbW9kZRgCIAEoBRItCglxdWV1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NvbnRlbnRfcHJldmlldxgEIAEoCRIhChRleGVjdXRpb25fbWVzc2FnZV9pZBgFIAEoCUgAiAEBEhEKCWNhbl9zdGVlchgGIAEoCBIWCglzY2hlZHVsZWQYByABKAhIAYgBARIuCgpkdWVfYXRfdXRjGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIhChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgJIAEoCUgCiAEBQhcKFV9leGVjdXRpb25fbWVzc2FnZV9pZEIMCgpfc2NoZWR1bGVkQhcKFV9zY2hlZHVsZWRfbWVzc2FnZV9pZCKAAQoWU2Vzc2lvbk5vdGlmaWNhdGlvbkR0bxIMCgRraW5kGAEgASgJEi8KC29ic2VydmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgdwYXlsb2FkGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIu0BChZTZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhoKDXByb21wdF90b2tlbnMYASABKAVIAIgBARIhChRjYWNoZWRfcHJvbXB0X3Rva2VucxgCIAEoBUgBiAEBEh4KEWNvbXBsZXRpb25fdG9rZW5zGAMgASgFSAKIAQESMwoPbGFzdF91cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcHJvbXB0X3Rva2Vuc0IXChVfY2FjaGVkX3Byb21wdF90b2tlbnNCFAoSX2NvbXBsZXRpb25fdG9rZW5zIl8KFFN0YWdlRXhlY3V0b3JJbmZvRHRvEhUKDXByb3ZpZGVyX3R5cGUYASABKAkSMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK8AgoVU3RhZ2VIZXJvU2VsZWN0aW9uRHRvEhEKCXN0YWdlX2tleRgBIAEoCRISCgpzY3JpcHRfa2V5GAIgASgJEhUKDXNjZW5hcmlvX25hbWUYAyABKAkSFAoHaGVyb19pZBgEIAEoCUgAiAEBEhYKCWhlcm9fbmFtZRgFIAEoCUgBiAEBEhYKCWhlcm9faWNvbhgGIAEoCUgCiAEBEhUKDWV4ZWN1dG9yX3R5cGUYByABKAkSFQoNdXNlZF9mYWxsYmFjaxgIIAEoCBIYChBzZWxlY3Rpb25fc291cmNlGAkgASgJEi8KC3NlbGVjdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfaGVyb19pZEIMCgpfaGVyb19uYW1lQgwKCl9oZXJvX2ljb24i9QwKElNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHAoPY2hpZWZfY29tcGxhaW50GAQgASgJSAGIAQESDAoEY29kZRgFIAEoBRIMCgR0eXBlGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCglpc19hY3RpdmUYCCABKAgSMgoObGFzdF9hY3RpdmVfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnByb2plY3RfaWQYCiABKAkSFAoMcHJvamVjdF9uYW1lGAsgASgJEhQKDHByb2plY3RfcGF0aBgMIAEoCRIaCg1wcm9wb3NhbF9uYW1lGA0gASgJSAKIAQESPwoPb3Blbl9zcGVjX2ZpbGVzGA4gASgLMiYuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU3BlY0ZpbGVzSW5mbxIdChVwZW5kaW5nX21lc3NhZ2VfY291bnQYDyABKAUSQwoOcXVldWVfbWVzc2FnZXMYECADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlF1ZXVlTWVzc2FnZVN1bW1hcnlEdG8SHgoRd29ya2luZ19kaXJlY3RvcnkYESABKAlIA4gBARIVCghtZXRhZGF0YRgSIAEoCUgEiAEBEh8KEmNoYXRfZXhlY3V0b3JfdHlwZRgTIAEoCUgFiAEBEjoKCWNoYXRfaGVybxgUIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2hhdEhlcm9TdW1tYXJ5RHRvElkKEnN0YWdlX2V4ZWN1dG9yX21hcBgVIAMoCzI9LmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvLlN0YWdlRXhlY3V0b3JNYXBFbnRyeRJkChhzdGFnZV9oZXJvX3NlbGVjdGlvbl9tYXAYFiADKAsyQi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5TdGFnZUhlcm9TZWxlY3Rpb25NYXBFbnRyeRIgChNydW50aW1lX21vZGVsX2xhYmVsGBcgASgJSAaIAQESOQoVcHJvY2Vzc2luZ19zdGFydGVkX2F0GBggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJCCg1zZXNzaW9uX3VzYWdlGBkgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5RHRvEhwKD3ByZXZpb3VzX3N0YXR1cxgaIAEoCUgHiAEBEkIKDW5vdGlmaWNhdGlvbnMYGyADKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25Ob3RpZmljYXRpb25EdG8SRwoSc2NoZWR1bGVkX21lc3NhZ2VzGBwgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvElAKDXVzZXJfbWV0YWRhdGEYHSADKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0by5Vc2VyTWV0YWRhdGFFbnRyeRpiChVTdGFnZUV4ZWN1dG9yTWFwRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikuaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUV4ZWN1dG9ySW5mb0R0bzoCOAEaaAoaU3RhZ2VIZXJvU2VsZWN0aW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGFnZUhlcm9TZWxlY3Rpb25EdG86AjgBGjMKEVVzZXJNZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX2Rlc2NyaXB0aW9uQhIKEF9jaGllZl9jb21wbGFpbnRCEAoOX3Byb3Bvc2FsX25hbWVCFAoSX3dvcmtpbmdfZGlyZWN0b3J5QgsKCV9tZXRhZGF0YUIVChNfY2hhdF9leGVjdXRvcl90eXBlQhYKFF9ydW50aW1lX21vZGVsX2xhYmVsQhIKEF9wcmV2aW91c19zdGF0dXMi+QEKGENyZWF0ZUNoYXRTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhgKEGlzX2RlZmF1bHRfdGl0bGUYAyABKAgSFAoHaGVyb19pZBgEIAEoCUgAiAEBEk0KCG1ldGFkYXRhGAUgAygLMjsuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVDaGF0U2Vzc2lvblJlcXVlc3QuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX2hlcm9faWQivgIKEFBhdGhSZWZlcmVuY2VEdG8SCgoCaWQYASABKAkSDgoGc291cmNlGAIgASgJEhUKDWRpc3BsYXlfdmFsdWUYAyABKAkSFQoNcGh5c2ljYWxfcGF0aBgEIAEoCRINCgVzdGFydBgFIAEoBRILCgNlbmQYBiABKAUSFgoJZW50aXR5X2lkGAcgASgJSACIAQESFwoKcHJvamVjdF9pZBgIIAEoCUgBiAEBEkUKCG1ldGFkYXRhGAkgAygLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl9lbnRpdHlfaWRCDQoLX3Byb2plY3RfaWQi+wEKGVNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghpbWFnZV9pZBgCIAEoCRIWCg5oYWdpX2ltYWdlX3VybBgDIAEoCRIYCgtwcmV2aWV3X3VybBgEIAEoCUgAiAEBEhYKCWZpbGVfbmFtZRgFIAEoCUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgGIAEoCUgCiAEBEhYKCWZpbGVfc2l6ZRgHIAEoA0gDiAEBQg4KDF9wcmV2aWV3X3VybEIMCgpfZmlsZV9uYW1lQg8KDV9jb250ZW50X3R5cGVCDAoKX2ZpbGVfc2l6ZSJ+ChlUYXJnZXRQcm9qZWN0UmVmZXJlbmNlRHRvEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1waHlzaWNhbF9wYXRoGAMgASgJEhgKC2FjY2Vzc190eXBlGAQgASgJSACIAQFCDgoMX2FjY2Vzc190eXBlIocBChNUYXJnZXRSZXBvc2l0b3J5RHRvEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIZCgxkaXNwbGF5X25hbWUYAyABKAlIAIgBARIYCgthY2Nlc3NfdHlwZRgEIAEoCUgBiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2FjY2Vzc190eXBlIj0KGFRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxIMCgRtb2RlGAEgASgJEhMKC2FjY2Vzc190eXBlGAIgASgJIpEGChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIcCg9jaGllZl9jb21wbGFpbnQYAiABKAlIAIgBARIlChhvcmlnaW5hbF9jaGllZl9jb21wbGFpbnQYAyABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAQgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhEKBHR5cGUYBSABKAlIAogBARISCgpwcm9qZWN0X2lkGAYgASgJEkUKE3RhcmdldF9yZXBvc2l0b3JpZXMYByADKAsyKC5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlEdG8STgoXdGFyZ2V0X3JlcG9zaXRvcnlfc2NvcGUYCCABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFJlcG9zaXRvcnlTY29wZUR0bxJHCg90YXJnZXRfcHJvamVjdHMYCSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAogAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEhgKEGlzX2RlZmF1bHRfdGl0bGUYCyABKAgSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgMIAEoCUgDiAEBEkkKCG1ldGFkYXRhGA0gAygLMjcuaGFnaWNvZGUuc2Vzc2lvbi52MS5DcmVhdGVTZXNzaW9uUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfY2hpZWZfY29tcGxhaW50QhsKGV9vcmlnaW5hbF9jaGllZl9jb21wbGFpbnRCBwoFX3R5cGVCHAoaX3Byb3Bvc2FsX2NvbnRlbnRfbGFuZ3VhZ2UikwEKFFVwZGF0ZVNlc3Npb25SZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESFQoIbWV0YWRhdGEYBCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0ILCglfbWV0YWRhdGEiUwoWU2Vzc2lvbkxpc3RSZXNwb25zZUR0bxI5CghzZXNzaW9ucxgBIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvIisKGFNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJIjMKIFN3aXRjaFN0b3BwZWRTZXNzaW9uQWdlbnRSZXF1ZXN0Eg8KB2hlcm9faWQYASABKAki6wgKHENyZWF0ZUhhZ2lUYXNrU2Vzc2lvblJlcXVlc3QSDQoFdGl0bGUYASABKAkSGAoQaXNfZGVmYXVsdF90aXRsZRgCIAEoCBISCgpwcm9qZWN0X2lkGAMgASgJEhYKCXByb21wdF9pZBgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARJIChBkcmFmdF9pbWFnZV9yZWZzGAYgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uTWVzc2FnZUltYWdlUmVmRHRvEhwKD3JlcG9zaXRvcnlfcGF0aBgHIAEoCUgCiAEBEhgKC3RhcmdldF90eXBlGAggASgJSAOIAQESFQoIdmF1bHRfaWQYCSABKAlIBIgBARIcCg9vdXRwdXRfdmF1bHRfaWQYCiABKAlIBYgBARIbChNyZWZlcmVuY2VfdmF1bHRfaWRzGAsgAygJEhoKEmVkaXRhYmxlX3ZhdWx0X2lkcxgMIAMoCRJHCg90YXJnZXRfcHJvamVjdHMYDSADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlRhcmdldFByb2plY3RSZWZlcmVuY2VEdG8SHwoScmVzZWFyY2hfZGlyZWN0aW9uGA4gASgJSAaIAQESGwoOcHJlc2V0X3Rhc2tfaWQYDyABKAlIB4gBARIfChJwcmVzZXRfdGFza19sb2NhbGUYECABKAlICIgBARIxChFwcmVzZXRfdGFza19pbnB1dBgRIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIXCg9yZXBvc2l0b3J5X3VybHMYEiADKAkSEwoLcHJvamVjdF9pZHMYEyADKAkSEQoJbmVlZF9wdXNoGBQgASgIEiQKF3B1bGxfcmViYXNlX2JlZm9yZV9wdXNoGBUgASgISAmIAQESHwoSdGFyZ2V0X2JyYW5jaF9tb2RlGBYgASgJSAqIAQESHwoSdGFyZ2V0X2JyYW5jaF9uYW1lGBcgASgJSAuIAQESFwoKc2NyaXB0X2tleRgYIAEoCUgMiAEBEhQKB2hlcm9faWQYGSABKAlIDYgBARIgChNoZXJvX3NlbGVjdGlvbl9tb2RlGBogASgJSA6IAQFCDAoKX3Byb21wdF9pZEIKCghfbWVzc2FnZUISChBfcmVwb3NpdG9yeV9wYXRoQg4KDF90YXJnZXRfdHlwZUILCglfdmF1bHRfaWRCEgoQX291dHB1dF92YXVsdF9pZEIVChNfcmVzZWFyY2hfZGlyZWN0aW9uQhEKD19wcmVzZXRfdGFza19pZEIVChNfcHJlc2V0X3Rhc2tfbG9jYWxlQhoKGF9wdWxsX3JlYmFzZV9iZWZvcmVfcHVzaEIVChNfdGFyZ2V0X2JyYW5jaF9tb2RlQhUKE190YXJnZXRfYnJhbmNoX25hbWVCDQoLX3NjcmlwdF9rZXlCCgoIX2hlcm9faWRCFgoUX2hlcm9fc2VsZWN0aW9uX21vZGUy6ggKD1Nlc3Npb25zU2VydmljZRJsCg9PcGVuQ2hhdFNlc3Npb24SKy5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlcXVlc3QaLC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5DaGF0U2Vzc2lvblJlc3BvbnNlEmAKC09wZW5TZXNzaW9uEicuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcGVuU2Vzc2lvblJlcXVlc3QaKC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wZW5TZXNzaW9uUmVzcG9uc2USXQoKR2V0U2Vzc2lvbhImLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblJlcXVlc3QaJy5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25SZXNwb25zZRJgCgtTYXZlU2Vzc2lvbhInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2F2ZVNlc3Npb25SZXF1ZXN0GiguaGFnaWNvZGUuc2Vzc2lvbi52MS5TYXZlU2Vzc2lvblJlc3BvbnNlEmMKDExpc3RTZXNzaW9ucxIoLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuTGlzdFNlc3Npb25zUmVzcG9uc2USZgoNRGVsZXRlU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuRGVsZXRlU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkRlbGV0ZVNlc3Npb25SZXNwb25zZRJ1ChJBcmNoaXZlQ2hhdFNlc3Npb24SLi5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLkFyY2hpdmVDaGF0U2Vzc2lvblJlc3BvbnNlEnUKElN3aXRjaFN0b3BwZWRBZ2VudBIuLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuU3dpdGNoU3RvcHBlZEFnZW50UmVzcG9uc2USewoUU3RhcnRIYWdpVGFza1Nlc3Npb24SMC5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBoxLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRIYWdpVGFza1Nlc3Npb25SZXNwb25zZRKNAQoaU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb24SNi5oYWdpY29kZS5zZXNzaW9uLnYxLlN0YXJ0TGVnYWN5SGFnaVRhc2tTZXNzaW9uUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuU3RhcnRMZWdhY3lIYWdpVGFza1Nlc3Npb25SZXNwb25zZUIpqgImUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLlNlc3Npb24uVjFiBnByb3RvMw",[Ue,Ne]),tb=v(de,1),nb=v(de,3),ob=v(de,5),rb=v(de,7),ab=v(de,9),ib=v(de,11),sb=v(de,13),lb=v(de,17),cb=v(de,30),db=v(de,36),ub=v(de,37),mb=v(de,41),hb=We(de,0),Me=oe("CitoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fbWVzc2FnaW5nLnByb3RvEhNoYWdpY29kZS5zZXNzaW9uLnYxIr0BChlHZXRTZXNzaW9uTWVzc2FnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEhoKDWhpc3Rvcnlfc2NvcGUYBCABKAlIAogBARISCgVvcmRlchgFIAEoCUgDiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCEAoOX2hpc3Rvcnlfc2NvcGVCCAoGX29yZGVyIlkKGkdldFNlc3Npb25NZXNzYWdlc1Jlc3BvbnNlEjsKBnJlc3VsdBgBIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUxpc3RSZXNwb25zZUR0byIqChRDYW5jZWxTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlYKFUNhbmNlbFNlc3Npb25SZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZUR0byI3CiFHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJeCiJHZXRTZXNzaW9uUHJvY2Vzc2luZ1N0YXR1c1Jlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvY2Vzc2luZ1N0YXR1c0R0byJGChtDYW5jZWxQZW5kaW5nTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBSJcChxDYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VEdG8iUQodQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgCIAEoCSJgCh5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2USPgoGcmVzdWx0GAEgASgLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvImQKE1N0ZWVyU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI5CgRib2R5GAIgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uU3RlZXJSZXF1ZXN0RHRvIlQKFFN0ZWVyU2Vzc2lvblJlc3BvbnNlEjwKBnJlc3VsdBgBIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8ihQEKGVN0ZWVyUXVldWVkTWVzc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRITCgtxdWV1ZV9pbmRleBgCIAEoBRI/CgRib2R5GAMgASgLMjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZWRNZXNzYWdlU3RlZXJSZXF1ZXN0RHRvImAKGlN0ZWVyUXVldWVkTWVzc2FnZVJlc3BvbnNlEkIKBnJlc3VsdBgBIAEoCzIyLmhhZ2ljb2RlLnNlc3Npb24udjEuUXVldWVkTWVzc2FnZVN0ZWVyUmVzcG9uc2VEdG8iZgoZUG9zdFNlc3Npb25NZXNzYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEjUKBGJvZHkYAiABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVxdWVzdCJZChpQb3N0U2Vzc2lvbk1lc3NhZ2VSZXNwb25zZRI7CgZyZXN1bHQYASABKAsyKy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RNZXNzYWdlUmVzcG9uc2VEdG8iYAoqR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSEwoGbG9jYWxlGAIgASgJSACIAQFCCQoHX2xvY2FsZSJ/CitHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlElAKBnJlc3VsdBgBIAEoCzJALmhhZ2ljb2RlLnNlc3Npb24udjEuQ29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXNwb25zZUR0byJxCh9TdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSOgoEYm9keRgCIAEoCzIsLmhhZ2ljb2RlLnNlc3Npb24udjEuQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8iaAogU3VibWl0U2Vzc2lvbkFubm90YXRpb25zUmVzcG9uc2USRAoGcmVzdWx0GAEgASgLMjQuaGFnaWNvZGUuc2Vzc2lvbi52MS5Bbm5vdGF0aW9uU3VibWlzc2lvblJlc3BvbnNlRHRvIvoBChZNZXNzYWdlSGVyb1NuYXBzaG90RHRvEhQKB2hlcm9faWQYASABKAlIAIgBARIWCgloZXJvX25hbWUYAiABKAlIAYgBARIWCgloZXJvX2ljb24YAyABKAlIAogBARIaCg1leGVjdXRvcl90eXBlGAQgASgJSAOIAQESEwoGc291cmNlGAUgASgJSASIAQESFgoJc3RhZ2Vfa2V5GAYgASgJSAWIAQFCCgoIX2hlcm9faWRCDAoKX2hlcm9fbmFtZUIMCgpfaGVyb19pY29uQhAKDl9leGVjdXRvcl90eXBlQgkKB19zb3VyY2VCDAoKX3N0YWdlX2tleSJSChxNZXNzYWdlVXNlclF1ZXN0aW9uQW5zd2VyRHRvEhAKCHF1ZXN0aW9uGAEgASgJEg4KBnZhbHVlcxgCIAMoCRIQCghyZWplY3RlZBgDIAEoCCJCChxNZXNzYWdlVXNlclF1ZXN0aW9uT3B0aW9uRHRvEg0KBWxhYmVsGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIsgBChpNZXNzYWdlVXNlclF1ZXN0aW9uSXRlbUR0bxIQCghxdWVzdGlvbhgBIAEoCRIOCgZoZWFkZXIYAiABKAkSFAoMbXVsdGlfc2VsZWN0GAMgASgIEkIKB29wdGlvbnMYBCADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25PcHRpb25EdG8SGwoTYWxsb3dfY3VzdG9tX2Fuc3dlchgFIAEoCBIRCglpc19zZWNyZXQYBiABKAgiWgocTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0bxIZChFtYXhfYW5zd2VyX2xlbmd0aBgBIAEoBRIfChdtYXhfdmFsdWVzX3Blcl9xdWVzdGlvbhgCIAEoBSLYAgoWTWVzc2FnZVVzZXJRdWVzdGlvbkR0bxITCgtxdWVzdGlvbl9pZBgBIAEoCRITCgZydW5faWQYAiABKAlIAIgBARINCgVzdGF0ZRgDIAEoCRJCCglxdWVzdGlvbnMYBCADKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25JdGVtRHRvEkIKB2Fuc3dlcnMYBSADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLk1lc3NhZ2VVc2VyUXVlc3Rpb25BbnN3ZXJEdG8SLwoLYW5zd2VyZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKBmxpbWl0cxgHIAEoCzIxLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZVVzZXJRdWVzdGlvbkxpbWl0c0R0b0IJCgdfcnVuX2lkIo4EChJNZXNzYWdlUmVzcG9uc2VEdG8SCgoCaWQYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRIMCgR0eXBlGAMgASgJEgwKBG1vZGUYBCABKAkSLQoJdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1jcmVhdGlvbl90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCg5jb250ZW50X2Jsb2NrcxgHIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRISCgVtb2RlbBgIIAEoCUgAiAEBEhUKCHByb3ZpZGVyGAkgASgJSAGIAQESQgoNaGVyb19zbmFwc2hvdBgKIAEoCzIrLmhhZ2ljb2RlLnNlc3Npb24udjEuTWVzc2FnZUhlcm9TbmFwc2hvdER0bxJCCg11c2VyX3F1ZXN0aW9uGAsgASgLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlVXNlclF1ZXN0aW9uRHRvEhgKC3N0ZWVyX3N0YXRlGAwgASgJSAKIAQESHwoScGFyZW50X3Rvb2xfdXNlX2lkGA0gASgJSAOIAQFCCAoGX21vZGVsQgsKCV9wcm92aWRlckIOCgxfc3RlZXJfc3RhdGVCFQoTX3BhcmVudF90b29sX3VzZV9pZCKyAQoWTWVzc2FnZUxpc3RSZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHBhZ2UYAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3RvdGFsX3BhZ2VzGAUgASgFEjkKCG1lc3NhZ2VzGAYgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5NZXNzYWdlUmVzcG9uc2VEdG8ikAEKGENhbmNlbFNlc3Npb25SZXNwb25zZUR0bxISCgpzZXNzaW9uX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIwCgxjYW5jZWxsZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKBnJ1bl9pZBgEIAEoCUgAiAEBQgkKB19ydW5faWQiyAIKE1Byb2Nlc3NpbmdTdGF0dXNEdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRIVCg1pc19wcm9jZXNzaW5nGAIgASgIEhwKFHF1ZXVlZF9tZXNzYWdlX2NvdW50GAMgASgFEkMKDnF1ZXVlX21lc3NhZ2VzGAQgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEjkKFXByb2Nlc3Npbmdfc3RhcnRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRwoSc2NoZWR1bGVkX21lc3NhZ2VzGAYgAygLMisuaGFnaWNvZGUuc2Vzc2lvbi52MS5RdWV1ZU1lc3NhZ2VTdW1tYXJ5RHRvEh8KF3NjaGVkdWxlZF9tZXNzYWdlX2NvdW50GAcgASgFIj0KFENhbmNlbGxlZE1lc3NhZ2VJbmZvEgwKBG1vZGUYASABKAkSFwoPY29udGVudF9wcmV2aWV3GAIgASgJIpIBChlDYW5jZWxTY2hlZHVsZWRNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIcChRzY2hlZHVsZWRfbWVzc2FnZV9pZBgDIAEoCRIhChlyZW1haW5pbmdfc2NoZWR1bGVkX2NvdW50GAQgASgFEg8KB21lc3NhZ2UYBSABKAkiwwEKF0NhbmNlbFBlbmRpbmdNZXNzYWdlRHRvEhIKCnNlc3Npb25faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBITCgtxdWV1ZV9pbmRleBgDIAEoBRIXCg9yZW1haW5pbmdfY291bnQYBCABKAUSDwoHbWVzc2FnZRgFIAEoCRJEChFjYW5jZWxsZWRfbWVzc2FnZRgGIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsbGVkTWVzc2FnZUluZm8iUgoXU2Vzc2lvblN0ZWVyUmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRIXCgptZXNzYWdlX2lkGAIgASgJSACIAQFCDQoLX21lc3NhZ2VfaWQiKQoWU2Vzc2lvblN0ZWVyUmVxdWVzdER0bxIPCgdjb250ZW50GAEgASgJIjAKHVF1ZXVlZE1lc3NhZ2VTdGVlclJlc3BvbnNlRHRvEg8KB291dGNvbWUYASABKAkiPAocUXVldWVkTWVzc2FnZVN0ZWVyUmVxdWVzdER0bxIcChRleGVjdXRpb25fbWVzc2FnZV9pZBgBIAEoCSKVAQoWUG9zdE1lc3NhZ2VSZXNwb25zZUR0bxIPCgdtZXNzYWdlGAEgASgJEiEKFHNjaGVkdWxlZF9tZXNzYWdlX2lkGAIgASgJSACIAQESLgoKZHVlX2F0X3V0YxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFwoVX3NjaGVkdWxlZF9tZXNzYWdlX2lkIu0BChJQb3N0TWVzc2FnZVJlcXVlc3QSDwoHY29udGVudBgBIAEoCRIMCgRtb2RlGAIgASgJEkIKCmltYWdlX3JlZnMYAyADKAsyLi5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25NZXNzYWdlSW1hZ2VSZWZEdG8SPgoPcGF0aF9yZWZlcmVuY2VzGAQgAygLMiUuaGFnaWNvZGUuc2Vzc2lvbi52MS5QYXRoUmVmZXJlbmNlRHRvEjQKEHNjaGVkdWxlZF9hdF91dGMYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIl4KK0NvbnZlcnRUb1Byb3Bvc2FsSGFnaVNraWxsUHJvbXB0UmVzcG9uc2VEdG8SDwoHb3V0Y29tZRgBIAEoCRITCgZwcm9tcHQYAiABKAlIAIgBAUIJCgdfcHJvbXB0ImAKH0Fubm90YXRpb25TdWJtaXNzaW9uUmVzcG9uc2VEdG8SDwoHbWVzc2FnZRgBIAEoCRIYChBhbm5vdGF0aW9uX2NvdW50GAIgASgFEhIKCmZpbGVfY291bnQYAyABKAUiygEKEkJsb2NrQW5ub3RhdGlvbkR0bxIZChFzdGFydF9saW5lX251bWJlchgBIAEoBRIXCg9lbmRfbGluZV9udW1iZXIYAiABKAUSGAoQb3JpZ2luYWxfY29udGVudBgDIAEoCRISCgpibG9ja190eXBlGAQgASgJEhcKD2Fubm90YXRpb25fdGV4dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgoKAmlkGAcgASgJIq8BChFGaWxlQW5ub3RhdGlvbkR0bxIRCglmaWxlX25hbWUYASABKAkSEQoJZmlsZV9wYXRoGAIgASgJEkIKEWJsb2NrX2Fubm90YXRpb25zGAMgAygLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5CbG9ja0Fubm90YXRpb25EdG8SHAoPZmlsZV9hbm5vdGF0aW9uGAQgASgJSACIAQFCEgoQX2ZpbGVfYW5ub3RhdGlvbiLfAQoXQW5ub3RhdGlvblN1Ym1pc3Npb25EdG8SEgoKc2Vzc2lvbl9pZBgBIAEoCRI1CgVmaWxlcxgCIAMoCzImLmhhZ2ljb2RlLnNlc3Npb24udjEuRmlsZUFubm90YXRpb25EdG8SGQoRdG90YWxfYW5ub3RhdGlvbnMYAyABKAUSMAoMc3VibWl0dGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1nbG9iYWxfcHJvbXB0GAUgASgJSACIAQFCEAoOX2dsb2JhbF9wcm9tcHQykQoKF1Nlc3Npb25NZXNzYWdpbmdTZXJ2aWNlEnUKEkdldFNlc3Npb25NZXNzYWdlcxIuLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVxdWVzdBovLmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvbk1lc3NhZ2VzUmVzcG9uc2USZgoNQ2FuY2VsU2Vzc2lvbhIpLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2Vzc2lvblJlcXVlc3QaKi5oYWdpY29kZS5zZXNzaW9uLnYxLkNhbmNlbFNlc3Npb25SZXNwb25zZRKNAQoaR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXMSNi5oYWdpY29kZS5zZXNzaW9uLnYxLkdldFNlc3Npb25Qcm9jZXNzaW5nU3RhdHVzUmVxdWVzdBo3LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0U2Vzc2lvblByb2Nlc3NpbmdTdGF0dXNSZXNwb25zZRJ7ChRDYW5jZWxQZW5kaW5nTWVzc2FnZRIwLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsUGVuZGluZ01lc3NhZ2VSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxQZW5kaW5nTWVzc2FnZVJlc3BvbnNlEoEBChZDYW5jZWxTY2hlZHVsZWRNZXNzYWdlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5DYW5jZWxTY2hlZHVsZWRNZXNzYWdlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlEmMKDFN0ZWVyU2Vzc2lvbhIoLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVxdWVzdBopLmhhZ2ljb2RlLnNlc3Npb24udjEuU3RlZXJTZXNzaW9uUmVzcG9uc2USdQoSU3RlZXJRdWV1ZWRNZXNzYWdlEi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXF1ZXN0Gi8uaGFnaWNvZGUuc2Vzc2lvbi52MS5TdGVlclF1ZXVlZE1lc3NhZ2VSZXNwb25zZRJ1ChJQb3N0U2Vzc2lvbk1lc3NhZ2USLi5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlcXVlc3QaLy5oYWdpY29kZS5zZXNzaW9uLnYxLlBvc3RTZXNzaW9uTWVzc2FnZVJlc3BvbnNlEqgBCiNHZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdBI/LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0Q29udmVydFRvUHJvcG9zYWxIYWdpU2tpbGxQcm9tcHRSZXF1ZXN0GkAuaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRDb252ZXJ0VG9Qcm9wb3NhbEhhZ2lTa2lsbFByb21wdFJlc3BvbnNlEocBChhTdWJtaXRTZXNzaW9uQW5ub3RhdGlvbnMSNC5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1JlcXVlc3QaNS5oYWdpY29kZS5zZXNzaW9uLnYxLlN1Ym1pdFNlc3Npb25Bbm5vdGF0aW9uc1Jlc3BvbnNlQimqAiZQQ29kZS5IdHRwQXBpLkdycGNDb250cmFjdHMuU2Vzc2lvbi5WMWIGcHJvdG8z",[Ue,Ne,de]),bb=v(Me,1),gb=v(Me,11),pb=v(Me,15),Ab=v(Me,19),fb=v(Me,34),Zb=v(Me,38),Rb=v(Me,43),Eb=We(Me,0),Ie=oe("CipoYWdpY29kZS9zZXNzaW9uL3YxL3Nlc3Npb25fcHJvcG9zYWwucHJvdG8SE2hhZ2ljb2RlLnNlc3Npb24udjEiOAoiTGlzdFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJInIKI0xpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEksKBnJlc3VsdBgBIAEoCzI7LmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZXNMaXN0UmVzcG9uc2VEdG8ijQIKGVVubGlua2VkT3BlblNwZWNDaGFuZ2VEdG8SDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRIPCgdzdW1tYXJ5GAMgASgJEhwKD3Rhc2tzX2NvbXBsZXRlZBgEIAEoBUgAiAEBEhgKC3Rhc2tzX3RvdGFsGAUgASgFSAGIAQESGQoRaGFzX3Byb3Bvc2FsX2ZpbGUYBiABKAgSDQoFZmlsZXMYByADKAkSIgoVbm90X2ltcG9ydGFibGVfcmVhc29uGAggASgJSAKIAQFCEgoQX3Rhc2tzX2NvbXBsZXRlZEIOCgxfdGFza3NfdG90YWxCGAoWX25vdF9pbXBvcnRhYmxlX3JlYXNvbiJpCiZVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc0xpc3RSZXNwb25zZUR0bxI/CgdjaGFuZ2VzGAEgAygLMi4uaGFnaWNvZGUuc2Vzc2lvbi52MS5VbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRHRvIjkKI0NvdW50VW5saW5rZWRPcGVuU3BlY0NoYW5nZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiawokQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEkMKBnJlc3VsdBgBIAEoCzIzLmhhZ2ljb2RlLnNlc3Npb24udjEuVW5saW5rZWRPcGVuU3BlY0NoYW5nZUNvdW50RHRvIi8KHlVubGlua2VkT3BlblNwZWNDaGFuZ2VDb3VudER0bxINCgVjb3VudBgBIAEoBSJiCiRHZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtjaGFuZ2VfbmFtZRgCIAEoCRIRCglmaWxlX3BhdGgYAyABKAkiawolR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXNwb25zZRJCCgZyZXN1bHQYASABKAsyMi5oYWdpY29kZS5zZXNzaW9uLnYxLlVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvIkMKHVVubGlua2VkT3BlblNwZWNDaGFuZ2VGaWxlRHRvEhEKCWZpbGVfcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgJIkgKHEltcG9ydE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFuZ2VfbmFtZXMYAiADKAkiZAodSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2USQwoGcmVzdWx0GAEgASgLMjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5JbXBvcnRPcGVuU3BlY0NoYW5nZXNSZXN1bHREdG8iZAoeSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzdWx0RHRvEkIKB3Jlc3VsdHMYASADKAsyMS5oYWdpY29kZS5zZXNzaW9uLnYxLkltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8imAEKHEltcG9ydE9wZW5TcGVjQ2hhbmdlRW50cnlEdG8SDAoEbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOAoHc2Vzc2lvbhgDIAEoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuU2Vzc2lvblJlc3BvbnNlRHRvEhQKB21lc3NhZ2UYBCABKAlIAIgBAUIKCghfbWVzc2FnZSJwCh5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI6CgRib2R5GAIgASgLMiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVByb3Bvc2FsUmVxdWVzdCJtCh9PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlc3BvbnNlEkoKBnJlc3VsdBgBIAEoCzI6LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0byJsChdHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEj0KBGJvZHkYAiABKAsyLy5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXF1ZXN0RHRvIlkKGEdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byJoChVBcmNoaXZlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRI7CgRib2R5GAIgASgLMi0uaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8iUQoWQXJjaGl2ZVNlc3Npb25SZXNwb25zZRI3CgZyZXN1bHQYASABKAsyJy5oYWdpY29kZS5zZXNzaW9uLnYxLlNlc3Npb25SZXNwb25zZUR0byJqChZFeGVjdXRlUHJvcG9zYWxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSPAoEYm9keRgCIAEoCzIuLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdER0byJYChdFeGVjdXRlUHJvcG9zYWxSZXNwb25zZRI9CgZyZXN1bHQYASABKAsyLS5oYWdpY29kZS5zZXNzaW9uLnYxLlNpbXBsZU1lc3NhZ2VSZXNwb25zZUR0byIsChZDb21wbGV0ZVNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiUgoXQ29tcGxldGVTZXNzaW9uUmVzcG9uc2USNwoGcmVzdWx0GAEgASgLMicuaGFnaWNvZGUuc2Vzc2lvbi52MS5TZXNzaW9uUmVzcG9uc2VEdG8iMwodVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJaCh5WYWxpZGF0ZVNlc3Npb25FeGVjdXRlUmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjEKG1ZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIlgKHFZhbGlkYXRlU2Vzc2lvblN0YXJ0UmVzcG9uc2USOAoGcmVzdWx0GAEgASgLMiguaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0aW9uUmVzdWx0RHRvIjMKHVZhbGlkYXRlU2Vzc2lvbkFyY2hpdmVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiWgoeVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEjgKBnJlc3VsdBgBIAEoCzIoLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblJlc3VsdER0byJyCiFQcm9wb3NhbE9wdGltaXphdGlvbkRpYWdub3N0aWNEdG8SDAoEY29kZRgBIAEoCRIQCghzZXZlcml0eRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhIKBWZpZWxkGAQgASgJSACIAQFCCAoGX2ZpZWxkIo4BCi1Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SEAoIaXNfdmFsaWQYASABKAgSSwoLZGlhZ25vc3RpY3MYAiADKAsyNi5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uRGlhZ25vc3RpY0R0byLcAwonUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvEhcKCnNjcmlwdF9rZXkYASABKAlIAIgBARIdChBzZWxlY3RlZF9oZXJvX2lkGAIgASgJSAGIAQESHAoPY2FwdGFpbl9oZXJvX2lkGAMgASgJSAKIAQESFgoJcm9zdGVyX2lkGAQgASgJSAOIAQESawoQZXh0ZW5zaW9uX2ZpZWxkcxgFIAMoCzJRLmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25TY2VuYXJpb1NldHRpbmdzRHRvLkV4dGVuc2lvbkZpZWxkc0VudHJ5EhYKCXN0YWdlX2tleRgGIAEoCUgEiAEBEh0KEHNlbGVjdGlvbl9zb3VyY2UYByABKAlIBYgBARo2ChRFeHRlbnNpb25GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19zY3JpcHRfa2V5QhMKEV9zZWxlY3RlZF9oZXJvX2lkQhIKEF9jYXB0YWluX2hlcm9faWRCDAoKX3Jvc3Rlcl9pZEIMCgpfc3RhZ2Vfa2V5QhMKEV9zZWxlY3Rpb25fc291cmNlIr4DCiNQcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVJlc3VsdER0bxIcCg9vcHRpbWl6ZWRfdGl0bGUYASABKAlIAIgBARIoChtvcHRpbWl6ZWRfcHJvcG9zYWxfbWFya2Rvd24YAiABKAlIAYgBARIfChdvcHRpbWl6ZWRfcHJvcG9zYWxfbmFtZRgDIAEoCRIdChVvcHRpbWl6ZWRfZGVzY3JpcHRpb24YBCABKAkSVwoRc2NlbmFyaW9fc2V0dGluZ3MYBSABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0bxJWCgp2YWxpZGF0aW9uGAYgASgLMkIuaGFnaWNvZGUuc2Vzc2lvbi52MS5Qcm9wb3NhbE9wdGltaXphdGlvbkJ1bmRsZVZhbGlkYXRpb25SZXN1bHREdG8SGQoMcmF3X3Jlc3BvbnNlGAcgASgJSAKIAQFCEgoQX29wdGltaXplZF90aXRsZUIeChxfb3B0aW1pemVkX3Byb3Bvc2FsX21hcmtkb3duQg8KDV9yYXdfcmVzcG9uc2Ui0ggKJFByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIbChNyZXF1ZXN0X2ZpbmdlcnByaW50GAEgASgJEjQKEGdlbmVyYXRlZF9hdF91dGMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnNvdXJjZRgDIAEoCRIVCg1hcHBsaWVkX3RpdGxlGAQgASgJEh0KFWFwcGxpZWRfcHJvcG9zYWxfbmFtZRgFIAEoCRIgChhwcm9wb3NhbF9kcmFmdF9hdmFpbGFibGUYBiABKAgSIAoYc2NlbmFyaW9fc2V0dGluZ3Nfc3RhdHVzGAcgASgJEhoKEmFwcGxpZWRfdGl0bGVfbW9kZRgIIAEoCRIQCghpc192YWxpZBgJIAEoCBJLCgtkaWFnbm9zdGljcxgKIAMoCzI2LmhhZ2ljb2RlLnNlc3Npb24udjEuUHJvcG9zYWxPcHRpbWl6YXRpb25EaWFnbm9zdGljRHRvEiYKGW9wdGltaXplZF90aXRsZV9jYW5kaWRhdGUYCyABKAlIAIgBARIjChZwcm9wb3NhbF9kcmFmdF9wcmV2aWV3GAwgASgJSAGIAQESGgoNYXJ0aWZhY3RfcGF0aBgNIAEoCUgCiAEBEhsKDmNvcnJlbGF0aW9uX2lkGA4gASgJSAOIAQESHQoQcmVzb2x2ZWRfaGVyb19pZBgPIAEoCUgEiAEBEh8KEnJlc29sdmVkX2hlcm9fbmFtZRgQIAEoCUgFiAEBEh8KEnJlc29sdmVkX2hlcm9faWNvbhgRIAEoCUgGiAEBEigKG3Jlc29sdmVkX2hlcm9fZXhlY3V0b3JfdHlwZRgSIAEoCUgHiAEBEiIKFWhlcm9fc2VsZWN0aW9uX3NvdXJjZRgTIAEoCUgIiAEBEiMKFmhlcm9fcm91dGluZ19zdGFnZV9rZXkYFCABKAlICYgBARIkChdoZXJvX3JvdXRpbmdfc2NyaXB0X2tleRgVIAEoCUgKiAEBEiQKF29wdGltaXphdGlvbl9jZXNzaW9uX2lkGBYgASgJSAuIAQFCHAoaX29wdGltaXplZF90aXRsZV9jYW5kaWRhdGVCGQoXX3Byb3Bvc2FsX2RyYWZ0X3ByZXZpZXdCEAoOX2FydGlmYWN0X3BhdGhCEQoPX2NvcnJlbGF0aW9uX2lkQhMKEV9yZXNvbHZlZF9oZXJvX2lkQhUKE19yZXNvbHZlZF9oZXJvX25hbWVCFQoTX3Jlc29sdmVkX2hlcm9faWNvbkIeChxfcmVzb2x2ZWRfaGVyb19leGVjdXRvcl90eXBlQhgKFl9oZXJvX3NlbGVjdGlvbl9zb3VyY2VCGQoXX2hlcm9fcm91dGluZ19zdGFnZV9rZXlCGgoYX2hlcm9fcm91dGluZ19zY3JpcHRfa2V5QhoKGF9vcHRpbWl6YXRpb25fY2Vzc2lvbl9pZCLVAQolUHJvcG9zYWxPcHRpbWl6YXRpb25CdW5kbGVSZXNwb25zZUR0bxJICgZyZXN1bHQYASABKAsyOC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlUmVzdWx0RHRvEkoKB3N1bW1hcnkYAiABKAsyOS5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uQnVuZGxlU3VtbWFyeUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgDIAEoCSKJAwoXT3B0aW1pemVQcm9wb3NhbFJlcXVlc3QSEwoLZGVzY3JpcHRpb24YASABKAkSJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgCIAEoCUgAiAEBEiMKFm9wdGltaXphdGlvbl9kaXJlY3Rpb24YAyABKAlIAYgBARISCgV0aXRsZRgEIAEoCUgCiAEBEhgKEGlzX2RlZmF1bHRfdGl0bGUYBSABKAgSJQoYb3JpZ2luYWxfY2hpZWZfY29tcGxhaW50GAYgASgJSAOIAQESVwoRc2NlbmFyaW9fc2V0dGluZ3MYByABKAsyPC5oYWdpY29kZS5zZXNzaW9uLnYxLlByb3Bvc2FsT3B0aW1pemF0aW9uU2NlbmFyaW9TZXR0aW5nc0R0b0IcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIZChdfb3B0aW1pemF0aW9uX2RpcmVjdGlvbkIICgZfdGl0bGVCGwoZX29yaWdpbmFsX2NoaWVmX2NvbXBsYWludCJFChpQbGFubmluZ0RpcmVjdGlvbk9wdGlvbkR0bxIPCgJpZBgBIAEoCUgAiAEBEg8KB2VuYWJsZWQYAiABKAhCBQoDX2lkIowCChpHZW5lcmF0ZVByb3Bvc2FsUmVxdWVzdER0bxIgChNlbmFibGVfZXhwbG9yZV9tb2RlGAEgASgISACIAQESTAoTcGxhbm5pbmdfZGlyZWN0aW9ucxgCIAMoCzIvLmhhZ2ljb2RlLnNlc3Npb24udjEuUGxhbm5pbmdEaXJlY3Rpb25PcHRpb25EdG8SJgoZcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZRgDIAEoCUgBiAEBEhQKB2hlcm9faWQYBCABKAlIAogBAUIWChRfZW5hYmxlX2V4cGxvcmVfbW9kZUIcChpfcHJvcG9zYWxfY29udGVudF9sYW5ndWFnZUIKCghfaGVyb19pZCI8ChhBcmNoaXZlU2Vzc2lvblJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIj0KGUV4ZWN1dGVQcm9wb3NhbFJlcXVlc3REdG8SFAoHaGVyb19pZBgBIAEoCUgAiAEBQgoKCF9oZXJvX2lkIlcKC0NvbmZsaWN0RHRvEgwKBHR5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhIKCnJlc29sdXRpb24YBCABKAkiawoSVmFsaWRhdGlvbklzc3VlRHRvEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIQCghzZXZlcml0eRgDIAEoCRIWCgllbnRpdHlfaWQYBCABKAlIAIgBAUIMCgpfZW50aXR5X2lkIoUBChRWYWxpZGF0aW9uU3VtbWFyeUR0bxIVCg1wcm9qZWN0X2NvdW50GAEgASgFEhUKDXNlc3Npb25fY291bnQYAiABKAUSHwoXZHVwbGljYXRlX3Byb2plY3RfY291bnQYAyABKAUSHgoWb3JwaGFuZWRfc2Vzc2lvbl9jb3VudBgEIAEoBSKMAgoTVmFsaWRhdGlvblJlc3VsdER0bxIQCghpc192YWxpZBgBIAEoCBI5Cgh3YXJuaW5ncxgCIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjcKBmVycm9ycxgDIAMoCzInLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvbklzc3VlRHRvEjMKCWNvbmZsaWN0cxgEIAMoCzIgLmhhZ2ljb2RlLnNlc3Npb24udjEuQ29uZmxpY3REdG8SOgoHc3VtbWFyeRgFIAEoCzIpLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGlvblN1bW1hcnlEdG8yngwKFlNlc3Npb25Qcm9wb3NhbFNlcnZpY2UShAEKF09wdGltaXplU2Vzc2lvblByb3Bvc2FsEjMuaGFnaWNvZGUuc2Vzc2lvbi52MS5PcHRpbWl6ZVNlc3Npb25Qcm9wb3NhbFJlcXVlc3QaNC5oYWdpY29kZS5zZXNzaW9uLnYxLk9wdGltaXplU2Vzc2lvblByb3Bvc2FsUmVzcG9uc2USbwoQR2VuZXJhdGVQcm9wb3NhbBIsLmhhZ2ljb2RlLnNlc3Npb24udjEuR2VuZXJhdGVQcm9wb3NhbFJlcXVlc3QaLS5oYWdpY29kZS5zZXNzaW9uLnYxLkdlbmVyYXRlUHJvcG9zYWxSZXNwb25zZRJpCg5BcmNoaXZlU2Vzc2lvbhIqLmhhZ2ljb2RlLnNlc3Npb24udjEuQXJjaGl2ZVNlc3Npb25SZXF1ZXN0GisuaGFnaWNvZGUuc2Vzc2lvbi52MS5BcmNoaXZlU2Vzc2lvblJlc3BvbnNlEmwKD0V4ZWN1dGVQcm9wb3NhbBIrLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVxdWVzdBosLmhhZ2ljb2RlLnNlc3Npb24udjEuRXhlY3V0ZVByb3Bvc2FsUmVzcG9uc2USbAoPQ29tcGxldGVTZXNzaW9uEisuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXF1ZXN0GiwuaGFnaWNvZGUuc2Vzc2lvbi52MS5Db21wbGV0ZVNlc3Npb25SZXNwb25zZRKBAQoWVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZRIyLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uRXhlY3V0ZVJlcXVlc3QaMy5oYWdpY29kZS5zZXNzaW9uLnYxLlZhbGlkYXRlU2Vzc2lvbkV4ZWN1dGVSZXNwb25zZRJ7ChRWYWxpZGF0ZVNlc3Npb25TdGFydBIwLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uU3RhcnRSZXF1ZXN0GjEuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25TdGFydFJlc3BvbnNlEoEBChZWYWxpZGF0ZVNlc3Npb25BcmNoaXZlEjIuaGFnaWNvZGUuc2Vzc2lvbi52MS5WYWxpZGF0ZVNlc3Npb25BcmNoaXZlUmVxdWVzdBozLmhhZ2ljb2RlLnNlc3Npb24udjEuVmFsaWRhdGVTZXNzaW9uQXJjaGl2ZVJlc3BvbnNlEpABChtMaXN0VW5saW5rZWRPcGVuU3BlY0NoYW5nZXMSNy5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1JlcXVlc3QaOC5oYWdpY29kZS5zZXNzaW9uLnYxLkxpc3RVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpMBChxDb3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzEjguaGFnaWNvZGUuc2Vzc2lvbi52MS5Db3VudFVubGlua2VkT3BlblNwZWNDaGFuZ2VzUmVxdWVzdBo5LmhhZ2ljb2RlLnNlc3Npb24udjEuQ291bnRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlc1Jlc3BvbnNlEpYBCh1HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZRI5LmhhZ2ljb2RlLnNlc3Npb24udjEuR2V0VW5saW5rZWRPcGVuU3BlY0NoYW5nZUZpbGVSZXF1ZXN0GjouaGFnaWNvZGUuc2Vzc2lvbi52MS5HZXRVbmxpbmtlZE9wZW5TcGVjQ2hhbmdlRmlsZVJlc3BvbnNlEn4KFUltcG9ydE9wZW5TcGVjQ2hhbmdlcxIxLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVxdWVzdBoyLmhhZ2ljb2RlLnNlc3Npb24udjEuSW1wb3J0T3BlblNwZWNDaGFuZ2VzUmVzcG9uc2VCKaoCJlBDb2RlLkh0dHBBcGkuR3JwY0NvbnRyYWN0cy5TZXNzaW9uLlYxYgZwcm90bzM",[Ne,de]),Sb=v(Ie,15),Vb=v(Ie,17),Gb=v(Ie,19),Nb=v(Ie,21),vb=v(Ie,23),Wb=v(Ie,36),yb=v(Ie,38),Ib=v(Ie,39),Xb=v(Ie,40),Yb=We(Ie,0),Cb=oe("CixoYWdpY29kZS9jb29yZGluYXRpb24vdjEvcmVzb3VyY2VfbG9jay5wcm90bxIYaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxIuMFCgpMb2NrU3RhdHVzEg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhAKCHBvc2l0aW9uGAQgASgFEg0KBWVwb2NoGAUgASgDEjQKEGxlYXNlX2V4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKE21heF9ob2xkX2V4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2hvbGRlcl9vd25lcl9pZBgIIAEoCRIUCgxob2xkZXJfbGFiZWwYCSABKAkSFAoMcXVldWVfbGVuZ3RoGAogASgFEiIKGnN1Z2dlc3RlZF9wb2xsX2ludGVydmFsX21zGAsgASgFEicKH3N1Z2dlc3RlZF9oZWFydGJlYXRfaW50ZXJ2YWxfbXMYDCABKAUSLwoLc2VydmVyX3RpbWUYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiEKGXJlcXVpc2l0aW9uZWRfYnlfb3duZXJfaWQYDiABKAkSGgoScmVxdWlzaXRpb25fcmVhc29uGA8gASgJEjQKEHJlcXVpc2l0aW9uZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFGNoZWNrX2luX2VhcmxpZXN0X2F0GBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJjaGVja19pbl9sYXRlc3RfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEHR1cm5fZWFybGllc3RfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnR1cm5fbGF0ZXN0X2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKrAQoSQWNxdWlyZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGgoNbGVhc2Vfc2Vjb25kcxgDIAEoBUgAiAEBEhIKBWxhYmVsGAQgASgJSAGIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgCiAEBQhAKDl9sZWFzZV9zZWNvbmRzQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJLChNBY3F1aXJlTG9ja1Jlc3BvbnNlEjQKBnJlc3VsdBgBIAEoCzIkLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5Mb2NrU3RhdHVzImUKFEdldExvY2tTdGF0dXNSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSGQoMd2FpdF9zZWNvbmRzGAMgASgFSACIAQFCDwoNX3dhaXRfc2Vjb25kcyJNChVHZXRMb2NrU3RhdHVzUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMigQEKEFJlbmV3TG9ja1JlcXVlc3QSDwoHbG9ja19pZBgBIAEoCRIQCghvd25lcl9pZBgCIAEoCRIaCg1sZWFzZV9zZWNvbmRzGAMgASgFSACIAQESEgoFZXBvY2gYBCABKANIAYgBAUIQCg5fbGVhc2Vfc2Vjb25kc0IICgZfZXBvY2giSQoRUmVuZXdMb2NrUmVzcG9uc2USNAoGcmVzdWx0GAEgASgLMiQuaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkxvY2tTdGF0dXMiVQoSUmVsZWFzZUxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSEgoFZXBvY2gYAyABKANIAIgBAUIICgZfZXBvY2giWQoTUmVsZWFzZUxvY2tSZXNwb25zZRIQCghyZWxlYXNlZBgBIAEoCBIXCg9wcmV2aW91c19zdGF0dXMYAiABKAkSFwoPaG9sZGVyX293bmVyX2lkGAMgASgJIpEBChZSZXF1aXNpdGlvbkxvY2tSZXF1ZXN0Eg8KB2xvY2tfaWQYASABKAkSEAoIb3duZXJfaWQYAiABKAkSDgoGcmVhc29uGAMgASgJEhIKBWxhYmVsGAQgASgJSACIAQESFwoKc2Vzc2lvbl9pZBgFIAEoCUgBiAEBQggKBl9sYWJlbEINCgtfc2Vzc2lvbl9pZCJPChdSZXF1aXNpdGlvbkxvY2tSZXNwb25zZRI0CgZyZXN1bHQYASABKAsyJC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N0YXR1cyIyChBMaXN0TG9ja3NSZXF1ZXN0EhMKBnByZWZpeBgBIAEoCUgAiAEBQgkKB19wcmVmaXgiSQoRTGlzdExvY2tzUmVzcG9uc2USNAoFbG9ja3MYASADKAsyJS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTG9ja1N1bW1hcnki3QEKC0xvY2tTdW1tYXJ5Eg8KB2xvY2tfaWQYASABKAkSFwoPaG9sZGVyX293bmVyX2lkGAIgASgJEhQKDGhvbGRlcl9sYWJlbBgDIAEoCRINCgVlcG9jaBgEIAEoAxI0ChBsZWFzZV9leHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCg9ob2xkX3N0YXJ0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHF1ZXVlX2xlbmd0aBgHIAEoBTKjBQoTUmVzb3VyY2VMb2NrU2VydmljZRJqCgtBY3F1aXJlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5BY3F1aXJlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuQWNxdWlyZUxvY2tSZXNwb25zZRJwCg1HZXRMb2NrU3RhdHVzEi4uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXF1ZXN0Gi8uaGFnaWNvZGUuY29vcmRpbmF0aW9uLnYxLkdldExvY2tTdGF0dXNSZXNwb25zZRJkCglSZW5ld0xvY2sSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVuZXdMb2NrUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZW5ld0xvY2tSZXNwb25zZRJqCgtSZWxlYXNlTG9jaxIsLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZWxlYXNlTG9ja1JlcXVlc3QaLS5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVsZWFzZUxvY2tSZXNwb25zZRJ2Cg9SZXF1aXNpdGlvbkxvY2sSMC5oYWdpY29kZS5jb29yZGluYXRpb24udjEuUmVxdWlzaXRpb25Mb2NrUmVxdWVzdBoxLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5SZXF1aXNpdGlvbkxvY2tSZXNwb25zZRJkCglMaXN0TG9ja3MSKi5oYWdpY29kZS5jb29yZGluYXRpb24udjEuTGlzdExvY2tzUmVxdWVzdBorLmhhZ2ljb2RlLmNvb3JkaW5hdGlvbi52MS5MaXN0TG9ja3NSZXNwb25zZUIuqgIrUENvZGUuSHR0cEFwaS5HcnBjQ29udHJhY3RzLkNvb3JkaW5hdGlvbi5WMWIGcHJvdG8z",[Ne]),Bb=We(Cb,0),Hn=new Set([b.INT64,b.UINT64,b.SINT64,b.FIXED64,b.SFIXED64]),Us=e=>e.typeName.startsWith("google.protobuf.");function Qn(e){if(typeof e!="string")return e;const t=Number(e);return Number.isSafeInteger(t)?t:e}function un(e,t){if(t==null||typeof t!="object"||Array.isArray(t)||Us(e))return t;const n=t;for(const o of e.fields){const r=n[o.jsonName];r!==void 0&&(n[o.jsonName]=wb(o,r))}return n}function wb(e,t){switch(e.fieldKind){case"scalar":return Hn.has(e.scalar)?Qn(t):t;case"message":return un(e.message,t);case"list":return Array.isArray(t)?e.listKind==="scalar"?Hn.has(e.scalar)?t.map(Qn):t:e.listKind==="message"?t.map(n=>un(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"&&Hn.has(e.scalar)?n[o]=Qn(n[o]):e.mapKind==="message"&&(n[o]=un(e.message,n[o]));return n}default:return t}}function Fb(e,t){return un(e,ls(e,t,{alwaysEmitImplicit:!0}))}function kb(e,t){return Fb(e,t).result}function mn(e,t,n=0){if(t===null||typeof t!="object"||Array.isArray(t)||Us(e)||n>8)return t;const o=t;for(const r of e.fields){const a=o[r.jsonName];if(!(a===null||typeof a!="object")){if(r.fieldKind==="message")mn(r.message,a,n+1);else if(r.fieldKind==="list"&&r.listKind==="message"&&Array.isArray(a))a.forEach(i=>mn(r.message,i,n+1));else if(r.fieldKind==="map"&&!Array.isArray(a)){const i=a;for(const s of Object.keys(i)){const l=i[s];r.mapKind==="scalar"&&r.scalar===b.STRING?l===null?delete i[s]:(typeof l=="number"||typeof l=="boolean")&&(i[s]=String(l)):r.mapKind==="message"&&mn(r.message,l,n+1)}}}}return t}function D(e,t){return bs(e,t===void 0?t:mn(e,JSON.parse(JSON.stringify(t))),{ignoreUnknownFields:!0})}function Fa(e,t){const n=Ws(e);if(n)throw t.forEach((o,r)=>{n.metadata.append(r,o)}),n;if(!t.has("Grpc-Status")&&!e.has("Grpc-Status"))throw new B("protocol error: missing status",S.Internal)}function Ub(e,t,n,o){var r,a;const i=new Headers(n??{});i.set(Vm,e?Xm:Ym),i.set(Im,"1");const s=(a=(r=i.get("User-Agent"))!==null&&r!==void 0?r:i.get("X-User-Agent"))!==null&&a!==void 0?a:"connect-es/2.2.0";return i.set(ym,s),o&&i.set(Wm,s),t!==void 0&&i.set(Nm,`${t}m`),i}function ka(e,t,n,o,r,a){const i=Ub(e,t,n,a);return r!=null&&i.set(Ns,r.name),o.length>0&&i.set(Gm,o.map(s=>s.name).join(",")),i}function Jb(e){switch(e){case 400:return S.Internal;case 401:return S.Unauthenticated;case 403:return S.PermissionDenied;case 404:return S.Unimplemented;case 429:return S.Unavailable;case 502:return S.Unavailable;case 503:return S.Unavailable;case 504:return S.Unavailable;default:return S.Unknown}}function xb(e,t){var n;if(e>=200&&e<300)return{foundStatus:t.has(vs),headerError:Ws(t)};throw new B(decodeURIComponent((n=t.get("Grpc-Message"))!==null&&n!==void 0?n:`HTTP ${e}`),Jb(e),t)}function Ua(e,t,n){const{foundStatus:o,headerError:r}=xb(t,n);let a;const i=n.get(Ns);if(i!==null&&i.toLowerCase()!=="identity"&&(a=e.find(s=>s.name===i),!a))throw new B(`unsupported response encoding "${i}"`,S.Internal,n);return{foundStatus:o,compression:a,headerError:r}}var Ja=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(a){n[a]=e[a]&&function(i){return new Promise(function(s,l){i=e[a](i),r(s,l,i.done,i.value)})}}function r(a,i,s,l){Promise.resolve(l).then(function(c){a({value:c,done:s})},i)}},ze=function(e){return this instanceof ze?(this.v=e,this):new ze(e)},Kb=function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(e,t||[]),r,a=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",i),r[Symbol.asyncIterator]=function(){return this},r;function i(p){return function(R){return Promise.resolve(R).then(p,h)}}function s(p,R){o[p]&&(r[p]=function(V){return new Promise(function(X,J){a.push([p,V,X,J])>1||l(p,V)})},R&&(r[p]=R(r[p])))}function l(p,R){try{c(o[p](R))}catch(V){f(a[0][3],V)}}function c(p){p.value instanceof ze?Promise.resolve(p.value.v).then(u,h):f(a[0][2],p)}function u(p){l("next",p)}function h(p){l("throw",p)}function f(p,R){p(R),a.shift(),a.length&&l(a[0][0],a[0][1])}};function zb(e){return{async unary(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,await km({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!1,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(Ss([l.message]),Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,headerError:h}=Ua(e.acceptCompression,c.status,c.header),{trailer:f,message:p}=await dm(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),async R=>{var V,X,J,d;let m,A;try{for(var g=!0,Z=Ja(R),G;G=await Z.next(),V=G.done,!V;g=!0){d=G.value,g=!1;const C=d;if(C.end){if(A!==void 0)throw new B("protocol error: received extra trailer",S.Unimplemented);A=C.value}else{if(m!==void 0)throw new B("protocol error: received extra output message for unary method",S.Unimplemented);m=C.value}}}catch(C){X={error:C}}finally{try{!g&&!V&&(J=Z.return)&&await J.call(Z)}finally{if(X)throw X.error}}return{trailer:A,message:m}},{propagateDownStreamError:!1});if(f===void 0)throw h??new B("protocol error: missing trailer",c.header.has("Grpc-Status")?S.Unimplemented:S.Unknown);if(Fa(f,c.header),p===void 0)throw new B("protocol error: missing output message for unary method",f.has("Grpc-Status")?S.Unimplemented:S.Unknown);return{stream:!1,service:t.parent,method:t,header:c.header,message:p,trailer:f}}})},async stream(t,n,o,r,a,i){const s=Ia(t,e.binaryOptions,e.jsonOptions,e);return o=o===void 0?e.defaultTimeoutMs:o<=0?void 0:o,Um({interceptors:e.interceptors,signal:n,timeoutMs:o,req:{stream:!0,service:t.parent,method:t,requestMethod:"POST",url:ya(e.baseUrl,t),header:ka(e.useBinaryFormat,o,r,e.acceptCompression,e.sendCompression,!0),contextValues:i??va(),message:a},next:async l=>{const c=await e.httpClient({url:l.url,method:l.requestMethod,header:l.header,signal:l.signal,body:dn(l.message,Ra(s.getI(e.useBinaryFormat)),Sa(e.sendCompression,e.compressMinBytes),Ga(),{propagateDownStreamError:!0})}),{compression:u,foundStatus:h,headerError:f}=Ua(e.acceptCompression,c.status,c.header);if(f)throw f;const p=Object.assign(Object.assign({},l),{header:c.header,trailer:new Headers,message:dn(c.body,Na(e.readMaxBytes),Va(u??null,e.readMaxBytes),Ea(s.getO(e.useBinaryFormat),128,Wa()),function(R){return Kb(this,arguments,function*(){var V,X,J,d;if(h){if((yield ze(R[Symbol.asyncIterator]().next())).done!==!0)throw new B("protocol error: extra data for trailers-only",S.InvalidArgument);return yield ze(void 0)}let m=!1;try{for(var A=!0,g=Ja(R),Z;Z=yield ze(g.next()),V=Z.done,!V;A=!0){d=Z.value,A=!1;const G=d;if(G.end){if(m)throw new B("protocol error: received extra trailer",S.InvalidArgument);m=!0,Fa(G.value,c.header),G.value.forEach((C,K)=>p.trailer.set(K,C));continue}if(m)throw new B("protocol error: received extra message after trailer",S.InvalidArgument);yield yield ze(G.value)}}catch(G){X={error:G}}finally{try{!A&&!V&&(J=g.return)&&(yield ze(J.call(g)))}finally{if(X)throw X.error}}if(!m)throw new B("protocol error: missing trailer",S.Internal)})},{propagateDownStreamError:!0})});return p}})}}}function Wn(e){let t=S.Internal;const n=tr(e).map(yn);n.some(r=>r.code=="ERR_STREAM_WRITE_AFTER_END")||n.some(r=>r.code=="ERR_STREAM_DESTROYED"||r.code=="ERR_HTTP2_INVALID_STREAM"||r.code=="ECONNRESET")?t=S.Aborted:n.some(r=>r.code=="ETIMEDOUT"||r.code=="ENOTFOUND"||r.code=="EAI_AGAIN"||r.code=="ECONNREFUSED")&&(t=S.Unavailable);const o=B.from(e,t);return o!==e&&(o.cause=e),o}function tr(e){const t=[];for(;!(!(e instanceof Error)||t.includes(e)||(t.push(e),!("cause"in e)));)e=e.cause;return t}function yn(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 Lb(e){switch(e){case P.PROTOCOL_ERROR:case P.INTERNAL_ERROR:case P.FLOW_CONTROL_ERROR:case P.SETTINGS_TIMEOUT:case P.FRAME_SIZE_ERROR:case P.COMPRESSION_ERROR:case P.CONNECT_ERROR:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Internal);case P.REFUSED_STREAM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Unavailable);case P.CANCEL:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.Canceled);case P.ENHANCE_YOUR_CALM:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.ResourceExhausted);case P.INADEQUATE_SECURITY:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);case P.HTTP_1_1_REQUIRED:return new B(`http/2 stream closed with error code ${P[e]} (0x${e.toString(16)})`,S.PermissionDenied);default:break}}var P;(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"})(P||(P={}));var jb=(0,Zn.promisify)(pt.gzip),Tb=(0,Zn.promisify)(pt.gunzip),Hb=(0,Zn.promisify)(pt.brotliCompress),Qb=(0,Zn.promisify)(pt.brotliDecompress),Mb={name:"gzip",compress(e){return gn(jb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Js(Tb(e,{maxOutputLength:t}),t))}},Ob={name:"br",compress(e){return gn(Hb(e,{}))},decompress(e,t){return e.length==0?Promise.resolve(new Uint8Array(0)):gn(Js(Qb(e,{maxOutputLength:t}),t))}};function gn(e){return e.then(t=>t.buffer instanceof ArrayBuffer?t:new Uint8Array(t))}function Js(e,t){return e.catch(n=>{var o;const r=yn(n);let a=S.Internal,i="decompression failed";switch(r.code){case"ERR_BUFFER_TOO_LARGE":a=S.ResourceExhausted,i=`message is larger than configured readMaxBytes ${t} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":a=S.InvalidArgument;break;default:!((o=r.code)===null||o===void 0)&&o.startsWith("ERR__ERROR_FORMAT_")&&(a=S.InvalidArgument);break}return Promise.reject(new B(i,a,void 0,void 0,n))})}function In(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 r of o)t.append(n,r);return t}function xs(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 r=t[o],a=t[o+1];Array.isArray(n[r])?n[r].push(a):typeof n[r]=="string"?n[r]=[n[r],a]:n[r]=a}else for(const[o,r]of Object.entries(t))Array.isArray(r)?n[o]=r.concat():r!==void 0&&(n[o]=r);if(e!==void 0)if(Array.isArray(e))for(const[o,r]of e)Mn(n,o,r);else if("forEach"in e)typeof e.forEach=="function"&&e.forEach((o,r)=>{Mn(n,r,o)});else for(const[o,r]of Object.entries(e))Mn(n,o,r);return n}function Mn(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 Ks=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,r,a,i;this.s=ho(),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:(r=t?.pingTimeoutMs)!==null&&r!==void 0?r:1e3*15,pingIdleConnection:(a=t?.pingIdleConnection)!==null&&a!==void 0?a:!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 r=await this.gotoReady();try{const a=r.conn.request(Object.assign(Object.assign({},n),{":method":e,":path":t}),o);return r.registerRequest(a),a}catch(a){if(r.conn.closed||r.conn.destroyed)continue;throw a}}}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 r=e??new B("connection aborted",S.Canceled);(n=(t=this.s).abort)===null||n===void 0||n.call(t,r);for(const a of this.shuttingDown)(o=a.abort)===null||o===void 0||o.call(a,r);this.setState(qt(r))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(On(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(On(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 r=this.shuttingDown.indexOf(o);r!==-1&&this.shuttingDown.splice(r,1)}}switch(e.t){case"connecting":e.conn.then(o=>{this.setState(_b(o,this.options))},o=>{this.setState(qt(o))});break;case"ready":e.onClose=()=>this.setState(ho()),e.onError=o=>this.setState(qt(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(On(this.authority,this.http2SessionOptions))},t=>{this.setState(qt(t))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function ho(){return{t:"closed"}}function Db(e){return{t:"error",reason:e}}function qt(e){return e instanceof B&&B.from(e).code==S.Canceled?ho():Db(e)}function On(e,t){let n,o;const r=new Promise((c,u)=>{n=c,o=u}),a=Re.connect(e,t);a.on("connect",i),a.on("error",s);function i(){n?.(a),l()}function s(c){o?.(Wn(c)),l()}function l(){a.off("connect",i),a.off("error",s)}return{t:"connecting",conn:r,abort(c){a.destroyed||a.destroy(void 0,Re.constants.NGHTTP2_CANCEL),o?.(c)},onExitState(){l()}}}function _b(e,t){$b(e),e.unref();let n=Date.now(),o=0,r,a,i=!1,s=!1,l;V();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(),R()),g.once("response",()=>{n=Date.now(),u()}),g.once("close",()=>{o--,o==0&&(e.unref(),u(),V())})},responseByteRead(g){g.session===e&&(e.closed||e.destroyed||o<=0||(n=Date.now(),u()))},verify(){return e.ref(),new Promise(g=>{const Z=()=>{g(!1)};p(()=>{o==0&&e.unref(),e.off("error",Z),e.off("close",Z),g(!0)}),e.once("error",Z),e.once("close",Z)})},abort(g){e.destroyed||(e.once("error",()=>{}),e.destroy(g,Re.constants.NGHTTP2_CANCEL))},onExitState(){c.isShuttingDown()||(A(),this.onError=void 0,this.onClose=void 0)}};function u(){h(),(o>0||t.pingIdleConnection)&&(r=Dn(f,t.pingIntervalMs))}function h(){clearTimeout(r),clearTimeout(a)}function f(){p(u)}function p(g){clearTimeout(a),a=Dn(()=>{e.destroy(new B("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL)},t.pingTimeoutMs),e.ping((Z,G)=>{if(clearTimeout(a),Z===null){if(G>t.pingTimeoutMs){e.destroy(new B("PING timed out",S.Unavailable),Re.constants.NGHTTP2_CANCEL);return}n=Date.now(),g()}})}function R(){clearTimeout(l)}function V(){l=Dn(X,t.idleConnectionTimeoutMs)}function X(){e.close(),d()}function J(g,Z,G){if(g===Re.constants.NGHTTP2_NO_ERROR&&o===0){e.destroy(new B("received GOAWAY without any open streams",S.Canceled),Re.constants.NGHTTP2_NO_ERROR);return}i=!0;const C=Buffer.from("too_many_pings","ascii");G?.equals(C)&&(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 Z,G;if(A(),s){const C=new B(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${Re.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,S.ResourceExhausted);(Z=c.onError)===null||Z===void 0||Z.call(c,C)}else(G=c.onError)===null||G===void 0||G.call(c,Wn(g))}function A(){h(),R(),e.off("error",m),e.off("close",d),e.off("goaway",J)}return e.on("error",m),e.on("close",d),e.on("goaway",J),c}function Dn(e,t){if(!(t>2147483647))return setTimeout(e,t).unref()}function $b(e){if(e.connecting)throw new B("expected open session, but it is connecting",S.Internal);if(e.destroyed)throw new B("expected open session, but it is destroyed",S.Internal);if(e.closed)throw new B("expected open session, but it is closed",S.Internal)}function xa(e){var t;return e.httpVersion=="1.1"?Pb(e.nodeOptions):qb((t=e.sessionProvider)!==null&&t!==void 0?t:(n=>new Ks(n)))}function Pb(e){return async function(n){const o=Ls(n.signal);return new Promise((r,a)=>{o.onError(i=>{a(i)}),eg(o,n.url,Object.assign(Object.assign({},e),{headers:xs(n.header,e?.headers),method:n.method}),i=>{zs(n,i,o),i.on("response",s=>{var l;s.on("error",o.error),o.onError(u=>s.destroy(u));const c=new Headers;r({status:(l=s.statusCode)!==null&&l!==void 0?l:0,header:In(s.headers),body:tg(o,s,c),trailer:c})})})})}}function qb(e){return function(n){const o=Ls(n.signal),r=e(n.url);return new Promise((a,i)=>{o.onError(s=>{i(s)}),ng(o,r,n.url,n.method,xs(n.header),{},s=>{zs(n,s,o),s.on("response",l=>{var c;a({status:(c=l[":status"])!==null&&c!==void 0?c:0,header:In(l),body:rg(o,s,r),trailer:og(s)})})})})}}function eg(e,t,n,o){let r;new URL(t).protocol.startsWith("https")?r=to.request(t,n):r=eo.request(t,n),e.onError(a=>r.destroy(a)),r.flushHeaders(),r.on("error",e.error),r.on("socket",function(i){function s(){i.off("connect",s),o(r)}i.readyState==="open"?o(r):i.on("connect",s)})}function tg(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&(In(t.trailers).forEach((a,i)=>{n.set(i,a)}),e.close()),r},throw(r){throw e.error(r),r}}}}}function ng(e,t,n,o,r,a,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 B(l,S.Internal));return}t.request(o,s.pathname+s.search,r,{}).then(l=>{e.onError(c=>{if(l.closed)return;const u=c.code==S.Canceled?P.CANCEL:P.INTERNAL_ERROR;return new Promise(h=>l.close(u,h))}),l.on("error",function(u){l.writableEnded&&tr(u).map(yn).some(h=>h.code=="ERR_STREAM_WRITE_AFTER_END")||e.error(u)}),l.on("close",function(){const u=Lb(l.rstCode);u&&e.error(u)}),i(l)},l=>{e.error(l)})}function og(e){const t=new Headers;return e.on("trailers",n=>{In(n).forEach((o,r)=>{t.set(r,o)})}),t}function rg(e,t,n){const o=t[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){const r=await e.race(o.next());return r.done===!0&&e.close(),n?.notifyResponseByteRead(t),r},throw(r){throw e.error(r),r}}}}}async function zs(e,t,n){if(e.body===void 0){await new Promise(r=>t.end(r));return}const o=e.body[Symbol.asyncIterator]();return new Promise(r=>{a();function a(){n.isClosed()||o.next().then(i=>{if(i.done===!0){t.end(r);return}t.write(i.value,"binary",s=>{if(s==null){a();return}o.throw!==void 0&&o.throw(Wn(s)).catch(()=>{}),!(t.writableEnded&&tr(s).map(yn).some(l=>l.code=="ERR_STREAM_WRITE_AFTER_END"))&&n.error(s)})},i=>{n.error(i)})}})}function Ls(e){let t,n=!1,o,r=[];const a={error(l){if(!n){n=!0,o=l instanceof B?l:Wn(l),t?.(o);for(const c of r)c(o);i()}},close(){n||(n=!0,t&&t(new B("sentinel completed early",S.Internal)),i())},isClosed(){return n},onError(l){n?o!==void 0&&l(o):r.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 B("sentinel completed early",S.Internal)),u}};function i(){e&&e.removeEventListener("abort",s),r=[],t=void 0}function s(){a.error(Lt(this))}return e&&(e.addEventListener("abort",s),e.aborted&&a.error(Lt(e))),a}function ag(e){var t,n,o,r;let a;if(e.httpVersion=="2"){let i;e.sessionManager?i=e.sessionManager:i=new Ks(e.baseUrl,{pingIntervalMs:e.pingIntervalMs,pingIdleConnection:e.pingIdleConnection,pingTimeoutMs:e.pingTimeoutMs,idleConnectionTimeoutMs:e.idleConnectionTimeoutMs},e.nodeOptions),a=xa({httpVersion:"2",sessionProvider:()=>i})}else a=xa({httpVersion:"1.1",nodeOptions:e.nodeOptions});return Object.assign(Object.assign(Object.assign({},e),{httpClient:a,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:(r=e.acceptCompression)!==null&&r!==void 0?r:[Mb,Ob]}),nm(e.readMaxBytes,e.writeMaxBytes,e.compressMinBytes))}function ig(e){return zb(ag(e))}function sg(e){return`cli/${e??"unknown"}`}var lg=sg("0.7.0"),cg="/grpc";function dg(e){return`${e.replace(/\/+$/,"")}${cg}`}var ug=e=>async t=>{const{token:n,lang:o}=ks();return t.header.set("X-Hagi-Client",lg),n&&t.header.set("Authorization",`Bearer ${n}`),o&&t.header.set("Accept-Language",o),e(t)},en;function Xe(){const e=dg(ks().baseUrl);return(!en||en.baseUrl!==e)&&(en={baseUrl:e,transport:ig({baseUrl:e,httpVersion:"1.1",useBinaryFormat:!0,interceptors:[ug]})}),en.transport}function Le(e){return e?Qd(e).toISOString():null}function pn(e){return e.length>0?e:null}function Ka(e,t){const n={earliestAt:Le(e),latestAt:Le(t)};return n.earliestAt||n.latestAt?n:null}function tn(e){return{lockId:e.lockId,ownerId:e.ownerId,status:e.status,myTurn:e.status==="Holding",position:e.position,epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),maxHoldExpiresAt:Le(e.maxHoldExpiresAt),holder:e.holderOwnerId.length>0?{ownerId:e.holderOwnerId,label:pn(e.holderLabel)}:null,queueLength:e.queueLength,suggestedPollIntervalMs:e.suggestedPollIntervalMs,suggestedHeartbeatIntervalMs:e.suggestedHeartbeatIntervalMs,serverTime:Le(e.serverTime),requisition:e.requisitionedByOwnerId.length>0?{byOwnerId:e.requisitionedByOwnerId,reason:e.requisitionReason,at:Le(e.requisitionedAt)}:null,checkInWindow:Ka(e.checkInEarliestAt,e.checkInLatestAt),turnWindow:Ka(e.turnEarliestAt,e.turnLatestAt)}}function mg(e){return{lockId:e.lockId,holderOwnerId:pn(e.holderOwnerId),holderLabel:pn(e.holderLabel),epoch:Number(e.epoch),leaseExpiresAt:Le(e.leaseExpiresAt),holdStartedAt:Le(e.holdStartedAt),queueLength:e.queueLength}}function hg(e){return e.locks.map(mg)}var Ze=()=>ve(bh,Xe()),ct=()=>ve(Vh,Xe()),De=()=>ve(Xh,Xe()),za=()=>ve(wh,Xe()),he=()=>ve($h,Xe()),La=()=>ve(eb,Xe()),xe=()=>ve(hb,Xe()),nn=()=>ve(Eb,Xe()),Bt=()=>ve(Yb,Xe()),dt=()=>ve(Bb,Xe());async function F(e,t){return kb(e,await t)}function bg(){return{listSessions:async e=>F(ab,xe().listSessions({type:e.type,activeOnly:e.activeOnly,includeArchived:e.includeArchived,projectId:e.projectId,projectIds:e.projectIds??[]})),getSession:async e=>F(ob,xe().getSession({sessionId:e})),getSessionMessages:async(e,t={})=>F(bb,nn().getSessionMessages({sessionId:e,page:t.page,pageSize:t.pageSize,historyScope:t.historyScope,order:t.order})),createProposalSession:async e=>F(nb,xe().openSession({body:D(db,e)})),createChatSession:async e=>F(tb,xe().openChatSession({body:D(cb,e)})),createHagiTaskSession:async e=>F(lb,xe().startHagiTaskSession({body:D(mb,e)})),listHagiTaskSchemas:async()=>F(Ch,za().listPresetTaskSchemas({})),getHagiTaskSchema:async e=>F(Bh,za().getPresetTaskSchema({presetTaskId:e})),updateSession:async(e,t)=>F(rb,xe().saveSession({sessionId:e,body:D(ub,t)})),deleteSession:async(e,t)=>F(ib,xe().deleteSession({sessionId:e,deleteFiles:t??!1})),sendMessage:async(e,t)=>F(pb,nn().postSessionMessage({sessionId:e,body:D(Zb,t)})),steerSession:async(e,t)=>F(gb,nn().steerSession({sessionId:e,body:D(fb,t)})),optimizeProposal:async(e,t)=>F(Sb,Bt().optimizeSessionProposal({sessionId:e,body:D(Wb,t)})),generateProposal:async(e,t)=>F(Vb,Bt().generateProposal({sessionId:e,body:D(yb,t)})),executeProposal:async(e,t)=>F(Nb,Bt().executeProposal({sessionId:e,body:D(Xb,t??{})})),archiveProposal:async(e,t)=>F(Gb,Bt().archiveSession({sessionId:e,body:D(Ib,t??{})})),completeProposal:async e=>F(vb,Bt().completeSession({sessionId:e})),submitAnnotations:async(e,t)=>F(Ab,nn().submitSessionAnnotations({sessionId:e,body:D(Rb,t)})),listProjects:async()=>F(Ph,La().getAggregatedData({forceRefresh:!1})),getTokenMonitorUsage:async()=>F(qh,La().getTokenMonitorUsage({})),createProject:async e=>F(eh,Ze().createProject({body:D(ch,e)})),updateProject:async(e,t)=>F(th,Ze().updateProject({id:e,body:D(dh,t)})),deleteProject:async e=>{await Ze().deleteProject({id:e})},getMonoSpecsManagement:async e=>F(nh,Ze().getMonoSpecsManagement({projectId:e})),saveMonoSpecsManagement:async(e,t)=>F(sh,Ze().updateMonoSpecsManagement({projectId:e,body:D(mh,t)})),initializeMonoSpecsManagement:async e=>F(ih,Ze().initializeMonoSpecs({projectId:e})),reloadMonoSpecsManagement:async e=>F(oh,Ze().reloadMonoSpecs({projectId:e})),validateMonoSpecs:async e=>F(lh,Ze().validateMonoSpecsConfig({body:D(hh,e)})),cloneMonoSpecsRepositories:async(e,t)=>F(rh,Ze().cloneMonoSpecsRepositories({projectId:e,body:D(uh,t)})),removeMonoSpecsRepositoryCheckout:async(e,t,n)=>F(ah,Ze().removeMonoSpecsRepositoryCheckout({projectId:e,path:t,force:n})),listPlans:async()=>F(Gh,De().listScheduledPlans({})),getPlan:async e=>F(Nh,De().getScheduledPlan({id:e})),createPlan:async e=>F(vh,De().createScheduledPlan({body:D(wa,e)})),updatePlan:async(e,t)=>F(Wh,De().updateScheduledPlan({id:e,body:D(wa,t)})),deletePlan:async e=>{await De().deleteScheduledPlan({id:e})},runPlan:async e=>F(yh,De().runScheduledPlan({id:e})),startPlan:async e=>F(Ih,De().startScheduledPlan({id:e})),listVaults:async()=>F(gh,ct().listVaults({})),createVault:async e=>F(ph,ct().createVault({body:D(Eh,e)})),updateVault:async(e,t)=>F(Ah,ct().updateVault({id:e,body:D(Sh,t)})),deleteVault:async(e,t)=>F(fh,ct().deleteVault({id:e,deleteLocalFiles:t??!1})),listVaultFiles:async(e,t)=>F(Zh,ct().getVaultFiles({id:e,path:t})),previewVaultFile:async(e,t)=>F(Rh,ct().getVaultFilePreview({id:e,path:t})),archiveChat:async e=>F(sb,xe().archiveChatSession({sessionId:e})),listLocalSkills:async()=>F(Fh,he().getLocalSkills({})),uninstallLocalSkill:async e=>F(kh,he().uninstallLocalSkill({body:D(Qh,e)})),setBuiltInSkillAvailability:async e=>F(Uh,he().setBuiltInSkillAvailability({body:D(Mh,e)})),searchSkillGallery:async e=>F(Jh,he().getSkillGallery({query:e})),getSkillGalleryDetail:async(e,t)=>F(xh,he().getSkillGalleryDetail({id:e,source:t})),getSkillGalleryAudit:async(e,t)=>F(Kh,he().getSkillGalleryAudit({id:e,source:t})),installGallerySkill:async e=>F(Hh,he().installSkill({body:D(_h,e)})),listTrustedSkillProviders:async()=>F(zh,he().getTrustedSkillProviders({})),upsertTrustedSkillProvider:async e=>F(Lh,he().upsertTrustedSkillProvider({body:D(Oh,e)})),deleteTrustedSkillProvider:async e=>F(jh,he().deleteTrustedSkillProvider({body:D(Dh,e)})),resetTrustedSkillProviders:async()=>F(Th,he().resetTrustedSkillProviders({})),acquireLock:async e=>tn((await dt().acquireLock({lockId:e.lockId,ownerId:e.ownerId,leaseSeconds:e.leaseSeconds,label:e.label,sessionId:e.sessionId})).result),getLockStatus:async(e,t)=>tn((await dt().getLockStatus({lockId:e.lockId,ownerId:e.ownerId,waitSeconds:e.waitSeconds},{signal:t})).result),renewLock:async(e,t)=>tn((await dt().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 dt().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:pn(t.holderOwnerId)}},requisitionLock:async e=>tn((await dt().requisitionLock({lockId:e.lockId,ownerId:e.ownerId,reason:e.reason,label:e.label,sessionId:e.sessionId})).result),listLocks:async e=>hg(await dt().listLocks({prefix:e}))}}function js(e){return process.on("SIGINT",e),process.on("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}function Xn(e){return new Promise(t=>{setTimeout(t,e)})}function k(e){const t=e?.trim();return t||void 0}function x(e,t){const n=k(e);if(!n)throw new N(`${t} is required.`);return n}function bo(e){const t=e?.map(n=>k(n)).filter(Boolean);return t&&t.length>0?t:void 0}function Ts(e=process.env,t={stdout:n=>{process.stdout.write(n)},stderr:n=>{process.stderr.write(n)}}){return{api:bg(),env:e,io:t,sleep:Xn}}function gg(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 y(e){return e.option("--json","Emit deterministic JSON instead of human-readable text.")}function I(e,t){const n=e.optsWithGlobals();return{api:t.api,env:t.env,io:t.io,outputJson:n.json===!0,runtime:Pm({baseUrl:n.baseUrl,token:n.token,lang:n.lang},t.env)}}var pg=5e3,Ag=1e3,fg=1e4;function Hs(e){return Math.min(Ag*2**Math.max(0,e-1),fg)}async function go(e,t,n){if(!n){await e.sleep(t);return}if(n.aborted)return;let o=()=>{};const r=new Promise(a=>{o=a,n.addEventListener("abort",o,{once:!0})});try{await Promise.race([e.sleep(t),r])}finally{n.removeEventListener("abort",o)}}function Zg(e,t){return e.position!==t.position||e.holder?.ownerId!==t.holder?.ownerId}async function Rg(e){const{read:t,clock:n,signal:o}=e,r=n.now(),a=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()-r)/100)/10});for(;;){if(o?.aborted)return c("cancelled");const u=a-(n.now()-r);if(u<=0)return c("timeout");const h=Math.min(20,Math.max(1,Math.ceil(u/1e3))),f=n.now();let p;try{p=await t(h,o)}catch(X){if(o?.aborted)return c("cancelled");if(!Cs(X))throw X;l+=1,await go(n,Math.min(Hs(l),u),o);continue}l=0,s+=1;const R=i;if(i=p,p.status==="Holding")return c("holding");if(p.status!=="Queued")return c("lost");const V=Zg(R,p);if(V&&e.onChange?.(p),!V&&n.now()-f<1e3){const X=p.suggestedPollIntervalMs>0?p.suggestedPollIntervalMs:pg;await go(n,Math.min(X,Math.max(0,a-(n.now()-r))),o)}}}var Eg="HAGI_LOCK_OWNER",Sg="HAGI_SESSION_ID";function gt(e){const t=e?.trim();return t||void 0}function Vg(e,t){const n=gt(e)??gt(t.HAGI_LOCK_OWNER)??gt(t.HAGI_SESSION_ID);if(!n)throw new N(`No lock owner. Pass your own session ID as --owner <session-id>, or set ${Eg} (or ${Sg}). The CLI does not invent an owner ID.`);return n}function Gg(e){const t=gt(e.lockId),n=gt(e.server),o=gt(e.game);if(t&&(n||o))throw new N("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 N("--server and --game must be given together."):new N("A lock is required: pass --lock-id <id>, or --server <name> and --game <name>.")}function Nt(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 vt(e,t){return{lockId:Gg(e),ownerId:Vg(e.owner,t)}}function Vt(e,t,n){if(e===void 0)return;const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function nr(e){if(e!==void 0){if(!/^\d+$/.test(e.trim()))throw new N("--epoch must be a whole number, the epoch an acquire printed.");return Number(e.trim())}}async function Wt(e){try{return await e()}catch(t){throw Ys(t)??t}}function Qs(e){return{now:e.now??Date.now,sleep:e.sleep??Xn}}function Ng(e,t){Nt(y(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 N("--timeout needs --wait.");const r=o.wait?Vt(o.timeout,"--timeout",1)??900:void 0,a=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=vt(o,i.env),l=await Wt(()=>i.api.acquireLock({...s,leaseSeconds:a,label:k(o.label)})),c=V=>i.io.stdout(i.outputJson?W(V):At(V,"acquire"));if(r===void 0||l.status==="Holding"){c(l);return}if(l.status!=="Queued")throw c(l),new et(`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??js)(()=>u.abort());let f;try{f=await Rg({initial:l,read:(V,X)=>i.api.getLockStatus({...s,waitSeconds:V},X),timeoutSeconds:r,clock:Qs(t),signal:u.signal,onChange:V=>{i.outputJson||i.io.stdout(cc(V))}})}finally{h()}let p;(f.outcome==="timeout"||f.outcome==="cancelled")&&(p=await i.api.releaseLock(s).then(()=>!0,()=>!1));const R={outcome:f.outcome,polls:f.polls,elapsedSeconds:f.elapsedSeconds,released:p};switch(i.outputJson?i.io.stdout(W({...f.status,wait:R})):i.io.stdout(f.outcome==="holding"?At(f.status,"status"):dc(f,p)),f.outcome){case"timeout":throw new Do(`Timed out after ${f.elapsedSeconds}s waiting for lock ${s.lockId}; last status ${f.status.status}.`);case"cancelled":throw new U(`Interrupted while waiting for lock ${s.lockId}; the lock was not acquired.`);case"lost":throw new et(`The queue entry for lock ${s.lockId} was dropped (${f.status.status}).`,{reported:!0});default:}})}var vg=6e4,ja=[30*6e4,5*6e4],Ft="Stop using the resource now.";function Ta(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"}. ${Ft}`}case"Expired":return`Lock ${e} LOST: the lease expired or the hard cap passed. ${Ft}`;case"Queued":return`Lock ${e} LOST: this owner is queued at position ${t.position}, not holding. ${Ft}`;default:return`Lock ${e} LOST: the backend has no hold for this owner (${t.status}). ${Ft}`}}function Ha(e,t,n){if(!t)return null;const o=Date.parse(t),r=n?Date.parse(n):NaN;return Number.isNaN(r)?o:e.now()+(o-r)}async function Wg(e){const{lockId:t,ownerId:n,api:o,clock:r,signal:a}=e;let i=e.epoch,s=e.intervalSeconds===void 0?void 0:e.intervalSeconds*1e3,l=!1,c=0,u=r.now(),h=null,f=null;const p=new Set;let R=0,V=null,X=!1,J=!1;const d=(A,g,Z)=>e.emit({kind:A,message:g,errorCode:Z}),m=()=>{if(f===null)return;const A=ja.filter(Z=>!p.has(Z)&&r.now()>=f-Z);if(A.length===0)return;A.forEach(Z=>p.add(Z));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(a.aborted)return{outcome:"stopped",beats:c};let A=u;if(f!==null)for(const Z of ja)p.has(Z)||(A=Math.min(A,f-Z));if(A>r.now()&&(await go(r,A-r.now(),a),a.aborted))return{outcome:"stopped",beats:c};if(m(),r.now()<u)continue;let g;try{if(i===void 0){const Z=await o.getLockStatus({lockId:t,ownerId:n},a);if(Z.status!=="Holding"){const G=`Refusing to start: owner ${n} does not hold lock ${t}. ${Ta(t,Z)}`;return d("refused",G),{outcome:"refused",message:G,beats:c}}i=Z.epoch}g=await o.renewLock({lockId:t,ownerId:n,epoch:i,leaseSeconds:e.leaseSeconds},a)}catch(Z){if(a.aborted)return{outcome:"stopped",beats:c};const G=Ys(Z);if(G){const K=`Lock ${t} LOST: ${G.message}${/stop using/i.test(G.message)?"":` ${Ft}`}`;return d("lost",K,G.errorCode),{outcome:"lost",message:K,beats:c}}if(!Cs(Z))throw Z;R+=1;const C=r.now();V??=C,!X&&C-V>=vg&&(X=!0,d("outage",`Backend unreachable for ${Math.round((C-V)/1e3)}s; still retrying. The lock is only lost when the backend says so, but it is released after the lease runs out.`)),!J&&h!==null&&C>=h&&(J=!0,d("maybe-lost",`Lock ${t} may already be lost: the last known lease deadline passed during the outage.`)),u=r.now()+Hs(R);continue}if(g.status!=="Holding"){const Z=Ta(t,g);return d("lost",Z),{outcome:"lost",message:Z,beats:c}}c+=1,V!==null&&(X&&d("recovered",`Backend reachable again after ${Math.round((r.now()-V)/1e3)}s; heartbeat resumed.`),V=null,X=!1,J=!1),R=0,h=Ha(r,g.leaseExpiresAt,g.serverTime),f=Ha(r,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=r.now()+s}}function yg(e,t){Nt(y(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 r=nr(o.epoch),a=Vt(o.interval,"--interval",1),i=Vt(o.leaseSeconds,"--lease-seconds",1),s=I(this,t),l=vt(o,s.env),c=new AbortController,u=(t.onInterrupt??js)(()=>c.abort());try{const h=await Wg({...l,epoch:r,intervalSeconds:a,leaseSeconds:i,verbose:o.verbose===!0,api:s.api,clock:Qs(t),signal:c.signal,emit:f=>{s.io.stdout(s.outputJson?`${JSON.stringify({event:f.kind,...l,message:f.message,errorCode:f.errorCode})}
59
+ `:`${f.message}
60
+ `)}});if(h.outcome!=="stopped")throw new et(h.message??`Lock ${l.lockId} is lost.`,{reported:!0})}finally{u()}})}function Ig(e,t){y(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 r=I(this,t),a=await Wt(()=>r.api.listLocks(k(o.prefix)));r.io.stdout(r.outputJson?W({locks:a}):mc(a))})}function Xg(e,t){Nt(y(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 r=nr(o.epoch),a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.releaseLock({...i,epoch:r}));a.io.stdout(a.outputJson?W(s):uc(s))})}function Yg(e,t){Nt(y(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 r=nr(o.epoch),a=Vt(o.leaseSeconds,"--lease-seconds",1),i=I(this,t),s=vt(o,i.env),l=await Wt(()=>i.api.renewLock({...s,epoch:r,leaseSeconds:a}));if(l.status!=="Holding")throw i.io.stdout(i.outputJson?W(l):At(l,"renew")),new et(`Owner ${s.ownerId} no longer holds lock ${s.lockId} (${l.status}).`,{reported:!0});i.io.stdout(i.outputJson?W(l):At(l,"renew"))})}var Qa=200;function Cg(e,t){Nt(y(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 r=k(o.reason);if(!r||r.length>Qa)throw new N(`--reason must be 1 to ${Qa} characters.`);const a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.requisitionLock({...i,reason:r,label:k(o.label)}));a.io.stdout(a.outputJson?W(s):At(s,"requisition"))})}function Bg(e,t){Nt(y(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 r=Vt(o.waitSeconds,"--wait-seconds",0),a=I(this,t),i=vt(o,a.env),s=await Wt(()=>a.api.getLockStatus({...i,waitSeconds:r}));a.io.stdout(a.outputJson?W(s):At(s,"status"))})}function wg(e,t){const n=e.command("lock").description("Take turns on a shared resource with other agents: a fair queue lock with a heartbeat.");Ng(n,t),Bg(n,t),Yg(n,t),yg(n,t),Xg(n,t),Cg(n,t),Ig(n,t)}var Fg=[wg];function kg(e,t,n=Fg){const o=e.command("agent").description("Manage agent-facing capabilities, such as the shared resource lock.");for(const r of n)r(o,t)}function Ug(e,t){y(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 r=I(this,t),a=o.sessionId.trim(),i=await r.api.archiveChat(a);if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message}));return}r.io.stdout(`Chat archived
61
+ sessionId ${a}
62
+ message ${i.message}
63
+ `)})}var Ms=(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 Ma(e){return typeof e=="string"?e.trim():e?.value?.trim()??""}function Jg(e){const t=e.userMetadata;return t&&Object.keys(t).length>0?{...t}:void 0}function xg(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(", ")}function Ae(e){const t=Jg(e);return{sessionId:Ma(e.sessionId),title:e.title,type:e.type,status:e.status,projectId:Ma(e.projectId),proposalName:e.proposalName??void 0,archived:e.status===Ms.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 Os(e){return{sessions:e.sessions.map(Ae)}}function Ds(e,t){return t.length===0?`No ${e.toLowerCase()} found.
64
+ `:`${e} (${t.length})
65
+ ${ie([{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)}
66
+ `}function Fe(e,t=[]){return q([["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?xg(e.userMetadata):void 0],...t])}var Kg="No running task took the message, so it was sent as the next message.";function or(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 rr(e,t,n,o=[],r){const a=r&&r.source!=="default"?[["steer",`${r.requested?"on":"off"} (${r.source})`],["effective",r.effective?"yes":"no"],["outcome",r.outcome],["messageId",r.messageId],["reason",r.reason]]:[],i=r?.effective&&r.outcome==="queued"?`${Kg}
67
+ `:"";return`${e}
68
+ ${q([["sessionId",t],["message",n.message],...o,...a])}${i}`}function zg(e,t){if(e.timedOut)return`wait: timed out after ${e.elapsedSeconds}s; status is still ${t}
69
+ `;if(t==="WaitingForReply")return`wait: settled at ${t} after ${e.elapsedSeconds}s; a person must answer
70
+ `;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}
71
+ `}function Lg(e){if(e.messages.length===0)return`No messages found.
72
+ `;const t=e.messages.map(n=>{const o=n.contentBlocks??[],r=o.filter(s=>s.type==="Text"&&typeof s.text=="string"),a=o.length-r.length,i=[`[${n.timestamp}] ${n.type}`];for(const s of r)for(const l of s.text.split(`
73
+ `))i.push(` ${l}`);return a>0&&i.push(` (${a} other block${a===1?"":"s"} not shown)`),i.join(`
74
+ `)});return`Messages (${e.messages.length} of ${e.totalCount})
75
+ ${t.join(`
76
+
77
+ `)}
78
+ `}var jg={readFile:e=>(0,Y.readFileSync)(e,"utf8"),readStdin:()=>(0,Y.readFileSync)(0,"utf8")},Tg=['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(" "),Hg=["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 _s(){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."].join(`
79
+ `)}function Qg(e,t){return[_s(),"","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(`
80
+ `)}function Oa(e,t){return[...t??[],e]}function $s(e,t,n){return e.option("--metadata <key=value>",Tg,Oa).option("--metadata-json <file|->",Hg,Oa).addHelpText("after",`
81
+ ${Qg(t,n)}
82
+ `)}function Mg(e){const t=e.indexOf("=");if(t===-1)throw new N(`--metadata expects key=value, got "${e}".`);const n=e.slice(0,t);if(n==="")throw new N(`--metadata key is empty in "${e}".`);return[n,e.slice(t+1)]}function Og(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 Dg(e){const t=[];let n=0;for(let o=0;o<e.length;o+=1){const r=e[o];if(r==='"'){const a=Og(e,o);let i=a+1;for(;i<e.length&&/\s/.test(e[i]);)i+=1;n===1&&e[i]===":"&&t.push(JSON.parse(e.slice(o,a+1))),o=a}else r==="{"||r==="["?n+=1:(r==="}"||r==="]")&&(n-=1)}return t}function ar(e){return e==="-"?"stdin":e}function _g(e,t){const n=ar(t);let o;try{o=JSON.parse(e)}catch(a){throw new N(`--metadata-json ${n} is not valid JSON: ${a instanceof Error?a.message:String(a)}`)}if(o===null||typeof o!="object"||Array.isArray(o))throw new N(`--metadata-json ${n} must be a JSON object of string values.`);const r=[];for(const[a,i]of Object.entries(o)){if(a==="")throw new N(`--metadata-json ${n} has an empty key.`);if(typeof i!="string")throw new N(`--metadata-json ${n}: the value of "${a}" must be a string.`);r.push([a,i])}return{entries:r,keys:Dg(e)}}function Ps(e,t=jg){const n=new Map,o=(r,a)=>{if(n.has(r))throw new N(`Metadata key "${r}" is given more than once. Each key may appear once across --metadata and --metadata-json.`);n.set(r,a)};for(const r of e.entries??[]){const[a,i]=Mg(r);o(a,i)}for(const r of e.jsonSources??[]){const{entries:a,keys:i}=_g($g(r,t),r),s=new Set;for(const l of i){if(s.has(l))throw new N(`Metadata key "${l}" is given more than once in --metadata-json ${ar(r)}.`);s.add(l)}for(const[l,c]of a)o(l,c)}return n.size===0?void 0:Object.fromEntries(n)}function $g(e,t){let n;try{n=e==="-"?t.readStdin():t.readFile(e)}catch(o){const r=o instanceof Error?o.message:String(o);throw new N(`Could not read --metadata-json ${ar(e)}: ${r}`)}return n.replace(/^\uFEFF/,"")}var Yn=(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 Pg(e,t){$s(y(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 Se("--executor-type <type>","Optional executor override.").choices(Object.values(Yn))),"chat create",'--title "<title>" --project-id <id>').action(async function(o){const r=I(this,t),a=x(o.title,"--title"),i=x(o.projectId,"--project-id"),s=Ps({entries:o.metadata,jsonSources:o.metadataJson}),l=Ae(await r.api.createChatSession({title:a,projectId:i,heroId:k(o.heroId),executorType:o.executorType,...s?{metadata:s}:{}}));if(r.outputJson){r.io.stdout(W({session:l}));return}r.io.stdout(`Chat session created
83
+ ${Fe(l)}`)})}function qg(e,t){y(e.command("delete").description("Delete a chat session.")).requiredOption("--session-id <id>","Chat session id to delete.").action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await r.api.deleteSession(a,!1);if(r.outputJson){r.io.stdout(W({sessionId:a,deleted:!0,message:i.message}));return}r.io.stdout(`Chat deleted
84
+ sessionId ${a}
85
+ message ${i.message}
86
+ `)})}var ir=(function(e){return e.CHAT="Chat",e.PROPOSAL="Proposal",e})({});function ep(e,t){y(e.command("list").description("List normal chat sessions.")).action(async function(o){if(o.projectId&&o.projectIds?.length)throw new N("Use either --project-id or --project-ids, not both.");const r=I(this,t),a=Os(await r.api.listSessions({type:ir.CHAT,projectId:k(o.projectId),projectIds:bo(o.projectIds),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(Ds("Chat sessions",a.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 tp="the backend does not support Steer",Da="HAGI_SEND_STEER";function sr(){return new Se("--steer","Deliver the message to the running task as a Steer. Overrides HAGI_SEND_STEER and the config file.")}function lr(){return new Se("--no-steer","Send a normal message, even when HAGI_SEND_STEER or the config file asks for Steer.")}var np=new Set(["1","true","yes","on"]),op=new Set(["0","false","no","off"]);function rp(e){const t=Ee(e[Da]);if(t===void 0)return;const n=t.toLowerCase();if(np.has(n))return!0;if(op.has(n))return!1;throw new N(`${Da} has an unrecognized value "${t}". Accepted values: 1, true, yes, on (Steer) or 0, false, no, off (no Steer).`)}function ap({flag:e,env:t}){if(e!==void 0)return{requested:e,source:"flag"};const n=rp(t);if(n!==void 0)return{requested:n,source:"env"};const o=_m(t);return o!==void 0?{requested:o,source:"config"}:{requested:!1,source:"default"}}async function cr(e){const{context:t,sessionId:n,content:o,mode:r,executorType:a,steerFlag:i}=e,s=ap({flag:i,env:t.env}),l=async u=>({message:(await t.api.sendMessage(n,{content:o,mode:r,executorType:a})).message,steer:{requested:s.requested,source:s.source,effective:!1,...s.requested&&u!==void 0?{reason:u}:{}}});if(!s.requested)return l();const c=[...r!==void 0?["--mode"]:[],...a!==void 0?["--executor-type"]:[]];if(c.length>0){if(s.source==="flag")throw new N(`--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 B&&u.code===S.Unimplemented)return l(tp);throw u}}var dr=(function(e){return e.READONLY="Readonly",e.EDIT="Edit",e})({});function ip(e,t){y(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 Se("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Se("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(sr()).addOption(lr()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("Chat message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function sp(e,t){const n=e.command("chat").description("Manage normal chat sessions.");ep(n,t),Pg(n,t),Ug(n,t),qg(n,t),ip(n,t)}async function lp(){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 Cn(e){const t=e.trim();if(!t)throw new N("Provide --input <file> or --input - for stdin.");const n=t==="-"?await lp():await(0,tc.readFile)(t,"utf8");try{return JSON.parse(n)}catch(o){throw new N(`Invalid JSON input from ${t}: ${o instanceof Error?o.message:String(o)}`)}}var cp=["first","random"];async function dp(e){let t;try{t=await Cn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read HagiTask input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`HagiTask input from ${e} must be a JSON object.`);return t}function up(e,t,n){if(!t&&!n)throw new N("Provide --task-id or --prompt-id.");if(e.input!==void 0&&!t)throw new N("--input requires --task-id.");if(e.targetBranchName&&e.targetBranchMode!=="new-custom")throw new N("--target-branch-name requires --target-branch-mode new-custom.");if(e.targetBranchMode==="new-custom"&&!k(e.targetBranchName))throw new N("--target-branch-name is required when --target-branch-mode is new-custom.");const o=k(e.heroSelectionMode);if(o&&!cp.includes(o))throw new N("--hero-selection-mode must be first or random.")}function mp(e,t){y(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 r=k(o.taskId),a=k(o.promptId);up(o,r,a);const i=o.input!==void 0?await dp(x(o.input,"--input")):void 0,s=I(this,t),l={title:x(o.title,"--title"),projectId:x(o.projectId,"--project-id"),promptId:a,presetTaskId:r,presetTaskLocale:k(o.locale),presetTaskInput:i,message:k(o.message),repositoryPath:k(o.repositoryPath),targetType:k(o.targetType),vaultId:k(o.vaultId),outputVaultId:k(o.outputVaultId),referenceVaultIds:bo(o.referenceVaultId),editableVaultIds:bo(o.editableVaultId),heroId:k(o.heroId),heroSelectionMode:k(o.heroSelectionMode),needPush:o.needPush?!0:void 0,pullRebaseBeforePush:o.pullRebase?!0:void 0,targetBranchMode:k(o.targetBranchMode),targetBranchName:k(o.targetBranchName),scriptKey:k(o.scriptKey)},c=Ae(await s.api.createHagiTaskSession(l));if(s.outputJson){s.io.stdout(W({session:c,presetTaskId:l.presetTaskId??null,promptId:l.promptId??null,requested:l}));return}s.io.stdout(`HagiTask session created
87
+ ${Fe(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 hp=new Set(["Optimizing","Openspecing","Executing","Archiving"]);function bp(e){return hp.has(e)}async function gp(e,t,n){const o=n.now(),r=t.timeoutSeconds*1e3,a=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=bp(u.status);if(l=l||f,!f&&(l||h>=a||h>=r))return c(u,{settled:!0,timedOut:!1});if(h>=r)return c(u,{settled:!1,timedOut:!0});await n.sleep(Math.min(i,r-h))}function c(u,h){return{session:u,...h,transitionSeen:l,polls:s,elapsedSeconds:Math.round((n.now()-o)/100)/10}}}function _n(e,t,n){const o=e.trim();if(!/^\d+$/.test(o))throw new N(`${t} must be a whole number of seconds.`);const r=Number(o);if(r<n)throw new N(`${t} must be ${n} second${n===1?"":"s"} or more.`);return r}function pp(e){const t=[["--timeout",e.timeout],["--interval",e.interval],["--grace",e.grace]].filter(([,a])=>a!==void 0).map(([a])=>a);if(!e.wait){if(t.length>0)throw new N(`${t.join(", ")} needs --wait.`);return}const n=e.timeout===void 0?900:_n(e.timeout,"--timeout",1),o=e.interval===void 0?5:_n(e.interval,"--interval",1),r=e.grace===void 0?10:_n(e.grace,"--grace",0);if(o>=n)throw new N("--interval must be less than --timeout.");return{intervalSeconds:o,timeoutSeconds:n,graceSeconds:r}}function qs(e,t,n){y(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(r){const a=pp(r),i=x(r.sessionId,"--session-id"),s=I(this,t);if(!a){const h=Ae(await s.api.getSession(i));if(s.outputJson){s.io.stdout(W({session:h}));return}s.io.stdout(Fe(h));return}const l=await gp(()=>s.api.getSession(i),a,{now:t.now??Date.now,sleep:t.sleep??Xn}),c=Ae(l.session),u={settled:l.settled,timedOut:l.timedOut,transitionSeen:l.transitionSeen,polls:l.polls,elapsedSeconds:l.elapsedSeconds};if(s.outputJson?s.io.stdout(W({session:c,wait:u})):s.io.stdout(`${Fe(c)}${zg(u,c.status)}`),l.timedOut)throw new Do(`Timed out after ${l.elapsedSeconds}s waiting for ${n.label} ${i} to settle; last status ${c.status}.`)})}function Ap(e,t){qs(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 fp(e){if(e===void 0)return;const t=e.trim();if(!/^\d+$/.test(t)||Number(t)<1)throw new N("--last must be a positive whole number.");return Number(t)}function el(e,t,n){y(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(r){const a=fp(r.last),i=x(r.sessionId,"--session-id"),s=I(this,t),l=await s.api.getSessionMessages(i,a===void 0?{page:1,order:"desc"}:{page:1,pageSize:a,order:"desc"});if(s.outputJson){s.io.stdout(W(l));return}s.io.stdout(Lg(l))})}function Zp(e,t){el(e,t,{description:"Read a HagiTask session's messages, newest first. For a Super Commit, --last 1 reads the final result message."})}var M="-";function _a(e){return e?"yes":"no"}function $a(e){return e&&e.length>0?e.join(", "):M}function An(e){if(Array.isArray(e))return e.map(t=>An(t));if(e&&typeof e=="object"){const t=e;return Object.fromEntries(Object.keys(t).sort().map(n=>[n,An(t[n])]))}return e}function tl(e){return[...e].sort((t,n)=>{const o=t.id??"",r=n.id??"";return o<r?-1:o>r?1:0})}function Rp(e){return An({tasks:tl(e)})}function Ep(e){if(e.length===0)return`No HagiTask is available.
88
+ `;const t=tl(e);return`HagiTasks (${t.length})
89
+ ${ie([{header:"ID",value:n=>n.id??M},{header:"Version",value:n=>n.version??M},{header:"Title",value:n=>n.title??M},{header:"Description",value:n=>n.description??M}],t)}
90
+ `}function Sp(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("; "):M}function Vp(e){const t=e.id??M,n=[];n.push(q([["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??M})${o.length===0?`
91
+ None.
92
+ `:`
93
+ ${ie([{header:"ID",value:c=>c.id??M},{header:"Kind",value:c=>c.kind??M},{header:"Selection",value:c=>c.selectionMode??M},{header:"Required",value:c=>_a(c.required)},{header:"Access",value:c=>$a(c.allowedAccessTypes)},{header:"Input key",value:c=>c.requestKey??M},{header:"Scope key",value:c=>c.scopeRequestKey??M}],o)}
94
+ `}`);const r=e.commands?.commands??[];n.push(`Commands${r.length===0?`
95
+ None.
96
+ `:`
97
+ ${ie([{header:"ID",value:c=>c.id??M},{header:"Group",value:c=>c.groupId??M},{header:"Label",value:c=>c.label??M},{header:"URL",value:c=>c.url??M}],r)}
98
+ `}`);const a=e.parameters??[];n.push(`Parameters${a.length===0?`
99
+ None.
100
+ `:`
101
+ ${ie([{header:"Key",value:c=>c.key??M},{header:"Required",value:c=>_a(c.required)},{header:"Origin",value:c=>c.origin??M},{header:"Type",value:c=>c.valueType??M},{header:"Label",value:c=>c.label??M},{header:"Notes",value:Sp}],a)}
102
+ `}`);const i=e.requirements??[];n.push(`Requirements${i.length===0?`
103
+ None.
104
+ `:`
105
+ ${i.map(c=>`- ${c.type??M}: ${c.name??$a(c.names)}`).join(`
106
+ `)}
107
+ `}`);const s=e.scenes?.registrations??[];n.push(`Scenes${s.length===0?`
108
+ None.
109
+ `:`
110
+ ${s.map(c=>`- ${c.sceneKey??M}: ${c.title??M}`).join(`
111
+ `)}
112
+ `}`);const l=e.request;return n.push(q([["endpoint",l?`${l.method??M} ${l.path??M}`: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
113
+ hagi hagitask schema --task-id ${t} --json # full input JSON Schema and example body
114
+ hagi hagitask create --title "<title>" --project-id <project-id> --task-id ${t} --input input.json
115
+ `),n.join(`
116
+ `)}function Gp(e){return An(e)}function Np(e,t){y(e.command("list").description("List the active HagiTasks with their id, version, title and description.")).action(async function(){const o=I(this,t),r=await o.api.listHagiTaskSchemas();if(o.outputJson){o.io.stdout(W(Rp(r)));return}o.io.stdout(Ep(r))})}function vp(e,t){const n=e&&typeof e=="object"?e[t]:void 0;return typeof n=="string"&&n.trim()?n.trim():void 0}function Wp(e){const t=e&&typeof e=="object"?e.diagnostics:void 0;return Array.isArray(t)?t:[]}async function yp(e,t){try{return await e.getHagiTaskSchema(t)}catch(n){const o=vn(n);if(o?.status===404){const r=Wp(o.body);if(r.length>0){const a=r.map(i=>{const s=i.path?` (${i.path})`:"";return` - ${i.code??"diagnostic"}: ${i.message??""}${s}`});throw new ye(404,[vp(o.body,"error")??`HagiTask ${t} is not available.`,...a].join(`
117
+ `),o.body)}}throw n}}function Ip(e,t){y(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 r=x(o.taskId,"--task-id"),a=I(this,t),i=await yp(a.api,r);if(a.outputJson){a.io.stdout(W(Gp(i)));return}a.io.stdout(Vp(i))})}function Xp(e,t){y(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 Se("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Se("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(sr()).addOption(lr()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("HagiTask message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function Yp(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.");Np(n,t),Ip(n,t),mp(n,t),Xp(n,t),Ap(n,t),Zp(n,t)}function ge(e){const t=e?.trim();return t||void 0}function nl(e){if(!e)return"";const t=ge(e.mode);if(t==="once")return["once",ge(e.runAt)].filter(Boolean).join(" ");const n=ge(e.repeat?.rule)??t??"";return[n,n==="weekly"?(e.repeat?.weekdays??[]).map(o=>o.trim().slice(0,3).toLowerCase()).join(","):void 0,ge(e.timeOfDay),ge(e.timeZone)].filter(Boolean).join(" ")}function _e(e){return{id:ge(e.id)??"",type:ge(e.type)??"",name:ge(e.name)??"",enabled:e.enabled===!0,state:ge(e.state)??"",nextRunAt:ge(e.nextRunAt)??null,schedule:e.schedule,agentPool:e.agentPool,payload:e.payload}}function Cp(e){return{plans:e.map(_e)}}function Bp(e){return e.length===0?`No scheduled plans found.
118
+ `:`Plans (${e.length})
119
+ ${ie([{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=>nl(t.schedule)}],e)}
120
+ `}function Qt(e){return q([["id",e.id],["type",e.type],["name",e.name],["enabled",e.enabled?"yes":"no"],["state",e.state],["nextRun",e.nextRunAt??"-"],["schedule",nl(e.schedule)]])}function wp(e){return{planId:e,deleted:!0}}function Fp(e){return`Plan deleted
121
+ ${q([["planId",e.planId],["deleted",String(e.deleted)]])}`}function kp(e){return{planId:ge(e.planId)??"",accepted:!0}}function Up(e){return`Plan run accepted
122
+ ${q([["planId",e.planId],["accepted",String(e.accepted)]])}`}var Jp=["id","createdAt","updatedAt","state","nextRunAt"];async function ol(e){let t;try{t=await Cn(e)}catch(n){throw n instanceof N?n:new N(`Cannot read plan input from ${e}: ${n instanceof Error?n.message:String(n)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new N(`Plan input from ${e} must be a JSON object.`);return t}function fn(e){const t={...e};for(const n of Jp)delete t[n];return t}function xp(e){return{strategy:"random",agents:[{heroId:e}]}}function rl(e){return{...e.name!==void 0?{name:e.name}:{},...e.heroId!==void 0?{agentPool:xp(e.heroId)}:{},...e.enabled!==void 0?{enabled:e.enabled}:{}}}function al(e,t){return{...fn(e),...fn(t)}}function Kp(e,t){y(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 r=I(this,t),a=fn(await ol(o.input)),i=_e(await r.api.createPlan({enabled:!0,...a,...rl({name:k(o.name),heroId:k(o.heroId),enabled:o.disabled?!1:void 0})}));if(r.outputJson){r.io.stdout(W({plan:i}));return}r.io.stdout(`Plan created
123
+ ${Qt(i)}`)})}function zp(e,t){y(e.command("delete").description("Delete a scheduled plan by id.")).requiredOption("--id <id>","Plan id to delete.").action(async function(o){const r=I(this,t),a=x(o.id,"--id");await r.api.deletePlan(a);const i=wp(a);if(r.outputJson){r.io.stdout(W(i));return}r.io.stdout(Fp(i))})}async function il(e,t,n){const o=await e.api.getPlan(t);return _e(o).enabled===n?{view:_e(o),changed:!1}:{view:_e(await e.api.updatePlan(t,al(o,{enabled:n}))),changed:!0}}function Lp(e,t){y(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 r=I(this,t),{view:a,changed:i}=await il(r,x(o.id,"--id"),!1);if(r.outputJson){r.io.stdout(W({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan disabled":"Plan was already disabled"}
124
+ ${Qt(a)}`)})}function jp(e,t){y(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 r=I(this,t),{view:a,changed:i}=await il(r,x(o.id,"--id"),!0);if(r.outputJson){r.io.stdout(W({plan:a,changed:i}));return}r.io.stdout(`${i?"Plan enabled":"Plan was already enabled"}
125
+ ${Qt(a)}`)})}function Tp(e,t){y(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 r=I(this,t),a=_e(await r.api.getPlan(x(o.id,"--id")));if(r.outputJson){r.io.stdout(W({plan:a}));return}r.io.stdout(Qt(a))})}function Hp(e,t){y(e.command("list").description("List scheduled plans with their state, next run time and schedule.")).action(async function(){const o=I(this,t),r=Cp(await o.api.listPlans());if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout(Bp(r.plans))})}function Qp(e,t){y(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 r=I(this,t),a=x(o.id,"--id");if(o.background){const s=kp(await r.api.startPlan(a));if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout(Up(s));return}const i=Ae(await r.api.runPlan(a));if(r.outputJson){r.io.stdout(W({session:i}));return}r.io.stdout(`Plan run created a session
126
+ ${Fe(i)}`)})}function Mp(e,t){y(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 r=x(o.id,"--id"),a=k(o.input),i=k(o.name),s=k(o.heroId);if(o.enabled&&o.disabled)throw new N("Pass either --enabled or --disabled, not both.");const l=o.enabled?!0:o.disabled?!1:void 0;if(!a&&!i&&!s&&l===void 0)throw new N("Provide at least one change: --input, --name, --enabled, --disabled, or --hero-id.");const c=a?fn(await ol(a)):{},u=I(this,t),h=await u.api.getPlan(r),f=_e(await u.api.updatePlan(r,al(h,{...c,...rl({name:i,heroId:s,enabled:l})})));if(u.outputJson){u.io.stdout(W({plan:f}));return}u.io.stdout(`Plan updated
127
+ ${Qt(f)}`)})}function Op(e,t){const n=e.command("plan").description("Manage scheduled plans: saved proposal or HagiTask inputs that run on a schedule.");Hp(n,t),Tp(n,t),Kp(n,t),Mp(n,t),jp(n,t),Lp(n,t),zp(n,t),Qp(n,t)}function ue(e){const t=e?.trim();return t||void 0}function ur(e){return{id:ue(e.id)??"",name:ue(e.name)??"",path:ue(e.path)??"",description:ue(e.description),isMonoSpecs:e.isMonoSpecs===!0,monoSpecsVersion:ue(e.monoSpecsVersion),monoSpecsRepoDirectory:ue(e.monoSpecsRepoDirectory),monoSpecsCommitWhenArchive:typeof e.monoSpecsCommitWhenArchive=="boolean"?e.monoSpecsCommitWhenArchive:void 0,hasError:"hasError"in e?e.hasError===!0:!1,error:"error"in e?ue(e.error):void 0}}function sl(e){return{projects:(e??[]).map(ur)}}function Dp(e){return e.length===0?`No projects found.
128
+ `:`Projects (${e.length})
129
+ ${ie([{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)}
130
+ `}function ll(e,t=[]){return q([["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 _p(e){return{projectId:ue(e.id)??"",name:ue(e.name)??"",isMonoSpecs:e.isMonoSpecs===!0,hasError:e.hasError===!0,error:ue(e.error),repositories:(e.repositories??[]).map(t=>({name:ue(t.name),path:t.path??void 0,displayName:ue(t.displayName),type:ue(t.type),branch:ue(t.branch),isValidGitRepo:typeof t.isValidGitRepo=="boolean"?t.isValidGitRepo:void 0}))}}function $p(e){return`${q([["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)]])}
131
+ ${e.repositories.length===0?`This project lists no repositories.
132
+ `:`${ie([{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)}
133
+ `}`}function Pp(e,t){y(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 r=I(this,t),a=ur(await r.api.createProject({name:x(o.name,"--name"),path:x(o.path,"--path"),description:k(o.description)}));if(r.outputJson){r.io.stdout(W({project:a}));return}r.io.stdout(`Project created
134
+ ${ll(a)}`)})}function qp(e,t){y(e.command("delete").description("Delete a project by id.")).requiredOption("--id <id>","Project id to delete.").action(async function(o){const r=I(this,t),a=o.id.trim();if(await r.api.deleteProject(a),r.outputJson){r.io.stdout(W({projectId:a,deleted:!0}));return}r.io.stdout(`Project deleted
135
+ projectId ${a}
136
+ `)})}function eA(e,t){y(e.command("list").description("List projects from the aggregation endpoint.")).action(async function(){const o=I(this,t),r=sl((await o.api.listProjects()).projects);if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout(Dp(r.projects))})}function ae(e){const t=e?.trim();return t||void 0}function cl(e){return{key:e.key??"",value:e.value??"",valueKind:e.valueKind??"string"}}function tA(e){const t=e.isValidGitRepo===!0;return{name:ae(e.name),code:ae(e.code),path:e.path??"",url:ae(e.url),displayName:ae(e.displayName),type:ae(e.type),icon:ae(e.icon),optional:e.optional===!0,tags:e.tags??[],metadata:(e.metadata??[]).map(cl),isValidGitRepo:t,branch:t?ae(e.branch):void 0,hasUncommittedChanges:e.hasUncommittedChanges===!0,unpushedCommitCount:e.unpushedCommitCount??0,hasTrackingBranch:e.hasTrackingBranch===!0,trackingBranch:ae(e.trackingBranch),aheadCount:e.aheadCount??0,behindCount:e.behindCount??0,syncState:t?ae(e.syncState):void 0}}function dl(e){return{version:ae(e.version)??"",repoDirectory:ae(e.repoDirectory)??"",configPath:ae(e.configPath)??"",commitWhenArchive:e.commitWhenArchive===!0,yamlPreview:e.yamlPreview??"",metadata:(e.metadata??[]).map(cl),repositories:(e.repositories??[]).map(tA)}}function nA(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 ul(e,t={}){return`${q([["version",e.version],["repoDirectory",e.repoDirectory],["configPath",e.configPath],["commitWhenArchive",String(e.commitWhenArchive)]])}
137
+ ${e.repositories.length===0?`This document lists no repositories.
138
+ `:`${ie([{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=>nA(n)}],e.repositories)}
139
+ `}${t.yaml?`
140
+ YAML
141
+ ${e.yamlPreview}${e.yamlPreview.endsWith(`
142
+ `)?"":`
143
+ `}`:""}`}function ml(e){return{results:(e??[]).map(t=>({path:t.path??"",status:t.status??"",message:ae(t.message)}))}}function hl(e){return e.results.length===0?`No repositories were selected for cloning.
144
+ `:`${ie([{header:"Path",value:t=>t.path},{header:"Status",value:t=>t.status},{header:"Message",value:t=>t.message??""}],e.results)}
145
+ `}function oA(e){return{isValid:e.isValid===!0,config:e.config?{version:ae(e.config.version),repoDirectory:ae(e.config.repoDirectory)}:null,warnings:e.warnings??[],errors:e.errors??[]}}function rA(e){const t=e.isValid?"MonoSpecs configuration is valid.":"MonoSpecs configuration is invalid.",n=q([["version",e.config?.version],["repoDirectory",e.config?.repoDirectory]]),o=e.warnings.map(a=>` - ${a}
146
+ `).join(""),r=e.errors.map(a=>` - ${a}
147
+ `).join("");return[t,n.trimEnd(),e.warnings.length>0?`Warnings:
148
+ ${o}`.trimEnd():"",e.errors.length>0?`Errors:
149
+ ${r}`.trimEnd():""].filter(Boolean).join(`
150
+ `)+`
151
+ `}function aA(e){return{path:e.path??"",removed:e.removed===!0,message:ae(e.message)}}function iA(e){const t=e.removed?`Removed checkout ${e.path}`:`Checkout ${e.path} was not removed`;return`${e.message?`${t}
152
+ ${e.message}`:t}
153
+ `}function mr(e,t,n={}){const o=dl(t);if(e.outputJson){e.io.stdout(W(o));return}const r=n.heading?`${n.heading}
154
+ `:"";e.io.stdout(`${r}${ul(o,{yaml:n.yaml})}`)}function po(e,t){return[...t,e]}function ht(e){const t=e.trim().replace(/\\/g,"/").replace(/^(\.\/)+/,"").replace(/\/+$/,"");if(!t||t===".")throw new N(`Repository path must name a directory below the project root: "${e}".`);return t}function sA(e,t){y(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.",po,[]).option("--include-optional","Also clone optional repositories when no --path is given.").action(async function(o){const r=o.path.map(ht),a=I(this,t),i=x(o.id,"--id"),s=o.includeOptional===!0,l=ml((await a.api.cloneMonoSpecsRepositories(i,r.length>0?{paths:r,includeOptional:s}:{includeOptional:s})).results);a.outputJson?a.io.stdout(W(l)):a.io.stdout(hl(l));const c=l.results.filter(u=>u.status==="failed");if(c.length>0)throw new U(`${c.length} repository clone(s) failed. See the results above.`)})}function lA(e,t){y(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 r=I(this,t);mr(r,await r.api.initializeMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration initialized."})})}function cA(e,t){y(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 r=I(this,t);mr(r,await r.api.reloadMonoSpecsManagement(x(o.id,"--id")),{heading:"MonoSpecs configuration reloaded."})})}function dA(e,t){y(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 r=I(this,t),a=x(o.id,"--id"),i=ht(x(o.path,"--path")),s=o.force===!0;let l;try{l=await r.api.removeMonoSpecsRepositoryCheckout(a,i,s)}catch(u){const h=Bs(u);throw h.status===409&&!s&&/force/i.test(h.message)?new ye(409,`${h.message}
155
+ Re-run with --force to delete this checkout anyway.`,h.details):u}const c=aA(l);r.outputJson?r.io.stdout(W(c)):r.io.stdout(iA(c))})}var uA="--version, --repo-directory, --commit-when-archive, --add-repository, --remove-repository";function mA(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 hA(e){return e.split("/").at(-1)??e}function $n(e,t,n){const o=dl(t),r=n?ml(n.results):void 0;if(e.outputJson){e.io.stdout(W(r?{...o,clone:r}:o));return}e.io.stdout(`MonoSpecs configuration saved.
156
+ ${ul(o)}`),r&&e.io.stdout(`
157
+ Clone results
158
+ ${hl(r)}`)}function bA(e,t){y(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.",po,[]).option("--remove-repository <path>","Configured repository path to remove. Repeatable.",po,[]).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 r=o.addRepository.map(ht),a=o.removeRepository.map(ht);if(!(o.version!==void 0||o.repoDirectory!==void 0||o.commitWhenArchive!==void 0)&&r.length===0&&a.length===0)throw new N(`Provide at least one change: ${uA}.`);if(o.clone&&r.length===0)throw new N("--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&&r.length!==1)throw new N(`${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 N("--commit-when-archive must be true or false.");s=o.commitWhenArchive==="true"}const l=I(this,t),c=x(o.id,"--id"),u=await l.api.getMonoSpecsManagement(c),h=(u.repositories??[]).map(mA);for(const V of a){const X=h.findIndex(J=>ht(J.path??"")===V);if(X<0)throw new N(`Repository path ${V} is not configured, so it cannot be removed.`);h.splice(X,1)}for(const V of r){if(h.some(X=>ht(X.path??"")===V))throw new N(`Repository path ${V} is already configured.`);h.push({name:o.name??hA(V),code:null,path:V,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){$n(l,f);return}let p;try{p=(await l.api.cloneMonoSpecsRepositories(c,{paths:r,includeOptional:!1})).results??[]}catch(V){throw $n(l,f),V}$n(l,f,{results:p});const R=p.filter(V=>V.status==="failed");if(R.length>0)throw new U(`The configuration was saved, but ${R.length} repository clone(s) failed. See the clone results above.`)})}function gA(e,t){y(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 r=I(this,t);mr(r,await r.api.getMonoSpecsManagement(x(o.id,"--id")),{yaml:o.yaml===!0})})}function pA(e,t){y(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 r=I(this,t),a=x(o.id,"--id"),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i?.path)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=oA(await r.api.validateMonoSpecs({projectPath:i.path}));if(r.outputJson?r.io.stdout(W(s)):r.io.stdout(rA(s)),!s.isValid)throw new U("MonoSpecs configuration is invalid. See the errors above.")})}function AA(e,t){const n=e.command("monospecs").description("Manage the MonoSpecs configuration and the local repository checkouts of a project.");gA(n,t),lA(n,t),bA(n,t),pA(n,t),cA(n,t),sA(n,t),dA(n,t)}function fA(e,t){y(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 r=I(this,t),a=o.id.trim(),i=((await r.api.listProjects()).projects??[]).find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=_p(i);if(r.outputJson){r.io.stdout(W(s));return}r.io.stdout($p(s))})}function ZA(e,t){y(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 N("Provide at least one field to update: --name, --path, --description, or --clear-description.");if(o.description&&o.clearDescription)throw new N("Use either --description or --clear-description, not both.");const r=I(this,t),a=o.id.trim(),i=sl((await r.api.listProjects()).projects).projects.find(l=>l.id===a);if(!i)throw new ye(404,`Project ${a} was not found in the aggregation snapshot.`);const s=ur(await r.api.updateProject(a,{name:k(o.name)??i.name,path:k(o.path)??i.path,description:o.clearDescription?null:k(o.description)??i.description??null}));if(r.outputJson){r.io.stdout(W({project:s}));return}r.io.stdout(`Project updated
159
+ ${ll(s)}`)})}function RA(e,t){const n=e.command("project").description("Manage Hagi projects through generated project and aggregation APIs.");eA(n,t),fA(n,t),Pp(n,t),ZA(n,t),qp(n,t),AA(n,t)}function EA(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new N("Annotation input must be a JSON object.");const n=t;if(!Array.isArray(n.files))throw new N("Annotation input must include a files array.");const o=typeof n.totalAnnotations=="number"?n.totalAnnotations:n.files.length,r=typeof n.submittedAt=="string"&&n.submittedAt.trim()?n.submittedAt:new Date().toISOString();return{...n,sessionId:e,totalAnnotations:o,submittedAt:r,files:n.files}}function SA(e,t){y(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 r=I(this,t),a=o.sessionId.trim(),i=EA(a,await Cn(o.input)),s=await r.api.submitAnnotations(a,i);if(r.outputJson){r.io.stdout(W({sessionId:a,message:s.message,annotationCount:s.annotationCount??i.totalAnnotations,fileCount:s.fileCount??i.files.length}));return}r.io.stdout(`Proposal annotations submitted
160
+ sessionId ${a}
161
+ message ${s.message}
162
+ annotationCount ${s.annotationCount??i.totalAnnotations}
163
+ fileCount ${s.fileCount??i.files.length}
164
+ `)})}function VA(e,t){y(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 r=I(this,t),a=Ae(await r.api.archiveProposal(o.sessionId.trim(),{heroId:k(o.heroId)}));if(r.outputJson){r.io.stdout(W({session:a}));return}r.io.stdout(`Proposal archive started
165
+ ${Fe(a)}`)})}function GA(e,t){y(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 r=I(this,t),a=Ae(await r.api.completeProposal(o.sessionId.trim()));if(r.outputJson){r.io.stdout(W({session:a}));return}r.io.stdout(`Proposal completed
166
+ ${Fe(a)}`)})}function NA(e){return Ae(e)}function vA(e){return Os(e)}function WA(e){return Ds("Proposal sessions",e)}function yA(e,t=[]){return Fe(e,t)}var bl="New Proposal";function IA(e){const t=k(e.title);if(t)return t;if(e.defaultTitle)return bl;throw new N("Provide --title or pass --default-title to use the placeholder proposal title.")}function XA(e,t){$s(y(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 (${bl}).`).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 r=I(this,t),a=IA(o),i=Ps({entries:o.metadata,jsonSources:o.metadataJson}),s=NA(await r.api.createProposalSession({title:a,chiefComplaint:o.chiefComplaint.trim(),originalChiefComplaint:k(o.originalChiefComplaint),type:ir.PROPOSAL,projectId:o.projectId.trim(),enableIndependentWorkspace:o.enableIndependentWorkspace?!0:void 0,baseBranch:k(o.baseBranch),isDefaultTitle:!!o.defaultTitle,...i?{metadata:i}:{}})),l=`hagi proposal optimize-description --session-id ${s.sessionId} --description "<description>"`;if(r.outputJson){r.io.stdout(W({session:s,nextCommand:l}));return}r.io.stdout(`Proposal session created
167
+ ${yA(s,[["next",l]])}`)})}function YA(e,t){y(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 r=I(this,t),a=o.sessionId.trim(),i=k(o.heroId),s=await r.api.executeProposal(a,{heroId:i});if(r.outputJson){r.io.stdout(W({sessionId:a,message:s.message,requested:{heroId:i}}));return}r.io.stdout(`Proposal execution started
168
+ sessionId ${a}
169
+ message ${s.message}
170
+ `)})}var Ao=["zh-CN","zh-Hant","en-US","ja-JP","ko-KR","de-DE","fr-FR","es-ES","pt-BR","ru-RU"];function CA(e){if(e.enableExploreMode&&e.disableExploreMode)throw new N("Use either --enable-explore-mode or --disable-explore-mode, not both.");if(e.enableExploreMode)return!0;if(e.disableExploreMode)return!1}function BA(e){const t=e.trim();if(!Ao.includes(t))throw new N(`--proposal-content-language must be one of: ${Ao.join(", ")}.`);return t}function wA(e,t){y(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 (${Ao.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 r=I(this,t),a=o.sessionId.trim(),i=CA(o),s=BA(o.proposalContentLanguage),l=await r.api.generateProposal(a,{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s}),c=`hagi proposal execute --session-id ${a}`;if(r.outputJson){r.io.stdout(W({sessionId:a,message:l.message,requested:{enableExploreMode:i,heroId:k(o.heroId),proposalContentLanguage:s},nextCommand:c}));return}r.io.stdout(`Proposal generation started
171
+ sessionId ${a}
172
+ message ${l.message}
173
+ next Wait for the session to reach Reviewing, then run ${c}
174
+ `)})}function FA(e,t){qs(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 kA(e,t){el(e,t,{description:"Read a proposal session's messages, newest first. Use --last 1 to read the final message of a run."})}function UA(e,t){y(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 N("Use either --project-id or --project-ids, not both.");const r=I(this,t),a=vA(await r.api.listSessions({type:ir.PROPOSAL,projectId:k(o.projectId),projectIds:o.projectIds?.map(k).filter(Boolean),activeOnly:o.activeOnly?!0:void 0,includeArchived:o.includeArchived?!0:void 0}));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(WA(a.sessions))})}function JA(e,t){const n=t.summary,o=t.result,r=o?.validation?.isValid===!0,a=n?.appliedTitle||o?.optimizedTitle||"",i=n?.appliedProposalName||o?.optimizedProposalName||"",s=o?.validation?.diagnostics??[],l=[r?"Proposal optimized":"Proposal optimization returned diagnostics",`sessionId ${e}`,`title ${a}`,`proposalName ${i}`,`valid ${r?"yes":"no"}`];for(const c of s)l.push(`diagnostic ${c.code??"UNKNOWN"}: ${c.message??""}`.trimEnd());return r&&l.push(`next hagi proposal generate --session-id ${e}`),`${l.join(`
175
+ `)}
176
+ `}function xA(e,t){y(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 r=I(this,t),a=x(o.sessionId,"--session-id"),i=await r.api.optimizeProposal(a,{description:x(o.description,"--description"),title:k(o.title),isDefaultTitle:o.defaultTitle?!0:void 0,optimizationDirection:k(o.optimizationDirection),originalChiefComplaint:k(o.originalChiefComplaint)});if(r.outputJson){r.io.stdout(W({sessionId:a,...i}));return}r.io.stdout(JA(a,i))})}function KA(e,t){y(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 Se("--mode <mode>","Message mode override.").choices(Object.values(dr))).addOption(new Se("--executor-type <type>","Executor override for this message.").choices(Object.values(Yn))).addOption(sr()).addOption(lr()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await cr({context:r,sessionId:a,content:x(o.content,"--content"),mode:o.mode,executorType:o.executorType,steerFlag:o.steer});if(r.outputJson){r.io.stdout(W({sessionId:a,message:i.message,requested:{mode:o.mode,executorType:o.executorType},steer:or(i.steer)}));return}r.io.stdout(rr("Proposal message sent",a,{message:i.message},[["mode",o.mode],["executorType",o.executorType]],i.steer))})}function zA(e,t){y(e.command("status").description("Update proposal session status through read-before-write merging.")).requiredOption("--session-id <id>","Proposal session id.").addOption(new Se("--status <status>","Target session status.").choices(Object.values(Ms)).makeOptionMandatory()).action(async function(o){const r=I(this,t),a=o.sessionId.trim(),i=await r.api.getSession(a);await r.api.updateSession(a,{title:i.title,description:i.description,status:o.status,metadata:i.metadata});const s=Ae({...i,status:o.status});if(r.outputJson){r.io.stdout(W({session:s}));return}r.io.stdout(`Proposal status updated
177
+ ${Fe(s)}`)})}function LA(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.");UA(n,t),XA(n,t),xA(n,t),wA(n,t),SA(n,t),YA(n,t),VA(n,t),zA(n,t),FA(n,t),kA(n,t),GA(n,t),KA(n,t)}function jA(e){const t=["created","unchanged","merged"],n=["Saga resource installation",`root ${e.root}`,`force ${e.force?"yes":"no"}`];for(const o of t){const r=e.files.filter(a=>a.outcome===o).map(a=>a.path);n.push(`${o.padEnd(10)}${r.length>0?r.join(", "):"none"}`)}return`${n.join(`
178
+ `)}
179
+ `}function TA(e){return["Saga created",`id ${e.id}`,`directory ${e.directory}`,`createdAt ${e.metadata.createdAt}`,`method ${e.metadata.method}`,'next read the planning method with "hagi saga method goal", then write goal.md, research.md, acceptance.md and progress.md',""].join(`
180
+ `)}function gl(e){return`total ${e.total}, done ${e.done}, blocked ${e.blocked}, pending ${e.pending}, superseded ${e.superseded}`}function HA(e){return e.sagas.length===0?`No active Sagas found.
181
+ `:[`Active Sagas (${e.sagas.length})`,...e.sagas.map(t=>`${t.sagaId} ${t.state} revision ${t.revision} ${gl(t.counts)} open amendments ${t.openAmendments}`),""].join(`
182
+ `)}function QA(e){const t=Object.entries(e.artifacts).map(([o,r])=>`${o}=${r?"written":"missing"}`).join(", "),n=e.nextArtifact?`next artifact ${e.nextArtifact}: read the method with "hagi saga method ${e.nextArtifact}"`:"next artifact none";return[`Saga ${e.sagaId}`,`state ${e.state}`,`revision ${e.revision}`,`observed ${e.updatedAt}`,`artifacts ${t}`,n,`counts ${gl(e.counts)}`,`open amendments ${e.openAmendments}`,""].join(`
183
+ `)}function MA(e){return e.items.length===0?`No plan items for Saga ${e.sagaId}.
184
+ `:[`Saga ${e.sagaId} items (${e.items.length})`,...e.items.map(t=>{const n=[t.cmd?`cmd: ${t.cmd}`:void 0,t.note?`note: ${t.note}`:void 0].filter(Boolean);return`- [${t.state}] ${t.id} ${t.title}${n.length>0?` | ${n.join(" | ")}`:""}`}),""].join(`
185
+ `)}function OA(e){const t=Object.entries(e.session.userMetadata??{}).map(([n,o])=>`${n}=${o}`).join(", ");return[`session created: ${e.session.sessionId}`,`saga ${e.sagaId}`,`metadata ${t||"none"}`,`recorded in ${e.record}`,""].join(`
186
+ `)}function pl(e){return e?e.drift.map(t=>`notice: method ${t.name} differs from the digest recorded at freeze (recorded ${t.recorded??"none"}, installed ${t.current}); confirm before resuming
187
+ `).join(""):""}function DA(e){return pl(e.methods)}function fo(e,t,n){return[`refused: ${e} ${t}`,...n.map(o=>` - ${o}`),""].join(`
188
+ `)}function Pa(e){const t=Array.isArray(e)?e.map(String):[];return t.length>0?`[${t.map(n=>`'${n}'`).join(", ")}]`:"none"}function _A(e,t){const n=String(t.sagaId);switch(e){case"claim":return[`claimed: ${n}`,`owner session ${String(t.ownerSession)}`,`token ${String(t.token)}`,`created at ${String(t.createdAt)}`,""].join(`
189
+ `);case"assert-owner":return t.locked?`owner ok: ${n} is owned by session ${String(t.ownerSession)}
190
+ `:`no owner: ${n} has no execution lock
191
+ `;case"release":return`released: ${n} (owner session ${String(t.ownerSession)})
192
+ `;case"check":return`check passed: ${n} (${String(t.phase)})
193
+ `+pl(t.methods);case"set-status":return`status set: ${n} ${String(t.state)} (revision ${String(t.revision)})
194
+ `;case"tick":return`ticked: ${n} ${String(t.itemId)} (${String(t.evidence)})
195
+ `;case"block":return`blocked: ${n} ${String(t.itemId)}: ${String(t.reason)}
196
+ `;case"amend":return`amendment: ${n} ${String(t.name)} (open)
197
+ `;case"archive":return`archived: ${n} -> ${String(t.destination)}
198
+ `;case"freeze":return t.unchanged?`freeze unchanged: ${n} stays at revision ${String(t.revision)}
199
+ `:[`frozen: ${n} revision ${String(t.revision)}`+(t.previousRevision===null?"":` (revised from ${String(t.previousRevision)})`),`reopened: ${Pa(t.reopened)} added: ${Pa(t.added)}`,""].join(`
200
+ `);default:return`${e}: ${n}
201
+ `}}var hr=["goal","research","acceptance","plan","run","amend"],$A="install/gitignore.template",PA=".gitignore";function qA(){return typeof __filename=="string"?(0,mi.pathToFileURL)(__filename).href:{}.url}function ef(e){let t=E.default.dirname((0,mi.fileURLToPath)(e));for(;;){const n=E.default.join(t,"resources","saga");if(Y.default.existsSync(n))return n;const o=E.default.dirname(t);if(o===t)break;t=o}throw new Error(`Unable to locate package resources/saga from ${e}`)}function Al(e,t){let n;try{n=Y.default.lstatSync(e)}catch(o){throw new U(`Unable to read ${t} at ${e}: ${o instanceof Error?o.message:String(o)}`)}if(!n.isFile())throw new U(`${t} is not a regular file: ${e}`);return Y.default.readFileSync(e)}function qa(e,t,n,o){if(!e||typeof e!="object"||Array.isArray(e))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must be an object`);const r=e,a=Object.keys(r).sort(),i=[...t].sort();if(a.length!==i.length||a.some((s,l)=>s!==i[l]))throw new U(`Invalid Saga asset manifest at ${o}: ${n} must list exactly ${t.join(", ")}`);for(const s of a)if(typeof r[s]!="string")throw new U(`Invalid Saga asset manifest at ${o}: ${n}.${s} must be a digest`);return r}function tf(e,t){let n;try{n=JSON.parse(e.toString("utf8"))}catch(r){throw new U(`Invalid Saga asset manifest at ${t}: ${r instanceof Error?r.message:String(r)}`)}if(!n||typeof n!="object"||Array.isArray(n))throw new U(`Invalid Saga asset manifest at ${t}: expected an object`);const o=n;if(o.schemaVersion!==2)throw new U(`Unsupported Saga asset manifest schema at ${t}`);return{schemaVersion:2,install:qa(o.install,[$A],"install",t),methods:qa(o.methods,hr,"methods",t)}}function ei(e,t,n){const o=Al(E.default.join(e,...t.split("/")),`Saga asset ${t}`);if(!/^[0-9a-f]{64}$/.test(n)||(0,je.createHash)("sha256").update(o).digest("hex")!==n)throw new U(`Saga asset integrity check failed for ${t}`);return o}function Bn(e=qA()){const t=ef(e),n=E.default.join(t,"manifest.json"),o=tf(Al(n,"Saga asset manifest"),n),r=new Map;for(const[i,s]of Object.entries(o.install))r.set(PA,ei(t,i,s));const a=new Map;for(const i of hr)a.set(i,ei(t,`prompts/${i}.md`,o.methods[i]));return{directory:t,install:r,methods:a}}var nf=/^- \[( |x)\] (\S+) (.*?)\s*\|\s*(.*)$/,of=/^- ~ (\S+) (.*?)\s*\|\s*(.*)$/,rf=new Set(["## 待决问题","## Open questions"]),af=["[已决定","[decided"],sf=new Set(["- 无","- none"]);function tt(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function $e(e){return(0,je.createHash)("sha256").update(e).digest("hex")}function Mt(e){if(!e)return[];const t=e.split(/\r?\n/);return t.at(-1)===""&&t.pop(),t}function fl(e){const t=[],n=[];return Mt(e).forEach((o,r)=>{const a=nf.exec(o);if(a){t.push({line:r,id:a[2],title:a[3],done:a[1]==="x",note:a[4].trim()});return}const i=of.exec(o);i&&n.push({id:i[1],title:i[2]})}),{active:t,superseded:n}}function Zl(e){const t={};let n;for(const o of Mt(e)){const r=/^## (\S+)/.exec(o);r&&(n=r[1]);const a=/^cmd:\s*(.+)$/.exec(o);a&&n&&(t[n]=a[1].trim())}return t}function lf(e){const t=[];let n=!1;for(const o of Mt(e)){if(o.startsWith("## ")){n=rf.has(o.trim());continue}n&&o.startsWith("- ")&&!af.some(r=>o.includes(r))&&!sf.has(o.trim().toLowerCase())&&t.push(o.slice(2).trim())}return t}function cf(e){const t=/^merged-in:[ \t]*(\S*)[ \t]*$/m.exec(e);return t?t[1]:""}function df(e){return[...e.active.map(t=>`${t.id} ${t.title}`),...e.superseded.map(t=>`~ ${t.id} ${t.title}`)].join(`
202
+ `)}function uf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,$e(n)]))}function ti(e){const t=n=>Object.entries(n).map(([o,r])=>` ${o}: ${r}
203
+ `).join("");return`revision: ${e.revision}
204
+ `+(e.frozenAt===void 0?"":`frozen-at: ${e.frozenAt}
205
+ `)+(e.prev===void 0?"":`prev: ${e.prev}
206
+ `)+`hashes:
207
+ ${t(e.hashes)}acceptance-by-item:
208
+ ${t(e.acceptanceByItem)}`+(e.methods===void 0?"":`methods:
209
+ ${t(e.methods)}`)+`items: ${e.items.join(" ")}
210
+ `}function Rl(e,t="contract.lock"){const n=/^revision:\s*(\d+)/m.exec(e),o=/^hashes:\r?\n/m.exec(e),r=/^acceptance-by-item:\r?\n/m.exec(e),a=/^items:[ \t]*(.*)$/m.exec(e);if(!n||!o||!r||!a)throw new U(`Invalid Saga data in "${t}": malformed contract lock.`);const i=Number(n[1]);if(!Number.isSafeInteger(i))throw new U(`Invalid Saga data in "${t}": invalid revision.`);return{revision:i,frozenAt:/^frozen-at:[ \t]*(\S*)/m.exec(e)?.[1],prev:/^prev:[ \t]*(\S*)/m.exec(e)?.[1],hashes:Pn(e,"hashes"),acceptanceByItem:Pn(e,"acceptance-by-item"),methods:/^methods:\r?\n/m.test(e)?Pn(e,"methods"):void 0,items:a[1].split(/\s+/).filter(Boolean)}}function Pn(e,t){const n=new RegExp(`^${t}:\\r?\\n((?: .*\\r?\\n?)*)`,"m").exec(e);return n?Object.fromEntries([...n[1].matchAll(/^ {2}(\S+):\s*(\S+)\s*$/gm)].map(o=>[o[1],o[2]])):{}}var Zo="**/runtime/";function Gt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function mf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function ne(e,t){const n=E.default.resolve(e),o=E.default.resolve(t),r=E.default.relative(n,o);if(r==="")return o;if(r===".."||r.startsWith(`..${E.default.sep}`)||E.default.isAbsolute(r))throw new T([`path escapes the Saga root: ${t}`]);const a=Gt(n);if(a&&(a.isSymbolicLink()||!mf((0,Y.realpathSync)(n),n)))throw new T([`Saga root is redirected through a link: ${n}`]);let i=n;for(const s of r.split(E.default.sep)){i=E.default.join(i,s);const l=Gt(i);if(!l)break;if(l.isSymbolicLink())throw new T([`refusing a redirected Saga path: ${i}`])}return o}function ke(e,t){const n=ne(e,t);try{(0,Y.mkdirSync)(n,{recursive:!0})}catch(o){throw new U(`Cannot create Saga directory "${t}": ${Fn(o)}`)}}function wn(e,t,n){const o=ne(e,t);let r;try{r=(0,Y.openSync)(o,"wx"),(0,Y.writeSync)(r,gr(n))}finally{r!==void 0&&(0,Y.closeSync)(r)}}function bt(e,t,n){const o=ne(e,t),r=E.default.join(E.default.dirname(o),`${E.default.basename(o)}.${(0,je.randomUUID)()}.tmp`);let a;try{a=(0,Y.openSync)(r,"wx"),(0,Y.writeSync)(a,gr(n)),(0,Y.closeSync)(a),a=void 0,(0,Y.renameSync)(r,o)}finally{a!==void 0&&(0,Y.closeSync)(a),Gt(r)&&(0,Y.unlinkSync)(r)}}function br(e,t,n){bt(e,t,`${JSON.stringify(n,null,2)}
211
+ `)}function hf(e,t,n){const o=ne(e,t),r=yt(e,t),a=r!==void 0&&r.length>0&&r[r.length-1]!==10;let i;try{i=(0,Y.openSync)(o,"a"),(0,Y.writeSync)(i,gr(a?`
212
+ ${n}`:n))}catch(s){throw new U(`Cannot append to Saga data "${t}": ${Fn(s)}`)}finally{i!==void 0&&(0,Y.closeSync)(i)}}function El(e,t){(0,Y.unlinkSync)(ne(e,t))}function bf(e,t,n){(0,Y.linkSync)(ne(e,t),ne(e,n))}function gf(e,t,n){const o=ne(e,t),r=ne(e,n);if(Gt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function yt(e,t){const n=ne(e,t);try{return(0,Y.readFileSync)(n)}catch(o){if(o.code==="ENOENT")return;throw new U(`Cannot read Saga data "${t}": ${Fn(o)}`)}}function Pe(e,t){return yt(e,t)?.toString("utf8")}function pf(e,t,n){const o=ne(e,t),r=ne(e,n);if(Gt(r))throw new T([`destination already exists: ${n}`]);(0,Y.renameSync)(o,r)}function Af(e){return e.split(/\r?\n/).includes(Zo)}function It(e){ke(e,e);const t=ne(e,E.default.join(e,".gitignore"));let n;try{if(n=Gt(t)?(0,Y.readFileSync)(t,"utf8"):void 0,n!==void 0&&Af(n))return;if(n===void 0){wn(e,t,`${Zo}
213
+ `);return}const o=n.includes(`\r
214
+ `)?`\r
215
+ `:`
216
+ `;(0,Y.appendFileSync)(t,`${n.length>0&&!n.endsWith(`
217
+ `)?o:""}${Zo}${o}`)}catch(o){throw o instanceof T?o:new U(`Cannot write the runtime ignore rule in "${t}": ${Fn(o)}. No runtime files were created.`)}}function gr(e){return typeof e=="string"?Buffer.from(e,"utf8"):e}function Fn(e){return e instanceof Error?e.message:String(e)}var ff=/^[a-z0-9][a-z0-9-]{0,62}$/,Zf=new Set(["prompts","tools","archive","runtime","amendments","revisions"]);function Ro(e){try{return(0,Y.lstatSync)(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Rf(e){try{return(0,Y.statSync)(e).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}function Ef(e,t){if(!ff.test(e))throw new N(`Invalid Saga ID ${JSON.stringify(e)}: use 1-63 lowercase letters, digits, or hyphens, beginning with a letter or digit.`);if(Zf.has(e))throw new N(`Saga ID ${JSON.stringify(e)} is reserved.`);const n=E.default.join(t,e);if(Ro(n))throw new U(`Saga "${e}" already exists at ${n}.`);const o=E.default.join(t,"archive");if(Rf(o)){const r=(0,Y.readdirSync)(o).find(a=>a.endsWith(`-${e}`));if(r)throw new U(`Saga "${e}" already exists in the archive as "${r}".`)}}function Sf(e){return`hagi saga init ${e.kind==="path"?"--path":"--project-id"} ${JSON.stringify(e.value)}`}function Vf(e,t){const n=E.default.dirname(E.default.dirname(e)),o=[".hagicode",".hagicode/sagas"],r=[".gitignore"],a=s=>{throw new U(`Saga resource path "${s}" is missing or unsafe. Run ${Sf(t)} after correcting the target.`)};for(const s of o){const l=E.default.join(n,s);Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isDirectory())&&a(s)}for(const s of r){const l=E.default.join(e,...s.split("/"));Ro(l)||a(s);const c=(0,Y.lstatSync)(l);(c.isSymbolicLink()||!c.isFile())&&a(s)}const i=(0,Y.readFileSync)(E.default.join(e,".gitignore"),"utf8").split(/\r?\n/);!i.includes("**/runtime/")&&!i.includes("*/runtime/")&&a(".gitignore (runtime ignore rule)")}function Gf(e,t){const n=ne(t,E.default.join(t,e));try{(0,Y.mkdirSync)(n)}catch(r){throw r.code==="EEXIST"?new U(`Saga "${e}" already exists at ${n}.`):r}const o={id:e,createdAt:tt(),method:1};try{wn(t,E.default.join(n,"saga.json"),`${JSON.stringify(o,null,2)}
218
+ `)}catch(r){throw(0,Y.rmSync)(n,{recursive:!0,force:!0}),r}return o}var Sl=[".hagicode",".hagicode/sagas"];function Vl(e){return e.toString("utf8").split(/\r?\n/).includes("**/runtime/")}function Nf(e){if(Vl(e))return e;const t=e.toString("utf8"),n=t.match(/\r\n|\n/)?.[0]??`
219
+ `,o=e.length>0&&!t.endsWith(`
220
+ `)?n:"";return Buffer.concat([e,Buffer.from(`${o}**/runtime/`)])}function Tt(e){try{return(0,Y.lstatSync)(e)}catch(t){if(t.code==="ENOENT")return;throw t}}function ni(e,t,n){const o=E.default.join(E.default.dirname(e),`.${E.default.basename(e)}.${(0,je.randomUUID)()}.tmp`);let r;try{r=(0,Y.openSync)(o,"wx",n??438),(0,Y.writeFileSync)(r,t),(0,Y.closeSync)(r),r=void 0,(0,Y.renameSync)(o,e)}finally{r!==void 0&&(0,Y.closeSync)(r),Tt(o)&&(0,Y.unlinkSync)(o)}}function oi(e,t,n){const o=E.default.relative(e,n);if(o===".."||o.startsWith(`..${E.default.sep}`)||E.default.isAbsolute(o))throw new U(`Saga installation path escapes the selected project: ${t}`);const r=E.default.resolve(t),a=E.default.resolve(n);if(process.platform==="win32"?r.toLowerCase()!==a.toLowerCase():r!==a)throw new U(`Saga installation path is redirected: ${t}`)}function on(e,t){const n=(0,Y.realpathSync)(e);if(!(0,Y.statSync)(n).isDirectory())throw new U(`Selected project path is not a directory: ${e}`);const o=E.default.join(n,".hagicode","sagas");for(const r of Sl){const a=E.default.join(n,r),i=Tt(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga installation directory: ${a}`);if(!i.isDirectory())throw new U(`Saga installation path is not a directory: ${a}`);oi(n,a,(0,Y.realpathSync)(a))}}for(const r of t.install.keys()){const a=E.default.join(o,...r.split("/")),i=Tt(a);if(i){if(i.isSymbolicLink())throw new U(`Refusing redirected Saga resource: ${a}`);if(!i.isFile())throw new U(`Saga resource is not a regular file: ${a}`);if(oi(o,a,(0,Y.realpathSync)(a)),i.nlink>1&&!Vl((0,Y.readFileSync)(a)))throw new U(`Refusing to overwrite hard-linked Saga resource: ${a}`)}}return o}function vf(e,t,n=!1){const o=on(e,t),r=E.default.dirname(E.default.dirname(o));for(const i of Sl){const s=E.default.join(r,i);Tt(s)||(0,Y.mkdirSync)(s)}on(r,t);const a=[];for(const[i,s]of t.install){const l=E.default.join(o,...i.split("/")),c=Tt(l);if(!c){on(r,t),ni(l,s),a.push({path:i,outcome:"created"});continue}const u=(0,Y.readFileSync)(l),h=Nf(u);u.equals(h)?a.push({path:i,outcome:"unchanged"}):(on(r,t),ni(l,h,c.mode&511),a.push({path:i,outcome:"merged"}))}return{root:o,force:n,files:a,conflicts:[]}}var Ot=hr;function Wf(e){return Ot.includes(e)}function yf(e){return(0,je.createHash)("sha256").update(e).digest("hex")}function Gl(e,t=Bn()){const n=t.methods.get(e);if(!n)throw new Error(`Saga method ${e} is missing from the verified bundle`);return{name:e,sha256:yf(n),bytes:n}}function Nl(e=Bn()){return Object.fromEntries(Ot.map(t=>[t,Gl(t,e).sha256]))}var vl=/^[a-z0-9][a-z0-9-]{0,62}$/,Wl=new Set(["prompts","tools","archive","runtime","amendments","revisions"]),If=[["goal","goal.md"],["research","research.md"],["acceptance","acceptance.md"],["plan","progress.md"]];function kn(e){return e instanceof Error&&"code"in e&&e.code==="ENOENT"}function it(e){let t;try{t=(0,Y.statSync)(e)}catch(n){if(kn(n))return;throw new U(`Cannot inspect Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}if(!t.isFile())throw new U(`Cannot read Saga data "${e}": not a regular file.`);try{return(0,Y.readFileSync)(e,"utf8")}catch(n){throw new U(`Cannot read Saga data "${e}": ${n instanceof Error?n.message:String(n)}`)}}function Xf(e){const t=fl(it(E.default.join(e,"progress.md"))??"");return{active:t.active.map(({id:n,title:o,done:r,note:a})=>({id:n,title:o,done:r,note:a})),superseded:t.superseded}}function Yf(e){return Zl(it(E.default.join(e,"acceptance.md"))??"")}function Cf(e){const t=E.default.join(e,"runtime","blocked.json"),n=it(t);if(n===void 0)return{};let o;try{o=JSON.parse(n)}catch(r){throw new U(`Invalid Saga data in "${t}": ${r instanceof Error?r.message:String(r)}`)}if(!o||typeof o!="object"||Array.isArray(o))throw new U(`Invalid Saga data in "${t}": expected a JSON object.`);return o}function Bf(e){const t=E.default.join(e,"contract.lock"),n=it(t);return n===void 0?0:Rl(n,t).revision}function pr(e){const t=E.default.join(e,"amendments");let n;try{if(!(0,Y.statSync)(t).isDirectory())return[];n=(0,Y.readdirSync)(t).filter(o=>o.endsWith(".md")).sort()}catch(o){if(kn(o))return[];throw new U(`Cannot read Saga amendments "${t}": ${o instanceof Error?o.message:String(o)}`)}return n.map(o=>{const r=E.default.join(t,o),a=it(r);if(a===void 0)throw new U(`Cannot read Saga amendment "${r}": not a regular file.`);return{name:o,mergedIn:cf(a)}})}function wf(e){const t=n=>{const o=it(E.default.join(e,n));return o!==void 0&&o.trim()!==""};return{goal:t("goal.md"),research:t("research.md"),acceptance:t("acceptance.md"),plan:t("progress.md")}}function yl(e){const t=Xf(e),n=Yf(e),o=Cf(e);return[...t.active.map(r=>({id:r.id,title:r.title,state:r.done?"done":r.id in o?"blocked":"pending",cmd:n[r.id]||"",note:r.note})),...t.superseded.map(r=>({id:r.id,title:r.title,state:"superseded",cmd:"",note:""}))]}function Ff(e){return yl(e)}var kf=["draft","planned","running","paused","done"];function Uf(e){const t=it(E.default.join(e,"runtime","status.json"));if(t===void 0)return;let n;try{n=JSON.parse(t)}catch{return}if(!n||typeof n!="object"||Array.isArray(n))return;const{state:o,note:r}=n;if(!(typeof o!="string"||!kf.includes(o)))return{state:o,note:typeof r=="string"?r:""}}function Ar(e,t){const n=Bf(t),o=yl(t),r=wf(t),a=o.filter(p=>p.state!=="superseded"),i=o.filter(p=>p.state==="done").length,s=If.find(([p])=>!r[p])?.[0]??null,l=n===0?s?"draft":"planned":i===a.length?"done":"running",c=Uf(t),u=c!==void 0&&(c.state!=="running"||l==="running"),h=u?c.state:l,f=u?c.note:"";return{schema:"saga-status/2",sagaId:e,revision:n,state:h,updatedAt:new Date().toISOString().replace(/\.\d{3}Z$/,"Z"),note:f,artifacts:r,nextArtifact:s,counts:{total:a.length,done:i,blocked:o.filter(p=>p.state==="blocked").length,pending:o.filter(p=>p.state==="pending").length,superseded:o.filter(p=>p.state==="superseded").length},openAmendments:pr(t).filter(p=>!p.mergedIn).length,items:o.map(({id:p,title:R,state:V})=>({id:p,title:R,state:V}))}}function Un(e,t){const n=()=>{throw new ye(404,`Saga "${t}" was not found.`)};(!vl.test(t)||Wl.has(t))&&n();const o=E.default.join(e,t);let r;try{r=(0,Y.lstatSync)(o)}catch(a){throw kn(a)&&n(),new U(`Cannot inspect Saga "${o}": ${a instanceof Error?a.message:String(a)}`)}return r.isDirectory()||n(),o}function Jf(e){let t;try{t=(0,Y.readdirSync)(e,{withFileTypes:!0})}catch(n){if(kn(n))return[];throw new U(`Cannot list Sagas in "${e}": ${n instanceof Error?n.message:String(n)}`)}return t.filter(n=>n.isDirectory()&&vl.test(n.name)&&!Wl.has(n.name)).map(n=>n.name).sort()}function xf(e){return Jf(e).map(t=>{const n=Ar(t,E.default.join(e,t));return{sagaId:n.sagaId,state:n.state,revision:n.revision,counts:n.counts,openAmendments:n.openAmendments,updatedAt:n.updatedAt}})}function Kf(e){return{sagas:xf(e)}}function zf(e,t){return{sagaId:t,items:Ff(Un(e,t))}}function fr(e,t){return E.default.join(e,t)}function Zr(e,t){return E.default.join(fr(e,t),"runtime","execute.lock")}function Lf(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.token=="string"&&typeof t.ownerSession=="string"&&typeof t.createdAt=="string"}function Rr(e,t){const n=ne(e,Zr(e,t));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(a){if(a.code==="ENOENT")return;throw new U(`Cannot read the execution lock of Saga "${t}": ${a.message}`)}let r;try{r=JSON.parse(o)}catch{throw new U(`The execution lock of Saga "${t}" is not valid JSON.`)}if(!Lf(r))throw new U(`The execution lock of Saga "${t}" has an unexpected shape.`);return r}function Il(e,t){return t===void 0||t===""?!1:(0,je.timingSafeEqual)(Buffer.from($e(e),"hex"),Buffer.from($e(t),"hex"))}function Xl(e,t){return`Saga "${e}" is owned by session ${t}; reconcile the prior orchestrator and its workers. Ownership is never taken over by age.`}function jf(e,t,n){const o=n?.trim();if(!o)throw new N("claim requires a nonempty --session <owner-session-id>.");It(e),ke(e,E.default.join(fr(e,t),"runtime"));const r={token:(0,je.randomUUID)(),ownerSession:o,createdAt:tt()},a=Zr(e,t),i=E.default.join(E.default.dirname(a),`.execute.lock.${(0,je.randomUUID)()}.tmp`);wn(e,i,`${JSON.stringify(r,null,2)}
221
+ `);try{bf(e,i,a)}catch(s){throw s.code!=="EEXIST"?s:new T([Xl(t,Rr(e,t)?.ownerSession??"unknown")])}finally{El(e,i)}return r}function Er(e,t,n){const o=Rr(e,t);if(!o)return{locked:!1};if(!Il(o.token,n))throw new T([`${Xl(t,o.ownerSession)} Supply the execution token with --token or SAGA_EXECUTION_TOKEN.`]);return{locked:!0,ownerSession:o.ownerSession}}function Tf(e,t){const n=ne(e,E.default.join(fr(e,t),"runtime","status.json"));let o;try{o=(0,Y.readFileSync)(n,"utf8")}catch(r){if(r.code==="ENOENT")return;throw r}try{const r=JSON.parse(o).state;return typeof r=="string"?r:void 0}catch{return}}function Hf(e,t,n){const o=Rr(e,t);if(!o)throw new T([`Saga "${t}" has no execution lock; there is nothing to release.`]);if(!Il(o.token,n.token))throw new T([`the execution token does not match the owner session ${o.ownerSession}.`]);if(!n.workersSettled)throw new T(["confirm that every worker has settled with --workers-settled."]);const r=Tf(e,t);if(r!=="paused"&&r!=="done")throw new T([`the stored status is ${r??"missing"}; write a paused or done snapshot with set-status before releasing.`]);return El(e,Zr(e,t)),{ownerSession:o.ownerSession}}function Sr(e){const t=E.default.resolve(e);let n;try{n=(0,Y.realpathSync)(t)}catch(o){throw new U(`Cannot use local project path "${e}": ${o instanceof Error?o.message:String(o)}`)}if(!(0,Y.statSync)(n).isDirectory())throw new U(`Local project path is not a directory: "${e}"`);return n}function Eo(e){if(!Array.isArray(e.projects))throw new U("Backend project list did not include a projects collection.");return e.projects}function Yl(e,t){if(typeof e.path!="string"||e.path.length===0)throw new U(`Backend project "${t}" has no host-local project path.`);return Sr(e.path)}async function Qf(e,t,n){if(e.kind==="path")return Sr(e.value);const o=Eo(await I(t,n).api.listProjects()).find(r=>r.id===e.value);if(!o)throw new ye(404,`Project "${e.value}" was not found.`);return Yl(o,e.value)}function Mf(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function Of(e){try{return(0,Y.realpathSync)(E.default.resolve(e))}catch{return}}function Df(e,t){const n=e.flatMap(o=>{if(typeof o.id!="string"||typeof o.path!="string"||o.path.length===0)return[];const r=Of(o.path);return r!==void 0&&Mf(r,t)?[{id:o.id}]:[]});if(n.length===0)throw new T([`no registered project has the path ${t}; register the project or pass --project-id.`]);if(n.length>1){const o=n.map(r=>r.id).join(", ");throw new T([`${n.length} registered projects have the path ${t} (${o}); pass --project-id to choose one.`])}return{projectId:n[0].id,projectDirectory:t}}async function _f(e,t){if(e.kind==="path"){const o=Sr(e.value);return Df(Eo(await t()),o)}const n=Eo(await t()).find(o=>o.id===e.value);if(!n)throw new ye(404,`Project "${e.value}" was not found.`);return{projectId:e.value,projectDirectory:Yl(n,e.value)}}var ri=["implementation","verification"],$f="worker";function Pf(e){const t={"saga.id":e.sagaId,"saga.role":$f,"saga.worker":e.role,"saga.master":e.masterSessionId};return e.item!==void 0&&(t["saga.item"]=e.item),t}function qf(e){const t=e.title.replace(/\s+/g," ").trim(),n=e.createdAt??tt();return`- ${e.sessionId} | ${n} | ${e.role} | ${e.item??"-"} | ${t}
222
+ `}function Cl(e){const t=e.path!==void 0;if(t===(e.projectId!==void 0))throw new N("Specify exactly one of --path <directory> or --project-id <id>.");if(t){const o=e.path;if(o===void 0||o==="")throw new N("--path <directory> must not be empty.");return{kind:"path",value:o}}const n=e.projectId?.trim();if(!n)throw new N("--project-id <id> must not be empty.");return{kind:"project-id",value:n}}function e2(e,t){const n=e.opts().token??e.optsWithGlobals().token;if(e.optsWithGlobals().projectId!==void 0&&n!==void 0)throw new N("--token is the backend bearer token with --project-id; set SAGA_EXECUTION_TOKEN to pass the execution token.");return n!==void 0&&n!==""?n:t.SAGA_EXECUTION_TOKEN||void 0}async function Xt(e,t){const n=e.optsWithGlobals(),o=Cl(n),r=await Qf(o,e,t);return{env:t.env,io:t.io,outputJson:n.json===!0,projectDirectory:r,sagaRoot:E.default.join(r,".hagicode","sagas"),selector:o}}var wt="session create",t2=/[\\/]/;function rn(e,t){if(typeof e!="string"||e.trim()==="")throw new N(`session create requires a nonblank ${t} <value>.`);return e.trim()}function ai(e,t){if(t2.test(e)||e==="."||e===".."||e.includes("\0"))throw new N(`${t} must not contain a path separator or a traversal segment: ${JSON.stringify(e)}.`);return e}function n2(e){if(typeof e!="string"||!ri.includes(e))throw new N(`--role must be one of ${ri.join(", ")}.`);return e}function o2(e,t){const n=ai(rn(e.saga,"--saga"),"--saga"),o=rn(e.title,"--title"),r=n2(e.role),a=rn(e.master,"--master"),i=e.item===void 0?void 0:ai(rn(e.item,"--item"),"--item");if(e.token!==void 0)throw new N("--token is the backend bearer token; the Saga execution token comes only from SAGA_EXECUTION_TOKEN.");const s=t.SAGA_EXECUTION_TOKEN;if(s===void 0||s.trim()==="")throw new N("session create requires SAGA_EXECUTION_TOKEN to hold the execution token claimed for this Saga.");return{sagaId:n,title:o,role:r,masterSessionId:a,item:i,executionToken:s,selector:Cl(e)}}function r2(e,t){const n=E.default.join(e,t,"runtime"),o=E.default.join(n,"sessions.md");return ne(e,o),It(e),ke(e,n),o}function a2(e){return e instanceof Error?e.message:String(e)}function i2(e){return async function(){const n=o2(this.optsWithGlobals(),e.env),o=I(this,e),r=i=>o.io.stdout(i),{sagaId:a}=n;try{const i=await _f(n.selector,()=>o.api.listProjects()),s=E.default.join(i.projectDirectory,".hagicode","sagas");Un(s,a),Er(s,a,n.executionToken);const l=r2(s,a),c=Ae(await o.api.createChatSession({title:n.title,projectId:i.projectId,metadata:Pf({sagaId:a,role:n.role,masterSessionId:n.masterSessionId,item:n.item})}));try{hf(s,l,qf({sessionId:c.sessionId,role:n.role,item:n.item,title:n.title}))}catch(h){const f=`session ${c.sessionId} was created but its record could not be written to ${l}: ${a2(h)}`,p={sagaId:a,command:wt,ok:!1,errors:[f],session:c};throw r(o.outputJson?W(p):fo(wt,a,[f])),new T([f],{reported:!0})}const u={sagaId:a,command:wt,ok:!0,session:c,record:l};r(o.outputJson?W(u):OA(u))}catch(i){if(i instanceof T&&!i.reported){const s={sagaId:a,command:wt,ok:!1,errors:i.reasons};r(o.outputJson?W(s):fo(wt,a,i.reasons)),i.reported=!0}throw i}}}var s2=["goal.md","research.md","acceptance.md","progress.md"],Bl=/^(状态|Status):\s*PASS\s*$/m;function Oe(e,t){const n=E.default.join(e,t),o=Pe(e,E.default.join(n,"progress.md")),r=Pe(e,E.default.join(n,"acceptance.md"));return{sagaRoot:e,sagaId:t,directory:n,goal:yt(e,E.default.join(n,"goal.md")),research:Pe(e,E.default.join(n,"research.md")),acceptance:r,progress:o,plan:fl(o??""),commands:Zl(r??"")}}function l2(e){return/[\\/]/.test(e)||e==="."||e===".."}function Jn(e){const t=[],n={"goal.md":e.goal!==void 0,"research.md":e.research!==void 0,"acceptance.md":e.acceptance!==void 0,"progress.md":e.progress!==void 0};for(const r of s2)n[r]||t.push(`${r} is missing`);const o=e.plan.active.map(r=>r.id);o.length===0&&n["progress.md"]&&t.push("progress.md has no active items"),new Set(o).size!==o.length&&t.push("progress.md has duplicate item IDs");for(const r of[...o,...e.plan.superseded.map(a=>a.id)])l2(r)&&t.push(`unsafe item ID: ${r}`);for(const r of o)r in e.commands||t.push(`item ${r} has no acceptance cmd in acceptance.md`);for(const r of Object.keys(e.commands))o.includes(r)||t.push(`acceptance entry ${r} is not an active item in progress.md`);return t}function wl(e){return{goal:$e(e.goal??Buffer.alloc(0)),acceptance:$e(e.acceptance!==void 0?Buffer.from(e.acceptance,"utf8"):Buffer.alloc(0)),"plan-items":$e(df(e.plan))}}function Vr(e){return pr(e.directory).filter(t=>!t.mergedIn).map(t=>`open amendment ${t.name}: merge it into the artifacts and set merged-in`)}function Fl(e){return lf(e.research??"").map(t=>`open question not decided by a human: ${t}`)}function Gr(e){const t=Pe(e.sagaRoot,E.default.join(e.directory,"contract.lock"));if(t!==void 0)return{text:t,lock:Rl(t,E.default.join(e.directory,"contract.lock"))}}function kl(e){const t=[],n=Gr(e);if(!n)t.push("contract.lock missing: run freeze first");else{const o=wl(e);for(const[r,a]of Object.entries(o))n.lock.hashes[r]!==a&&t.push(`hash mismatch for ${r}: frozen contract (r${n.lock.revision}) changed, run freeze after merging an amendment`)}return t.push(...Vr(e)),t.push(...Fl(e)),t.push(...c2(e)),t}function c2(e){const t=[],n=E.default.join(e.directory,"runtime");for(const o of e.plan.active.filter(r=>r.done)){if(!o.note)t.push(`item ${o.id} is ticked but has no evidence reference`);else{const a=E.default.resolve(n,o.note);a.startsWith(`${E.default.resolve(n)}${E.default.sep}`)?yt(e.sagaRoot,a)===void 0&&t.push(`item ${o.id} is ticked but evidence file is missing: ${o.note}`):t.push(`item ${o.id} evidence reference escapes the runtime directory: ${o.note}`)}const r=Pe(e.sagaRoot,E.default.join(n,"reports",`${o.id}.md`));(r===void 0||!Bl.test(r))&&t.push(`item ${o.id} is ticked but its PASS report is missing`)}return t}function Ul(e,t,n){const o=Oe(e,t),r=Jn(o);return n==="run"?[...r,...kl(o)]:r}function d2(e){const t=Gr(e);if(!t)return;const n=t.lock.methods;if(n===void 0)return{recorded:!1,drift:[]};const o=Nl();return{recorded:!0,drift:Ot.filter(r=>n[r]!==o[r]).map(r=>({name:r,recorded:n[r]??null,current:o[r]}))}}function u2(e,t,n){const o=Oe(e,t),r=Jn(o);return n==="plan"?{errors:r}:{errors:[...r,...kl(o)],methods:d2(o)}}function m2(e,t){const n=Oe(e,t).plan.active;return[...n.length>0&&n.every(o=>o.done)?[]:["active items remain pending or blocked, or there are no active items"],...Ul(e,t,"run")]}function h2(e){return uf(e.commands)}function b2(e,t){const n=Nl(),o=Oe(e,t),r=[...Jn(o),...Fl(o),...Vr(o)];if(r.length>0)throw new T(r);const a=wl(o),i=h2(o),s=o.plan.active,l=[...s.map(d=>d.id),...o.plan.superseded.map(d=>d.id)],c=E.default.join(o.directory,"contract.lock"),u=Gr(o);if(!u)return bt(e,c,ti({revision:1,frozenAt:tt(),prev:"-",hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:1,unchanged:!1,reopened:[],added:s.map(d=>d.id)};const{text:h,lock:f}=u;if(Object.keys(a).length===Object.keys(f.hashes).length&&Object.entries(a).every(([d,m])=>f.hashes[d]===m))return{revision:f.revision,unchanged:!0,reopened:[],added:[]};const p=`r${f.revision+1}`;if(!pr(o.directory).some(d=>d.mergedIn===p))throw new T([`contract changed without an amendment merged into ${p}: tamper or unrecorded change`]);const R=new Set(l),V=f.items.filter(d=>!R.has(d));if(V.length>0)throw new T([`item removed without being marked superseded: ${V.join(", ")}`]);ke(e,E.default.join(o.directory,"revisions")),bt(e,E.default.join(o.directory,"revisions",`r${f.revision}.lock`),h);const X=Mt(o.progress??""),J=[];for(const d of s)d.done&&f.acceptanceByItem[d.id]!==i[d.id]&&(X[d.line]=`- [ ] ${d.id} ${d.title} | reopened in ${p}: acceptance changed`,J.push(d.id));if(J.length>0){It(e);const d=E.default.join(o.directory,"runtime","history",`r${f.revision}`);ke(e,d);for(const m of J)for(const A of[E.default.join(o.directory,"runtime","evidence",`${m}.log`),E.default.join(o.directory,"runtime","reports",`${m}.md`)])yt(e,A)!==void 0&&gf(e,A,E.default.join(d,E.default.basename(A)))}return bt(e,E.default.join(o.directory,"progress.md"),`${X.join(`
223
+ `)}
224
+ `),bt(e,c,ti({revision:f.revision+1,frozenAt:tt(),prev:$e(h),hashes:a,acceptanceByItem:i,methods:n,items:l})),{revision:f.revision+1,previousRevision:f.revision,unchanged:!1,reopened:J,added:s.filter(d=>!f.items.includes(d.id)).map(d=>d.id)}}function Jl(e){return e.length>0&&!/[\\/]/.test(e)&&e!=="."&&e!==".."}function Nr(e,t){const n=E.default.join(e,t,"runtime","blocked.json"),o=Pe(e,n);if(o===void 0)return{};let r;try{r=JSON.parse(o)}catch(a){throw new U(`Invalid Saga data in "${n}": ${a.message}`)}if(!r||typeof r!="object"||Array.isArray(r))throw new U(`Invalid Saga data in "${n}": expected a JSON object.`);return{...r}}function g2(e,t){return E.default.join(e,t,"progress.md")}function p2(e,t,n){if(!n||!Jl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const o=Oe(e,t),r=o.plan.active.find(h=>h.id===n);if(!r)throw new T([`unknown item ${n}: it is not an active item in progress.md`]);const a=E.default.join(o.directory,"runtime"),i=Pe(e,E.default.join(a,"reports",`${n}.md`));if(i===void 0||!Bl.test(i))throw new T([`no PASS report for ${n}: runtime/reports/${n}.md must contain "Status: PASS"`]);if(yt(e,E.default.join(a,"evidence",`${n}.log`))===void 0)throw new T([`no evidence file for ${n}: runtime/evidence/${n}.log is missing`]);const s=Ul(e,t,"run");if(s.length>0)throw new T(s);const l=`evidence/${n}.log`,c=Mt(o.progress??"");c[r.line]=`- [x] ${n} ${r.title} | ${l}`,It(e),bt(e,g2(e,t),`${c.join(`
225
+ `)}
226
+ `);const u=Nr(e,t);return n in u&&(delete u[n],br(e,E.default.join(a,"blocked.json"),u)),{itemId:n,evidence:l}}function A2(e,t,n,o){if(o===void 0||o.trim()==="")throw new N("block requires a nonempty reason.");if(!n||!Jl(n))throw new T([`invalid item ID: ${JSON.stringify(n??"")}`]);const r=Oe(e,t);if(!r.plan.active.some(s=>s.id===n))throw new T([`unknown item ${n}: it is not an active item in progress.md`]);It(e);const a=E.default.join(r.directory,"runtime");ke(e,a);const i=Nr(e,t);return i[n]=o.trim(),br(e,E.default.join(a,"blocked.json"),i),{itemId:n,reason:o.trim()}}function f2(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"amendment"}function Z2(e,t,n,o){const r=(n??"").replace(/\s*[\r\n]+\s*/g," ").trim();if(r==="")throw new N("amend requires a nonempty title.");const a=E.default.join(e,t,"amendments");ke(e,a);const i=(0,Y.readdirSync)(a).map(c=>/^(\d+)-.*\.md$/.exec(c)).filter(c=>c!==null).map(c=>Number(c[1])),s=(i.length>0?Math.max(...i):0)+1,l=`${String(s).padStart(3,"0")}-${f2(r)}.md`;return wn(e,E.default.join(a,l),`title: ${r}
227
+ created-at: ${tt()}
228
+ merged-in:
229
+ ---
230
+ ${o}
231
+ `),{name:l,mergedIn:""}}function R2(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function E2(e,t,n){const o=Oe(e,t),r=Nr(e,t),a=[];o.plan.active.length===0&&a.push("the saga has no active items");for(const l of o.plan.active.filter(c=>!c.done))a.push(`item ${l.id} is ${l.id in r?"blocked":"pending"}`);if(a.push(...Vr(o)),a.length>0&&!n)throw new T([...a,"use --force to archive anyway"]);const i=E.default.join(e,"archive");ke(e,i);const s=E.default.join(i,`${R2()}-${t}`);return pf(e,E.default.join(e,t),s),{destination:s}}var vr=["draft","planned","running","paused","done"];function xl(e){return typeof e=="string"&&vr.includes(e)}function S2(e,t,n,o){if(!xl(n))throw new N(`--state must be one of ${vr.join(", ")}.`);const r=E.default.join(e,t);if(n==="planned"||n==="running"){const i=Jn(Oe(e,t));if(i.length>0)throw new T(i)}if(n==="done"){const i=m2(e,t);if(i.length>0)throw new T(i)}const a={...Ar(t,r),state:n,note:o??"",updatedAt:tt()};return It(e),ke(e,E.default.join(r,"runtime")),br(e,E.default.join(r,"runtime","status.json"),a),a}function Ye(e,t){return async function(...o){const r=o.slice(0,-2).map(String),a=this.opts();t.preflight?.(a);const i=t.takesToken?e2(this,e.env):void 0,s=await Xt(this,e),l=r[0];if(!l)throw new N(`${t.name} requires a Saga ID.`);Un(s.sagaRoot,l);const c=u=>s.io.stdout(u);try{t.guard&&Er(s.sagaRoot,l,i);const u=t.run({sagaId:l,sagaRoot:s.sagaRoot,token:i},a,r),h={sagaId:l,command:t.name,ok:!0,...u};c(s.outputJson?W(h):_A(t.name,h))}catch(u){if(u instanceof T){const h={sagaId:l,command:t.name,ok:!1,errors:u.reasons,...u.details};c(s.outputJson?W(h):fo(t.name,l,u.reasons)+DA(u.details)),u.reported=!0}throw u}}}function V2(e){if(typeof e.session!="string"||e.session.trim()==="")throw new N("claim requires a nonempty --session <owner-session-id>.")}function G2(e){return Ye(e,{name:"claim",takesToken:!1,preflight:V2,run:({sagaId:t,sagaRoot:n},o)=>{const r=jf(n,t,o.session);return{ownerSession:r.ownerSession,token:r.token,createdAt:r.createdAt}}})}function N2(e){return Ye(e,{name:"assert-owner",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o})=>{const r=Er(n,t,o);return r.locked?{locked:!0,ownerSession:r.ownerSession}:{locked:!1}}})}function v2(e){return Ye(e,{name:"freeze",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n})=>{const o=b2(n,t);return{revision:o.revision,previousRevision:o.previousRevision??null,unchanged:o.unchanged,reopened:o.reopened,added:o.added}}})}function W2(e){return Ye(e,{name:"check",takesToken:!1,preflight:t=>{if(t.phase!=="plan"&&t.phase!=="run")throw new N("check --phase must be plan or run.")},run:({sagaId:t,sagaRoot:n},o)=>{const r=o.phase,{errors:a,methods:i}=u2(n,t,r),s=i===void 0?{}:{methods:i};if(a.length>0)throw new T(a,{details:s});return{phase:r,errors:[],...s}}})}function y2(e){return Ye(e,{name:"tick",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...p2(n,t,r[1])})})}function I2(e){return Ye(e,{name:"block",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({...A2(n,t,r[1],r[2])})})}function X2(e){return Ye(e,{name:"amend",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o,r)=>({name:Z2(n,t,r[1],r[2]??"").name,merged:!1})})}function Y2(e){return Ye(e,{name:"archive",takesToken:!0,guard:!0,run:({sagaId:t,sagaRoot:n},o)=>({...E2(n,t,o.force===!0)})})}function C2(e){return Ye(e,{name:"set-status",takesToken:!0,guard:!0,preflight:t=>{if(!xl(t.state))throw new N(`--state must be one of ${vr.join(", ")}.`)},run:({sagaId:t,sagaRoot:n},o)=>({...S2(n,t,o.state,o.note)})})}function B2(e){return Ye(e,{name:"release",takesToken:!0,run:({sagaId:t,sagaRoot:n,token:o},r)=>({released:!0,ownerSession:Hf(n,t,{token:o,workersSettled:r.workersSettled===!0}).ownerSession})})}function le(e){return y(e.option("--path <directory>","Select a local project directory without backend access.").option("--project-id <id>","Select a project from the configured backend."))}function Ke(e){return e.option("--token <token>","Execution token of the Saga owner (or set SAGA_EXECUTION_TOKEN).")}function w2(e){return async function(){const n=await Xt(this,e),o=this.opts().force===!0,r=vf(n.projectDirectory,Bn(),o);n.io.stdout(n.outputJson?W(r):jA(r))}}function F2(e){return async function(n){const o=this.optsWithGlobals();if(!Wf(n))throw new N(`Unknown Saga method ${JSON.stringify(n)}: use one of ${Ot.join(", ")}.`);const r=Gl(n,Bn()),a=r.bytes.toString("utf8");e.io.stdout(o.json===!0?W({name:r.name,sha256:r.sha256,content:a}):a)}}function k2(e){return async function(n){const o=await Xt(this,e);Ef(n,o.sagaRoot),Vf(o.sagaRoot,o.selector);const r=Gf(n,o.sagaRoot),a={id:r.id,directory:E.default.join(o.sagaRoot,n),metadata:r};o.io.stdout(o.outputJson?W(a):TA(a))}}function U2(e){return async function(){const n=await Xt(this,e),o=Kf(n.sagaRoot);n.io.stdout(n.outputJson?W(o):HA(o))}}function J2(e){return async function(n){const o=await Xt(this,e),r=Ar(n,Un(o.sagaRoot,n));o.io.stdout(o.outputJson?W(r):QA(r))}}function x2(e){return async function(n){const o=await Xt(this,e),r=zf(o.sagaRoot,n);o.io.stdout(o.outputJson?W(r):MA(r))}}function K2(e,t){const n=e.command("saga").description("Initialize, create, and inspect project-local Sagas.");le(n.command("init").description("Install the Saga ignore rule. Method prompts come from the CLI (see method).")).option("--force","Accepted for compatibility; no managed resource is replaced.").action(w2(t)),y(n.command("method <name>").description(`Print a published Saga method (${Ot.join(", ")}) from the installed CLI.`)).action(F2(t)),le(n.command("new <saga-id>").description("Create a Saga in an initialized project.")).action(k2(t)),le(n.command("list").description("List active Sagas.")).action(U2(t)),le(n.command("status <saga-id>").description("Read a Saga status projection.")).action(J2(t)),le(n.command("items <saga-id>").description("Read Saga plan items.")).action(x2(t)),le(n.command("claim <saga-id>").description("Claim exclusive execution ownership of a Saga.")).requiredOption("--session <id>","Owner session identifier recorded in the lock.").action(G2(t)),Ke(le(n.command("assert-owner <saga-id>").description("Check the execution token before dispatch."))).action(N2(t)),Ke(le(n.command("release <saga-id>").description("Release execution ownership after a paused or done snapshot."))).option("--workers-settled","Confirm that every worker has settled.").action(B2(t)),Ke(le(n.command("freeze <saga-id>").description("Freeze the Saga contract as revision 1, or the next revision after a merged amendment."))).action(v2(t)),Ke(le(n.command("set-status <saga-id>").description("Write the runtime status snapshot (draft, planned, running, paused or done)."))).requiredOption("--state <state>","draft, planned, running, paused or done.").option("--note <text>","Note stored with the snapshot.").action(C2(t)),Ke(le(n.command("tick <saga-id> <item-id>").description("Mark a plan item done once its PASS report and evidence exist."))).action(y2(t)),Ke(le(n.command("block <saga-id> <item-id> <reason>").description("Record why a plan item is blocked."))).action(I2(t)),Ke(le(n.command("amend <saga-id> <title> <text>").description("Append an open amendment to the Saga contract."))).action(X2(t)),Ke(le(n.command("archive <saga-id>").description("Archive a finished Saga; --force archives unfinished work."))).option("--force","Archive even when items are unfinished or amendments are open.").action(Y2(t)),le(n.command("check <saga-id>").description("Check the plan (--phase plan) or the frozen run contract (--phase run, the default).")).option("--phase <phase>","plan or run.","run").action(W2(t)),y(n.command("session").description("Create Saga Worker chat sessions and record them.").command("create").description("Create a Worker chat session marked with saga.* metadata and record it in runtime/sessions.md.")).option("--saga <id>","Saga whose Worker this is.").option("--title <title>","Title of the Worker chat session.").option("--role <role>","implementation or verification.").option("--master <session-id>","Session ID of the orchestrating (master) session.").option("--item <id>",'Plan item the Worker serves; recorded as "-" when omitted.').option("--path <directory>","Project directory. The backend is called to find the registered project with this real path.").option("--project-id <id>","Backend project ID.").addHelpText("after",`
232
+ ${z2}
233
+ `).action(i2(t))}var z2=["Metadata written to the session (userMetadata):"," saga.id the Saga ID"," saga.role always worker"," saga.worker the --role value"," saga.master the --master value"," saga.item the --item value (only when --item is given)","","The execution token comes only from SAGA_EXECUTION_TOKEN; --token is refused because it is the backend bearer token.","The command creates and records the session. It sends no message and does not archive it (see hagi chat archive).","","Exit codes: 0 created and recorded; 1 refused, or the record could not be written (the session ID is named);","2 usage error, nothing sent; 24 Saga not found.","",_s(),"","Example:",' SAGA_EXECUTION_TOKEN=<token> hagi saga session create --saga demo --path <root> --title "T1 implementation"'," --role implementation --master <your-session-id> --item T1"].join(`
234
+ `);function nt(e){return e?"yes":"no"}function L2(e){return e&&e.length>0?e.join(", "):"-"}function Kl(e){return e.origin??"user"}function zl(e){return Kl(e)==="built-in"}function j2(e){return zl(e)?nt(e.builtIn?.enabled):"-"}function T2(e){return(zl(e)?e.builtIn?.version:e.managedInstallMetadata?.version)??"-"}function H2(e){const t=e.items??[];return t.length===0?`No local skills installed.
235
+ `:`Local skills (${t.length})
236
+ ${ie([{header:"Name",value:n=>n.name??"-"},{header:"Origin",value:Kl},{header:"Enabled",value:j2},{header:"Version",value:T2},{header:"Scope",value:n=>n.scope??"-"},{header:"Agents",value:n=>L2(n.agents)},{header:"Path",value:n=>n.path??"-"}],t)}
237
+ `}function Q2(e){return q([["skillName",e.skillName??void 0],["status",e.status??void 0],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function M2(e){return q([["skillName",e.slug??void 0],["enabled",nt(e.enabled)],["message",e.userMessage??void 0],["diagnostic",e.diagnosticMessage??void 0]])}function O2(e){const t=e.items??[];return t.length===0?`No gallery skills found.
238
+ `:`Gallery skills (${t.length})
239
+ ${ie([{header:"ID",value:n=>n.id??"-"},{header:"Source",value:n=>n.source??"-"},{header:"Installs",value:n=>String(n.installs??0)},{header:"Trusted",value:n=>nt(n.isTrustedSource)}],t)}
240
+ `}function D2(e){return`skills.sh audit (${e.provider}): risk=${e.risk??"--"}, alerts=${e.alerts??"--"}, score=${e.score??"--"}, analyzedAt=${e.analyzedAt??"--"}`}function _2(e,t={providers:[]}){const n=e.trustedProvider;return`${q([["id",e.id??void 0],["source",e.source??void 0],["skillSlug",e.skillSlug??void 0],["installable",nt(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",nt(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=>`${D2(o)}
241
+ `).join("")}`}function $2(e){return q([["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 an(e){const t=e.items??[];return t.length===0?`No trusted providers (directory version ${e.version??0}).
242
+ `:`Trusted providers (${t.length}, directory version ${e.version??0})
243
+ ${ie([{header:"Provider ID",value:n=>n.providerId??"-"},{header:"Name",value:n=>n.displayName??"-"},{header:"Enabled",value:n=>nt(n.isEnabled)},{header:"Preset",value:n=>nt(n.isPreset)},{header:"Rules",value:n=>String(n.ruleCount??0)}],t)}
244
+ `}function P2(e,t){const n=e.command("gallery").description("Search the skill gallery, read skill details, and start managed installs.");y(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(r){const a=I(this,t),i=await a.api.searchSkillGallery(k(r.query));if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(O2(i))}),y(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(r){const a=I(this,t),i=x(r.id,"--id"),s=x(r.source,"--source"),[l,c]=await Promise.allSettled([a.api.getSkillGalleryDetail(i,s),a.api.getSkillGalleryAudit(i,s)]);if(l.status==="rejected")throw l.reason;const u=l.value,h={providers:c.status==="fulfilled"?c.value?.providers??[]:[]};if(a.outputJson){a.io.stdout(W({...u,audit:h}));return}a.io.stdout(_2(u,h))}),y(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(r){const a=I(this,t),i=await a.api.installGallerySkill({id:x(r.id,"--id"),source:x(r.source,"--source"),skillSlug:x(r.skillSlug,"--skill-slug"),version:k(r.version)});if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout($2(i))})}var q2="The change applies to agent runs that start afterwards; a run already in progress keeps its skills.";function ii(e,t,n){const o=n?"enable":"disable";y(e.command(o).description(`${n?"Turn on":"Turn off"} one built-in skill by name. ${q2}`)).requiredOption("--skill-name <name>",`Built-in skill name to ${o}.`).action(async function(a){const i=I(this,t),s=await i.api.setBuiltInSkillAvailability({slug:x(a.skillName,"--skill-name"),enabled:n});if(i.outputJson?i.io.stdout(W(s)):i.io.stdout(M2(s)),!s.succeeded)throw new U(s.userMessage??`The built-in skill availability was not changed for ${s.slug??a.skillName}.`)})}function eZ(e,t){const n=e.command("local").description("List, enable or disable built-in skills, and uninstall user-installed local skills.");y(n.command("list").description("List installed local skills with their managed install metadata.")).action(async function(){const r=I(this,t),a=await r.api.listLocalSkills();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(H2(a))}),ii(n,t,!0),ii(n,t,!1),y(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(r){const a=I(this,t),i=await a.api.uninstallLocalSkill({skillName:x(r.skillName,"--skill-name")});if(a.outputJson){a.io.stdout(W(i));return}a.io.stdout(Q2(i))})}async function tZ(e,t){const n=await Cn(e);if(!n||typeof n!="object"||Array.isArray(n))throw new N(`${t} must be a JSON object.`);return n}function nZ(e,t){const n=e.command("trusted").description("Manage the trusted skill provider directory.");y(n.command("list").description("List trusted skill providers.")).action(async function(){const r=I(this,t),a=await r.api.listTrustedSkillProviders();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(an(a))}),y(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(r){const a=I(this,t),i=await tZ(x(r.input,"--input"),"Trusted provider input"),s=await a.api.upsertTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(an(s))}),y(n.command("delete").description("Delete one trusted provider by id.")).requiredOption("--provider-id <id>","Trusted provider id to delete.").action(async function(r){const a=I(this,t),i={providerId:x(r.providerId,"--provider-id")},s=await a.api.deleteTrustedSkillProvider(i);if(a.outputJson){a.io.stdout(W(s));return}a.io.stdout(an(s))}),y(n.command("reset").description("Reset trusted providers to the backend defaults.")).action(async function(){const r=I(this,t),a=await r.api.resetTrustedSkillProviders();if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(an(a))})}function oZ(e,t){const n=e.command("skills").description("Manage local skills, the skill gallery, and trusted providers.");eZ(n,t),P2(n,t),nZ(n,t)}function si(e,t,n){const o=n.guard;return{state:o?o.state:n.reason===null?null:"unknown",reason:o?o.reason:n.reason,provider:n.provider??null,status:e?.status??"unavailable",source:e?.source??"none",failureReason:e?.failureReason??null,dateKey:e?.dateKey??null,totalTokens:e?.totalTokens??null,costUsd:e?.costUsd??null,windows:t.map(r=>({provider:r.provider,kind:r.kind,remainingPercent:r.remainingPercent,resetsAtUtc:r.resetsAtUtc,minutesToReset:r.minutesToReset,windowMinutes:r.windowMinutes,watched:r.watched})),guard:o}}function rZ(e){const t=e.provider??"all providers",n=[];n.push(aZ(e,t));for(const o of e.windows)n.push(` ${sZ(o)}`);return e.windows.length===0&&e.state!=="unknown"&&n.push(" No limit windows reported."),`${n.join(`
245
+ `)}
246
+ `}function aZ(e,t){const n=e.guard;if(n?.state==="ready")return`READY ${t}: every watched window is above ${n.thresholdPercent}% remaining (waited ${n.waitedSeconds}s, stagger ${n.jitterSeconds}s).`;if(n?.state==="low"){const o=n.blockers.map(iZ).join("; ");return`LOW ${t}: at or below ${n.thresholdPercent}% after waiting ${n.waitedSeconds}s: ${o}.`}return e.state==="unknown"?`UNAVAILABLE ${t}: ${e.reason??"no usable figure"}.`:`READ ${t}: ${e.windows.length} limit window(s), no threshold given.`}function iZ(e){const t=e.remainingPercent===null?"remaining unknown":`${e.remainingPercent}% remaining`;return`${e.provider} ${e.kind} ${t}, resets ${e.resetsAtUtc??"at an unknown time"}`}function sZ(e){const t=e.windowMinutes===null?"":` [${e.windowMinutes} min]`,n=e.remainingPercent===null?"remaining unknown":`remaining ${e.remainingPercent}%`,o=e.resetsAtUtc===null?"reset unknown":`resets ${e.resetsAtUtc} (in ${e.minutesToReset??"?"} min)`,r=e.watched?"":" (not watched: weekly or longer)";return`${e.provider} ${e.kind}${t}: ${n}, ${o}${r}`}var lZ=1800,li=21600,ci=3600;function cZ(e){return typeof e.remainingPercent=="number"&&Number.isFinite(e.remainingPercent)?di(e.remainingPercent):typeof e.usedPercent=="number"&&Number.isFinite(e.usedPercent)?di(100-e.usedPercent):null}function dZ(e){return typeof e.windowMinutes=="number"?e.windowMinutes<=360:e.kind==="session"}function Ll(e,t,n){const o=[];for(const r of e.limits?.providers??[])if(!(n!==void 0&&r.provider!==n))for(const a of r.windows??[]){const i=a.resetsAtUtc?Date.parse(a.resetsAtUtc):NaN;o.push({provider:r.provider,kind:a.kind,windowMinutes:typeof a.windowMinutes=="number"?a.windowMinutes:null,remainingPercent:cZ(a),resetsAtUtc:a.resetsAtUtc??null,minutesToReset:Number.isNaN(i)?null:mZ((i-t)/6e4),watched:dZ(a)})}return o}function jl(e,t,n,o){return e.status!=="ok"?e.failureReason?`Token Monitor status is ${e.status}: ${e.failureReason}`:`Token Monitor status is ${e.status}`:t.some(r=>(!o||r.watched)&&r.remainingPercent!==null)?null:`no ${o?"watched ":""}${n??"provider"} window with a remaining figure in the Token Monitor snapshot`}async function uZ(e,t,n){const o=n.now(),r=()=>Math.floor((n.now()-o)/1e3);let a=0,i=null,s=[];const l=(c,u)=>({wait:{state:c,provider:t.provider,thresholdPercent:t.thresholdPercent,checkedAtUtc:new Date(n.now()).toISOString(),...u},snapshot:i,windows:s});for(;;){let c=null,u=null;try{c=await e(),i=c}catch(d){u=d instanceof Error?d.message:String(d)}const h=c?Ll(c,n.now(),t.provider):[];c&&(s=h);const f=c?jl(c,h,t.provider,!0):u;if(f!==null){a+=1;const d=r();if(a>3||d>=t.maxWaitSeconds)return l("unknown",{waitedSeconds:d,jitterSeconds:0,blockers:[],reason:f});await n.sleep(Math.min(30,t.maxWaitSeconds-d)*1e3);continue}a=0;const p=h.filter(d=>d.watched&&d.remainingPercent!==null&&d.remainingPercent<=t.thresholdPercent),R=r();if(p.length===0){const d=t.jitterSeconds>0&&R>0?Math.floor(n.random()*(t.jitterSeconds+1)):0;return d>0&&await n.sleep(d*1e3),l("ready",{waitedSeconds:R,jitterSeconds:d,blockers:[],reason:null})}if(R>=t.maxWaitSeconds)return l("low",{waitedSeconds:R,jitterSeconds:0,blockers:p,reason:null});const V=Math.max(...p.map(d=>d.minutesToReset===null?300:Math.max(0,d.minutesToReset*60)+60)),X=t.maxWaitSeconds-R,J=Math.max(1,Math.min(300,V,X));await n.sleep(J*1e3)}}function di(e){return Math.min(100,Math.max(0,e))}function mZ(e){return Math.round(e*10)/10}function hZ(e,t){y(e.command("usage").description("Read Token Monitor usage: each provider's limit windows with their remaining percent and reset times.").command("limits").description("Read provider limit windows. With --wait-until-above, wait for a reset for a bounded time. Read-only.").option("--provider <id>","Only this provider, for example claude or codex. Required with --wait-until-above.").option("--wait-until-above <percent>","Wait until every short window (six hours or less) of --provider is above this remaining percent.").option("--max-wait <seconds>",`Longest wait with --wait-until-above (default ${lZ}; 0 checks once; at most ${li}).`).option("--jitter-seconds <seconds>",`Random delay after a wait that ends ready (default 120; 0 disables; at most ${ci}).`).addHelpText("after",`
247
+ Exit codes: 0 a usable reading (with --wait-until-above: ready or low; low is not a failure),
248
+ ${$.QUOTA_UNKNOWN} unavailable (no usable figure was read), 2 invalid options.
249
+ Transport and HTTP failures keep their usual codes. Quota comes only from the backend Token Monitor usage RPC.
250
+ `)).action(async function(){const o=this.opts(),r=o.provider?.trim()||void 0,a=qn(o.waitUntilAbove,"--wait-until-above",0,100),i=qn(o.maxWait,"--max-wait",0,li),s=qn(o.jitterSeconds,"--jitter-seconds",0,ci);if(a===void 0){if(o.maxWait!==void 0||o.jitterSeconds!==void 0)throw new N("--max-wait and --jitter-seconds apply only with --wait-until-above <percent>.")}else if(r===void 0)throw new N("--wait-until-above needs --provider <id>: a wait watches one provider's windows.");const l=I(this,t),c={now:t.now??Date.now,sleep:t.sleep??Xn,random:Math.random},u=()=>l.api.getTokenMonitorUsage(),h=p=>{l.io.stdout(l.outputJson?W(p):rZ(p))};if(a===void 0){const p=await u(),R=Ll(p,c.now(),r),V=jl(p,R,r,!1);if(h(si(p,R,{provider:r,reason:V,guard:null})),V!==null)throw new mo(`Quota unavailable: ${V}.`);return}const f=await uZ(u,{provider:r,thresholdPercent:a,maxWaitSeconds:i??1800,jitterSeconds:s??120},c);if(h(si(f.snapshot,f.windows,{provider:r,reason:null,guard:f.wait})),f.wait.state==="unknown")throw new mo(`${r} quota could not be read: ${f.wait.reason??"no usable figure"}.`)})}function qn(e,t,n,o){if(e===void 0)return;if(!/^\d+$/.test(e.trim()))throw new N(`${t} must be a whole number.`);const r=Number(e.trim());if(r<n||r>o)throw new N(`${t} must be between ${n} and ${o}.`);return r}function j(e){const t=e?.trim();return t||void 0}function bZ(e){return{severity:j(e.severity)??"",code:j(e.code)??"",message:j(e.message)??"",relativePath:j(e.relativePath)}}function Wr(e){return{id:j(e.id)??"",name:j(e.name)??"",type:j(e.type)??"",physicalPath:j(e.physicalPath)??"",gitUrl:j(e.gitUrl),createdAtUtc:j(e.createdAtUtc),updatedAtUtc:j(e.updatedAtUtc),bootstrapDiagnostics:(e.bootstrapDiagnostics??[]).map(bZ)}}function Tl(e){return{generatedAtUtc:j(e.generatedAtUtc),vaults:(e.items??[]).map(Wr)}}function gZ(e){return e.length===0?`No vaults found.
251
+ `:`Vaults (${e.length})
252
+ ${ie([{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)}
253
+ `}function Hl(e,t=[]){return q([["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 pZ(e){return{relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",isDirectory:e.isDirectory===!0,extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),previewSupported:e.previewSupported===!0}}function AZ(e){return{vaultId:j(e.id)??"",deleted:e.deleted===!0,deleteLocalFilesRequested:e.deleteLocalFilesRequested===!0,localFilesDeletionStatus:j(e.localFilesDeletionStatus),localFilesDeleted:e.localFilesDeleted===!0}}function fZ(e){return`Vault deleted
254
+ ${q([["vaultId",e.vaultId],["deleted",String(e.deleted)],["deleteLocalFilesRequested",String(e.deleteLocalFilesRequested)],["localFilesDeletionStatus",e.localFilesDeletionStatus],["localFilesDeleted",String(e.localFilesDeleted)]])}`}function ZZ(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),isTruncated:e.isTruncated===!0,totalFileCount:typeof e.totalFileCount=="number"?e.totalFileCount:0,items:(e.items??[]).map(pZ)}}function RZ(e){const t=q([["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
255
+ ${t}No files found.
256
+ `:`Vault files
257
+ ${t}${ie([{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)}
258
+ `}function EZ(e){return{vaultId:j(e.vaultId)??"",vaultName:j(e.vaultName)??"",physicalPath:j(e.physicalPath)??"",relativePath:j(e.relativePath)??"",fileName:j(e.fileName)??"",extension:j(e.extension)??"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,lastModifiedUtc:j(e.lastModifiedUtc),status:j(e.status)??"",errorCode:j(e.errorCode),message:j(e.message),previewSupported:e.previewSupported===!0,contentTruncated:e.contentTruncated===!0,content:j(e.content)}}function SZ(e){const t=q([["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
259
+ ${t}`;const n=e.content.endsWith(`
260
+ `)?"":`
261
+ `;return`Vault file preview
262
+ ${t}content
263
+ -------
264
+ ${e.content}${n}`}function VZ(e,t){y(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 r=I(this,t),a=Wr(await r.api.createVault({name:x(o.name,"--name"),type:x(o.type,"--type"),physicalPath:x(o.physicalPath,"--physical-path"),gitUrl:k(o.gitUrl)}));if(r.outputJson){r.io.stdout(W({vault:a}));return}r.io.stdout(`Vault created
265
+ ${Hl(a)}`)})}function GZ(e,t){y(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 r=I(this,t),a=AZ(await r.api.deleteVault(x(o.id,"--id"),o.deleteLocalFiles===!0));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(fZ(a))})}function NZ(e,t){y(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 r=I(this,t),a=ZZ(await r.api.listVaultFiles(x(o.id,"--id"),k(o.path)));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(RZ(a))})}function vZ(e,t){y(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 r=I(this,t),a=EZ(await r.api.previewVaultFile(x(o.id,"--id"),x(o.path,"--path")));if(r.outputJson){r.io.stdout(W(a));return}r.io.stdout(SZ(a))})}function WZ(e,t){y(e.command("list").description("List registered vaults through the generated vault client.")).action(async function(){const o=I(this,t),r=Tl(await o.api.listVaults());if(o.outputJson){o.io.stdout(W(r));return}o.io.stdout(gZ(r.vaults))})}function yZ(e,t){y(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 r=k(o.name),a=k(o.type),i=k(o.physicalPath),s=k(o.gitUrl);if(!r&&!a&&!i&&!s)throw new N("Provide at least one field to update: --name, --type, --physical-path, or --git-url.");const l=I(this,t),c=x(o.id,"--id"),u=Tl(await l.api.listVaults()).vaults.find(f=>f.id===c);if(!u)throw new ye(404,`Vault ${c} was not found in the latest vault snapshot.`);const h=Wr(await l.api.updateVault(c,{name:r??u.name,type:a??u.type,physicalPath:i??u.physicalPath,gitUrl:s??u.gitUrl??null}));if(l.outputJson){l.io.stdout(W({vault:h}));return}l.io.stdout(`Vault updated
266
+ ${Hl(h)}`)})}function IZ(e,t){const n=e.command("vault").description("Manage Hagi vaults and vault file browsing through generated backend APIs.");WZ(n,t),VZ(n,t),yZ(n,t),GZ(n,t);const o=n.command("files").description("Browse registered vault files and preview supported content.");NZ(o,t),vZ(o,t)}function XZ(e){return e.includes("--json")}function Ql(e=Ts(),t=!1){const n=new sc;return n.name("hagi").description("HagiCode CLI for project, proposal, Saga, 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}),gg(n),RA(n,e),LA(n,e),IZ(n,e),sp(n,e),Yp(n,e),Op(n,e),oZ(n,e),kg(n,e),K2(n,e),hZ(n,e),n}function YZ(e,t,n){return e.exitCode===0||e.code==="commander.helpDisplayed"||e.code==="commander.version"?0:(n&&t.io.stderr(ws({exitCode:$.USAGE,message:e.message},{json:!0})),$.USAGE)}async function CZ(e=process.argv,t=Ts()){const n=XZ(e),o=Ql(t,n);try{return await o.parseAsync([...e]),0}catch(r){if(r instanceof ic)return YZ(r,t,n);const a=Bs(r,{baseUrl:qm()});return(r instanceof et||r instanceof T)&&r.reported||t.io.stderr(ws(a,{json:n})),a.exitCode}}Object.defineProperty(exports,"EXIT_CODES",{enumerable:!0,get:function(){return $}});Object.defineProperty(exports,"createCliApp",{enumerable:!0,get:function(){return Ql}});Object.defineProperty(exports,"runCli",{enumerable:!0,get:function(){return CZ}});