@toloka-platform/sdk 0.1.0-preview.5 → 0.1.0-preview.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -11
- package/dist/cli/toloka.js +211 -125
- package/dist/cli/toloka.js.jsc +0 -0
- package/dist/cli/toloka.js.jsc.sha256 +1 -1
- package/dist/cli/toloka.js.sha256 +1 -1
- package/docs/authoring.md +17 -4
- package/docs/cli-v2.md +3 -3
- package/docs/cli.md +55 -17
- package/docs/datasets.md +8 -9
- package/docs/getting-started.md +7 -12
- package/docs/limitations.md +10 -13
- package/docs/testing-examples.md +248 -0
- package/docs/testing.md +115 -0
- package/docs/troubleshooting.md +0 -11
- package/examples/face-image-collection/README.md +7 -1
- package/examples/face-image-collection/fields.ts +20 -8
- package/examples/face-image-collection/nodes/annotate-faces/node.ts +1 -9
- package/examples/face-image-collection/nodes/order-faces/node.ts +1 -1
- package/examples/face-image-collection/pipeline.browser.integration.spec.ts +78 -0
- package/examples/video-pair-rating/README.md +14 -6
- package/examples/video-pair-rating/nodes/adjudicate/node.ts +1 -3
- package/examples/video-pair-rating/nodes/adjudicate_op/node.ts +1 -3
- package/examples/video-pair-rating/nodes/overall_preference_pick/node.ts +1 -1
- package/examples/video-pair-rating/nodes/rate_pair/node.ts +1 -1
- package/examples/video-pair-rating/pipeline.browser.integration.spec.ts +267 -0
- package/openapi/gen/api.ts +819 -898
- package/openapi/gen/models/baseModel.ts +9 -0
- package/openapi/gen/models/baseModelId.ts +2 -0
- package/openapi/gen/models/baseModelIdProperty.ts +2 -0
- package/openapi/gen/models/createDatasetExportBody.ts +3 -3
- package/openapi/gen/models/createDatasetExportBodyOneOf.ts +6 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfFormat.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThree.ts +10 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeContract.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeFormat.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilter.ts +9 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/createDatasetExportBodyOneOfThreeItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/createProjectModelBody.ts +8 -0
- package/openapi/gen/models/createProjectModelBodyDescription.ts +2 -0
- package/openapi/gen/models/datasetExportReport.ts +9 -0
- package/openapi/gen/models/datasetExportReportErrorsItem.ts +5 -0
- package/openapi/gen/models/datasetExportReportTokens.ts +7 -0
- package/openapi/gen/models/exportJob.ts +2 -0
- package/openapi/gen/models/exportJobReport.ts +3 -0
- package/openapi/gen/models/generationNodeSettingsAudienceAndPricingOneOfOneone.ts +1 -0
- package/openapi/gen/models/index.ts +64 -0
- package/openapi/gen/models/listBaseModels200.ts +5 -0
- package/openapi/gen/models/listModelVersions200.ts +7 -0
- package/openapi/gen/models/listModelVersionsParams.ts +5 -0
- package/openapi/gen/models/listProjectModels200.ts +7 -0
- package/openapi/gen/models/listProjectModelsParams.ts +5 -0
- package/openapi/gen/models/model.ts +16 -0
- package/openapi/gen/models/modelArchivedAt.ts +2 -0
- package/openapi/gen/models/modelDescription.ts +2 -0
- package/openapi/gen/models/modelId.ts +2 -0
- package/openapi/gen/models/modelVersion.ts +9 -0
- package/openapi/gen/models/modelVersionId.ts +2 -0
- package/openapi/gen/models/pipelineGraphSnapshotGraphNodesItemOneOfThreeoneSettingsAudienceAndPricingOneOfOneone.ts +1 -0
- package/openapi/gen/models/sampleDatasetItemsBody.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOf.ts +8 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilter.ts +9 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethree.ts +8 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilter.ts +9 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItem.ts +6 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldSourcesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItem.ts +12 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemOperator.ts +2 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemSourcesItem.ts +4 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemSourcesItemOneOf.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemSourcesItemOneOfTwo.ts +5 -0
- package/openapi/gen/models/sampleDatasetItemsBodyAnyOfOnethreeItemFilterFieldValuesItemValue.ts +2 -0
- package/openapi/gen/models/sampleJob.ts +13 -0
- package/openapi/gen/models/sampleJobStatus.ts +2 -0
- package/openapi/gen/models/sampleResult.ts +5 -0
- package/openapi/gen/models/validatePipelineGraphBodyGraphNodesItemOneOfThreeoneSettingsAudienceAndPricingOneOfOneone.ts +1 -0
- package/package.json +23 -2
- package/skills/catalog.json +14 -6
- package/skills/toloka-build/SKILL.md +34 -12
- package/skills/toloka-build/references/node-semantics.md +27 -24
- package/skills/toloka-build/references/workflow-and-cli.md +67 -27
- package/skills/toloka-report-issue/references/report-template.md +1 -1
- package/src/checks/ast.ts +32 -0
- package/src/checks/index.ts +14 -0
- package/src/checks/postprocess-collisions.ts +145 -0
- package/src/checks/task-ui-declarations.generated.ts +19 -0
- package/src/checks/task-ui-typecheck.ts +345 -0
- package/src/checks/typescript-vfs.d.ts +26 -0
- package/src/checks/typescript-vfs.js +5 -0
- package/src/cli/analytics.ts +1 -0
- package/src/cli/check.ts +977 -0
- package/src/cli/data.ts +148 -25
- package/src/cli/models.ts +188 -0
- package/src/cli/program.ts +246 -20
- package/src/cli/project-context.ts +14 -4
- package/src/cli/runs.ts +21 -11
- package/src/cli/skill.ts +17 -6
- package/src/client.ts +109 -35
- package/src/errors.ts +25 -10
- package/src/testing/code-node.ts +160 -0
- package/src/testing/index.ts +15 -0
- package/src/testing/task-ui-browser.ts +120 -0
- package/src/testing/task-ui-validation.ts +135 -0
- package/src/testing/task-ui.ts +557 -0
- package/src/testing/test-evidence.ts +170 -0
- package/src/testing/types.ts +141 -0
- package/src/transport.ts +16 -13
package/dist/cli/toloka.js
CHANGED
|
@@ -1,172 +1,258 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun @bytecode @bun-cjs
|
|
3
|
-
(function(exports, require, module, __filename, __dirname) {var F_=Object.create;var{getPrototypeOf:T_,defineProperty:Vs,getOwnPropertyNames:k_}=Object;var A_=Object.prototype.hasOwnProperty;function D_(e){return this[e]}var N_,L_,Ce=(e,t,r)=>{var i=e!=null&&typeof e==="object";if(i){var n=t?N_??=new WeakMap:L_??=new WeakMap,s=n.get(e);if(s)return s}r=e!=null?F_(T_(e)):{};let o=t||!e||!e.__esModule?Vs(r,"default",{value:e,enumerable:!0}):r;if(e&&typeof e==="object"||typeof e==="function"){for(let a of k_(e))if(!A_.call(o,a))Vs(o,a,{get:D_.bind(e,a),enumerable:!0})}if(i)n.set(e,o);return o};var P=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var q_=(e)=>e;function M_(e,t){this[e]=q_.bind(null,t)}var U_=(e,t)=>{for(var r in t)Vs(e,r,{get:t[r],enumerable:!0,configurable:!0,set:M_.bind(t,r)})};var ei=P(function(M){Object.defineProperty(M,"__esModule",{value:!0});M.regexpCode=M.getEsmExportName=M.getProperty=M.safeStringify=M.stringify=M.strConcat=M.addCodeArg=M.str=M._=M.nil=M._Code=M.Name=M.IDENTIFIER=M._CodeOrName=void 0;class cn{}M._CodeOrName=cn;M.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class ar extends cn{constructor(e){super();if(!M.IDENTIFIER.test(e))throw Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}M.Name=ar;class Le extends cn{constructor(e){super();this._items=typeof e==="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((t,r)=>`${t}${r}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((t,r)=>{if(r instanceof ar)t[r.str]=(t[r.str]||0)+1;return t},{})}}M._Code=Le;M.nil=new Le("");function kd(e,...t){let r=[e[0]],i=0;while(i<t.length)lo(r,t[i]),r.push(e[++i]);return new Le(r)}M._=kd;var ao=new Le("+");function Ad(e,...t){let r=[Zr(e[0])],i=0;while(i<t.length)r.push(ao),lo(r,t[i]),r.push(ao,Zr(e[++i]));return Yv(r),new Le(r)}M.str=Ad;function lo(e,t){if(t instanceof Le)e.push(...t._items);else if(t instanceof ar)e.push(t);else e.push(ew(t))}M.addCodeArg=lo;function Yv(e){let t=1;while(t<e.length-1){if(e[t]===ao){let r=Xv(e[t-1],e[t+1]);if(r!==void 0){e.splice(t-1,3,r);continue}e[t++]="+"}t++}}function Xv(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string"){if(t instanceof ar||e[e.length-1]!=='"')return;if(typeof t!="string")return`${e.slice(0,-1)}${t}"`;if(t[0]==='"')return e.slice(0,-1)+t.slice(1);return}if(typeof t=="string"&&t[0]==='"'&&!(e instanceof ar))return`"${e}${t.slice(1)}`;return}function Zv(e,t){return t.emptyStr()?e:e.emptyStr()?t:Ad`${e}${t}`}M.strConcat=Zv;function ew(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:Zr(Array.isArray(e)?e.join(","):e)}function tw(e){return new Le(Zr(e))}M.stringify=tw;function Zr(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}M.safeStringify=Zr;function rw(e){return typeof e=="string"&&M.IDENTIFIER.test(e)?new Le(`.${e}`):kd`[${e}]`}M.getProperty=rw;function iw(e){if(typeof e=="string"&&M.IDENTIFIER.test(e))return new Le(`${e}`);throw Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}M.getEsmExportName=iw;function nw(e){return new Le(e.toString())}M.regexpCode=nw});var po=P(function(Pe){Object.defineProperty(Pe,"__esModule",{value:!0});Pe.ValueScope=Pe.ValueScopeName=Pe.Scope=Pe.varKinds=Pe.UsedValueState=void 0;var be=ei();class Dd extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`);this.value=e.value}}var dn;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(dn||(Pe.UsedValueState=dn={}));Pe.varKinds={const:new be.Name("const"),let:new be.Name("let"),var:new be.Name("var")};class co{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof be.Name?e:this.name(e)}name(e){return new be.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){var t,r;if(((r=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||r===void 0?void 0:r.has(e))||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}Pe.Scope=co;class uo extends be.Name{constructor(e,t){super(t);this.prefix=e}setValue(e,{property:t,itemIndex:r}){this.value=e,this.scopePath=be._`.${new be.Name(t)}[${r}]`}}Pe.ValueScopeName=uo;var sw=be._`\n`;class Nd extends co{constructor(e){super(e);this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?sw:be.nil}}get(){return this._scope}name(e){return new uo(e,this._newName(e))}value(e,t){var r;if(t.ref===void 0)throw Error("CodeGen: ref must be passed in value");let i=this.toName(e),{prefix:n}=i,s=(r=t.key)!==null&&r!==void 0?r:t.ref,o=this._values[n];if(o){let u=o.get(s);if(u)return u}else o=this._values[n]=new Map;o.set(s,i);let a=this._scope[n]||(this._scope[n]=[]),d=a.length;return a[d]=t.ref,i.setValue(t,{property:n,itemIndex:d}),i}getValue(e,t){let r=this._values[e];if(!r)return;return r.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,(r)=>{if(r.scopePath===void 0)throw Error(`CodeGen: name "${r}" has no value`);return be._`${e}${r.scopePath}`})}scopeCode(e=this._values,t,r){return this._reduceValues(e,(i)=>{if(i.value===void 0)throw Error(`CodeGen: name "${i}" has no value`);return i.value.code},t,r)}_reduceValues(e,t,r={},i){let n=be.nil;for(let s in e){let o=e[s];if(!o)continue;let a=r[s]=r[s]||new Map;o.forEach((d)=>{if(a.has(d))return;a.set(d,dn.Started);let u=t(d);if(u){let l=this.opts.es5?Pe.varKinds.var:Pe.varKinds.const;n=be._`${n}${l} ${d} = ${u};${this.opts._n}`}else if(u=i===null||i===void 0?void 0:i(d))n=be._`${n}${u}${this.opts._n}`;else throw new Dd(d);a.set(d,dn.Completed)})}return n}}Pe.ValueScope=Nd});var j=P(function(k){Object.defineProperty(k,"__esModule",{value:!0});k.or=k.and=k.not=k.CodeGen=k.operators=k.varKinds=k.ValueScopeName=k.ValueScope=k.Scope=k.Name=k.regexpCode=k.stringify=k.getProperty=k.nil=k.strConcat=k.str=k._=void 0;var N=ei(),qe=po(),Pt=ei();Object.defineProperty(k,"_",{enumerable:!0,get:function(){return Pt._}});Object.defineProperty(k,"str",{enumerable:!0,get:function(){return Pt.str}});Object.defineProperty(k,"strConcat",{enumerable:!0,get:function(){return Pt.strConcat}});Object.defineProperty(k,"nil",{enumerable:!0,get:function(){return Pt.nil}});Object.defineProperty(k,"getProperty",{enumerable:!0,get:function(){return Pt.getProperty}});Object.defineProperty(k,"stringify",{enumerable:!0,get:function(){return Pt.stringify}});Object.defineProperty(k,"regexpCode",{enumerable:!0,get:function(){return Pt.regexpCode}});Object.defineProperty(k,"Name",{enumerable:!0,get:function(){return Pt.Name}});var gn=po();Object.defineProperty(k,"Scope",{enumerable:!0,get:function(){return gn.Scope}});Object.defineProperty(k,"ValueScope",{enumerable:!0,get:function(){return gn.ValueScope}});Object.defineProperty(k,"ValueScopeName",{enumerable:!0,get:function(){return gn.ValueScopeName}});Object.defineProperty(k,"varKinds",{enumerable:!0,get:function(){return gn.varKinds}});k.operators={GT:new N._Code(">"),GTE:new N._Code(">="),LT:new N._Code("<"),LTE:new N._Code("<="),EQ:new N._Code("==="),NEQ:new N._Code("!=="),NOT:new N._Code("!"),OR:new N._Code("||"),AND:new N._Code("&&"),ADD:new N._Code("+")};class vt{optimizeNodes(){return this}optimizeNames(e,t){return this}}class Ld extends vt{constructor(e,t,r){super();this.varKind=e,this.name=t,this.rhs=r}render({es5:e,_n:t}){let r=e?qe.varKinds.var:this.varKind,i=this.rhs===void 0?"":` = ${this.rhs}`;return`${r} ${this.name}${i};`+t}optimizeNames(e,t){if(!e[this.name.str])return;if(this.rhs)this.rhs=cr(this.rhs,e,t);return this}get names(){return this.rhs instanceof N._CodeOrName?this.rhs.names:{}}}class ho extends vt{constructor(e,t,r){super();this.lhs=e,this.rhs=t,this.sideEffects=r}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(this.lhs instanceof N.Name&&!e[this.lhs.str]&&!this.sideEffects)return;return this.rhs=cr(this.rhs,e,t),this}get names(){let e=this.lhs instanceof N.Name?{}:{...this.lhs.names};return hn(e,this.rhs)}}class qd extends ho{constructor(e,t,r,i){super(e,r,i);this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class Md extends vt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class Ud extends vt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class Bd extends vt{constructor(e){super();this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class Gd extends vt{constructor(e){super();this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=cr(this.code,e,t),this}get names(){return this.code instanceof N._CodeOrName?this.code.names:{}}}class yn extends vt{constructor(e=[]){super();this.nodes=e}render(e){return this.nodes.reduce((t,r)=>t+r.render(e),"")}optimizeNodes(){let{nodes:e}=this,t=e.length;while(t--){let r=e[t].optimizeNodes();if(Array.isArray(r))e.splice(t,1,...r);else if(r)e[t]=r;else e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:r}=this,i=r.length;while(i--){let n=r[i];if(n.optimizeNames(e,t))continue;ow(e,n.names),r.splice(i,1)}return r.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>At(e,t.names),{})}}class wt extends yn{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class Vd extends yn{}class ti extends wt{}ti.kind="else";class dt extends wt{constructor(e,t){super(t);this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);if(this.else)t+="else "+this.else.render(e);return t}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let t=this.else;if(t){let r=t.optimizeNodes();t=this.else=Array.isArray(r)?new ti(r):r}if(t){if(e===!1)return t instanceof dt?t:t.nodes;if(this.nodes.length)return this;return new dt(Jd(e),t instanceof dt?[t]:t.nodes)}if(e===!1||!this.nodes.length)return;return this}optimizeNames(e,t){var r;if(this.else=(r=this.else)===null||r===void 0?void 0:r.optimizeNames(e,t),!(super.optimizeNames(e,t)||this.else))return;return this.condition=cr(this.condition,e,t),this}get names(){let e=super.names;if(hn(e,this.condition),this.else)At(e,this.else.names);return e}}dt.kind="if";class lr extends wt{}lr.kind="for";class Kd extends lr{constructor(e){super();this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iteration=cr(this.iteration,e,t),this}get names(){return At(super.names,this.iteration.names)}}class zd extends lr{constructor(e,t,r,i){super();this.varKind=e,this.name=t,this.from=r,this.to=i}render(e){let t=e.es5?qe.varKinds.var:this.varKind,{name:r,from:i,to:n}=this;return`for(${t} ${r}=${i}; ${r}<${n}; ${r}++)`+super.render(e)}get names(){let e=hn(super.names,this.from);return hn(e,this.to)}}class fo extends lr{constructor(e,t,r,i){super();this.loop=e,this.varKind=t,this.name=r,this.iterable=i}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iterable=cr(this.iterable,e,t),this}get names(){return At(super.names,this.iterable.names)}}class un extends wt{constructor(e,t,r){super();this.name=e,this.args=t,this.async=r}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}un.kind="func";class pn extends yn{render(e){return"return "+super.render(e)}}pn.kind="return";class Wd extends wt{render(e){let t="try"+super.render(e);if(this.catch)t+=this.catch.render(e);if(this.finally)t+=this.finally.render(e);return t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(e,t){var r,i;return super.optimizeNames(e,t),(r=this.catch)===null||r===void 0||r.optimizeNames(e,t),(i=this.finally)===null||i===void 0||i.optimizeNames(e,t),this}get names(){let e=super.names;if(this.catch)At(e,this.catch.names);if(this.finally)At(e,this.finally.names);return e}}class fn extends wt{constructor(e){super();this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}fn.kind="catch";class mn extends wt{render(e){return"finally"+super.render(e)}}mn.kind="finally";class Hd{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
4
|
-
`:""},this._extScope=e,this._scope=new qe.Scope({parent:e}),this._nodes=[new Vd]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let r=this._extScope.value(e,t);return(this._values[r.prefix]||(this._values[r.prefix]=new Set)).add(r),r}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,r,i){let n=this._scope.toName(t);if(r!==void 0&&i)this._constants[n.str]=r;return this._leafNode(new Ld(e,n,r)),n}const(e,t,r){return this._def(qe.varKinds.const,e,t,r)}let(e,t,r){return this._def(qe.varKinds.let,e,t,r)}var(e,t,r){return this._def(qe.varKinds.var,e,t,r)}assign(e,t,r){return this._leafNode(new ho(e,t,r))}add(e,t){return this._leafNode(new qd(e,k.operators.ADD,t))}code(e){if(typeof e=="function")e();else if(e!==N.nil)this._leafNode(new Gd(e));return this}object(...e){let t=["{"];for(let[r,i]of e){if(t.length>1)t.push(",");if(t.push(r),r!==i||this.opts.es5)t.push(":"),(0,N.addCodeArg)(t,i)}return t.push("}"),new N._Code(t)}if(e,t,r){if(this._blockNode(new dt(e)),t&&r)this.code(t).else().code(r).endIf();else if(t)this.code(t).endIf();else if(r)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new dt(e))}else(){return this._elseNode(new ti)}endIf(){return this._endBlockNode(dt,ti)}_for(e,t){if(this._blockNode(e),t)this.code(t).endFor();return this}for(e,t){return this._for(new Kd(e),t)}forRange(e,t,r,i,n=this.opts.es5?qe.varKinds.var:qe.varKinds.let){let s=this._scope.toName(e);return this._for(new zd(n,s,t,r),()=>i(s))}forOf(e,t,r,i=qe.varKinds.const){let n=this._scope.toName(e);if(this.opts.es5){let s=t instanceof N.Name?t:this.var("_arr",t);return this.forRange("_i",0,N._`${s}.length`,(o)=>{this.var(n,N._`${s}[${o}]`),r(n)})}return this._for(new fo("of",i,n,t),()=>r(n))}forIn(e,t,r,i=this.opts.es5?qe.varKinds.var:qe.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,N._`Object.keys(${t})`,r);let n=this._scope.toName(e);return this._for(new fo("in",i,n,t),()=>r(n))}endFor(){return this._endBlockNode(lr)}label(e){return this._leafNode(new Md(e))}break(e){return this._leafNode(new Ud(e))}return(e){let t=new pn;if(this._blockNode(t),this.code(e),t.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(pn)}try(e,t,r){if(!t&&!r)throw Error('CodeGen: "try" without "catch" and "finally"');let i=new Wd;if(this._blockNode(i),this.code(e),t){let n=this.name("e");this._currNode=i.catch=new fn(n),t(n)}if(r)this._currNode=i.finally=new mn,this.code(r);return this._endBlockNode(fn,mn)}throw(e){return this._leafNode(new Bd(e))}block(e,t){if(this._blockStarts.push(this._nodes.length),e)this.code(e).endBlock(t);return this}endBlock(e){let t=this._blockStarts.pop();if(t===void 0)throw Error("CodeGen: not in self-balancing block");let r=this._nodes.length-t;if(r<0||e!==void 0&&r!==e)throw Error(`CodeGen: wrong number of nodes: ${r} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=N.nil,r,i){if(this._blockNode(new un(e,t,r)),i)this.code(i).endFunc();return this}endFunc(){return this._endBlockNode(un)}optimize(e=1){while(e-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let r=this._currNode;if(r instanceof e||t&&r instanceof t)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof dt))throw Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}}k.CodeGen=Hd;function At(e,t){for(let r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function hn(e,t){return t instanceof N._CodeOrName?At(e,t.names):e}function cr(e,t,r){if(e instanceof N.Name)return i(e);if(!n(e))return e;return new N._Code(e._items.reduce((s,o)=>{if(o instanceof N.Name)o=i(o);if(o instanceof N._Code)s.push(...o._items);else s.push(o);return s},[]));function i(s){let o=r[s.str];if(o===void 0||t[s.str]!==1)return s;return delete t[s.str],o}function n(s){return s instanceof N._Code&&s._items.some((o)=>o instanceof N.Name&&t[o.str]===1&&r[o.str]!==void 0)}}function ow(e,t){for(let r in t)e[r]=(e[r]||0)-(t[r]||0)}function Jd(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:N._`!${mo(e)}`}k.not=Jd;var aw=Qd(k.operators.AND);function lw(...e){return e.reduce(aw)}k.and=lw;var cw=Qd(k.operators.OR);function dw(...e){return e.reduce(cw)}k.or=dw;function Qd(e){return(t,r)=>t===N.nil?r:r===N.nil?t:N._`${mo(t)} ${e} ${mo(r)}`}function mo(e){return e instanceof N.Name?e:N._`(${e})`}});var D=P(function(A){Object.defineProperty(A,"__esModule",{value:!0});A.checkStrictMode=A.getErrorPath=A.Type=A.useFunc=A.setEvaluated=A.evaluatedPropsToName=A.mergeEvaluated=A.eachItem=A.unescapeJsonPointer=A.escapeJsonPointer=A.escapeFragment=A.unescapeFragment=A.schemaRefOrVal=A.schemaHasRulesButRef=A.schemaHasRules=A.checkUnknownRules=A.alwaysValidSchema=A.toHash=void 0;var G=j(),uw=ei();function pw(e){let t={};for(let r of e)t[r]=!0;return t}A.toHash=pw;function fw(e,t){if(typeof t=="boolean")return t;if(Object.keys(t).length===0)return!0;return Zd(e,t),!eu(t,e.self.RULES.all)}A.alwaysValidSchema=fw;function Zd(e,t=e.schema){let{opts:r,self:i}=e;if(!r.strictSchema)return;if(typeof t==="boolean")return;let n=i.RULES.keywords;for(let s in t)if(!n[s])iu(e,`unknown keyword: "${s}"`)}A.checkUnknownRules=Zd;function eu(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(t[r])return!0;return!1}A.schemaHasRules=eu;function mw(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(r!=="$ref"&&t.all[r])return!0;return!1}A.schemaHasRulesButRef=mw;function hw({topSchemaRef:e,schemaPath:t},r,i,n){if(!n){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return G._`${r}`}return G._`${e}${t}${(0,G.getProperty)(i)}`}A.schemaRefOrVal=hw;function gw(e){return tu(decodeURIComponent(e))}A.unescapeFragment=gw;function yw(e){return encodeURIComponent(yo(e))}A.escapeFragment=yw;function yo(e){if(typeof e=="number")return`${e}`;return e.replace(/~/g,"~0").replace(/\//g,"~1")}A.escapeJsonPointer=yo;function tu(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}A.unescapeJsonPointer=tu;function _w(e,t){if(Array.isArray(e))for(let r of e)t(r);else t(e)}A.eachItem=_w;function Yd({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:i}){return(n,s,o,a)=>{let d=o===void 0?s:o instanceof G.Name?(s instanceof G.Name?e(n,s,o):t(n,s,o),o):s instanceof G.Name?(t(n,o,s),s):r(s,o);return a===G.Name&&!(d instanceof G.Name)?i(n,d):d}}A.mergeEvaluated={props:Yd({mergeNames:(e,t,r)=>e.if(G._`${r} !== true && ${t} !== undefined`,()=>{e.if(G._`${t} === true`,()=>e.assign(r,!0),()=>e.assign(r,G._`${r} || {}`).code(G._`Object.assign(${r}, ${t})`))}),mergeToName:(e,t,r)=>e.if(G._`${r} !== true`,()=>{if(t===!0)e.assign(r,!0);else e.assign(r,G._`${r} || {}`),_o(e,r,t)}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:ru}),items:Yd({mergeNames:(e,t,r)=>e.if(G._`${r} !== true && ${t} !== undefined`,()=>e.assign(r,G._`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)),mergeToName:(e,t,r)=>e.if(G._`${r} !== true`,()=>e.assign(r,t===!0?!0:G._`${r} > ${t} ? ${r} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function ru(e,t){if(t===!0)return e.var("props",!0);let r=e.var("props",G._`{}`);if(t!==void 0)_o(e,r,t);return r}A.evaluatedPropsToName=ru;function _o(e,t,r){Object.keys(r).forEach((i)=>e.assign(G._`${t}${(0,G.getProperty)(i)}`,!0))}A.setEvaluated=_o;var Xd={};function bw(e,t){return e.scopeValue("func",{ref:t,code:Xd[t.code]||(Xd[t.code]=new uw._Code(t.code))})}A.useFunc=bw;var go;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(go||(A.Type=go={}));function Pw(e,t,r){if(e instanceof G.Name){let i=t===go.Num;return r?i?G._`"[" + ${e} + "]"`:G._`"['" + ${e} + "']"`:i?G._`"/" + ${e}`:G._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,G.getProperty)(e).toString():"/"+yo(e)}A.getErrorPath=Pw;function iu(e,t,r=e.opts.strictSchema){if(!r)return;if(t=`strict mode: ${t}`,r===!0)throw Error(t);e.self.logger.warn(t)}A.checkStrictMode=iu});var Oe=P(function(bo){Object.defineProperty(bo,"__esModule",{value:!0});var ae=j(),vw={data:new ae.Name("data"),valCxt:new ae.Name("valCxt"),instancePath:new ae.Name("instancePath"),parentData:new ae.Name("parentData"),parentDataProperty:new ae.Name("parentDataProperty"),rootData:new ae.Name("rootData"),dynamicAnchors:new ae.Name("dynamicAnchors"),vErrors:new ae.Name("vErrors"),errors:new ae.Name("errors"),this:new ae.Name("this"),self:new ae.Name("self"),scope:new ae.Name("scope"),json:new ae.Name("json"),jsonPos:new ae.Name("jsonPos"),jsonLen:new ae.Name("jsonLen"),jsonPart:new ae.Name("jsonPart")};bo.default=vw});var ri=P(function(le){Object.defineProperty(le,"__esModule",{value:!0});le.extendErrors=le.resetErrorsCount=le.reportExtraError=le.reportError=le.keyword$DataError=le.keywordError=void 0;var L=j(),_n=D(),me=Oe();le.keywordError={message:({keyword:e})=>L.str`must pass "${e}" keyword validation`};le.keyword$DataError={message:({keyword:e,schemaType:t})=>t?L.str`"${e}" keyword must be ${t} ($data)`:L.str`"${e}" keyword is invalid ($data)`};function ww(e,t=le.keywordError,r,i){let{it:n}=e,{gen:s,compositeRule:o,allErrors:a}=n,d=ou(e,t,r);if(i!==null&&i!==void 0?i:o||a)nu(s,d);else su(n,L._`[${d}]`)}le.reportError=ww;function $w(e,t=le.keywordError,r){let{it:i}=e,{gen:n,compositeRule:s,allErrors:o}=i,a=ou(e,t,r);if(nu(n,a),!(s||o))su(i,me.default.vErrors)}le.reportExtraError=$w;function Ew(e,t){e.assign(me.default.errors,t),e.if(L._`${me.default.vErrors} !== null`,()=>e.if(t,()=>e.assign(L._`${me.default.vErrors}.length`,t),()=>e.assign(me.default.vErrors,null)))}le.resetErrorsCount=Ew;function Iw({gen:e,keyword:t,schemaValue:r,data:i,errsCount:n,it:s}){if(n===void 0)throw Error("ajv implementation error");let o=e.name("err");e.forRange("i",n,me.default.errors,(a)=>{if(e.const(o,L._`${me.default.vErrors}[${a}]`),e.if(L._`${o}.instancePath === undefined`,()=>e.assign(L._`${o}.instancePath`,(0,L.strConcat)(me.default.instancePath,s.errorPath))),e.assign(L._`${o}.schemaPath`,L.str`${s.errSchemaPath}/${t}`),s.opts.verbose)e.assign(L._`${o}.schema`,r),e.assign(L._`${o}.data`,i)})}le.extendErrors=Iw;function nu(e,t){let r=e.const("err",t);e.if(L._`${me.default.vErrors} === null`,()=>e.assign(me.default.vErrors,L._`[${r}]`),L._`${me.default.vErrors}.push(${r})`),e.code(L._`${me.default.errors}++`)}function su(e,t){let{gen:r,validateName:i,schemaEnv:n}=e;if(n.$async)r.throw(L._`new ${e.ValidationError}(${t})`);else r.assign(L._`${i}.errors`,t),r.return(!1)}var Dt={keyword:new L.Name("keyword"),schemaPath:new L.Name("schemaPath"),params:new L.Name("params"),propertyName:new L.Name("propertyName"),message:new L.Name("message"),schema:new L.Name("schema"),parentSchema:new L.Name("parentSchema")};function ou(e,t,r){let{createErrors:i}=e.it;if(i===!1)return L._`{}`;return Sw(e,t,r)}function Sw(e,t,r={}){let{gen:i,it:n}=e,s=[xw(n,r),Rw(e,r)];return Cw(e,t,s),i.object(...s)}function xw({errorPath:e},{instancePath:t}){let r=t?L.str`${e}${(0,_n.getErrorPath)(t,_n.Type.Str)}`:e;return[me.default.instancePath,(0,L.strConcat)(me.default.instancePath,r)]}function Rw({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:i}){let n=i?t:L.str`${t}/${e}`;if(r)n=L.str`${n}${(0,_n.getErrorPath)(r,_n.Type.Str)}`;return[Dt.schemaPath,n]}function Cw(e,{params:t,message:r},i){let{keyword:n,data:s,schemaValue:o,it:a}=e,{opts:d,propertyName:u,topSchemaRef:l,schemaPath:c}=a;if(i.push([Dt.keyword,n],[Dt.params,typeof t=="function"?t(e):t||L._`{}`]),d.messages)i.push([Dt.message,typeof r=="function"?r(e):r]);if(d.verbose)i.push([Dt.schema,o],[Dt.parentSchema,L._`${l}${c}`],[me.default.data,s]);if(u)i.push([Dt.propertyName,u])}});var lu=P(function(dr){Object.defineProperty(dr,"__esModule",{value:!0});dr.boolOrEmptySchema=dr.topBoolOrEmptySchema=void 0;var Ow=ri(),jw=j(),Fw=Oe(),Tw={message:"boolean schema is false"};function kw(e){let{gen:t,schema:r,validateName:i}=e;if(r===!1)au(e,!1);else if(typeof r=="object"&&r.$async===!0)t.return(Fw.default.data);else t.assign(jw._`${i}.errors`,null),t.return(!0)}dr.topBoolOrEmptySchema=kw;function Aw(e,t){let{gen:r,schema:i}=e;if(i===!1)r.var(t,!1),au(e);else r.var(t,!0)}dr.boolOrEmptySchema=Aw;function au(e,t){let{gen:r,data:i}=e,n={gen:r,keyword:"false schema",data:i,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,Ow.reportError)(n,Tw,void 0,t)}});var Po=P(function(ur){Object.defineProperty(ur,"__esModule",{value:!0});ur.getRules=ur.isJSONType=void 0;var Dw=["string","number","integer","boolean","null","object","array"],Nw=new Set(Dw);function Lw(e){return typeof e=="string"&&Nw.has(e)}ur.isJSONType=Lw;function qw(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}ur.getRules=qw});var vo=P(function($t){Object.defineProperty($t,"__esModule",{value:!0});$t.shouldUseRule=$t.shouldUseGroup=$t.schemaHasRulesForType=void 0;function Mw({schema:e,self:t},r){let i=t.RULES.types[r];return i&&i!==!0&&cu(e,i)}$t.schemaHasRulesForType=Mw;function cu(e,t){return t.rules.some((r)=>du(e,r))}$t.shouldUseGroup=cu;function du(e,t){var r;return e[t.keyword]!==void 0||((r=t.definition.implements)===null||r===void 0?void 0:r.some((i)=>e[i]!==void 0))}$t.shouldUseRule=du});var ii=P(function(ce){Object.defineProperty(ce,"__esModule",{value:!0});ce.reportTypeError=ce.checkDataTypes=ce.checkDataType=ce.coerceAndCheckDataType=ce.getJSONTypes=ce.getSchemaTypes=ce.DataType=void 0;var Uw=Po(),Bw=vo(),Gw=ri(),F=j(),uu=D(),pr;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(pr||(ce.DataType=pr={}));function Vw(e){let t=pu(e.type);if(t.includes("null")){if(e.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if(e.nullable===!0)t.push("null")}return t}ce.getSchemaTypes=Vw;function pu(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(Uw.isJSONType))return t;throw Error("type must be JSONType or JSONType[]: "+t.join(","))}ce.getJSONTypes=pu;function Kw(e,t){let{gen:r,data:i,opts:n}=e,s=zw(t,n.coerceTypes),o=t.length>0&&!(s.length===0&&t.length===1&&(0,Bw.schemaHasRulesForType)(e,t[0]));if(o){let a=$o(t,i,n.strictNumbers,pr.Wrong);r.if(a,()=>{if(s.length)Ww(e,t,s);else Eo(e)})}return o}ce.coerceAndCheckDataType=Kw;var fu=new Set(["string","number","integer","boolean","null"]);function zw(e,t){return t?e.filter((r)=>fu.has(r)||t==="array"&&r==="array"):[]}function Ww(e,t,r){let{gen:i,data:n,opts:s}=e,o=i.let("dataType",F._`typeof ${n}`),a=i.let("coerced",F._`undefined`);if(s.coerceTypes==="array")i.if(F._`${o} == 'object' && Array.isArray(${n}) && ${n}.length == 1`,()=>i.assign(n,F._`${n}[0]`).assign(o,F._`typeof ${n}`).if($o(t,n,s.strictNumbers),()=>i.assign(a,n)));i.if(F._`${a} !== undefined`);for(let u of r)if(fu.has(u)||u==="array"&&s.coerceTypes==="array")d(u);i.else(),Eo(e),i.endIf(),i.if(F._`${a} !== undefined`,()=>{i.assign(n,a),Hw(e,a)});function d(u){switch(u){case"string":i.elseIf(F._`${o} == "number" || ${o} == "boolean"`).assign(a,F._`"" + ${n}`).elseIf(F._`${n} === null`).assign(a,F._`""`);return;case"number":i.elseIf(F._`${o} == "boolean" || ${n} === null
|
|
5
|
-
|| (${
|
|
6
|
-
|| (${
|
|
7
|
-
|| ${o} === "boolean" || ${n} === null`).assign(a,F._`[${n}]`)}}}function Hw({gen:e,parentData:t,parentDataProperty:r},i){e.if(F._`${t} !== undefined`,()=>e.assign(F._`${t}[${r}]`,i))}function wo(e,t,r,i=pr.Correct){let n=i===pr.Correct?F.operators.EQ:F.operators.NEQ,s;switch(e){case"null":return F._`${t} ${n} null`;case"array":s=F._`Array.isArray(${t})`;break;case"object":s=F._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":s=o(F._`!(${t} % 1) && !isNaN(${t})`);break;case"number":s=o();break;default:return F._`typeof ${t} ${n} ${e}`}return i===pr.Correct?s:(0,F.not)(s);function o(a=F.nil){return(0,F.and)(F._`typeof ${t} == "number"`,a,r?F._`isFinite(${t})`:F.nil)}}ce.checkDataType=wo;function $o(e,t,r,i){if(e.length===1)return wo(e[0],t,r,i);let n,s=(0,uu.toHash)(e);if(s.array&&s.object){let o=F._`typeof ${t} != "object"`;n=s.null?o:F._`!${t} || ${o}`,delete s.null,delete s.array,delete s.object}else n=F.nil;if(s.number)delete s.integer;for(let o in s)n=(0,F.and)(n,wo(o,t,r,i));return n}ce.checkDataTypes=$o;var Jw={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?F._`{type: ${e}}`:F._`{type: ${t}}`};function Eo(e){let t=Qw(e);(0,Gw.reportError)(t,Jw)}ce.reportTypeError=Eo;function Qw(e){let{gen:t,data:r,schema:i}=e,n=(0,uu.schemaRefOrVal)(e,i,"type");return{gen:t,keyword:"type",data:r,schema:i.type,schemaCode:n,schemaValue:n,parentSchema:i,params:{},it:e}}});var hu=P(function(bn){Object.defineProperty(bn,"__esModule",{value:!0});bn.assignDefaults=void 0;var fr=j(),Yw=D();function Xw(e,t){let{properties:r,items:i}=e.schema;if(t==="object"&&r)for(let n in r)mu(e,n,r[n].default);else if(t==="array"&&Array.isArray(i))i.forEach((n,s)=>mu(e,s,n.default))}bn.assignDefaults=Xw;function mu(e,t,r){let{gen:i,compositeRule:n,data:s,opts:o}=e;if(r===void 0)return;let a=fr._`${s}${(0,fr.getProperty)(t)}`;if(n){(0,Yw.checkStrictMode)(e,`default is ignored for: ${a}`);return}let d=fr._`${a} === undefined`;if(o.useDefaults==="empty")d=fr._`${d} || ${a} === null || ${a} === ""`;i.if(d,fr._`${a} = ${(0,fr.stringify)(r)}`)}});var je=P(function(B){Object.defineProperty(B,"__esModule",{value:!0});B.validateUnion=B.validateArray=B.usePattern=B.callValidateCode=B.schemaProperties=B.allSchemaProperties=B.noPropertyInData=B.propertyInData=B.isOwnProperty=B.hasPropFunc=B.reportMissingProp=B.checkMissingProp=B.checkReportMissingProp=void 0;var K=j(),Io=D(),Et=Oe(),Zw=D();function e$(e,t){let{gen:r,data:i,it:n}=e;r.if(xo(r,i,t,n.opts.ownProperties),()=>{e.setParams({missingProperty:K._`${t}`},!0),e.error()})}B.checkReportMissingProp=e$;function t$({gen:e,data:t,it:{opts:r}},i,n){return(0,K.or)(...i.map((s)=>(0,K.and)(xo(e,t,s,r.ownProperties),K._`${n} = ${s}`)))}B.checkMissingProp=t$;function r$(e,t){e.setParams({missingProperty:t},!0),e.error()}B.reportMissingProp=r$;function gu(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:K._`Object.prototype.hasOwnProperty`})}B.hasPropFunc=gu;function So(e,t,r){return K._`${gu(e)}.call(${t}, ${r})`}B.isOwnProperty=So;function i$(e,t,r,i){let n=K._`${t}${(0,K.getProperty)(r)} !== undefined`;return i?K._`${n} && ${So(e,t,r)}`:n}B.propertyInData=i$;function xo(e,t,r,i){let n=K._`${t}${(0,K.getProperty)(r)} === undefined`;return i?(0,K.or)(n,(0,K.not)(So(e,t,r))):n}B.noPropertyInData=xo;function yu(e){return e?Object.keys(e).filter((t)=>t!=="__proto__"):[]}B.allSchemaProperties=yu;function n$(e,t){return yu(t).filter((r)=>!(0,Io.alwaysValidSchema)(e,t[r]))}B.schemaProperties=n$;function s$({schemaCode:e,data:t,it:{gen:r,topSchemaRef:i,schemaPath:n,errorPath:s},it:o},a,d,u){let l=u?K._`${e}, ${t}, ${i}${n}`:t,c=[[Et.default.instancePath,(0,K.strConcat)(Et.default.instancePath,s)],[Et.default.parentData,o.parentData],[Et.default.parentDataProperty,o.parentDataProperty],[Et.default.rootData,Et.default.rootData]];if(o.opts.dynamicRef)c.push([Et.default.dynamicAnchors,Et.default.dynamicAnchors]);let p=K._`${l}, ${r.object(...c)}`;return d!==K.nil?K._`${a}.call(${d}, ${p})`:K._`${a}(${p})`}B.callValidateCode=s$;var o$=K._`new RegExp`;function a$({gen:e,it:{opts:t}},r){let i=t.unicodeRegExp?"u":"",{regExp:n}=t.code,s=n(r,i);return e.scopeValue("pattern",{key:s.toString(),ref:s,code:K._`${n.code==="new RegExp"?o$:(0,Zw.useFunc)(e,n)}(${r}, ${i})`})}B.usePattern=a$;function l$(e){let{gen:t,data:r,keyword:i,it:n}=e,s=t.name("valid");if(n.allErrors){let a=t.let("valid",!0);return o(()=>t.assign(a,!1)),a}return t.var(s,!0),o(()=>t.break()),s;function o(a){let d=t.const("len",K._`${r}.length`);t.forRange("i",0,d,(u)=>{e.subschema({keyword:i,dataProp:u,dataPropType:Io.Type.Num},s),t.if((0,K.not)(s),a)})}}B.validateArray=l$;function c$(e){let{gen:t,schema:r,keyword:i,it:n}=e;if(!Array.isArray(r))throw Error("ajv implementation error");if(r.some((d)=>(0,Io.alwaysValidSchema)(n,d))&&!n.opts.unevaluated)return;let o=t.let("valid",!1),a=t.name("_valid");t.block(()=>r.forEach((d,u)=>{let l=e.subschema({keyword:i,schemaProp:u,compositeRule:!0},a);if(t.assign(o,K._`${o} || ${a}`),!e.mergeValidEvaluated(l,a))t.if((0,K.not)(o))})),e.result(o,()=>e.reset(),()=>e.error(!0))}B.validateUnion=c$});var Pu=P(function(Je){Object.defineProperty(Je,"__esModule",{value:!0});Je.validateKeywordUsage=Je.validSchemaType=Je.funcKeywordCode=Je.macroKeywordCode=void 0;var he=j(),Nt=Oe(),d$=je(),u$=ri();function p$(e,t){let{gen:r,keyword:i,schema:n,parentSchema:s,it:o}=e,a=t.macro.call(o.self,n,s,o),d=bu(r,i,a);if(o.opts.validateSchema!==!1)o.self.validateSchema(a,!0);let u=r.name("valid");e.subschema({schema:a,schemaPath:he.nil,errSchemaPath:`${o.errSchemaPath}/${i}`,topSchemaRef:d,compositeRule:!0},u),e.pass(u,()=>e.error(!0))}Je.macroKeywordCode=p$;function f$(e,t){var r;let{gen:i,keyword:n,schema:s,parentSchema:o,$data:a,it:d}=e;h$(d,t);let u=!a&&t.compile?t.compile.call(d.self,s,o,d):t.validate,l=bu(i,n,u),c=i.let("valid");e.block$data(c,p),e.ok((r=t.valid)!==null&&r!==void 0?r:c);function p(){if(t.errors===!1){if(h(),t.modifying)_u(e);g(()=>e.error())}else{let _=t.async?f():m();if(t.modifying)_u(e);g(()=>m$(e,_))}}function f(){let _=i.let("ruleErrs",null);return i.try(()=>h(he._`await `),(b)=>i.assign(c,!1).if(he._`${b} instanceof ${d.ValidationError}`,()=>i.assign(_,he._`${b}.errors`),()=>i.throw(b))),_}function m(){let _=he._`${l}.errors`;return i.assign(_,null),h(he.nil),_}function h(_=t.async?he._`await `:he.nil){let b=d.opts.passContext?Nt.default.this:Nt.default.self,v=!(("compile"in t)&&!a||t.schema===!1);i.assign(c,he._`${_}${(0,d$.callValidateCode)(e,l,b,v)}`,t.modifying)}function g(_){var b;i.if((0,he.not)((b=t.valid)!==null&&b!==void 0?b:c),_)}}Je.funcKeywordCode=f$;function _u(e){let{gen:t,data:r,it:i}=e;t.if(i.parentData,()=>t.assign(r,he._`${i.parentData}[${i.parentDataProperty}]`))}function m$(e,t){let{gen:r}=e;r.if(he._`Array.isArray(${t})`,()=>{r.assign(Nt.default.vErrors,he._`${Nt.default.vErrors} === null ? ${t} : ${Nt.default.vErrors}.concat(${t})`).assign(Nt.default.errors,he._`${Nt.default.vErrors}.length`),(0,u$.extendErrors)(e)},()=>e.error())}function h$({schemaEnv:e},t){if(t.async&&!e.$async)throw Error("async keyword in sync schema")}function bu(e,t,r){if(r===void 0)throw Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,he.stringify)(r)})}function g$(e,t,r=!1){return!t.length||t.some((i)=>i==="array"?Array.isArray(e):i==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==i||r&&typeof e>"u")}Je.validSchemaType=g$;function y$({schema:e,opts:t,self:r,errSchemaPath:i},n,s){if(Array.isArray(n.keyword)?!n.keyword.includes(s):n.keyword!==s)throw Error("ajv implementation error");let o=n.dependencies;if(o===null||o===void 0?void 0:o.some((a)=>!Object.prototype.hasOwnProperty.call(e,a)))throw Error(`parent schema must have dependencies of ${s}: ${o.join(",")}`);if(n.validateSchema){if(!n.validateSchema(e[s])){let d=`keyword "${s}" value is invalid at path "${i}": `+r.errorsText(n.validateSchema.errors);if(t.validateSchema==="log")r.logger.error(d);else throw Error(d)}}}Je.validateKeywordUsage=y$});var wu=P(function(It){Object.defineProperty(It,"__esModule",{value:!0});It.extendSubschemaMode=It.extendSubschemaData=It.getSubschema=void 0;var Qe=j(),vu=D();function _$(e,{keyword:t,schemaProp:r,schema:i,schemaPath:n,errSchemaPath:s,topSchemaRef:o}){if(t!==void 0&&i!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let a=e.schema[t];return r===void 0?{schema:a,schemaPath:Qe._`${e.schemaPath}${(0,Qe.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:a[r],schemaPath:Qe._`${e.schemaPath}${(0,Qe.getProperty)(t)}${(0,Qe.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,vu.escapeFragment)(r)}`}}if(i!==void 0){if(n===void 0||s===void 0||o===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:i,schemaPath:n,topSchemaRef:o,errSchemaPath:s}}throw Error('either "keyword" or "schema" must be passed')}It.getSubschema=_$;function b$(e,t,{dataProp:r,dataPropType:i,data:n,dataTypes:s,propertyName:o}){if(n!==void 0&&r!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:a}=t;if(r!==void 0){let{errorPath:u,dataPathArr:l,opts:c}=t,p=a.let("data",Qe._`${t.data}${(0,Qe.getProperty)(r)}`,!0);d(p),e.errorPath=Qe.str`${u}${(0,vu.getErrorPath)(r,i,c.jsPropertySyntax)}`,e.parentDataProperty=Qe._`${r}`,e.dataPathArr=[...l,e.parentDataProperty]}if(n!==void 0){let u=n instanceof Qe.Name?n:a.let("data",n,!0);if(d(u),o!==void 0)e.propertyName=o}if(s)e.dataTypes=s;function d(u){e.data=u,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,u]}}It.extendSubschemaData=b$;function P$(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:i,createErrors:n,allErrors:s}){if(i!==void 0)e.compositeRule=i;if(n!==void 0)e.createErrors=n;if(s!==void 0)e.allErrors=s;e.jtdDiscriminator=t,e.jtdMetadata=r}It.extendSubschemaMode=P$});var Ro=P(function(lA,$u){$u.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var i,n,s;if(Array.isArray(t)){if(i=t.length,i!=r.length)return!1;for(n=i;n--!==0;)if(!e(t[n],r[n]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(s=Object.keys(t),i=s.length,i!==Object.keys(r).length)return!1;for(n=i;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[n]))return!1;for(n=i;n--!==0;){var o=s[n];if(!e(t[o],r[o]))return!1}return!0}return t!==t&&r!==r}});var Iu=P(function(cA,Eu){var St=Eu.exports=function(e,t,r){if(typeof t=="function")r=t,t={};r=t.cb||r;var i=typeof r=="function"?r:r.pre||function(){},n=r.post||function(){};Pn(t,i,n,e,"",e)};St.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};St.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};St.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};St.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Pn(e,t,r,i,n,s,o,a,d,u){if(i&&typeof i=="object"&&!Array.isArray(i)){t(i,n,s,o,a,d,u);for(var l in i){var c=i[l];if(Array.isArray(c)){if(l in St.arrayKeywords)for(var p=0;p<c.length;p++)Pn(e,t,r,c[p],n+"/"+l+"/"+p,s,n,l,i,p)}else if(l in St.propsKeywords){if(c&&typeof c=="object")for(var f in c)Pn(e,t,r,c[f],n+"/"+l+"/"+v$(f),s,n,l,i,f)}else if(l in St.keywords||e.allKeys&&!(l in St.skipKeywords))Pn(e,t,r,c,n+"/"+l,s,n,l,i)}r(i,n,s,o,a,d,u)}}function v$(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var ni=P(function(ve){Object.defineProperty(ve,"__esModule",{value:!0});ve.getSchemaRefs=ve.resolveUrl=ve.normalizeId=ve._getFullPath=ve.getFullPath=ve.inlineRef=void 0;var w$=D(),$$=Ro(),E$=Iu(),I$=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function S$(e,t=!0){if(typeof e=="boolean")return!0;if(t===!0)return!Co(e);if(!t)return!1;return Su(e)<=t}ve.inlineRef=S$;var x$=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Co(e){for(let t in e){if(x$.has(t))return!0;let r=e[t];if(Array.isArray(r)&&r.some(Co))return!0;if(typeof r=="object"&&Co(r))return!0}return!1}function Su(e){let t=0;for(let r in e){if(r==="$ref")return 1/0;if(t++,I$.has(r))continue;if(typeof e[r]=="object")(0,w$.eachItem)(e[r],(i)=>t+=Su(i));if(t===1/0)return 1/0}return t}function xu(e,t="",r){if(r!==!1)t=mr(t);let i=e.parse(t);return Ru(e,i)}ve.getFullPath=xu;function Ru(e,t){return e.serialize(t).split("#")[0]+"#"}ve._getFullPath=Ru;var R$=/#\/?$/;function mr(e){return e?e.replace(R$,""):""}ve.normalizeId=mr;function C$(e,t,r){return r=mr(r),e.resolve(t,r)}ve.resolveUrl=C$;var O$=/^[a-z_][-a-z0-9._]*$/i;function j$(e,t){if(typeof e=="boolean")return{};let{schemaId:r,uriResolver:i}=this.opts,n=mr(e[r]||t),s={"":n},o=xu(i,n,!1),a={},d=new Set;return E$(e,{allKeys:!0},(c,p,f,m)=>{if(m===void 0)return;let h=o+p,g=s[m];if(typeof c[r]=="string")g=_.call(this,c[r]);b.call(this,c.$anchor),b.call(this,c.$dynamicAnchor),s[p]=g;function _(v){let w=this.opts.uriResolver.resolve;if(v=mr(g?w(g,v):v),d.has(v))throw l(v);d.add(v);let I=this.refs[v];if(typeof I=="string")I=this.refs[I];if(typeof I=="object")u(c,I.schema,v);else if(v!==mr(h))if(v[0]==="#")u(c,a[v],v),a[v]=c;else this.refs[v]=h;return v}function b(v){if(typeof v=="string"){if(!O$.test(v))throw Error(`invalid anchor "${v}"`);_.call(this,`#${v}`)}}}),a;function u(c,p,f){if(p!==void 0&&!$$(c,p))throw l(f)}function l(c){return Error(`reference "${c}" resolves to more than one schema`)}}ve.getSchemaRefs=j$});var hr=P(function(xt){Object.defineProperty(xt,"__esModule",{value:!0});xt.getData=xt.KeywordCxt=xt.validateFunctionCode=void 0;var Tu=lu(),Cu=ii(),jo=vo(),vn=ii(),F$=hu(),oi=Pu(),Oo=wu(),S=j(),O=Oe(),T$=ni(),ut=D(),si=ri();function k$(e){if(Du(e)){if(Nu(e),Au(e)){N$(e);return}}ku(e,()=>(0,Tu.topBoolOrEmptySchema)(e))}xt.validateFunctionCode=k$;function ku({gen:e,validateName:t,schema:r,schemaEnv:i,opts:n},s){if(n.code.es5)e.func(t,S._`${O.default.data}, ${O.default.valCxt}`,i.$async,()=>{e.code(S._`"use strict"; ${Ou(r,n)}`),D$(e,n),e.code(s)});else e.func(t,S._`${O.default.data}, ${A$(n)}`,i.$async,()=>e.code(Ou(r,n)).code(s))}function A$(e){return S._`{${O.default.instancePath}="", ${O.default.parentData}, ${O.default.parentDataProperty}, ${O.default.rootData}=${O.default.data}${e.dynamicRef?S._`, ${O.default.dynamicAnchors}={}`:S.nil}}={}`}function D$(e,t){e.if(O.default.valCxt,()=>{if(e.var(O.default.instancePath,S._`${O.default.valCxt}.${O.default.instancePath}`),e.var(O.default.parentData,S._`${O.default.valCxt}.${O.default.parentData}`),e.var(O.default.parentDataProperty,S._`${O.default.valCxt}.${O.default.parentDataProperty}`),e.var(O.default.rootData,S._`${O.default.valCxt}.${O.default.rootData}`),t.dynamicRef)e.var(O.default.dynamicAnchors,S._`${O.default.valCxt}.${O.default.dynamicAnchors}`)},()=>{if(e.var(O.default.instancePath,S._`""`),e.var(O.default.parentData,S._`undefined`),e.var(O.default.parentDataProperty,S._`undefined`),e.var(O.default.rootData,O.default.data),t.dynamicRef)e.var(O.default.dynamicAnchors,S._`{}`)})}function N$(e){let{schema:t,opts:r,gen:i}=e;ku(e,()=>{if(r.$comment&&t.$comment)qu(e);if(B$(e),i.let(O.default.vErrors,null),i.let(O.default.errors,0),r.unevaluated)L$(e);Lu(e),K$(e)});return}function L$(e){let{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",S._`${r}.evaluated`),t.if(S._`${e.evaluated}.dynamicProps`,()=>t.assign(S._`${e.evaluated}.props`,S._`undefined`)),t.if(S._`${e.evaluated}.dynamicItems`,()=>t.assign(S._`${e.evaluated}.items`,S._`undefined`))}function Ou(e,t){let r=typeof e=="object"&&e[t.schemaId];return r&&(t.code.source||t.code.process)?S._`/*# sourceURL=${r} */`:S.nil}function q$(e,t){if(Du(e)){if(Nu(e),Au(e)){M$(e,t);return}}(0,Tu.boolOrEmptySchema)(e,t)}function Au({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let r in e)if(t.RULES.all[r])return!0;return!1}function Du(e){return typeof e.schema!="boolean"}function M$(e,t){let{schema:r,gen:i,opts:n}=e;if(n.$comment&&r.$comment)qu(e);G$(e),V$(e);let s=i.const("_errs",O.default.errors);Lu(e,s),i.var(t,S._`${s} === ${O.default.errors}`)}function Nu(e){(0,ut.checkUnknownRules)(e),U$(e)}function Lu(e,t){if(e.opts.jtd)return ju(e,[],!1,t);let r=(0,Cu.getSchemaTypes)(e.schema),i=(0,Cu.coerceAndCheckDataType)(e,r);ju(e,r,!i,t)}function U$(e){let{schema:t,errSchemaPath:r,opts:i,self:n}=e;if(t.$ref&&i.ignoreKeywordsWithRef&&(0,ut.schemaHasRulesButRef)(t,n.RULES))n.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function B$(e){let{schema:t,opts:r}=e;if(t.default!==void 0&&r.useDefaults&&r.strictSchema)(0,ut.checkStrictMode)(e,"default is ignored in the schema root")}function G$(e){let t=e.schema[e.opts.schemaId];if(t)e.baseId=(0,T$.resolveUrl)(e.opts.uriResolver,e.baseId,t)}function V$(e){if(e.schema.$async&&!e.schemaEnv.$async)throw Error("async schema in sync schema")}function qu({gen:e,schemaEnv:t,schema:r,errSchemaPath:i,opts:n}){let s=r.$comment;if(n.$comment===!0)e.code(S._`${O.default.self}.logger.log(${s})`);else if(typeof n.$comment=="function"){let o=S.str`${i}/$comment`,a=e.scopeValue("root",{ref:t.root});e.code(S._`${O.default.self}.opts.$comment(${s}, ${o}, ${a}.schema)`)}}function K$(e){let{gen:t,schemaEnv:r,validateName:i,ValidationError:n,opts:s}=e;if(r.$async)t.if(S._`${O.default.errors} === 0`,()=>t.return(O.default.data),()=>t.throw(S._`new ${n}(${O.default.vErrors})`));else{if(t.assign(S._`${i}.errors`,O.default.vErrors),s.unevaluated)z$(e);t.return(S._`${O.default.errors} === 0`)}}function z$({gen:e,evaluated:t,props:r,items:i}){if(r instanceof S.Name)e.assign(S._`${t}.props`,r);if(i instanceof S.Name)e.assign(S._`${t}.items`,i)}function ju(e,t,r,i){let{gen:n,schema:s,data:o,allErrors:a,opts:d,self:u}=e,{RULES:l}=u;if(s.$ref&&(d.ignoreKeywordsWithRef||!(0,ut.schemaHasRulesButRef)(s,l))){n.block(()=>Uu(e,"$ref",l.all.$ref.definition));return}if(!d.jtd)W$(e,t);n.block(()=>{for(let p of l.rules)c(p);c(l.post)});function c(p){if(!(0,jo.shouldUseGroup)(s,p))return;if(p.type){if(n.if((0,vn.checkDataType)(p.type,o,d.strictNumbers)),Fu(e,p),t.length===1&&t[0]===p.type&&r)n.else(),(0,vn.reportTypeError)(e);n.endIf()}else Fu(e,p);if(!a)n.if(S._`${O.default.errors} === ${i||0}`)}}function Fu(e,t){let{gen:r,schema:i,opts:{useDefaults:n}}=e;if(n)(0,F$.assignDefaults)(e,t.type);r.block(()=>{for(let s of t.rules)if((0,jo.shouldUseRule)(i,s))Uu(e,s.keyword,s.definition,t.type)})}function W$(e,t){if(e.schemaEnv.meta||!e.opts.strictTypes)return;if(H$(e,t),!e.opts.allowUnionTypes)J$(e,t);Q$(e,e.dataTypes)}function H$(e,t){if(!t.length)return;if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach((r)=>{if(!Mu(e.dataTypes,r))Fo(e,`type "${r}" not allowed by context "${e.dataTypes.join(",")}"`)}),X$(e,t)}function J$(e,t){if(t.length>1&&!(t.length===2&&t.includes("null")))Fo(e,"use allowUnionTypes to allow union type keyword")}function Q$(e,t){let r=e.self.RULES.all;for(let i in r){let n=r[i];if(typeof n=="object"&&(0,jo.shouldUseRule)(e.schema,n)){let{type:s}=n.definition;if(s.length&&!s.some((o)=>Y$(t,o)))Fo(e,`missing type "${s.join(",")}" for keyword "${i}"`)}}}function Y$(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function Mu(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function X$(e,t){let r=[];for(let i of e.dataTypes)if(Mu(t,i))r.push(i);else if(t.includes("integer")&&i==="number")r.push("integer");e.dataTypes=r}function Fo(e,t){let r=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${r}" (strictTypes)`,(0,ut.checkStrictMode)(e,t,e.opts.strictTypes)}class To{constructor(e,t,r){if((0,oi.validateKeywordUsage)(e,t,r),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=r,this.data=e.data,this.schema=e.schema[r],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,ut.schemaRefOrVal)(e,this.schema,r,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",Bu(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,oi.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw Error(`${r} value must be ${JSON.stringify(t.schemaType)}`);if("code"in t?t.trackErrors:t.errors!==!1)this.errsCount=e.gen.const("_errs",O.default.errors)}result(e,t,r){this.failResult((0,S.not)(e),t,r)}failResult(e,t,r){if(this.gen.if(e),r)r();else this.error();if(t){if(this.gen.else(),t(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass(e,t){this.failResult((0,S.not)(e),void 0,t)}fail(e){if(e===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if(e),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:t}=this;this.fail(S._`${t} !== undefined && (${(0,S.or)(this.invalid$data(),e)})`)}error(e,t,r){if(t){this.setParams(t),this._error(e,r),this.setParams({});return}this._error(e,r)}_error(e,t){(e?si.reportExtraError:si.reportError)(this,this.def.error,t)}$dataError(){(0,si.reportError)(this,this.def.$dataError||si.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,si.resetErrorsCount)(this.gen,this.errsCount)}ok(e){if(!this.allErrors)this.gen.if(e)}setParams(e,t){if(t)Object.assign(this.params,e);else this.params=e}block$data(e,t,r=S.nil){this.gen.block(()=>{this.check$data(e,r),t()})}check$data(e=S.nil,t=S.nil){if(!this.$data)return;let{gen:r,schemaCode:i,schemaType:n,def:s}=this;if(r.if((0,S.or)(S._`${i} === undefined`,t)),e!==S.nil)r.assign(e,!0);if(n.length||s.validateSchema){if(r.elseIf(this.invalid$data()),this.$dataError(),e!==S.nil)r.assign(e,!1)}r.else()}invalid$data(){let{gen:e,schemaCode:t,schemaType:r,def:i,it:n}=this;return(0,S.or)(s(),o());function s(){if(r.length){if(!(t instanceof S.Name))throw Error("ajv implementation error");let a=Array.isArray(r)?r:[r];return S._`${(0,vn.checkDataTypes)(a,t,n.opts.strictNumbers,vn.DataType.Wrong)}`}return S.nil}function o(){if(i.validateSchema){let a=e.scopeValue("validate$data",{ref:i.validateSchema});return S._`!${a}(${t})`}return S.nil}}subschema(e,t){let r=(0,Oo.getSubschema)(this.it,e);(0,Oo.extendSubschemaData)(r,this.it,e),(0,Oo.extendSubschemaMode)(r,e);let i={...this.it,...r,items:void 0,props:void 0};return q$(i,t),i}mergeEvaluated(e,t){let{it:r,gen:i}=this;if(!r.opts.unevaluated)return;if(r.props!==!0&&e.props!==void 0)r.props=ut.mergeEvaluated.props(i,e.props,r.props,t);if(r.items!==!0&&e.items!==void 0)r.items=ut.mergeEvaluated.items(i,e.items,r.items,t)}mergeValidEvaluated(e,t){let{it:r,gen:i}=this;if(r.opts.unevaluated&&(r.props!==!0||r.items!==!0))return i.if(t,()=>this.mergeEvaluated(e,S.Name)),!0}}xt.KeywordCxt=To;function Uu(e,t,r,i){let n=new To(e,r,t);if("code"in r)r.code(n,i);else if(n.$data&&r.validate)(0,oi.funcKeywordCode)(n,r);else if("macro"in r)(0,oi.macroKeywordCode)(n,r);else if(r.compile||r.validate)(0,oi.funcKeywordCode)(n,r)}var Z$=/^\/(?:[^~]|~0|~1)*$/,eE=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function Bu(e,{dataLevel:t,dataNames:r,dataPathArr:i}){let n,s;if(e==="")return O.default.rootData;if(e[0]==="/"){if(!Z$.test(e))throw Error(`Invalid JSON-pointer: ${e}`);n=e,s=O.default.rootData}else{let u=eE.exec(e);if(!u)throw Error(`Invalid JSON-pointer: ${e}`);let l=+u[1];if(n=u[2],n==="#"){if(l>=t)throw Error(d("property/index",l));return i[t-l]}if(l>t)throw Error(d("data",l));if(s=r[t-l],!n)return s}let o=s,a=n.split("/");for(let u of a)if(u)s=S._`${s}${(0,S.getProperty)((0,ut.unescapeJsonPointer)(u))}`,o=S._`${o} && ${s}`;return o;function d(u,l){return`Cannot access ${u} ${l} levels up, current level is ${t}`}}xt.getData=Bu});var ai=P(function(ko){Object.defineProperty(ko,"__esModule",{value:!0});class Gu extends Error{constructor(e){super("validation failed");this.errors=e,this.ajv=this.validation=!0}}ko.default=Gu});var gr=P(function(Do){Object.defineProperty(Do,"__esModule",{value:!0});var Ao=ni();class Vu extends Error{constructor(e,t,r,i){super(i||`can't resolve reference ${r} from id ${t}`);this.missingRef=(0,Ao.resolveUrl)(e,t,r),this.missingSchema=(0,Ao.normalizeId)((0,Ao.getFullPath)(e,this.missingRef))}}Do.default=Vu});var ci=P(function(Fe){Object.defineProperty(Fe,"__esModule",{value:!0});Fe.resolveSchema=Fe.getCompilingSchema=Fe.resolveRef=Fe.compileSchema=Fe.SchemaEnv=void 0;var Me=j(),tE=ai(),Lt=Oe(),Ue=ni(),Ku=D(),rE=hr();class li{constructor(e){var t;this.refs={},this.dynamicAnchors={};let r;if(typeof e.schema=="object")r=e.schema;this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(t=e.baseId)!==null&&t!==void 0?t:(0,Ue.normalizeId)(r===null||r===void 0?void 0:r[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=r===null||r===void 0?void 0:r.$async,this.refs={}}}Fe.SchemaEnv=li;function Lo(e){let t=zu.call(this,e);if(t)return t;let r=(0,Ue.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:i,lines:n}=this.opts.code,{ownProperties:s}=this.opts,o=new Me.CodeGen(this.scope,{es5:i,lines:n,ownProperties:s}),a;if(e.$async)a=o.scopeValue("Error",{ref:tE.default,code:Me._`require("ajv/dist/runtime/validation_error").default`});let d=o.scopeName("validate");e.validateName=d;let u={gen:o,allErrors:this.opts.allErrors,data:Lt.default.data,parentData:Lt.default.parentData,parentDataProperty:Lt.default.parentDataProperty,dataNames:[Lt.default.data],dataPathArr:[Me.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:o.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,Me.stringify)(e.schema)}:{ref:e.schema}),validateName:d,ValidationError:a,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:Me.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:Me._`""`,opts:this.opts,self:this},l;try{this._compilations.add(e),(0,rE.validateFunctionCode)(u),o.optimize(this.opts.code.optimize);let c=o.toString();if(l=`${o.scopeRefs(Lt.default.scope)}return ${c}`,this.opts.code.process)l=this.opts.code.process(l,e);let f=Function(`${Lt.default.self}`,`${Lt.default.scope}`,l)(this,this.scope.get());if(this.scope.value(d,{ref:f}),f.errors=null,f.schema=e.schema,f.schemaEnv=e,e.$async)f.$async=!0;if(this.opts.code.source===!0)f.source={validateName:d,validateCode:c,scopeValues:o._values};if(this.opts.unevaluated){let{props:m,items:h}=u;if(f.evaluated={props:m instanceof Me.Name?void 0:m,items:h instanceof Me.Name?void 0:h,dynamicProps:m instanceof Me.Name,dynamicItems:h instanceof Me.Name},f.source)f.source.evaluated=(0,Me.stringify)(f.evaluated)}return e.validate=f,e}catch(c){if(delete e.validate,delete e.validateName,l)this.logger.error("Error compiling schema, function code:",l);throw c}finally{this._compilations.delete(e)}}Fe.compileSchema=Lo;function iE(e,t,r){var i;r=(0,Ue.resolveUrl)(this.opts.uriResolver,t,r);let n=e.refs[r];if(n)return n;let s=oE.call(this,e,r);if(s===void 0){let o=(i=e.localRefs)===null||i===void 0?void 0:i[r],{schemaId:a}=this.opts;if(o)s=new li({schema:o,schemaId:a,root:e,baseId:t})}if(s===void 0)return;return e.refs[r]=nE.call(this,s)}Fe.resolveRef=iE;function nE(e){if((0,Ue.inlineRef)(e.schema,this.opts.inlineRefs))return e.schema;return e.validate?e:Lo.call(this,e)}function zu(e){for(let t of this._compilations)if(sE(t,e))return t}Fe.getCompilingSchema=zu;function sE(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function oE(e,t){let r;while(typeof(r=this.refs[t])=="string")t=r;return r||this.schemas[t]||wn.call(this,e,t)}function wn(e,t){let r=this.opts.uriResolver.parse(t),i=(0,Ue._getFullPath)(this.opts.uriResolver,r),n=(0,Ue.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&i===n)return No.call(this,r,e);let s=(0,Ue.normalizeId)(i),o=this.refs[s]||this.schemas[s];if(typeof o=="string"){let a=wn.call(this,e,o);if(typeof(a===null||a===void 0?void 0:a.schema)!=="object")return;return No.call(this,r,a)}if(typeof(o===null||o===void 0?void 0:o.schema)!=="object")return;if(!o.validate)Lo.call(this,o);if(s===(0,Ue.normalizeId)(t)){let{schema:a}=o,{schemaId:d}=this.opts,u=a[d];if(u)n=(0,Ue.resolveUrl)(this.opts.uriResolver,n,u);return new li({schema:a,schemaId:d,root:e,baseId:n})}return No.call(this,r,o)}Fe.resolveSchema=wn;var aE=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function No(e,{baseId:t,schema:r,root:i}){var n;if(((n=e.fragment)===null||n===void 0?void 0:n[0])!=="/")return;for(let a of e.fragment.slice(1).split("/")){if(typeof r==="boolean")return;let d=r[(0,Ku.unescapeFragment)(a)];if(d===void 0)return;r=d;let u=typeof r==="object"&&r[this.opts.schemaId];if(!aE.has(a)&&u)t=(0,Ue.resolveUrl)(this.opts.uriResolver,t,u)}let s;if(typeof r!="boolean"&&r.$ref&&!(0,Ku.schemaHasRulesButRef)(r,this.RULES)){let a=(0,Ue.resolveUrl)(this.opts.uriResolver,t,r.$ref);s=wn.call(this,i,a)}let{schemaId:o}=this.opts;if(s=s||new li({schema:r,schemaId:o,root:i,baseId:t}),s.schema!==s.root.schema)return s;return}});var Wu=P(function(hA,lE){lE.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var Mo=P(function(gA,Yu){var cE=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),Ju=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function qo(e){let t="",r=0,i=0;for(i=0;i<e.length;i++){if(r=e[i].charCodeAt(0),r===48)continue;if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[i];break}for(i+=1;i<e.length;i++){if(r=e[i].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[i]}return t}var dE=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function Hu(e){return e.length=0,!0}function uE(e,t,r){if(e.length){let i=qo(e);if(i!=="")t.push(i);else return r.error=!0,!1;e.length=0}return!0}function pE(e){let t=0,r={error:!1,address:"",zone:""},i=[],n=[],s=!1,o=!1,a=uE;for(let d=0;d<e.length;d++){let u=e[d];if(u==="["||u==="]")continue;if(u===":"){if(s===!0)o=!0;if(!a(n,i,r))break;if(++t>7){r.error=!0;break}if(d>0&&e[d-1]===":")s=!0;i.push(":");continue}else if(u==="%"){if(!a(n,i,r))break;a=Hu}else{n.push(u);continue}}if(n.length)if(a===Hu)r.zone=n.join("");else if(o)i.push(n.join(""));else i.push(qo(n));return r.address=i.join(""),r}function Qu(e){if(fE(e,":")<2)return{host:e,isIPV6:!1};let t=pE(e);if(!t.error){let{address:r,address:i}=t;if(t.zone)r+="%"+t.zone,i+="%25"+t.zone;return{host:r,isIPV6:!0,escapedHost:i}}else return{host:e,isIPV6:!1}}function fE(e,t){let r=0;for(let i=0;i<e.length;i++)if(e[i]===t)r++;return r}function mE(e){let t=e,r=[],i=-1,n=0;while(n=t.length){if(n===1)if(t===".")break;else if(t==="/"){r.push("/");break}else{r.push(t);break}else if(n===2){if(t[0]==="."){if(t[1]===".")break;else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."||t[1]==="/"){r.push("/");break}}}else if(n===3){if(t==="/.."){if(r.length!==0)r.pop();r.push("/");break}}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."){if(t[3]==="/"){if(t=t.slice(3),r.length!==0)r.pop();continue}}}}if((i=t.indexOf("/",1))===-1){r.push(t);break}else r.push(t.slice(0,i)),t=t.slice(i)}return r.join("")}function hE(e,t){let r=t!==!0?escape:unescape;if(e.scheme!==void 0)e.scheme=r(e.scheme);if(e.userinfo!==void 0)e.userinfo=r(e.userinfo);if(e.host!==void 0)e.host=r(e.host);if(e.path!==void 0)e.path=r(e.path);if(e.query!==void 0)e.query=r(e.query);if(e.fragment!==void 0)e.fragment=r(e.fragment);return e}function gE(e){let t=[];if(e.userinfo!==void 0)t.push(e.userinfo),t.push("@");if(e.host!==void 0){let r=unescape(e.host);if(!Ju(r)){let i=Qu(r);if(i.isIPV6===!0)r=`[${i.escapedHost}]`;else r=e.host}t.push(r)}if(typeof e.port==="number"||typeof e.port==="string")t.push(":"),t.push(String(e.port));return t.length?t.join(""):void 0}Yu.exports={nonSimpleDomain:dE,recomposeAuthority:gE,normalizeComponentEncoding:hE,removeDotSegments:mE,isIPv4:Ju,isUUID:cE,normalizeIPv6:Qu,stringArrayToHexStripped:qo}});var rp=P(function(yA,tp){var{isUUID:yE}=Mo(),_E=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,bE=["http","https","ws","wss","urn","urn:uuid"];function PE(e){return bE.indexOf(e)!==-1}function Uo(e){if(e.secure===!0)return!0;else if(e.secure===!1)return!1;else if(e.scheme)return e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S");else return!1}function Xu(e){if(!e.host)e.error=e.error||"HTTP URIs must have a host.";return e}function Zu(e){let t=String(e.scheme).toLowerCase()==="https";if(e.port===(t?443:80)||e.port==="")e.port=void 0;if(!e.path)e.path="/";return e}function vE(e){return e.secure=Uo(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function wE(e){if(e.port===(Uo(e)?443:80)||e.port==="")e.port=void 0;if(typeof e.secure==="boolean")e.scheme=e.secure?"wss":"ws",e.secure=void 0;if(e.resourceName){let[t,r]=e.resourceName.split("?");e.path=t&&t!=="/"?t:void 0,e.query=r,e.resourceName=void 0}return e.fragment=void 0,e}function $E(e,t){if(!e.path)return e.error="URN can not be parsed",e;let r=e.path.match(_E);if(r){let i=t.scheme||e.scheme||"urn";e.nid=r[1].toLowerCase(),e.nss=r[2];let n=`${i}:${t.nid||e.nid}`,s=Bo(n);if(e.path=void 0,s)e=s.parse(e,t)}else e.error=e.error||"URN can not be parsed.";return e}function EE(e,t){if(e.nid===void 0)throw Error("URN without nid cannot be serialized");let r=t.scheme||e.scheme||"urn",i=e.nid.toLowerCase(),n=`${r}:${t.nid||i}`,s=Bo(n);if(s)e=s.serialize(e,t);let o=e,a=e.nss;return o.path=`${i||t.nid}:${a}`,t.skipEscape=!0,o}function IE(e,t){let r=e;if(r.uuid=r.nss,r.nss=void 0,!t.tolerant&&(!r.uuid||!yE(r.uuid)))r.error=r.error||"UUID is not valid.";return r}function SE(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var ep={scheme:"http",domainHost:!0,parse:Xu,serialize:Zu},xE={scheme:"https",domainHost:ep.domainHost,parse:Xu,serialize:Zu},$n={scheme:"ws",domainHost:!0,parse:vE,serialize:wE},RE={scheme:"wss",domainHost:$n.domainHost,parse:$n.parse,serialize:$n.serialize},CE={scheme:"urn",parse:$E,serialize:EE,skipNormalize:!0},OE={scheme:"urn:uuid",parse:IE,serialize:SE,skipNormalize:!0},En={http:ep,https:xE,ws:$n,wss:RE,urn:CE,"urn:uuid":OE};Object.setPrototypeOf(En,null);function Bo(e){return e&&(En[e]||En[e.toLowerCase()])||void 0}tp.exports={wsIsSecure:Uo,SCHEMES:En,isValidSchemeName:PE,getSchemeHandler:Bo}});var sp=P(function(_A,Sn){var{normalizeIPv6:jE,removeDotSegments:di,recomposeAuthority:FE,normalizeComponentEncoding:In,isIPv4:TE,nonSimpleDomain:kE}=Mo(),{SCHEMES:AE,getSchemeHandler:ip}=rp();function DE(e,t){if(typeof e==="string")e=Ye(pt(e,t),t);else if(typeof e==="object")e=pt(Ye(e,t),t);return e}function NE(e,t,r){let i=r?Object.assign({scheme:"null"},r):{scheme:"null"},n=np(pt(e,i),pt(t,i),i,!0);return i.skipEscape=!0,Ye(n,i)}function np(e,t,r,i){let n={};if(!i)e=pt(Ye(e,r),r),t=pt(Ye(t,r),r);if(r=r||{},!r.tolerant&&t.scheme)n.scheme=t.scheme,n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=di(t.path||""),n.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=di(t.path||""),n.query=t.query;else{if(!t.path)if(n.path=e.path,t.query!==void 0)n.query=t.query;else n.query=e.query;else{if(t.path[0]==="/")n.path=di(t.path);else{if((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path)n.path="/"+t.path;else if(!e.path)n.path=t.path;else n.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path;n.path=di(n.path)}n.query=t.query}n.userinfo=e.userinfo,n.host=e.host,n.port=e.port}n.scheme=e.scheme}return n.fragment=t.fragment,n}function LE(e,t,r){if(typeof e==="string")e=unescape(e),e=Ye(In(pt(e,r),!0),{...r,skipEscape:!0});else if(typeof e==="object")e=Ye(In(e,!0),{...r,skipEscape:!0});if(typeof t==="string")t=unescape(t),t=Ye(In(pt(t,r),!0),{...r,skipEscape:!0});else if(typeof t==="object")t=Ye(In(t,!0),{...r,skipEscape:!0});return e.toLowerCase()===t.toLowerCase()}function Ye(e,t){let r={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},i=Object.assign({},t),n=[],s=ip(i.scheme||r.scheme);if(s&&s.serialize)s.serialize(r,i);if(r.path!==void 0)if(!i.skipEscape){if(r.path=escape(r.path),r.scheme!==void 0)r.path=r.path.split("%3A").join(":")}else r.path=unescape(r.path);if(i.reference!=="suffix"&&r.scheme)n.push(r.scheme,":");let o=FE(r);if(o!==void 0){if(i.reference!=="suffix")n.push("//");if(n.push(o),r.path&&r.path[0]!=="/")n.push("/")}if(r.path!==void 0){let a=r.path;if(!i.absolutePath&&(!s||!s.absolutePath))a=di(a);if(o===void 0&&a[0]==="/"&&a[1]==="/")a="/%2F"+a.slice(2);n.push(a)}if(r.query!==void 0)n.push("?",r.query);if(r.fragment!==void 0)n.push("#",r.fragment);return n.join("")}var qE=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function pt(e,t){let r=Object.assign({},t),i={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},n=!1;if(r.reference==="suffix")if(r.scheme)e=r.scheme+":"+e;else e="//"+e;let s=e.match(qE);if(s){if(i.scheme=s[1],i.userinfo=s[3],i.host=s[4],i.port=parseInt(s[5],10),i.path=s[6]||"",i.query=s[7],i.fragment=s[8],isNaN(i.port))i.port=s[5];if(i.host)if(TE(i.host)===!1){let d=jE(i.host);i.host=d.host.toLowerCase(),n=d.isIPV6}else n=!0;if(i.scheme===void 0&&i.userinfo===void 0&&i.host===void 0&&i.port===void 0&&i.query===void 0&&!i.path)i.reference="same-document";else if(i.scheme===void 0)i.reference="relative";else if(i.fragment===void 0)i.reference="absolute";else i.reference="uri";if(r.reference&&r.reference!=="suffix"&&r.reference!==i.reference)i.error=i.error||"URI is not a "+r.reference+" reference.";let o=ip(r.scheme||i.scheme);if(!r.unicodeSupport&&(!o||!o.unicodeSupport)){if(i.host&&(r.domainHost||o&&o.domainHost)&&n===!1&&kE(i.host))try{i.host=URL.domainToASCII(i.host.toLowerCase())}catch(a){i.error=i.error||"Host's domain name can not be converted to ASCII: "+a}}if(!o||o&&!o.skipNormalize){if(e.indexOf("%")!==-1){if(i.scheme!==void 0)i.scheme=unescape(i.scheme);if(i.host!==void 0)i.host=unescape(i.host)}if(i.path)i.path=escape(unescape(i.path));if(i.fragment)i.fragment=encodeURI(decodeURIComponent(i.fragment))}if(o&&o.parse)o.parse(i,r)}else i.error=i.error||"URI can not be parsed.";return i}var Go={SCHEMES:AE,normalize:DE,resolve:NE,resolveComponent:np,equal:LE,serialize:Ye,parse:pt};Sn.exports=Go;Sn.exports.default=Go;Sn.exports.fastUri=Go});var ap=P(function(Vo){Object.defineProperty(Vo,"__esModule",{value:!0});var op=sp();op.code='require("ajv/dist/runtime/uri").default';Vo.default=op});var Wo=P(function(ie){Object.defineProperty(ie,"__esModule",{value:!0});ie.CodeGen=ie.Name=ie.nil=ie.stringify=ie.str=ie._=ie.KeywordCxt=void 0;var ME=hr();Object.defineProperty(ie,"KeywordCxt",{enumerable:!0,get:function(){return ME.KeywordCxt}});var yr=j();Object.defineProperty(ie,"_",{enumerable:!0,get:function(){return yr._}});Object.defineProperty(ie,"str",{enumerable:!0,get:function(){return yr.str}});Object.defineProperty(ie,"stringify",{enumerable:!0,get:function(){return yr.stringify}});Object.defineProperty(ie,"nil",{enumerable:!0,get:function(){return yr.nil}});Object.defineProperty(ie,"Name",{enumerable:!0,get:function(){return yr.Name}});Object.defineProperty(ie,"CodeGen",{enumerable:!0,get:function(){return yr.CodeGen}});var UE=ai(),pp=gr(),BE=Po(),ui=ci(),GE=j(),pi=ni(),xn=ii(),zo=D(),lp=Wu(),VE=ap(),fp=(e,t)=>new RegExp(e,t);fp.code="new RegExp";var KE=["removeAdditional","useDefaults","coerceTypes"],zE=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),WE={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},HE={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},cp=200;function JE(e){var t,r,i,n,s,o,a,d,u,l,c,p,f,m,h,g,_,b,v,w,I,E,x,T,R;let V=e.strict,J=(t=e.code)===null||t===void 0?void 0:t.optimize,Z=J===!0||J===void 0?1:J||0,Re=(i=(r=e.code)===null||r===void 0?void 0:r.regExp)!==null&&i!==void 0?i:fp,Hr=(n=e.uriResolver)!==null&&n!==void 0?n:VE.default;return{strictSchema:(o=(s=e.strictSchema)!==null&&s!==void 0?s:V)!==null&&o!==void 0?o:!0,strictNumbers:(d=(a=e.strictNumbers)!==null&&a!==void 0?a:V)!==null&&d!==void 0?d:!0,strictTypes:(l=(u=e.strictTypes)!==null&&u!==void 0?u:V)!==null&&l!==void 0?l:"log",strictTuples:(p=(c=e.strictTuples)!==null&&c!==void 0?c:V)!==null&&p!==void 0?p:"log",strictRequired:(m=(f=e.strictRequired)!==null&&f!==void 0?f:V)!==null&&m!==void 0?m:!1,code:e.code?{...e.code,optimize:Z,regExp:Re}:{optimize:Z,regExp:Re},loopRequired:(h=e.loopRequired)!==null&&h!==void 0?h:cp,loopEnum:(g=e.loopEnum)!==null&&g!==void 0?g:cp,meta:(_=e.meta)!==null&&_!==void 0?_:!0,messages:(b=e.messages)!==null&&b!==void 0?b:!0,inlineRefs:(v=e.inlineRefs)!==null&&v!==void 0?v:!0,schemaId:(w=e.schemaId)!==null&&w!==void 0?w:"$id",addUsedSchema:(I=e.addUsedSchema)!==null&&I!==void 0?I:!0,validateSchema:(E=e.validateSchema)!==null&&E!==void 0?E:!0,validateFormats:(x=e.validateFormats)!==null&&x!==void 0?x:!0,unicodeRegExp:(T=e.unicodeRegExp)!==null&&T!==void 0?T:!0,int32range:(R=e.int32range)!==null&&R!==void 0?R:!0,uriResolver:Hr}}class Rn{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...JE(e)};let{es5:t,lines:r}=this.opts.code;this.scope=new GE.ValueScope({scope:{},prefixes:zE,es5:t,lines:r}),this.logger=tI(e.logger);let i=e.validateFormats;if(e.validateFormats=!1,this.RULES=(0,BE.getRules)(),dp.call(this,WE,e,"NOT SUPPORTED"),dp.call(this,HE,e,"DEPRECATED","warn"),this._metaOpts=ZE.call(this),e.formats)YE.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords)XE.call(this,e.keywords);if(typeof e.meta=="object")this.addMetaSchema(e.meta);QE.call(this),e.validateFormats=i}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:t,schemaId:r}=this.opts,i=lp;if(r==="id")i={...lp},i.id=i.$id,delete i.$id;if(t&&e)this.addMetaSchema(i,i[r],!1)}defaultMeta(){let{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[t]||e:void 0}validate(e,t){let r;if(typeof e=="string"){if(r=this.getSchema(e),!r)throw Error(`no schema with key or ref "${e}"`)}else r=this.compile(e);let i=r(t);if(!("$async"in r))this.errors=r.errors;return i}compile(e,t){let r=this._addSchema(e,t);return r.validate||this._compileSchemaEnv(r)}compileAsync(e,t){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:r}=this.opts;return i.call(this,e,t);async function i(u,l){await n.call(this,u.$schema);let c=this._addSchema(u,l);return c.validate||s.call(this,c)}async function n(u){if(u&&!this.getSchema(u))await i.call(this,{$ref:u},!0)}async function s(u){try{return this._compileSchemaEnv(u)}catch(l){if(!(l instanceof pp.default))throw l;return o.call(this,l),await a.call(this,l.missingSchema),s.call(this,u)}}function o({missingSchema:u,missingRef:l}){if(this.refs[u])throw Error(`AnySchema ${u} is loaded but ${l} cannot be resolved`)}async function a(u){let l=await d.call(this,u);if(!this.refs[u])await n.call(this,l.$schema);if(!this.refs[u])this.addSchema(l,u,t)}async function d(u){let l=this._loading[u];if(l)return l;try{return await(this._loading[u]=r(u))}finally{delete this._loading[u]}}}addSchema(e,t,r,i=this.opts.validateSchema){if(Array.isArray(e)){for(let s of e)this.addSchema(s,void 0,r,i);return this}let n;if(typeof e==="object"){let{schemaId:s}=this.opts;if(n=e[s],n!==void 0&&typeof n!="string")throw Error(`schema ${s} must be string`)}return t=(0,pi.normalizeId)(t||n),this._checkUnique(t),this.schemas[t]=this._addSchema(e,r,t,i,!0),this}addMetaSchema(e,t,r=this.opts.validateSchema){return this.addSchema(e,t,!0,r),this}validateSchema(e,t){if(typeof e=="boolean")return!0;let r;if(r=e.$schema,r!==void 0&&typeof r!="string")throw Error("$schema must be a string");if(r=r||this.opts.defaultMeta||this.defaultMeta(),!r)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let i=this.validate(r,e);if(!i&&t){let n="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(n);else throw Error(n)}return i}getSchema(e){let t;while(typeof(t=up.call(this,e))=="string")e=t;if(t===void 0){let{schemaId:r}=this.opts,i=new ui.SchemaEnv({schema:{},schemaId:r});if(t=ui.resolveSchema.call(this,i,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let t=up.call(this,e);if(typeof t=="object")this._cache.delete(t.schema);return delete this.schemas[e],delete this.refs[e],this}case"object":{let t=e;this._cache.delete(t);let r=e[this.opts.schemaId];if(r)r=(0,pi.normalizeId)(r),delete this.schemas[r],delete this.refs[r];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let t of e)this.addKeyword(t);return this}addKeyword(e,t){let r;if(typeof e=="string"){if(r=e,typeof t=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=r}else if(typeof e=="object"&&t===void 0){if(t=e,r=t.keyword,Array.isArray(r)&&!r.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(iI.call(this,r,t),!t)return(0,zo.eachItem)(r,(n)=>Ko.call(this,n)),this;sI.call(this,t);let i={...t,type:(0,xn.getJSONTypes)(t.type),schemaType:(0,xn.getJSONTypes)(t.schemaType)};return(0,zo.eachItem)(r,i.type.length===0?(n)=>Ko.call(this,n,i):(n)=>i.type.forEach((s)=>Ko.call(this,n,i,s))),this}getKeyword(e){let t=this.RULES.all[e];return typeof t=="object"?t.definition:!!t}removeKeyword(e){let{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(let r of t.rules){let i=r.rules.findIndex((n)=>n.keyword===e);if(i>=0)r.rules.splice(i,1)}return this}addFormat(e,t){if(typeof t=="string")t=new RegExp(t);return this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:r="data"}={}){if(!e||e.length===0)return"No errors";return e.map((i)=>`${r}${i.instancePath} ${i.message}`).reduce((i,n)=>i+t+n)}$dataMetaSchema(e,t){let r=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let i of t){let n=i.split("/").slice(1),s=e;for(let o of n)s=s[o];for(let o in r){let a=r[o];if(typeof a!="object")continue;let{$data:d}=a.definition,u=s[o];if(d&&u)s[o]=mp(u)}}return e}_removeAllSchemas(e,t){for(let r in e){let i=e[r];if(!t||t.test(r)){if(typeof i=="string")delete e[r];else if(i&&!i.meta)this._cache.delete(i.schema),delete e[r]}}}_addSchema(e,t,r,i=this.opts.validateSchema,n=this.opts.addUsedSchema){let s,{schemaId:o}=this.opts;if(typeof e=="object")s=e[o];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof e!="boolean")throw Error("schema must be object or boolean");let a=this._cache.get(e);if(a!==void 0)return a;r=(0,pi.normalizeId)(s||r);let d=pi.getSchemaRefs.call(this,e,r);if(a=new ui.SchemaEnv({schema:e,schemaId:o,meta:t,baseId:r,localRefs:d}),this._cache.set(a.schema,a),n&&!r.startsWith("#")){if(r)this._checkUnique(r);this.refs[r]=a}if(i)this.validateSchema(e,!0);return a}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta)this._compileMetaSchema(e);else ui.compileSchema.call(this,e);if(!e.validate)throw Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let t=this.opts;this.opts=this._metaOpts;try{ui.compileSchema.call(this,e)}finally{this.opts=t}}}Rn.ValidationError=UE.default;Rn.MissingRefError=pp.default;ie.default=Rn;function dp(e,t,r,i="error"){for(let n in e){let s=n;if(s in t)this.logger[i](`${r}: option ${n}. ${e[s]}`)}}function up(e){return e=(0,pi.normalizeId)(e),this.schemas[e]||this.refs[e]}function QE(){let e=this.opts.schemas;if(!e)return;if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function YE(){for(let e in this.opts.formats){let t=this.opts.formats[e];if(t)this.addFormat(e,t)}}function XE(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let r=e[t];if(!r.keyword)r.keyword=t;this.addKeyword(r)}}function ZE(){let e={...this.opts};for(let t of KE)delete e[t];return e}var eI={log(){},warn(){},error(){}};function tI(e){if(e===!1)return eI;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw Error("logger must implement log, warn and error methods")}var rI=/^[a-z_$][a-z0-9_$:-]*$/i;function iI(e,t){let{RULES:r}=this;if((0,zo.eachItem)(e,(i)=>{if(r.keywords[i])throw Error(`Keyword ${i} is already defined`);if(!rI.test(i))throw Error(`Keyword ${i} has invalid name`)}),!t)return;if(t.$data&&!(("code"in t)||("validate"in t)))throw Error('$data keyword must have "code" or "validate" function')}function Ko(e,t,r){var i;let n=t===null||t===void 0?void 0:t.post;if(r&&n)throw Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,o=n?s.post:s.rules.find(({type:d})=>d===r);if(!o)o={type:r,rules:[]},s.rules.push(o);if(s.keywords[e]=!0,!t)return;let a={keyword:e,definition:{...t,type:(0,xn.getJSONTypes)(t.type),schemaType:(0,xn.getJSONTypes)(t.schemaType)}};if(t.before)nI.call(this,o,a,t.before);else o.rules.push(a);s.all[e]=a,(i=t.implements)===null||i===void 0||i.forEach((d)=>this.addKeyword(d))}function nI(e,t,r){let i=e.rules.findIndex((n)=>n.keyword===r);if(i>=0)e.rules.splice(i,0,t);else e.rules.push(t),this.logger.warn(`rule ${r} is not defined`)}function sI(e){let{metaSchema:t}=e;if(t===void 0)return;if(e.$data&&this.opts.$data)t=mp(t);e.validateSchema=this.compile(t,!0)}var oI={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function mp(e){return{anyOf:[e,oI]}}});var hp=P(function(Ho){Object.defineProperty(Ho,"__esModule",{value:!0});var aI={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};Ho.default=aI});var jn=P(function(qt){Object.defineProperty(qt,"__esModule",{value:!0});qt.callRef=qt.getValidate=void 0;var lI=gr(),gp=je(),we=j(),_r=Oe(),yp=ci(),Cn=D(),cI={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:r,it:i}=e,{baseId:n,schemaEnv:s,validateName:o,opts:a,self:d}=i,{root:u}=s;if((r==="#"||r==="#/")&&n===u.baseId)return c();let l=yp.resolveRef.call(d,u,n,r);if(l===void 0)throw new lI.default(i.opts.uriResolver,n,r);if(l instanceof yp.SchemaEnv)return p(l);return f(l);function c(){if(s===u)return On(e,o,s,s.$async);let m=t.scopeValue("root",{ref:u});return On(e,we._`${m}.validate`,u,u.$async)}function p(m){let h=_p(e,m);On(e,h,m,m.$async)}function f(m){let h=t.scopeValue("schema",a.code.source===!0?{ref:m,code:(0,we.stringify)(m)}:{ref:m}),g=t.name("valid"),_=e.subschema({schema:m,dataTypes:[],schemaPath:we.nil,topSchemaRef:h,errSchemaPath:r},g);e.mergeEvaluated(_),e.ok(g)}}};function _p(e,t){let{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):we._`${r.scopeValue("wrapper",{ref:t})}.validate`}qt.getValidate=_p;function On(e,t,r,i){let{gen:n,it:s}=e,{allErrors:o,schemaEnv:a,opts:d}=s,u=d.passContext?_r.default.this:we.nil;if(i)l();else c();function l(){if(!a.$async)throw Error("async schema referenced by sync schema");let m=n.let("valid");n.try(()=>{if(n.code(we._`await ${(0,gp.callValidateCode)(e,t,u)}`),f(t),!o)n.assign(m,!0)},(h)=>{if(n.if(we._`!(${h} instanceof ${s.ValidationError})`,()=>n.throw(h)),p(h),!o)n.assign(m,!1)}),e.ok(m)}function c(){e.result((0,gp.callValidateCode)(e,t,u),()=>f(t),()=>p(t))}function p(m){let h=we._`${m}.errors`;n.assign(_r.default.vErrors,we._`${_r.default.vErrors} === null ? ${h} : ${_r.default.vErrors}.concat(${h})`),n.assign(_r.default.errors,we._`${_r.default.vErrors}.length`)}function f(m){var h;if(!s.opts.unevaluated)return;let g=(h=r===null||r===void 0?void 0:r.validate)===null||h===void 0?void 0:h.evaluated;if(s.props!==!0)if(g&&!g.dynamicProps){if(g.props!==void 0)s.props=Cn.mergeEvaluated.props(n,g.props,s.props)}else{let _=n.var("props",we._`${m}.evaluated.props`);s.props=Cn.mergeEvaluated.props(n,_,s.props,we.Name)}if(s.items!==!0)if(g&&!g.dynamicItems){if(g.items!==void 0)s.items=Cn.mergeEvaluated.items(n,g.items,s.items)}else{let _=n.var("items",we._`${m}.evaluated.items`);s.items=Cn.mergeEvaluated.items(n,_,s.items,we.Name)}}}qt.callRef=On;qt.default=cI});var Qo=P(function(Jo){Object.defineProperty(Jo,"__esModule",{value:!0});var dI=hp(),uI=jn(),pI=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",dI.default,uI.default];Jo.default=pI});var bp=P(function(Yo){Object.defineProperty(Yo,"__esModule",{value:!0});var Fn=j(),Rt=Fn.operators,Tn={maximum:{okStr:"<=",ok:Rt.LTE,fail:Rt.GT},minimum:{okStr:">=",ok:Rt.GTE,fail:Rt.LT},exclusiveMaximum:{okStr:"<",ok:Rt.LT,fail:Rt.GTE},exclusiveMinimum:{okStr:">",ok:Rt.GT,fail:Rt.LTE}},fI={message:({keyword:e,schemaCode:t})=>Fn.str`must be ${Tn[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>Fn._`{comparison: ${Tn[e].okStr}, limit: ${t}}`},mI={keyword:Object.keys(Tn),type:"number",schemaType:"number",$data:!0,error:fI,code(e){let{keyword:t,data:r,schemaCode:i}=e;e.fail$data(Fn._`${r} ${Tn[t].fail} ${i} || isNaN(${r})`)}};Yo.default=mI});var Pp=P(function(Xo){Object.defineProperty(Xo,"__esModule",{value:!0});var fi=j(),hI={message:({schemaCode:e})=>fi.str`must be multiple of ${e}`,params:({schemaCode:e})=>fi._`{multipleOf: ${e}}`},gI={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:hI,code(e){let{gen:t,data:r,schemaCode:i,it:n}=e,s=n.opts.multipleOfPrecision,o=t.let("res"),a=s?fi._`Math.abs(Math.round(${o}) - ${o}) > 1e-${s}`:fi._`${o} !== parseInt(${o})`;e.fail$data(fi._`(${i} === 0 || (${o} = ${r}/${i}, ${a}))`)}};Xo.default=gI});var wp=P(function(Zo){Object.defineProperty(Zo,"__esModule",{value:!0});function vp(e){let t=e.length,r=0,i=0,n;while(i<t)if(r++,n=e.charCodeAt(i++),n>=55296&&n<=56319&&i<t){if(n=e.charCodeAt(i),(n&64512)===56320)i++}return r}Zo.default=vp;vp.code='require("ajv/dist/runtime/ucs2length").default'});var $p=P(function(ea){Object.defineProperty(ea,"__esModule",{value:!0});var Mt=j(),yI=D(),_I=wp(),bI={message({keyword:e,schemaCode:t}){let r=e==="maxLength"?"more":"fewer";return Mt.str`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>Mt._`{limit: ${e}}`},PI={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:bI,code(e){let{keyword:t,data:r,schemaCode:i,it:n}=e,s=t==="maxLength"?Mt.operators.GT:Mt.operators.LT,o=n.opts.unicode===!1?Mt._`${r}.length`:Mt._`${(0,yI.useFunc)(e.gen,_I.default)}(${r})`;e.fail$data(Mt._`${o} ${s} ${i}`)}};ea.default=PI});var Ep=P(function(ta){Object.defineProperty(ta,"__esModule",{value:!0});var vI=je(),kn=j(),wI={message:({schemaCode:e})=>kn.str`must match pattern "${e}"`,params:({schemaCode:e})=>kn._`{pattern: ${e}}`},$I={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:wI,code(e){let{data:t,$data:r,schema:i,schemaCode:n,it:s}=e,o=s.opts.unicodeRegExp?"u":"",a=r?kn._`(new RegExp(${n}, ${o}))`:(0,vI.usePattern)(e,i);e.fail$data(kn._`!${a}.test(${t})`)}};ta.default=$I});var Ip=P(function(ra){Object.defineProperty(ra,"__esModule",{value:!0});var mi=j(),EI={message({keyword:e,schemaCode:t}){let r=e==="maxProperties"?"more":"fewer";return mi.str`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>mi._`{limit: ${e}}`},II={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:EI,code(e){let{keyword:t,data:r,schemaCode:i}=e,n=t==="maxProperties"?mi.operators.GT:mi.operators.LT;e.fail$data(mi._`Object.keys(${r}).length ${n} ${i}`)}};ra.default=II});var Sp=P(function(ia){Object.defineProperty(ia,"__esModule",{value:!0});var hi=je(),gi=j(),SI=D(),xI={message:({params:{missingProperty:e}})=>gi.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>gi._`{missingProperty: ${e}}`},RI={keyword:"required",type:"object",schemaType:"array",$data:!0,error:xI,code(e){let{gen:t,schema:r,schemaCode:i,data:n,$data:s,it:o}=e,{opts:a}=o;if(!s&&r.length===0)return;let d=r.length>=a.loopRequired;if(o.allErrors)u();else l();if(a.strictRequired){let f=e.parentSchema.properties,{definedProperties:m}=e.it;for(let h of r)if((f===null||f===void 0?void 0:f[h])===void 0&&!m.has(h)){let g=o.schemaEnv.baseId+o.errSchemaPath,_=`required property "${h}" is not defined at "${g}" (strictRequired)`;(0,SI.checkStrictMode)(o,_,o.opts.strictRequired)}}function u(){if(d||s)e.block$data(gi.nil,c);else for(let f of r)(0,hi.checkReportMissingProp)(e,f)}function l(){let f=t.let("missing");if(d||s){let m=t.let("valid",!0);e.block$data(m,()=>p(f,m)),e.ok(m)}else t.if((0,hi.checkMissingProp)(e,r,f)),(0,hi.reportMissingProp)(e,f),t.else()}function c(){t.forOf("prop",i,(f)=>{e.setParams({missingProperty:f}),t.if((0,hi.noPropertyInData)(t,n,f,a.ownProperties),()=>e.error())})}function p(f,m){e.setParams({missingProperty:f}),t.forOf(f,i,()=>{t.assign(m,(0,hi.propertyInData)(t,n,f,a.ownProperties)),t.if((0,gi.not)(m),()=>{e.error(),t.break()})},gi.nil)}}};ia.default=RI});var xp=P(function(na){Object.defineProperty(na,"__esModule",{value:!0});var yi=j(),CI={message({keyword:e,schemaCode:t}){let r=e==="maxItems"?"more":"fewer";return yi.str`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>yi._`{limit: ${e}}`},OI={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:CI,code(e){let{keyword:t,data:r,schemaCode:i}=e,n=t==="maxItems"?yi.operators.GT:yi.operators.LT;e.fail$data(yi._`${r}.length ${n} ${i}`)}};na.default=OI});var An=P(function(sa){Object.defineProperty(sa,"__esModule",{value:!0});var Rp=Ro();Rp.code='require("ajv/dist/runtime/equal").default';sa.default=Rp});var Cp=P(function(aa){Object.defineProperty(aa,"__esModule",{value:!0});var oa=ii(),ne=j(),jI=D(),FI=An(),TI={message:({params:{i:e,j:t}})=>ne.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>ne._`{i: ${e}, j: ${t}}`},kI={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:TI,code(e){let{gen:t,data:r,$data:i,schema:n,parentSchema:s,schemaCode:o,it:a}=e;if(!i&&!n)return;let d=t.let("valid"),u=s.items?(0,oa.getSchemaTypes)(s.items):[];e.block$data(d,l,ne._`${o} === false`),e.ok(d);function l(){let m=t.let("i",ne._`${r}.length`),h=t.let("j");e.setParams({i:m,j:h}),t.assign(d,!0),t.if(ne._`${m} > 1`,()=>(c()?p:f)(m,h))}function c(){return u.length>0&&!u.some((m)=>m==="object"||m==="array")}function p(m,h){let g=t.name("item"),_=(0,oa.checkDataTypes)(u,g,a.opts.strictNumbers,oa.DataType.Wrong),b=t.const("indices",ne._`{}`);t.for(ne._`;${m}--;`,()=>{if(t.let(g,ne._`${r}[${m}]`),t.if(_,ne._`continue`),u.length>1)t.if(ne._`typeof ${g} == "string"`,ne._`${g} += "_"`);t.if(ne._`typeof ${b}[${g}] == "number"`,()=>{t.assign(h,ne._`${b}[${g}]`),e.error(),t.assign(d,!1).break()}).code(ne._`${b}[${g}] = ${m}`)})}function f(m,h){let g=(0,jI.useFunc)(t,FI.default),_=t.name("outer");t.label(_).for(ne._`;${m}--;`,()=>t.for(ne._`${h} = ${m}; ${h}--;`,()=>t.if(ne._`${g}(${r}[${m}], ${r}[${h}])`,()=>{e.error(),t.assign(d,!1).break(_)})))}}};aa.default=kI});var Op=P(function(ca){Object.defineProperty(ca,"__esModule",{value:!0});var la=j(),AI=D(),DI=An(),NI={message:"must be equal to constant",params:({schemaCode:e})=>la._`{allowedValue: ${e}}`},LI={keyword:"const",$data:!0,error:NI,code(e){let{gen:t,data:r,$data:i,schemaCode:n,schema:s}=e;if(i||s&&typeof s=="object")e.fail$data(la._`!${(0,AI.useFunc)(t,DI.default)}(${r}, ${n})`);else e.fail(la._`${s} !== ${r}`)}};ca.default=LI});var jp=P(function(da){Object.defineProperty(da,"__esModule",{value:!0});var _i=j(),qI=D(),MI=An(),UI={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>_i._`{allowedValues: ${e}}`},BI={keyword:"enum",schemaType:"array",$data:!0,error:UI,code(e){let{gen:t,data:r,$data:i,schema:n,schemaCode:s,it:o}=e;if(!i&&n.length===0)throw Error("enum must have non-empty array");let a=n.length>=o.opts.loopEnum,d,u=()=>d!==null&&d!==void 0?d:d=(0,qI.useFunc)(t,MI.default),l;if(a||i)l=t.let("valid"),e.block$data(l,c);else{if(!Array.isArray(n))throw Error("ajv implementation error");let f=t.const("vSchema",s);l=(0,_i.or)(...n.map((m,h)=>p(f,h)))}e.pass(l);function c(){t.assign(l,!1),t.forOf("v",s,(f)=>t.if(_i._`${u()}(${r}, ${f})`,()=>t.assign(l,!0).break()))}function p(f,m){let h=n[m];return typeof h==="object"&&h!==null?_i._`${u()}(${r}, ${f}[${m}])`:_i._`${r} === ${h}`}}};da.default=BI});var pa=P(function(ua){Object.defineProperty(ua,"__esModule",{value:!0});var GI=bp(),VI=Pp(),KI=$p(),zI=Ep(),WI=Ip(),HI=Sp(),JI=xp(),QI=Cp(),YI=Op(),XI=jp(),ZI=[GI.default,VI.default,KI.default,zI.default,WI.default,HI.default,JI.default,QI.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},YI.default,XI.default];ua.default=ZI});var ma=P(function(bi){Object.defineProperty(bi,"__esModule",{value:!0});bi.validateAdditionalItems=void 0;var Ut=j(),fa=D(),eS={message:({params:{len:e}})=>Ut.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Ut._`{limit: ${e}}`},tS={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:eS,code(e){let{parentSchema:t,it:r}=e,{items:i}=t;if(!Array.isArray(i)){(0,fa.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}Fp(e,i)}};function Fp(e,t){let{gen:r,schema:i,data:n,keyword:s,it:o}=e;o.items=!0;let a=r.const("len",Ut._`${n}.length`);if(i===!1)e.setParams({len:t.length}),e.pass(Ut._`${a} <= ${t.length}`);else if(typeof i=="object"&&!(0,fa.alwaysValidSchema)(o,i)){let u=r.var("valid",Ut._`${a} <= ${t.length}`);r.if((0,Ut.not)(u),()=>d(u)),e.ok(u)}function d(u){r.forRange("i",t.length,a,(l)=>{if(e.subschema({keyword:s,dataProp:l,dataPropType:fa.Type.Num},u),!o.allErrors)r.if((0,Ut.not)(u),()=>r.break())})}}bi.validateAdditionalItems=Fp;bi.default=tS});var ha=P(function(Pi){Object.defineProperty(Pi,"__esModule",{value:!0});Pi.validateTuple=void 0;var Tp=j(),Dn=D(),rS=je(),iS={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:r}=e;if(Array.isArray(t))return kp(e,"additionalItems",t);if(r.items=!0,(0,Dn.alwaysValidSchema)(r,t))return;e.ok((0,rS.validateArray)(e))}};function kp(e,t,r=e.schema){let{gen:i,parentSchema:n,data:s,keyword:o,it:a}=e;if(l(n),a.opts.unevaluated&&r.length&&a.items!==!0)a.items=Dn.mergeEvaluated.items(i,r.length,a.items);let d=i.name("valid"),u=i.const("len",Tp._`${s}.length`);r.forEach((c,p)=>{if((0,Dn.alwaysValidSchema)(a,c))return;i.if(Tp._`${u} > ${p}`,()=>e.subschema({keyword:o,schemaProp:p,dataProp:p},d)),e.ok(d)});function l(c){let{opts:p,errSchemaPath:f}=a,m=r.length,h=m===c.minItems&&(m===c.maxItems||c[t]===!1);if(p.strictTuples&&!h){let g=`"${o}" is ${m}-tuple, but minItems or maxItems/${t} are not specified or different at path "${f}"`;(0,Dn.checkStrictMode)(a,g,p.strictTuples)}}}Pi.validateTuple=kp;Pi.default=iS});var Ap=P(function(ga){Object.defineProperty(ga,"__esModule",{value:!0});var nS=ha(),sS={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(e)=>(0,nS.validateTuple)(e,"items")};ga.default=sS});var Np=P(function(ya){Object.defineProperty(ya,"__esModule",{value:!0});var Dp=j(),oS=D(),aS=je(),lS=ma(),cS={message:({params:{len:e}})=>Dp.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Dp._`{limit: ${e}}`},dS={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:cS,code(e){let{schema:t,parentSchema:r,it:i}=e,{prefixItems:n}=r;if(i.items=!0,(0,oS.alwaysValidSchema)(i,t))return;if(n)(0,lS.validateAdditionalItems)(e,n);else e.ok((0,aS.validateArray)(e))}};ya.default=dS});var Lp=P(function(_a){Object.defineProperty(_a,"__esModule",{value:!0});var Te=j(),Nn=D(),uS={message:({params:{min:e,max:t}})=>t===void 0?Te.str`must contain at least ${e} valid item(s)`:Te.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?Te._`{minContains: ${e}}`:Te._`{minContains: ${e}, maxContains: ${t}}`},pS={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:uS,code(e){let{gen:t,schema:r,parentSchema:i,data:n,it:s}=e,o,a,{minContains:d,maxContains:u}=i;if(s.opts.next)o=d===void 0?1:d,a=u;else o=1;let l=t.const("len",Te._`${n}.length`);if(e.setParams({min:o,max:a}),a===void 0&&o===0){(0,Nn.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(a!==void 0&&o>a){(0,Nn.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,Nn.alwaysValidSchema)(s,r)){let h=Te._`${l} >= ${o}`;if(a!==void 0)h=Te._`${h} && ${l} <= ${a}`;e.pass(h);return}s.items=!0;let c=t.name("valid");if(a===void 0&&o===1)f(c,()=>t.if(c,()=>t.break()));else if(o===0){if(t.let(c,!0),a!==void 0)t.if(Te._`${n}.length > 0`,p)}else t.let(c,!1),p();e.result(c,()=>e.reset());function p(){let h=t.name("_valid"),g=t.let("count",0);f(h,()=>t.if(h,()=>m(g)))}function f(h,g){t.forRange("i",0,l,(_)=>{e.subschema({keyword:"contains",dataProp:_,dataPropType:Nn.Type.Num,compositeRule:!0},h),g()})}function m(h){if(t.code(Te._`${h}++`),a===void 0)t.if(Te._`${h} >= ${o}`,()=>t.assign(c,!0).break());else if(t.if(Te._`${h} > ${a}`,()=>t.assign(c,!1).break()),o===1)t.assign(c,!0);else t.if(Te._`${h} >= ${o}`,()=>t.assign(c,!0))}}};_a.default=pS});var Ln=P(function(Xe){Object.defineProperty(Xe,"__esModule",{value:!0});Xe.validateSchemaDeps=Xe.validatePropertyDeps=Xe.error=void 0;var ba=j(),fS=D(),vi=je();Xe.error={message:({params:{property:e,depsCount:t,deps:r}})=>{let i=t===1?"property":"properties";return ba.str`must have ${i} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:i}})=>ba._`{property: ${e},
|
|
8
|
-
missingProperty: ${
|
|
3
|
+
(function(exports, require, module, __filename, __dirname) {var gW=Object.create;var{getPrototypeOf:aW,defineProperty:lr,getOwnPropertyNames:lW}=Object;var IW=Object.prototype.hasOwnProperty;function dW(e){return this[e]}var cW,CW,be=(e,t,i)=>{var n=e!=null&&typeof e==="object";if(n){var s=t?cW??=new WeakMap:CW??=new WeakMap,o=s.get(e);if(o)return o}i=e!=null?gW(aW(e)):{};let r=t||!e||!e.__esModule?lr(i,"default",{value:e,enumerable:!0}):i;if(e&&typeof e==="object"||typeof e==="function"){for(let g of lW(e))if(!IW.call(r,g))lr(r,g,{get:dW.bind(e,g),enumerable:!0})}if(n)s.set(e,r);return r};var f=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var uW=(e)=>e;function mW(e,t){this[e]=uW.bind(null,t)}var pW=(e,t)=>{for(var i in t)lr(e,i,{get:t[i],enumerable:!0,configurable:!0,set:mW.bind(t,i)})};var dn=f(function(J){Object.defineProperty(J,"__esModule",{value:!0});J.regexpCode=J.getEsmExportName=J.getProperty=J.safeStringify=J.stringify=J.strConcat=J.addCodeArg=J.str=J._=J.nil=J._Code=J.Name=J.IDENTIFIER=J._CodeOrName=void 0;class ys{}J._CodeOrName=ys;J.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class mi extends ys{constructor(e){super();if(!J.IDENTIFIER.test(e))throw Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}J.Name=mi;class xe extends ys{constructor(e){super();this._items=typeof e==="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((t,i)=>`${t}${i}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((t,i)=>{if(i instanceof mi)t[i.str]=(t[i.str]||0)+1;return t},{})}}J._Code=xe;J.nil=new xe("");function Vd(e,...t){let i=[e[0]],n=0;while(n<t.length)Fr(i,t[n]),i.push(e[++n]);return new xe(i)}J._=Vd;var wr=new xe("+");function Bd(e,...t){let i=[In(e[0])],n=0;while(n<t.length)i.push(wr),Fr(i,t[n]),i.push(wr,In(e[++n]));return NV(i),new xe(i)}J.str=Bd;function Fr(e,t){if(t instanceof xe)e.push(...t._items);else if(t instanceof mi)e.push(t);else e.push(xV(t))}J.addCodeArg=Fr;function NV(e){let t=1;while(t<e.length-1){if(e[t]===wr){let i=XV(e[t-1],e[t+1]);if(i!==void 0){e.splice(t-1,3,i);continue}e[t++]="+"}t++}}function XV(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string"){if(t instanceof mi||e[e.length-1]!=='"')return;if(typeof t!="string")return`${e.slice(0,-1)}${t}"`;if(t[0]==='"')return e.slice(0,-1)+t.slice(1);return}if(typeof t=="string"&&t[0]==='"'&&!(e instanceof mi))return`"${e}${t.slice(1)}`;return}function SV(e,t){return t.emptyStr()?e:e.emptyStr()?t:Bd`${e}${t}`}J.strConcat=SV;function xV(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:In(Array.isArray(e)?e.join(","):e)}function JV(e){return new xe(In(e))}J.stringify=JV;function In(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}J.safeStringify=In;function EV(e){return typeof e=="string"&&J.IDENTIFIER.test(e)?new xe(`.${e}`):Vd`[${e}]`}J.getProperty=EV;function UV(e){if(typeof e=="string"&&J.IDENTIFIER.test(e))return new xe(`${e}`);throw Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}J.getEsmExportName=UV;function OV(e){return new xe(e.toString())}J.regexpCode=OV});var kr=f(function(he){Object.defineProperty(he,"__esModule",{value:!0});he.ValueScope=he.ValueScopeName=he.Scope=he.varKinds=he.UsedValueState=void 0;var We=dn();class Gd extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`);this.value=e.value}}var Vs;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(Vs||(he.UsedValueState=Vs={}));he.varKinds={const:new We.Name("const"),let:new We.Name("let"),var:new We.Name("var")};class Hr{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof We.Name?e:this.name(e)}name(e){return new We.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){var t,i;if(((i=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||i===void 0?void 0:i.has(e))||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}he.Scope=Hr;class vr extends We.Name{constructor(e,t){super(t);this.prefix=e}setValue(e,{property:t,itemIndex:i}){this.value=e,this.scopePath=We._`.${new We.Name(t)}[${i}]`}}he.ValueScopeName=vr;var TV=We._`\n`;class Rd extends Hr{constructor(e){super(e);this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?TV:We.nil}}get(){return this._scope}name(e){return new vr(e,this._newName(e))}value(e,t){var i;if(t.ref===void 0)throw Error("CodeGen: ref must be passed in value");let n=this.toName(e),{prefix:s}=n,o=(i=t.key)!==null&&i!==void 0?i:t.ref,r=this._values[s];if(r){let l=r.get(o);if(l)return l}else r=this._values[s]=new Map;r.set(o,n);let g=this._scope[s]||(this._scope[s]=[]),a=g.length;return g[a]=t.ref,n.setValue(t,{property:s,itemIndex:a}),n}getValue(e,t){let i=this._values[e];if(!i)return;return i.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,(i)=>{if(i.scopePath===void 0)throw Error(`CodeGen: name "${i}" has no value`);return We._`${e}${i.scopePath}`})}scopeCode(e=this._values,t,i){return this._reduceValues(e,(n)=>{if(n.value===void 0)throw Error(`CodeGen: name "${n}" has no value`);return n.value.code},t,i)}_reduceValues(e,t,i={},n){let s=We.nil;for(let o in e){let r=e[o];if(!r)continue;let g=i[o]=i[o]||new Map;r.forEach((a)=>{if(g.has(a))return;g.set(a,Vs.Started);let l=t(a);if(l){let I=this.opts.es5?he.varKinds.var:he.varKinds.const;s=We._`${s}${I} ${a} = ${l};${this.opts._n}`}else if(l=n===null||n===void 0?void 0:n(a))s=We._`${s}${l}${this.opts._n}`;else throw new Gd(a);g.set(a,Vs.Completed)})}return s}}he.ValueScope=Rd});var v=f(function(P){Object.defineProperty(P,"__esModule",{value:!0});P.or=P.and=P.not=P.CodeGen=P.operators=P.varKinds=P.ValueScopeName=P.ValueScope=P.Scope=P.Name=P.regexpCode=P.stringify=P.getProperty=P.nil=P.strConcat=P.str=P._=void 0;var X=dn(),Je=kr(),Vt=dn();Object.defineProperty(P,"_",{enumerable:!0,get:function(){return Vt._}});Object.defineProperty(P,"str",{enumerable:!0,get:function(){return Vt.str}});Object.defineProperty(P,"strConcat",{enumerable:!0,get:function(){return Vt.strConcat}});Object.defineProperty(P,"nil",{enumerable:!0,get:function(){return Vt.nil}});Object.defineProperty(P,"getProperty",{enumerable:!0,get:function(){return Vt.getProperty}});Object.defineProperty(P,"stringify",{enumerable:!0,get:function(){return Vt.stringify}});Object.defineProperty(P,"regexpCode",{enumerable:!0,get:function(){return Vt.regexpCode}});Object.defineProperty(P,"Name",{enumerable:!0,get:function(){return Vt.Name}});var Hs=kr();Object.defineProperty(P,"Scope",{enumerable:!0,get:function(){return Hs.Scope}});Object.defineProperty(P,"ValueScope",{enumerable:!0,get:function(){return Hs.ValueScope}});Object.defineProperty(P,"ValueScopeName",{enumerable:!0,get:function(){return Hs.ValueScopeName}});Object.defineProperty(P,"varKinds",{enumerable:!0,get:function(){return Hs.varKinds}});P.operators={GT:new X._Code(">"),GTE:new X._Code(">="),LT:new X._Code("<"),LTE:new X._Code("<="),EQ:new X._Code("==="),NEQ:new X._Code("!=="),NOT:new X._Code("!"),OR:new X._Code("||"),AND:new X._Code("&&"),ADD:new X._Code("+")};class Bt{optimizeNodes(){return this}optimizeNames(e,t){return this}}class wd extends Bt{constructor(e,t,i){super();this.varKind=e,this.name=t,this.rhs=i}render({es5:e,_n:t}){let i=e?Je.varKinds.var:this.varKind,n=this.rhs===void 0?"":` = ${this.rhs}`;return`${i} ${this.name}${n};`+t}optimizeNames(e,t){if(!e[this.name.str])return;if(this.rhs)this.rhs=Ai(this.rhs,e,t);return this}get names(){return this.rhs instanceof X._CodeOrName?this.rhs.names:{}}}class Nr extends Bt{constructor(e,t,i){super();this.lhs=e,this.rhs=t,this.sideEffects=i}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(this.lhs instanceof X.Name&&!e[this.lhs.str]&&!this.sideEffects)return;return this.rhs=Ai(this.rhs,e,t),this}get names(){let e=this.lhs instanceof X.Name?{}:{...this.lhs.names};return Fs(e,this.rhs)}}class Fd extends Nr{constructor(e,t,i,n){super(e,i,n);this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class Hd extends Bt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class vd extends Bt{constructor(e){super();this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class kd extends Bt{constructor(e){super();this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class Pd extends Bt{constructor(e){super();this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=Ai(this.code,e,t),this}get names(){return this.code instanceof X._CodeOrName?this.code.names:{}}}class vs extends Bt{constructor(e=[]){super();this.nodes=e}render(e){return this.nodes.reduce((t,i)=>t+i.render(e),"")}optimizeNodes(){let{nodes:e}=this,t=e.length;while(t--){let i=e[t].optimizeNodes();if(Array.isArray(i))e.splice(t,1,...i);else if(i)e[t]=i;else e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:i}=this,n=i.length;while(n--){let s=i[n];if(s.optimizeNames(e,t))continue;zV(e,s.names),i.splice(n,1)}return i.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>Ut(e,t.names),{})}}class Gt extends vs{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class Yd extends vs{}class cn extends Gt{}cn.kind="else";class ut extends Gt{constructor(e,t){super(t);this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);if(this.else)t+="else "+this.else.render(e);return t}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let t=this.else;if(t){let i=t.optimizeNodes();t=this.else=Array.isArray(i)?new cn(i):i}if(t){if(e===!1)return t instanceof ut?t:t.nodes;if(this.nodes.length)return this;return new ut(Jd(e),t instanceof ut?[t]:t.nodes)}if(e===!1||!this.nodes.length)return;return this}optimizeNames(e,t){var i;if(this.else=(i=this.else)===null||i===void 0?void 0:i.optimizeNames(e,t),!(super.optimizeNames(e,t)||this.else))return;return this.condition=Ai(this.condition,e,t),this}get names(){let e=super.names;if(Fs(e,this.condition),this.else)Ut(e,this.else.names);return e}}ut.kind="if";class pi extends Gt{}pi.kind="for";class Nd extends pi{constructor(e){super();this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iteration=Ai(this.iteration,e,t),this}get names(){return Ut(super.names,this.iteration.names)}}class Xd extends pi{constructor(e,t,i,n){super();this.varKind=e,this.name=t,this.from=i,this.to=n}render(e){let t=e.es5?Je.varKinds.var:this.varKind,{name:i,from:n,to:s}=this;return`for(${t} ${i}=${n}; ${i}<${s}; ${i}++)`+super.render(e)}get names(){let e=Fs(super.names,this.from);return Fs(e,this.to)}}class Pr extends pi{constructor(e,t,i,n){super();this.loop=e,this.varKind=t,this.name=i,this.iterable=n}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(!super.optimizeNames(e,t))return;return this.iterable=Ai(this.iterable,e,t),this}get names(){return Ut(super.names,this.iterable.names)}}class Bs extends Gt{constructor(e,t,i){super();this.name=e,this.args=t,this.async=i}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}Bs.kind="func";class Gs extends vs{render(e){return"return "+super.render(e)}}Gs.kind="return";class Sd extends Gt{render(e){let t="try"+super.render(e);if(this.catch)t+=this.catch.render(e);if(this.finally)t+=this.finally.render(e);return t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(e,t){var i,n;return super.optimizeNames(e,t),(i=this.catch)===null||i===void 0||i.optimizeNames(e,t),(n=this.finally)===null||n===void 0||n.optimizeNames(e,t),this}get names(){let e=super.names;if(this.catch)Ut(e,this.catch.names);if(this.finally)Ut(e,this.finally.names);return e}}class Rs extends Gt{constructor(e){super();this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}Rs.kind="catch";class ws extends Gt{render(e){return"finally"+super.render(e)}}ws.kind="finally";class xd{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
4
|
+
`:""},this._extScope=e,this._scope=new Je.Scope({parent:e}),this._nodes=[new Yd]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let i=this._extScope.value(e,t);return(this._values[i.prefix]||(this._values[i.prefix]=new Set)).add(i),i}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,i,n){let s=this._scope.toName(t);if(i!==void 0&&n)this._constants[s.str]=i;return this._leafNode(new wd(e,s,i)),s}const(e,t,i){return this._def(Je.varKinds.const,e,t,i)}let(e,t,i){return this._def(Je.varKinds.let,e,t,i)}var(e,t,i){return this._def(Je.varKinds.var,e,t,i)}assign(e,t,i){return this._leafNode(new Nr(e,t,i))}add(e,t){return this._leafNode(new Fd(e,P.operators.ADD,t))}code(e){if(typeof e=="function")e();else if(e!==X.nil)this._leafNode(new Pd(e));return this}object(...e){let t=["{"];for(let[i,n]of e){if(t.length>1)t.push(",");if(t.push(i),i!==n||this.opts.es5)t.push(":"),(0,X.addCodeArg)(t,n)}return t.push("}"),new X._Code(t)}if(e,t,i){if(this._blockNode(new ut(e)),t&&i)this.code(t).else().code(i).endIf();else if(t)this.code(t).endIf();else if(i)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new ut(e))}else(){return this._elseNode(new cn)}endIf(){return this._endBlockNode(ut,cn)}_for(e,t){if(this._blockNode(e),t)this.code(t).endFor();return this}for(e,t){return this._for(new Nd(e),t)}forRange(e,t,i,n,s=this.opts.es5?Je.varKinds.var:Je.varKinds.let){let o=this._scope.toName(e);return this._for(new Xd(s,o,t,i),()=>n(o))}forOf(e,t,i,n=Je.varKinds.const){let s=this._scope.toName(e);if(this.opts.es5){let o=t instanceof X.Name?t:this.var("_arr",t);return this.forRange("_i",0,X._`${o}.length`,(r)=>{this.var(s,X._`${o}[${r}]`),i(s)})}return this._for(new Pr("of",n,s,t),()=>i(s))}forIn(e,t,i,n=this.opts.es5?Je.varKinds.var:Je.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,X._`Object.keys(${t})`,i);let s=this._scope.toName(e);return this._for(new Pr("in",n,s,t),()=>i(s))}endFor(){return this._endBlockNode(pi)}label(e){return this._leafNode(new Hd(e))}break(e){return this._leafNode(new vd(e))}return(e){let t=new Gs;if(this._blockNode(t),this.code(e),t.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(Gs)}try(e,t,i){if(!t&&!i)throw Error('CodeGen: "try" without "catch" and "finally"');let n=new Sd;if(this._blockNode(n),this.code(e),t){let s=this.name("e");this._currNode=n.catch=new Rs(s),t(s)}if(i)this._currNode=n.finally=new ws,this.code(i);return this._endBlockNode(Rs,ws)}throw(e){return this._leafNode(new kd(e))}block(e,t){if(this._blockStarts.push(this._nodes.length),e)this.code(e).endBlock(t);return this}endBlock(e){let t=this._blockStarts.pop();if(t===void 0)throw Error("CodeGen: not in self-balancing block");let i=this._nodes.length-t;if(i<0||e!==void 0&&i!==e)throw Error(`CodeGen: wrong number of nodes: ${i} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=X.nil,i,n){if(this._blockNode(new Bs(e,t,i)),n)this.code(n).endFunc();return this}endFunc(){return this._endBlockNode(Bs)}optimize(e=1){while(e-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let i=this._currNode;if(i instanceof e||t&&i instanceof t)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof ut))throw Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}}P.CodeGen=xd;function Ut(e,t){for(let i in t)e[i]=(e[i]||0)+(t[i]||0);return e}function Fs(e,t){return t instanceof X._CodeOrName?Ut(e,t.names):e}function Ai(e,t,i){if(e instanceof X.Name)return n(e);if(!s(e))return e;return new X._Code(e._items.reduce((o,r)=>{if(r instanceof X.Name)r=n(r);if(r instanceof X._Code)o.push(...r._items);else o.push(r);return o},[]));function n(o){let r=i[o.str];if(r===void 0||t[o.str]!==1)return o;return delete t[o.str],r}function s(o){return o instanceof X._Code&&o._items.some((r)=>r instanceof X.Name&&t[r.str]===1&&i[r.str]!==void 0)}}function zV(e,t){for(let i in t)e[i]=(e[i]||0)-(t[i]||0)}function Jd(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:X._`!${Yr(e)}`}P.not=Jd;var jV=Ed(P.operators.AND);function DV(...e){return e.reduce(jV)}P.and=DV;var QV=Ed(P.operators.OR);function _V(...e){return e.reduce(QV)}P.or=_V;function Ed(e){return(t,i)=>t===X.nil?i:i===X.nil?t:X._`${Yr(t)} ${e} ${Yr(i)}`}function Yr(e){return e instanceof X.Name?e:X._`(${e})`}});var N=f(function(Y){Object.defineProperty(Y,"__esModule",{value:!0});Y.checkStrictMode=Y.getErrorPath=Y.Type=Y.useFunc=Y.setEvaluated=Y.evaluatedPropsToName=Y.mergeEvaluated=Y.eachItem=Y.unescapeJsonPointer=Y.escapeJsonPointer=Y.escapeFragment=Y.unescapeFragment=Y.schemaRefOrVal=Y.schemaHasRulesButRef=Y.schemaHasRules=Y.checkUnknownRules=Y.alwaysValidSchema=Y.toHash=void 0;var O=v(),KV=dn();function LV(e){let t={};for(let i of e)t[i]=!0;return t}Y.toHash=LV;function MV(e,t){if(typeof t=="boolean")return t;if(Object.keys(t).length===0)return!0;return Td(e,t),!zd(t,e.self.RULES.all)}Y.alwaysValidSchema=MV;function Td(e,t=e.schema){let{opts:i,self:n}=e;if(!i.strictSchema)return;if(typeof t==="boolean")return;let s=n.RULES.keywords;for(let o in t)if(!s[o])Qd(e,`unknown keyword: "${o}"`)}Y.checkUnknownRules=Td;function zd(e,t){if(typeof e=="boolean")return!e;for(let i in e)if(t[i])return!0;return!1}Y.schemaHasRules=zd;function $V(e,t){if(typeof e=="boolean")return!e;for(let i in e)if(i!=="$ref"&&t.all[i])return!0;return!1}Y.schemaHasRulesButRef=$V;function qV({topSchemaRef:e,schemaPath:t},i,n,s){if(!s){if(typeof i=="number"||typeof i=="boolean")return i;if(typeof i=="string")return O._`${i}`}return O._`${e}${t}${(0,O.getProperty)(n)}`}Y.schemaRefOrVal=qV;function eB(e){return jd(decodeURIComponent(e))}Y.unescapeFragment=eB;function tB(e){return encodeURIComponent(Sr(e))}Y.escapeFragment=tB;function Sr(e){if(typeof e=="number")return`${e}`;return e.replace(/~/g,"~0").replace(/\//g,"~1")}Y.escapeJsonPointer=Sr;function jd(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}Y.unescapeJsonPointer=jd;function iB(e,t){if(Array.isArray(e))for(let i of e)t(i);else t(e)}Y.eachItem=iB;function Ud({mergeNames:e,mergeToName:t,mergeValues:i,resultToName:n}){return(s,o,r,g)=>{let a=r===void 0?o:r instanceof O.Name?(o instanceof O.Name?e(s,o,r):t(s,o,r),r):o instanceof O.Name?(t(s,r,o),o):i(o,r);return g===O.Name&&!(a instanceof O.Name)?n(s,a):a}}Y.mergeEvaluated={props:Ud({mergeNames:(e,t,i)=>e.if(O._`${i} !== true && ${t} !== undefined`,()=>{e.if(O._`${t} === true`,()=>e.assign(i,!0),()=>e.assign(i,O._`${i} || {}`).code(O._`Object.assign(${i}, ${t})`))}),mergeToName:(e,t,i)=>e.if(O._`${i} !== true`,()=>{if(t===!0)e.assign(i,!0);else e.assign(i,O._`${i} || {}`),xr(e,i,t)}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:Dd}),items:Ud({mergeNames:(e,t,i)=>e.if(O._`${i} !== true && ${t} !== undefined`,()=>e.assign(i,O._`${t} === true ? true : ${i} > ${t} ? ${i} : ${t}`)),mergeToName:(e,t,i)=>e.if(O._`${i} !== true`,()=>e.assign(i,t===!0?!0:O._`${i} > ${t} ? ${i} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function Dd(e,t){if(t===!0)return e.var("props",!0);let i=e.var("props",O._`{}`);if(t!==void 0)xr(e,i,t);return i}Y.evaluatedPropsToName=Dd;function xr(e,t,i){Object.keys(i).forEach((n)=>e.assign(O._`${t}${(0,O.getProperty)(n)}`,!0))}Y.setEvaluated=xr;var Od={};function nB(e,t){return e.scopeValue("func",{ref:t,code:Od[t.code]||(Od[t.code]=new KV._Code(t.code))})}Y.useFunc=nB;var Xr;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(Xr||(Y.Type=Xr={}));function sB(e,t,i){if(e instanceof O.Name){let n=t===Xr.Num;return i?n?O._`"[" + ${e} + "]"`:O._`"['" + ${e} + "']"`:n?O._`"/" + ${e}`:O._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return i?(0,O.getProperty)(e).toString():"/"+Sr(e)}Y.getErrorPath=sB;function Qd(e,t,i=e.opts.strictSchema){if(!i)return;if(t=`strict mode: ${t}`,i===!0)throw Error(t);e.self.logger.warn(t)}Y.checkStrictMode=Qd});var He=f(function(Jr){Object.defineProperty(Jr,"__esModule",{value:!0});var ae=v(),oB={data:new ae.Name("data"),valCxt:new ae.Name("valCxt"),instancePath:new ae.Name("instancePath"),parentData:new ae.Name("parentData"),parentDataProperty:new ae.Name("parentDataProperty"),rootData:new ae.Name("rootData"),dynamicAnchors:new ae.Name("dynamicAnchors"),vErrors:new ae.Name("vErrors"),errors:new ae.Name("errors"),this:new ae.Name("this"),self:new ae.Name("self"),scope:new ae.Name("scope"),json:new ae.Name("json"),jsonPos:new ae.Name("jsonPos"),jsonLen:new ae.Name("jsonLen"),jsonPart:new ae.Name("jsonPart")};Jr.default=oB});var Cn=f(function(le){Object.defineProperty(le,"__esModule",{value:!0});le.extendErrors=le.resetErrorsCount=le.reportExtraError=le.reportError=le.keyword$DataError=le.keywordError=void 0;var S=v(),ks=N(),ue=He();le.keywordError={message:({keyword:e})=>S.str`must pass "${e}" keyword validation`};le.keyword$DataError={message:({keyword:e,schemaType:t})=>t?S.str`"${e}" keyword must be ${t} ($data)`:S.str`"${e}" keyword is invalid ($data)`};function rB(e,t=le.keywordError,i,n){let{it:s}=e,{gen:o,compositeRule:r,allErrors:g}=s,a=Ld(e,t,i);if(n!==null&&n!==void 0?n:r||g)_d(o,a);else Kd(s,S._`[${a}]`)}le.reportError=rB;function gB(e,t=le.keywordError,i){let{it:n}=e,{gen:s,compositeRule:o,allErrors:r}=n,g=Ld(e,t,i);if(_d(s,g),!(o||r))Kd(n,ue.default.vErrors)}le.reportExtraError=gB;function aB(e,t){e.assign(ue.default.errors,t),e.if(S._`${ue.default.vErrors} !== null`,()=>e.if(t,()=>e.assign(S._`${ue.default.vErrors}.length`,t),()=>e.assign(ue.default.vErrors,null)))}le.resetErrorsCount=aB;function lB({gen:e,keyword:t,schemaValue:i,data:n,errsCount:s,it:o}){if(s===void 0)throw Error("ajv implementation error");let r=e.name("err");e.forRange("i",s,ue.default.errors,(g)=>{if(e.const(r,S._`${ue.default.vErrors}[${g}]`),e.if(S._`${r}.instancePath === undefined`,()=>e.assign(S._`${r}.instancePath`,(0,S.strConcat)(ue.default.instancePath,o.errorPath))),e.assign(S._`${r}.schemaPath`,S.str`${o.errSchemaPath}/${t}`),o.opts.verbose)e.assign(S._`${r}.schema`,i),e.assign(S._`${r}.data`,n)})}le.extendErrors=lB;function _d(e,t){let i=e.const("err",t);e.if(S._`${ue.default.vErrors} === null`,()=>e.assign(ue.default.vErrors,S._`[${i}]`),S._`${ue.default.vErrors}.push(${i})`),e.code(S._`${ue.default.errors}++`)}function Kd(e,t){let{gen:i,validateName:n,schemaEnv:s}=e;if(s.$async)i.throw(S._`new ${e.ValidationError}(${t})`);else i.assign(S._`${n}.errors`,t),i.return(!1)}var Ot={keyword:new S.Name("keyword"),schemaPath:new S.Name("schemaPath"),params:new S.Name("params"),propertyName:new S.Name("propertyName"),message:new S.Name("message"),schema:new S.Name("schema"),parentSchema:new S.Name("parentSchema")};function Ld(e,t,i){let{createErrors:n}=e.it;if(n===!1)return S._`{}`;return IB(e,t,i)}function IB(e,t,i={}){let{gen:n,it:s}=e,o=[dB(s,i),cB(e,i)];return CB(e,t,o),n.object(...o)}function dB({errorPath:e},{instancePath:t}){let i=t?S.str`${e}${(0,ks.getErrorPath)(t,ks.Type.Str)}`:e;return[ue.default.instancePath,(0,S.strConcat)(ue.default.instancePath,i)]}function cB({keyword:e,it:{errSchemaPath:t}},{schemaPath:i,parentSchema:n}){let s=n?t:S.str`${t}/${e}`;if(i)s=S.str`${s}${(0,ks.getErrorPath)(i,ks.Type.Str)}`;return[Ot.schemaPath,s]}function CB(e,{params:t,message:i},n){let{keyword:s,data:o,schemaValue:r,it:g}=e,{opts:a,propertyName:l,topSchemaRef:I,schemaPath:d}=g;if(n.push([Ot.keyword,s],[Ot.params,typeof t=="function"?t(e):t||S._`{}`]),a.messages)n.push([Ot.message,typeof i=="function"?i(e):i]);if(a.verbose)n.push([Ot.schema,r],[Ot.parentSchema,S._`${I}${d}`],[ue.default.data,o]);if(l)n.push([Ot.propertyName,l])}});var $d=f(function(Zi){Object.defineProperty(Zi,"__esModule",{value:!0});Zi.boolOrEmptySchema=Zi.topBoolOrEmptySchema=void 0;var uB=Cn(),mB=v(),pB=He(),AB={message:"boolean schema is false"};function ZB(e){let{gen:t,schema:i,validateName:n}=e;if(i===!1)Md(e,!1);else if(typeof i=="object"&&i.$async===!0)t.return(pB.default.data);else t.assign(mB._`${n}.errors`,null),t.return(!0)}Zi.topBoolOrEmptySchema=ZB;function bB(e,t){let{gen:i,schema:n}=e;if(n===!1)i.var(t,!1),Md(e);else i.var(t,!0)}Zi.boolOrEmptySchema=bB;function Md(e,t){let{gen:i,data:n}=e,s={gen:i,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,uB.reportError)(s,AB,void 0,t)}});var Er=f(function(bi){Object.defineProperty(bi,"__esModule",{value:!0});bi.getRules=bi.isJSONType=void 0;var WB=["string","number","integer","boolean","null","object","array"],hB=new Set(WB);function fB(e){return typeof e=="string"&&hB.has(e)}bi.isJSONType=fB;function yB(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}bi.getRules=yB});var Ur=f(function(Rt){Object.defineProperty(Rt,"__esModule",{value:!0});Rt.shouldUseRule=Rt.shouldUseGroup=Rt.schemaHasRulesForType=void 0;function VB({schema:e,self:t},i){let n=t.RULES.types[i];return n&&n!==!0&&qd(e,n)}Rt.schemaHasRulesForType=VB;function qd(e,t){return t.rules.some((i)=>ec(e,i))}Rt.shouldUseGroup=qd;function ec(e,t){var i;return e[t.keyword]!==void 0||((i=t.definition.implements)===null||i===void 0?void 0:i.some((n)=>e[n]!==void 0))}Rt.shouldUseRule=ec});var un=f(function(Ie){Object.defineProperty(Ie,"__esModule",{value:!0});Ie.reportTypeError=Ie.checkDataTypes=Ie.checkDataType=Ie.coerceAndCheckDataType=Ie.getJSONTypes=Ie.getSchemaTypes=Ie.DataType=void 0;var BB=Er(),GB=Ur(),RB=Cn(),k=v(),tc=N(),Wi;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(Wi||(Ie.DataType=Wi={}));function wB(e){let t=ic(e.type);if(t.includes("null")){if(e.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if(e.nullable===!0)t.push("null")}return t}Ie.getSchemaTypes=wB;function ic(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(BB.isJSONType))return t;throw Error("type must be JSONType or JSONType[]: "+t.join(","))}Ie.getJSONTypes=ic;function FB(e,t){let{gen:i,data:n,opts:s}=e,o=HB(t,s.coerceTypes),r=t.length>0&&!(o.length===0&&t.length===1&&(0,GB.schemaHasRulesForType)(e,t[0]));if(r){let g=Tr(t,n,s.strictNumbers,Wi.Wrong);i.if(g,()=>{if(o.length)vB(e,t,o);else zr(e)})}return r}Ie.coerceAndCheckDataType=FB;var nc=new Set(["string","number","integer","boolean","null"]);function HB(e,t){return t?e.filter((i)=>nc.has(i)||t==="array"&&i==="array"):[]}function vB(e,t,i){let{gen:n,data:s,opts:o}=e,r=n.let("dataType",k._`typeof ${s}`),g=n.let("coerced",k._`undefined`);if(o.coerceTypes==="array")n.if(k._`${r} == 'object' && Array.isArray(${s}) && ${s}.length == 1`,()=>n.assign(s,k._`${s}[0]`).assign(r,k._`typeof ${s}`).if(Tr(t,s,o.strictNumbers),()=>n.assign(g,s)));n.if(k._`${g} !== undefined`);for(let l of i)if(nc.has(l)||l==="array"&&o.coerceTypes==="array")a(l);n.else(),zr(e),n.endIf(),n.if(k._`${g} !== undefined`,()=>{n.assign(s,g),kB(e,g)});function a(l){switch(l){case"string":n.elseIf(k._`${r} == "number" || ${r} == "boolean"`).assign(g,k._`"" + ${s}`).elseIf(k._`${s} === null`).assign(g,k._`""`);return;case"number":n.elseIf(k._`${r} == "boolean" || ${s} === null
|
|
5
|
+
|| (${r} == "string" && ${s} && ${s} == +${s})`).assign(g,k._`+${s}`);return;case"integer":n.elseIf(k._`${r} === "boolean" || ${s} === null
|
|
6
|
+
|| (${r} === "string" && ${s} && ${s} == +${s} && !(${s} % 1))`).assign(g,k._`+${s}`);return;case"boolean":n.elseIf(k._`${s} === "false" || ${s} === 0 || ${s} === null`).assign(g,!1).elseIf(k._`${s} === "true" || ${s} === 1`).assign(g,!0);return;case"null":n.elseIf(k._`${s} === "" || ${s} === 0 || ${s} === false`),n.assign(g,null);return;case"array":n.elseIf(k._`${r} === "string" || ${r} === "number"
|
|
7
|
+
|| ${r} === "boolean" || ${s} === null`).assign(g,k._`[${s}]`)}}}function kB({gen:e,parentData:t,parentDataProperty:i},n){e.if(k._`${t} !== undefined`,()=>e.assign(k._`${t}[${i}]`,n))}function Or(e,t,i,n=Wi.Correct){let s=n===Wi.Correct?k.operators.EQ:k.operators.NEQ,o;switch(e){case"null":return k._`${t} ${s} null`;case"array":o=k._`Array.isArray(${t})`;break;case"object":o=k._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":o=r(k._`!(${t} % 1) && !isNaN(${t})`);break;case"number":o=r();break;default:return k._`typeof ${t} ${s} ${e}`}return n===Wi.Correct?o:(0,k.not)(o);function r(g=k.nil){return(0,k.and)(k._`typeof ${t} == "number"`,g,i?k._`isFinite(${t})`:k.nil)}}Ie.checkDataType=Or;function Tr(e,t,i,n){if(e.length===1)return Or(e[0],t,i,n);let s,o=(0,tc.toHash)(e);if(o.array&&o.object){let r=k._`typeof ${t} != "object"`;s=o.null?r:k._`!${t} || ${r}`,delete o.null,delete o.array,delete o.object}else s=k.nil;if(o.number)delete o.integer;for(let r in o)s=(0,k.and)(s,Or(r,t,i,n));return s}Ie.checkDataTypes=Tr;var PB={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?k._`{type: ${e}}`:k._`{type: ${t}}`};function zr(e){let t=YB(e);(0,RB.reportError)(t,PB)}Ie.reportTypeError=zr;function YB(e){let{gen:t,data:i,schema:n}=e,s=(0,tc.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:i,schema:n.type,schemaCode:s,schemaValue:s,parentSchema:n,params:{},it:e}}});var oc=f(function(Ps){Object.defineProperty(Ps,"__esModule",{value:!0});Ps.assignDefaults=void 0;var hi=v(),NB=N();function XB(e,t){let{properties:i,items:n}=e.schema;if(t==="object"&&i)for(let s in i)sc(e,s,i[s].default);else if(t==="array"&&Array.isArray(n))n.forEach((s,o)=>sc(e,o,s.default))}Ps.assignDefaults=XB;function sc(e,t,i){let{gen:n,compositeRule:s,data:o,opts:r}=e;if(i===void 0)return;let g=hi._`${o}${(0,hi.getProperty)(t)}`;if(s){(0,NB.checkStrictMode)(e,`default is ignored for: ${g}`);return}let a=hi._`${g} === undefined`;if(r.useDefaults==="empty")a=hi._`${a} || ${g} === null || ${g} === ""`;n.if(a,hi._`${g} = ${(0,hi.stringify)(i)}`)}});var ve=f(function(U){Object.defineProperty(U,"__esModule",{value:!0});U.validateUnion=U.validateArray=U.usePattern=U.callValidateCode=U.schemaProperties=U.allSchemaProperties=U.noPropertyInData=U.propertyInData=U.isOwnProperty=U.hasPropFunc=U.reportMissingProp=U.checkMissingProp=U.checkReportMissingProp=void 0;var j=v(),jr=N(),wt=He(),SB=N();function xB(e,t){let{gen:i,data:n,it:s}=e;i.if(Qr(i,n,t,s.opts.ownProperties),()=>{e.setParams({missingProperty:j._`${t}`},!0),e.error()})}U.checkReportMissingProp=xB;function JB({gen:e,data:t,it:{opts:i}},n,s){return(0,j.or)(...n.map((o)=>(0,j.and)(Qr(e,t,o,i.ownProperties),j._`${s} = ${o}`)))}U.checkMissingProp=JB;function EB(e,t){e.setParams({missingProperty:t},!0),e.error()}U.reportMissingProp=EB;function rc(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:j._`Object.prototype.hasOwnProperty`})}U.hasPropFunc=rc;function Dr(e,t,i){return j._`${rc(e)}.call(${t}, ${i})`}U.isOwnProperty=Dr;function UB(e,t,i,n){let s=j._`${t}${(0,j.getProperty)(i)} !== undefined`;return n?j._`${s} && ${Dr(e,t,i)}`:s}U.propertyInData=UB;function Qr(e,t,i,n){let s=j._`${t}${(0,j.getProperty)(i)} === undefined`;return n?(0,j.or)(s,(0,j.not)(Dr(e,t,i))):s}U.noPropertyInData=Qr;function gc(e){return e?Object.keys(e).filter((t)=>t!=="__proto__"):[]}U.allSchemaProperties=gc;function OB(e,t){return gc(t).filter((i)=>!(0,jr.alwaysValidSchema)(e,t[i]))}U.schemaProperties=OB;function TB({schemaCode:e,data:t,it:{gen:i,topSchemaRef:n,schemaPath:s,errorPath:o},it:r},g,a,l){let I=l?j._`${e}, ${t}, ${n}${s}`:t,d=[[wt.default.instancePath,(0,j.strConcat)(wt.default.instancePath,o)],[wt.default.parentData,r.parentData],[wt.default.parentDataProperty,r.parentDataProperty],[wt.default.rootData,wt.default.rootData]];if(r.opts.dynamicRef)d.push([wt.default.dynamicAnchors,wt.default.dynamicAnchors]);let p=j._`${I}, ${i.object(...d)}`;return a!==j.nil?j._`${g}.call(${a}, ${p})`:j._`${g}(${p})`}U.callValidateCode=TB;var zB=j._`new RegExp`;function jB({gen:e,it:{opts:t}},i){let n=t.unicodeRegExp?"u":"",{regExp:s}=t.code,o=s(i,n);return e.scopeValue("pattern",{key:o.toString(),ref:o,code:j._`${s.code==="new RegExp"?zB:(0,SB.useFunc)(e,s)}(${i}, ${n})`})}U.usePattern=jB;function DB(e){let{gen:t,data:i,keyword:n,it:s}=e,o=t.name("valid");if(s.allErrors){let g=t.let("valid",!0);return r(()=>t.assign(g,!1)),g}return t.var(o,!0),r(()=>t.break()),o;function r(g){let a=t.const("len",j._`${i}.length`);t.forRange("i",0,a,(l)=>{e.subschema({keyword:n,dataProp:l,dataPropType:jr.Type.Num},o),t.if((0,j.not)(o),g)})}}U.validateArray=DB;function QB(e){let{gen:t,schema:i,keyword:n,it:s}=e;if(!Array.isArray(i))throw Error("ajv implementation error");if(i.some((a)=>(0,jr.alwaysValidSchema)(s,a))&&!s.opts.unevaluated)return;let r=t.let("valid",!1),g=t.name("_valid");t.block(()=>i.forEach((a,l)=>{let I=e.subschema({keyword:n,schemaProp:l,compositeRule:!0},g);if(t.assign(r,j._`${r} || ${g}`),!e.mergeValidEvaluated(I,g))t.if((0,j.not)(r))})),e.result(r,()=>e.reset(),()=>e.error(!0))}U.validateUnion=QB});var Ic=f(function(Me){Object.defineProperty(Me,"__esModule",{value:!0});Me.validateKeywordUsage=Me.validSchemaType=Me.funcKeywordCode=Me.macroKeywordCode=void 0;var me=v(),Tt=He(),_B=ve(),KB=Cn();function LB(e,t){let{gen:i,keyword:n,schema:s,parentSchema:o,it:r}=e,g=t.macro.call(r.self,s,o,r),a=lc(i,n,g);if(r.opts.validateSchema!==!1)r.self.validateSchema(g,!0);let l=i.name("valid");e.subschema({schema:g,schemaPath:me.nil,errSchemaPath:`${r.errSchemaPath}/${n}`,topSchemaRef:a,compositeRule:!0},l),e.pass(l,()=>e.error(!0))}Me.macroKeywordCode=LB;function MB(e,t){var i;let{gen:n,keyword:s,schema:o,parentSchema:r,$data:g,it:a}=e;qB(a,t);let l=!g&&t.compile?t.compile.call(a.self,o,r,a):t.validate,I=lc(n,s,l),d=n.let("valid");e.block$data(d,p),e.ok((i=t.valid)!==null&&i!==void 0?i:d);function p(){if(t.errors===!1){if(C(),t.modifying)ac(e);u(()=>e.error())}else{let A=t.async?c():m();if(t.modifying)ac(e);u(()=>$B(e,A))}}function c(){let A=n.let("ruleErrs",null);return n.try(()=>C(me._`await `),(b)=>n.assign(d,!1).if(me._`${b} instanceof ${a.ValidationError}`,()=>n.assign(A,me._`${b}.errors`),()=>n.throw(b))),A}function m(){let A=me._`${I}.errors`;return n.assign(A,null),C(me.nil),A}function C(A=t.async?me._`await `:me.nil){let b=a.opts.passContext?Tt.default.this:Tt.default.self,W=!(("compile"in t)&&!g||t.schema===!1);n.assign(d,me._`${A}${(0,_B.callValidateCode)(e,I,b,W)}`,t.modifying)}function u(A){var b;n.if((0,me.not)((b=t.valid)!==null&&b!==void 0?b:d),A)}}Me.funcKeywordCode=MB;function ac(e){let{gen:t,data:i,it:n}=e;t.if(n.parentData,()=>t.assign(i,me._`${n.parentData}[${n.parentDataProperty}]`))}function $B(e,t){let{gen:i}=e;i.if(me._`Array.isArray(${t})`,()=>{i.assign(Tt.default.vErrors,me._`${Tt.default.vErrors} === null ? ${t} : ${Tt.default.vErrors}.concat(${t})`).assign(Tt.default.errors,me._`${Tt.default.vErrors}.length`),(0,KB.extendErrors)(e)},()=>e.error())}function qB({schemaEnv:e},t){if(t.async&&!e.$async)throw Error("async keyword in sync schema")}function lc(e,t,i){if(i===void 0)throw Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof i=="function"?{ref:i}:{ref:i,code:(0,me.stringify)(i)})}function eG(e,t,i=!1){return!t.length||t.some((n)=>n==="array"?Array.isArray(e):n==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==n||i&&typeof e>"u")}Me.validSchemaType=eG;function tG({schema:e,opts:t,self:i,errSchemaPath:n},s,o){if(Array.isArray(s.keyword)?!s.keyword.includes(o):s.keyword!==o)throw Error("ajv implementation error");let r=s.dependencies;if(r===null||r===void 0?void 0:r.some((g)=>!Object.prototype.hasOwnProperty.call(e,g)))throw Error(`parent schema must have dependencies of ${o}: ${r.join(",")}`);if(s.validateSchema){if(!s.validateSchema(e[o])){let a=`keyword "${o}" value is invalid at path "${n}": `+i.errorsText(s.validateSchema.errors);if(t.validateSchema==="log")i.logger.error(a);else throw Error(a)}}}Me.validateKeywordUsage=tG});var cc=f(function(Ft){Object.defineProperty(Ft,"__esModule",{value:!0});Ft.extendSubschemaMode=Ft.extendSubschemaData=Ft.getSubschema=void 0;var $e=v(),dc=N();function iG(e,{keyword:t,schemaProp:i,schema:n,schemaPath:s,errSchemaPath:o,topSchemaRef:r}){if(t!==void 0&&n!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let g=e.schema[t];return i===void 0?{schema:g,schemaPath:$e._`${e.schemaPath}${(0,$e.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:g[i],schemaPath:$e._`${e.schemaPath}${(0,$e.getProperty)(t)}${(0,$e.getProperty)(i)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,dc.escapeFragment)(i)}`}}if(n!==void 0){if(s===void 0||o===void 0||r===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:s,topSchemaRef:r,errSchemaPath:o}}throw Error('either "keyword" or "schema" must be passed')}Ft.getSubschema=iG;function nG(e,t,{dataProp:i,dataPropType:n,data:s,dataTypes:o,propertyName:r}){if(s!==void 0&&i!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:g}=t;if(i!==void 0){let{errorPath:l,dataPathArr:I,opts:d}=t,p=g.let("data",$e._`${t.data}${(0,$e.getProperty)(i)}`,!0);a(p),e.errorPath=$e.str`${l}${(0,dc.getErrorPath)(i,n,d.jsPropertySyntax)}`,e.parentDataProperty=$e._`${i}`,e.dataPathArr=[...I,e.parentDataProperty]}if(s!==void 0){let l=s instanceof $e.Name?s:g.let("data",s,!0);if(a(l),r!==void 0)e.propertyName=r}if(o)e.dataTypes=o;function a(l){e.data=l,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,l]}}Ft.extendSubschemaData=nG;function sG(e,{jtdDiscriminator:t,jtdMetadata:i,compositeRule:n,createErrors:s,allErrors:o}){if(n!==void 0)e.compositeRule=n;if(s!==void 0)e.createErrors=s;if(o!==void 0)e.allErrors=o;e.jtdDiscriminator=t,e.jtdMetadata=i}Ft.extendSubschemaMode=sG});var _r=f(function(NN,Cc){Cc.exports=function e(t,i){if(t===i)return!0;if(t&&i&&typeof t=="object"&&typeof i=="object"){if(t.constructor!==i.constructor)return!1;var n,s,o;if(Array.isArray(t)){if(n=t.length,n!=i.length)return!1;for(s=n;s--!==0;)if(!e(t[s],i[s]))return!1;return!0}if(t.constructor===RegExp)return t.source===i.source&&t.flags===i.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===i.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===i.toString();if(o=Object.keys(t),n=o.length,n!==Object.keys(i).length)return!1;for(s=n;s--!==0;)if(!Object.prototype.hasOwnProperty.call(i,o[s]))return!1;for(s=n;s--!==0;){var r=o[s];if(!e(t[r],i[r]))return!1}return!0}return t!==t&&i!==i}});var mc=f(function(XN,uc){var Ht=uc.exports=function(e,t,i){if(typeof t=="function")i=t,t={};i=t.cb||i;var n=typeof i=="function"?i:i.pre||function(){},s=i.post||function(){};Ys(t,n,s,e,"",e)};Ht.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};Ht.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Ht.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Ht.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Ys(e,t,i,n,s,o,r,g,a,l){if(n&&typeof n=="object"&&!Array.isArray(n)){t(n,s,o,r,g,a,l);for(var I in n){var d=n[I];if(Array.isArray(d)){if(I in Ht.arrayKeywords)for(var p=0;p<d.length;p++)Ys(e,t,i,d[p],s+"/"+I+"/"+p,o,s,I,n,p)}else if(I in Ht.propsKeywords){if(d&&typeof d=="object")for(var c in d)Ys(e,t,i,d[c],s+"/"+I+"/"+oG(c),o,s,I,n,c)}else if(I in Ht.keywords||e.allKeys&&!(I in Ht.skipKeywords))Ys(e,t,i,d,s+"/"+I,o,s,I,n)}i(n,s,o,r,g,a,l)}}function oG(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var mn=f(function(fe){Object.defineProperty(fe,"__esModule",{value:!0});fe.getSchemaRefs=fe.resolveUrl=fe.normalizeId=fe._getFullPath=fe.getFullPath=fe.inlineRef=void 0;var rG=N(),gG=_r(),aG=mc(),lG=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function IG(e,t=!0){if(typeof e=="boolean")return!0;if(t===!0)return!Kr(e);if(!t)return!1;return pc(e)<=t}fe.inlineRef=IG;var dG=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Kr(e){for(let t in e){if(dG.has(t))return!0;let i=e[t];if(Array.isArray(i)&&i.some(Kr))return!0;if(typeof i=="object"&&Kr(i))return!0}return!1}function pc(e){let t=0;for(let i in e){if(i==="$ref")return 1/0;if(t++,lG.has(i))continue;if(typeof e[i]=="object")(0,rG.eachItem)(e[i],(n)=>t+=pc(n));if(t===1/0)return 1/0}return t}function Ac(e,t="",i){if(i!==!1)t=fi(t);let n=e.parse(t);return Zc(e,n)}fe.getFullPath=Ac;function Zc(e,t){return e.serialize(t).split("#")[0]+"#"}fe._getFullPath=Zc;var cG=/#\/?$/;function fi(e){return e?e.replace(cG,""):""}fe.normalizeId=fi;function CG(e,t,i){return i=fi(i),e.resolve(t,i)}fe.resolveUrl=CG;var uG=/^[a-z_][-a-z0-9._]*$/i;function mG(e,t){if(typeof e=="boolean")return{};let{schemaId:i,uriResolver:n}=this.opts,s=fi(e[i]||t),o={"":s},r=Ac(n,s,!1),g={},a=new Set;return aG(e,{allKeys:!0},(d,p,c,m)=>{if(m===void 0)return;let C=r+p,u=o[m];if(typeof d[i]=="string")u=A.call(this,d[i]);b.call(this,d.$anchor),b.call(this,d.$dynamicAnchor),o[p]=u;function A(W){let h=this.opts.uriResolver.resolve;if(W=fi(u?h(u,W):W),a.has(W))throw I(W);a.add(W);let y=this.refs[W];if(typeof y=="string")y=this.refs[y];if(typeof y=="object")l(d,y.schema,W);else if(W!==fi(C))if(W[0]==="#")l(d,g[W],W),g[W]=d;else this.refs[W]=C;return W}function b(W){if(typeof W=="string"){if(!uG.test(W))throw Error(`invalid anchor "${W}"`);A.call(this,`#${W}`)}}}),g;function l(d,p,c){if(p!==void 0&&!gG(d,p))throw I(c)}function I(d){return Error(`reference "${d}" resolves to more than one schema`)}}fe.getSchemaRefs=mG});var yi=f(function(vt){Object.defineProperty(vt,"__esModule",{value:!0});vt.getData=vt.KeywordCxt=vt.validateFunctionCode=void 0;var yc=$d(),bc=un(),Mr=Ur(),Ns=un(),pG=oc(),An=Ic(),Lr=cc(),G=v(),H=He(),AG=mn(),mt=N(),pn=Cn();function ZG(e){if(Gc(e)){if(Rc(e),Bc(e)){hG(e);return}}Vc(e,()=>(0,yc.topBoolOrEmptySchema)(e))}vt.validateFunctionCode=ZG;function Vc({gen:e,validateName:t,schema:i,schemaEnv:n,opts:s},o){if(s.code.es5)e.func(t,G._`${H.default.data}, ${H.default.valCxt}`,n.$async,()=>{e.code(G._`"use strict"; ${Wc(i,s)}`),WG(e,s),e.code(o)});else e.func(t,G._`${H.default.data}, ${bG(s)}`,n.$async,()=>e.code(Wc(i,s)).code(o))}function bG(e){return G._`{${H.default.instancePath}="", ${H.default.parentData}, ${H.default.parentDataProperty}, ${H.default.rootData}=${H.default.data}${e.dynamicRef?G._`, ${H.default.dynamicAnchors}={}`:G.nil}}={}`}function WG(e,t){e.if(H.default.valCxt,()=>{if(e.var(H.default.instancePath,G._`${H.default.valCxt}.${H.default.instancePath}`),e.var(H.default.parentData,G._`${H.default.valCxt}.${H.default.parentData}`),e.var(H.default.parentDataProperty,G._`${H.default.valCxt}.${H.default.parentDataProperty}`),e.var(H.default.rootData,G._`${H.default.valCxt}.${H.default.rootData}`),t.dynamicRef)e.var(H.default.dynamicAnchors,G._`${H.default.valCxt}.${H.default.dynamicAnchors}`)},()=>{if(e.var(H.default.instancePath,G._`""`),e.var(H.default.parentData,G._`undefined`),e.var(H.default.parentDataProperty,G._`undefined`),e.var(H.default.rootData,H.default.data),t.dynamicRef)e.var(H.default.dynamicAnchors,G._`{}`)})}function hG(e){let{schema:t,opts:i,gen:n}=e;Vc(e,()=>{if(i.$comment&&t.$comment)Fc(e);if(GG(e),n.let(H.default.vErrors,null),n.let(H.default.errors,0),i.unevaluated)fG(e);wc(e),FG(e)});return}function fG(e){let{gen:t,validateName:i}=e;e.evaluated=t.const("evaluated",G._`${i}.evaluated`),t.if(G._`${e.evaluated}.dynamicProps`,()=>t.assign(G._`${e.evaluated}.props`,G._`undefined`)),t.if(G._`${e.evaluated}.dynamicItems`,()=>t.assign(G._`${e.evaluated}.items`,G._`undefined`))}function Wc(e,t){let i=typeof e=="object"&&e[t.schemaId];return i&&(t.code.source||t.code.process)?G._`/*# sourceURL=${i} */`:G.nil}function yG(e,t){if(Gc(e)){if(Rc(e),Bc(e)){VG(e,t);return}}(0,yc.boolOrEmptySchema)(e,t)}function Bc({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let i in e)if(t.RULES.all[i])return!0;return!1}function Gc(e){return typeof e.schema!="boolean"}function VG(e,t){let{schema:i,gen:n,opts:s}=e;if(s.$comment&&i.$comment)Fc(e);RG(e),wG(e);let o=n.const("_errs",H.default.errors);wc(e,o),n.var(t,G._`${o} === ${H.default.errors}`)}function Rc(e){(0,mt.checkUnknownRules)(e),BG(e)}function wc(e,t){if(e.opts.jtd)return hc(e,[],!1,t);let i=(0,bc.getSchemaTypes)(e.schema),n=(0,bc.coerceAndCheckDataType)(e,i);hc(e,i,!n,t)}function BG(e){let{schema:t,errSchemaPath:i,opts:n,self:s}=e;if(t.$ref&&n.ignoreKeywordsWithRef&&(0,mt.schemaHasRulesButRef)(t,s.RULES))s.logger.warn(`$ref: keywords ignored in schema at path "${i}"`)}function GG(e){let{schema:t,opts:i}=e;if(t.default!==void 0&&i.useDefaults&&i.strictSchema)(0,mt.checkStrictMode)(e,"default is ignored in the schema root")}function RG(e){let t=e.schema[e.opts.schemaId];if(t)e.baseId=(0,AG.resolveUrl)(e.opts.uriResolver,e.baseId,t)}function wG(e){if(e.schema.$async&&!e.schemaEnv.$async)throw Error("async schema in sync schema")}function Fc({gen:e,schemaEnv:t,schema:i,errSchemaPath:n,opts:s}){let o=i.$comment;if(s.$comment===!0)e.code(G._`${H.default.self}.logger.log(${o})`);else if(typeof s.$comment=="function"){let r=G.str`${n}/$comment`,g=e.scopeValue("root",{ref:t.root});e.code(G._`${H.default.self}.opts.$comment(${o}, ${r}, ${g}.schema)`)}}function FG(e){let{gen:t,schemaEnv:i,validateName:n,ValidationError:s,opts:o}=e;if(i.$async)t.if(G._`${H.default.errors} === 0`,()=>t.return(H.default.data),()=>t.throw(G._`new ${s}(${H.default.vErrors})`));else{if(t.assign(G._`${n}.errors`,H.default.vErrors),o.unevaluated)HG(e);t.return(G._`${H.default.errors} === 0`)}}function HG({gen:e,evaluated:t,props:i,items:n}){if(i instanceof G.Name)e.assign(G._`${t}.props`,i);if(n instanceof G.Name)e.assign(G._`${t}.items`,n)}function hc(e,t,i,n){let{gen:s,schema:o,data:r,allErrors:g,opts:a,self:l}=e,{RULES:I}=l;if(o.$ref&&(a.ignoreKeywordsWithRef||!(0,mt.schemaHasRulesButRef)(o,I))){s.block(()=>vc(e,"$ref",I.all.$ref.definition));return}if(!a.jtd)vG(e,t);s.block(()=>{for(let p of I.rules)d(p);d(I.post)});function d(p){if(!(0,Mr.shouldUseGroup)(o,p))return;if(p.type){if(s.if((0,Ns.checkDataType)(p.type,r,a.strictNumbers)),fc(e,p),t.length===1&&t[0]===p.type&&i)s.else(),(0,Ns.reportTypeError)(e);s.endIf()}else fc(e,p);if(!g)s.if(G._`${H.default.errors} === ${n||0}`)}}function fc(e,t){let{gen:i,schema:n,opts:{useDefaults:s}}=e;if(s)(0,pG.assignDefaults)(e,t.type);i.block(()=>{for(let o of t.rules)if((0,Mr.shouldUseRule)(n,o))vc(e,o.keyword,o.definition,t.type)})}function vG(e,t){if(e.schemaEnv.meta||!e.opts.strictTypes)return;if(kG(e,t),!e.opts.allowUnionTypes)PG(e,t);YG(e,e.dataTypes)}function kG(e,t){if(!t.length)return;if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach((i)=>{if(!Hc(e.dataTypes,i))$r(e,`type "${i}" not allowed by context "${e.dataTypes.join(",")}"`)}),XG(e,t)}function PG(e,t){if(t.length>1&&!(t.length===2&&t.includes("null")))$r(e,"use allowUnionTypes to allow union type keyword")}function YG(e,t){let i=e.self.RULES.all;for(let n in i){let s=i[n];if(typeof s=="object"&&(0,Mr.shouldUseRule)(e.schema,s)){let{type:o}=s.definition;if(o.length&&!o.some((r)=>NG(t,r)))$r(e,`missing type "${o.join(",")}" for keyword "${n}"`)}}}function NG(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function Hc(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function XG(e,t){let i=[];for(let n of e.dataTypes)if(Hc(t,n))i.push(n);else if(t.includes("integer")&&n==="number")i.push("integer");e.dataTypes=i}function $r(e,t){let i=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${i}" (strictTypes)`,(0,mt.checkStrictMode)(e,t,e.opts.strictTypes)}class qr{constructor(e,t,i){if((0,An.validateKeywordUsage)(e,t,i),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=i,this.data=e.data,this.schema=e.schema[i],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,mt.schemaRefOrVal)(e,this.schema,i,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",kc(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,An.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw Error(`${i} value must be ${JSON.stringify(t.schemaType)}`);if("code"in t?t.trackErrors:t.errors!==!1)this.errsCount=e.gen.const("_errs",H.default.errors)}result(e,t,i){this.failResult((0,G.not)(e),t,i)}failResult(e,t,i){if(this.gen.if(e),i)i();else this.error();if(t){if(this.gen.else(),t(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass(e,t){this.failResult((0,G.not)(e),void 0,t)}fail(e){if(e===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if(e),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:t}=this;this.fail(G._`${t} !== undefined && (${(0,G.or)(this.invalid$data(),e)})`)}error(e,t,i){if(t){this.setParams(t),this._error(e,i),this.setParams({});return}this._error(e,i)}_error(e,t){(e?pn.reportExtraError:pn.reportError)(this,this.def.error,t)}$dataError(){(0,pn.reportError)(this,this.def.$dataError||pn.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,pn.resetErrorsCount)(this.gen,this.errsCount)}ok(e){if(!this.allErrors)this.gen.if(e)}setParams(e,t){if(t)Object.assign(this.params,e);else this.params=e}block$data(e,t,i=G.nil){this.gen.block(()=>{this.check$data(e,i),t()})}check$data(e=G.nil,t=G.nil){if(!this.$data)return;let{gen:i,schemaCode:n,schemaType:s,def:o}=this;if(i.if((0,G.or)(G._`${n} === undefined`,t)),e!==G.nil)i.assign(e,!0);if(s.length||o.validateSchema){if(i.elseIf(this.invalid$data()),this.$dataError(),e!==G.nil)i.assign(e,!1)}i.else()}invalid$data(){let{gen:e,schemaCode:t,schemaType:i,def:n,it:s}=this;return(0,G.or)(o(),r());function o(){if(i.length){if(!(t instanceof G.Name))throw Error("ajv implementation error");let g=Array.isArray(i)?i:[i];return G._`${(0,Ns.checkDataTypes)(g,t,s.opts.strictNumbers,Ns.DataType.Wrong)}`}return G.nil}function r(){if(n.validateSchema){let g=e.scopeValue("validate$data",{ref:n.validateSchema});return G._`!${g}(${t})`}return G.nil}}subschema(e,t){let i=(0,Lr.getSubschema)(this.it,e);(0,Lr.extendSubschemaData)(i,this.it,e),(0,Lr.extendSubschemaMode)(i,e);let n={...this.it,...i,items:void 0,props:void 0};return yG(n,t),n}mergeEvaluated(e,t){let{it:i,gen:n}=this;if(!i.opts.unevaluated)return;if(i.props!==!0&&e.props!==void 0)i.props=mt.mergeEvaluated.props(n,e.props,i.props,t);if(i.items!==!0&&e.items!==void 0)i.items=mt.mergeEvaluated.items(n,e.items,i.items,t)}mergeValidEvaluated(e,t){let{it:i,gen:n}=this;if(i.opts.unevaluated&&(i.props!==!0||i.items!==!0))return n.if(t,()=>this.mergeEvaluated(e,G.Name)),!0}}vt.KeywordCxt=qr;function vc(e,t,i,n){let s=new qr(e,i,t);if("code"in i)i.code(s,n);else if(s.$data&&i.validate)(0,An.funcKeywordCode)(s,i);else if("macro"in i)(0,An.macroKeywordCode)(s,i);else if(i.compile||i.validate)(0,An.funcKeywordCode)(s,i)}var SG=/^\/(?:[^~]|~0|~1)*$/,xG=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function kc(e,{dataLevel:t,dataNames:i,dataPathArr:n}){let s,o;if(e==="")return H.default.rootData;if(e[0]==="/"){if(!SG.test(e))throw Error(`Invalid JSON-pointer: ${e}`);s=e,o=H.default.rootData}else{let l=xG.exec(e);if(!l)throw Error(`Invalid JSON-pointer: ${e}`);let I=+l[1];if(s=l[2],s==="#"){if(I>=t)throw Error(a("property/index",I));return n[t-I]}if(I>t)throw Error(a("data",I));if(o=i[t-I],!s)return o}let r=o,g=s.split("/");for(let l of g)if(l)o=G._`${o}${(0,G.getProperty)((0,mt.unescapeJsonPointer)(l))}`,r=G._`${r} && ${o}`;return r;function a(l,I){return`Cannot access ${l} ${I} levels up, current level is ${t}`}}vt.getData=kc});var Zn=f(function(eg){Object.defineProperty(eg,"__esModule",{value:!0});class Pc extends Error{constructor(e){super("validation failed");this.errors=e,this.ajv=this.validation=!0}}eg.default=Pc});var Vi=f(function(ig){Object.defineProperty(ig,"__esModule",{value:!0});var tg=mn();class Yc extends Error{constructor(e,t,i,n){super(n||`can't resolve reference ${i} from id ${t}`);this.missingRef=(0,tg.resolveUrl)(e,t,i),this.missingSchema=(0,tg.normalizeId)((0,tg.getFullPath)(e,this.missingRef))}}ig.default=Yc});var Wn=f(function(ke){Object.defineProperty(ke,"__esModule",{value:!0});ke.resolveSchema=ke.getCompilingSchema=ke.resolveRef=ke.compileSchema=ke.SchemaEnv=void 0;var Ee=v(),JG=Zn(),zt=He(),Ue=mn(),Nc=N(),EG=yi();class bn{constructor(e){var t;this.refs={},this.dynamicAnchors={};let i;if(typeof e.schema=="object")i=e.schema;this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(t=e.baseId)!==null&&t!==void 0?t:(0,Ue.normalizeId)(i===null||i===void 0?void 0:i[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=i===null||i===void 0?void 0:i.$async,this.refs={}}}ke.SchemaEnv=bn;function sg(e){let t=Xc.call(this,e);if(t)return t;let i=(0,Ue.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:n,lines:s}=this.opts.code,{ownProperties:o}=this.opts,r=new Ee.CodeGen(this.scope,{es5:n,lines:s,ownProperties:o}),g;if(e.$async)g=r.scopeValue("Error",{ref:JG.default,code:Ee._`require("ajv/dist/runtime/validation_error").default`});let a=r.scopeName("validate");e.validateName=a;let l={gen:r,allErrors:this.opts.allErrors,data:zt.default.data,parentData:zt.default.parentData,parentDataProperty:zt.default.parentDataProperty,dataNames:[zt.default.data],dataPathArr:[Ee.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:r.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,Ee.stringify)(e.schema)}:{ref:e.schema}),validateName:a,ValidationError:g,schema:e.schema,schemaEnv:e,rootId:i,baseId:e.baseId||i,schemaPath:Ee.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:Ee._`""`,opts:this.opts,self:this},I;try{this._compilations.add(e),(0,EG.validateFunctionCode)(l),r.optimize(this.opts.code.optimize);let d=r.toString();if(I=`${r.scopeRefs(zt.default.scope)}return ${d}`,this.opts.code.process)I=this.opts.code.process(I,e);let c=Function(`${zt.default.self}`,`${zt.default.scope}`,I)(this,this.scope.get());if(this.scope.value(a,{ref:c}),c.errors=null,c.schema=e.schema,c.schemaEnv=e,e.$async)c.$async=!0;if(this.opts.code.source===!0)c.source={validateName:a,validateCode:d,scopeValues:r._values};if(this.opts.unevaluated){let{props:m,items:C}=l;if(c.evaluated={props:m instanceof Ee.Name?void 0:m,items:C instanceof Ee.Name?void 0:C,dynamicProps:m instanceof Ee.Name,dynamicItems:C instanceof Ee.Name},c.source)c.source.evaluated=(0,Ee.stringify)(c.evaluated)}return e.validate=c,e}catch(d){if(delete e.validate,delete e.validateName,I)this.logger.error("Error compiling schema, function code:",I);throw d}finally{this._compilations.delete(e)}}ke.compileSchema=sg;function UG(e,t,i){var n;i=(0,Ue.resolveUrl)(this.opts.uriResolver,t,i);let s=e.refs[i];if(s)return s;let o=zG.call(this,e,i);if(o===void 0){let r=(n=e.localRefs)===null||n===void 0?void 0:n[i],{schemaId:g}=this.opts;if(r)o=new bn({schema:r,schemaId:g,root:e,baseId:t})}if(o===void 0)return;return e.refs[i]=OG.call(this,o)}ke.resolveRef=UG;function OG(e){if((0,Ue.inlineRef)(e.schema,this.opts.inlineRefs))return e.schema;return e.validate?e:sg.call(this,e)}function Xc(e){for(let t of this._compilations)if(TG(t,e))return t}ke.getCompilingSchema=Xc;function TG(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function zG(e,t){let i;while(typeof(i=this.refs[t])=="string")t=i;return i||this.schemas[t]||Xs.call(this,e,t)}function Xs(e,t){let i=this.opts.uriResolver.parse(t),n=(0,Ue._getFullPath)(this.opts.uriResolver,i),s=(0,Ue.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===s)return ng.call(this,i,e);let o=(0,Ue.normalizeId)(n),r=this.refs[o]||this.schemas[o];if(typeof r=="string"){let g=Xs.call(this,e,r);if(typeof(g===null||g===void 0?void 0:g.schema)!=="object")return;return ng.call(this,i,g)}if(typeof(r===null||r===void 0?void 0:r.schema)!=="object")return;if(!r.validate)sg.call(this,r);if(o===(0,Ue.normalizeId)(t)){let{schema:g}=r,{schemaId:a}=this.opts,l=g[a];if(l)s=(0,Ue.resolveUrl)(this.opts.uriResolver,s,l);return new bn({schema:g,schemaId:a,root:e,baseId:s})}return ng.call(this,i,r)}ke.resolveSchema=Xs;var jG=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function ng(e,{baseId:t,schema:i,root:n}){var s;if(((s=e.fragment)===null||s===void 0?void 0:s[0])!=="/")return;for(let g of e.fragment.slice(1).split("/")){if(typeof i==="boolean")return;let a=i[(0,Nc.unescapeFragment)(g)];if(a===void 0)return;i=a;let l=typeof i==="object"&&i[this.opts.schemaId];if(!jG.has(g)&&l)t=(0,Ue.resolveUrl)(this.opts.uriResolver,t,l)}let o;if(typeof i!="boolean"&&i.$ref&&!(0,Nc.schemaHasRulesButRef)(i,this.RULES)){let g=(0,Ue.resolveUrl)(this.opts.uriResolver,t,i.$ref);o=Xs.call(this,n,g)}let{schemaId:r}=this.opts;if(o=o||new bn({schema:i,schemaId:r,root:n,baseId:t}),o.schema!==o.root.schema)return o;return}});var Sc=f(function(ON,DG){DG.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var rg=f(function(TN,Uc){var QG=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),Jc=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function og(e){let t="",i=0,n=0;for(n=0;n<e.length;n++){if(i=e[n].charCodeAt(0),i===48)continue;if(!(i>=48&&i<=57||i>=65&&i<=70||i>=97&&i<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(i=e[n].charCodeAt(0),!(i>=48&&i<=57||i>=65&&i<=70||i>=97&&i<=102))return"";t+=e[n]}return t}var _G=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function xc(e){return e.length=0,!0}function KG(e,t,i){if(e.length){let n=og(e);if(n!=="")t.push(n);else return i.error=!0,!1;e.length=0}return!0}function LG(e){let t=0,i={error:!1,address:"",zone:""},n=[],s=[],o=!1,r=!1,g=KG;for(let a=0;a<e.length;a++){let l=e[a];if(l==="["||l==="]")continue;if(l===":"){if(o===!0)r=!0;if(!g(s,n,i))break;if(++t>7){i.error=!0;break}if(a>0&&e[a-1]===":")o=!0;n.push(":");continue}else if(l==="%"){if(!g(s,n,i))break;g=xc}else{s.push(l);continue}}if(s.length)if(g===xc)i.zone=s.join("");else if(r)n.push(s.join(""));else n.push(og(s));return i.address=n.join(""),i}function Ec(e){if(MG(e,":")<2)return{host:e,isIPV6:!1};let t=LG(e);if(!t.error){let{address:i,address:n}=t;if(t.zone)i+="%"+t.zone,n+="%25"+t.zone;return{host:i,isIPV6:!0,escapedHost:n}}else return{host:e,isIPV6:!1}}function MG(e,t){let i=0;for(let n=0;n<e.length;n++)if(e[n]===t)i++;return i}function $G(e){let t=e,i=[],n=-1,s=0;while(s=t.length){if(s===1)if(t===".")break;else if(t==="/"){i.push("/");break}else{i.push(t);break}else if(s===2){if(t[0]==="."){if(t[1]===".")break;else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."||t[1]==="/"){i.push("/");break}}}else if(s===3){if(t==="/.."){if(i.length!==0)i.pop();i.push("/");break}}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"){if(t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."){if(t[3]==="/"){if(t=t.slice(3),i.length!==0)i.pop();continue}}}}if((n=t.indexOf("/",1))===-1){i.push(t);break}else i.push(t.slice(0,n)),t=t.slice(n)}return i.join("")}function qG(e,t){let i=t!==!0?escape:unescape;if(e.scheme!==void 0)e.scheme=i(e.scheme);if(e.userinfo!==void 0)e.userinfo=i(e.userinfo);if(e.host!==void 0)e.host=i(e.host);if(e.path!==void 0)e.path=i(e.path);if(e.query!==void 0)e.query=i(e.query);if(e.fragment!==void 0)e.fragment=i(e.fragment);return e}function eR(e){let t=[];if(e.userinfo!==void 0)t.push(e.userinfo),t.push("@");if(e.host!==void 0){let i=unescape(e.host);if(!Jc(i)){let n=Ec(i);if(n.isIPV6===!0)i=`[${n.escapedHost}]`;else i=e.host}t.push(i)}if(typeof e.port==="number"||typeof e.port==="string")t.push(":"),t.push(String(e.port));return t.length?t.join(""):void 0}Uc.exports={nonSimpleDomain:_G,recomposeAuthority:eR,normalizeComponentEncoding:qG,removeDotSegments:$G,isIPv4:Jc,isUUID:QG,normalizeIPv6:Ec,stringArrayToHexStripped:og}});var Dc=f(function(zN,jc){var{isUUID:tR}=rg(),iR=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,nR=["http","https","ws","wss","urn","urn:uuid"];function sR(e){return nR.indexOf(e)!==-1}function gg(e){if(e.secure===!0)return!0;else if(e.secure===!1)return!1;else if(e.scheme)return e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S");else return!1}function Oc(e){if(!e.host)e.error=e.error||"HTTP URIs must have a host.";return e}function Tc(e){let t=String(e.scheme).toLowerCase()==="https";if(e.port===(t?443:80)||e.port==="")e.port=void 0;if(!e.path)e.path="/";return e}function oR(e){return e.secure=gg(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function rR(e){if(e.port===(gg(e)?443:80)||e.port==="")e.port=void 0;if(typeof e.secure==="boolean")e.scheme=e.secure?"wss":"ws",e.secure=void 0;if(e.resourceName){let[t,i]=e.resourceName.split("?");e.path=t&&t!=="/"?t:void 0,e.query=i,e.resourceName=void 0}return e.fragment=void 0,e}function gR(e,t){if(!e.path)return e.error="URN can not be parsed",e;let i=e.path.match(iR);if(i){let n=t.scheme||e.scheme||"urn";e.nid=i[1].toLowerCase(),e.nss=i[2];let s=`${n}:${t.nid||e.nid}`,o=ag(s);if(e.path=void 0,o)e=o.parse(e,t)}else e.error=e.error||"URN can not be parsed.";return e}function aR(e,t){if(e.nid===void 0)throw Error("URN without nid cannot be serialized");let i=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),s=`${i}:${t.nid||n}`,o=ag(s);if(o)e=o.serialize(e,t);let r=e,g=e.nss;return r.path=`${n||t.nid}:${g}`,t.skipEscape=!0,r}function lR(e,t){let i=e;if(i.uuid=i.nss,i.nss=void 0,!t.tolerant&&(!i.uuid||!tR(i.uuid)))i.error=i.error||"UUID is not valid.";return i}function IR(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var zc={scheme:"http",domainHost:!0,parse:Oc,serialize:Tc},dR={scheme:"https",domainHost:zc.domainHost,parse:Oc,serialize:Tc},Ss={scheme:"ws",domainHost:!0,parse:oR,serialize:rR},cR={scheme:"wss",domainHost:Ss.domainHost,parse:Ss.parse,serialize:Ss.serialize},CR={scheme:"urn",parse:gR,serialize:aR,skipNormalize:!0},uR={scheme:"urn:uuid",parse:lR,serialize:IR,skipNormalize:!0},xs={http:zc,https:dR,ws:Ss,wss:cR,urn:CR,"urn:uuid":uR};Object.setPrototypeOf(xs,null);function ag(e){return e&&(xs[e]||xs[e.toLowerCase()])||void 0}jc.exports={wsIsSecure:gg,SCHEMES:xs,isValidSchemeName:sR,getSchemeHandler:ag}});var Kc=f(function(jN,Es){var{normalizeIPv6:mR,removeDotSegments:hn,recomposeAuthority:pR,normalizeComponentEncoding:Js,isIPv4:AR,nonSimpleDomain:ZR}=rg(),{SCHEMES:bR,getSchemeHandler:Qc}=Dc();function WR(e,t){if(typeof e==="string")e=qe(pt(e,t),t);else if(typeof e==="object")e=pt(qe(e,t),t);return e}function hR(e,t,i){let n=i?Object.assign({scheme:"null"},i):{scheme:"null"},s=_c(pt(e,n),pt(t,n),n,!0);return n.skipEscape=!0,qe(s,n)}function _c(e,t,i,n){let s={};if(!n)e=pt(qe(e,i),i),t=pt(qe(t,i),i);if(i=i||{},!i.tolerant&&t.scheme)s.scheme=t.scheme,s.userinfo=t.userinfo,s.host=t.host,s.port=t.port,s.path=hn(t.path||""),s.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)s.userinfo=t.userinfo,s.host=t.host,s.port=t.port,s.path=hn(t.path||""),s.query=t.query;else{if(!t.path)if(s.path=e.path,t.query!==void 0)s.query=t.query;else s.query=e.query;else{if(t.path[0]==="/")s.path=hn(t.path);else{if((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path)s.path="/"+t.path;else if(!e.path)s.path=t.path;else s.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path;s.path=hn(s.path)}s.query=t.query}s.userinfo=e.userinfo,s.host=e.host,s.port=e.port}s.scheme=e.scheme}return s.fragment=t.fragment,s}function fR(e,t,i){if(typeof e==="string")e=unescape(e),e=qe(Js(pt(e,i),!0),{...i,skipEscape:!0});else if(typeof e==="object")e=qe(Js(e,!0),{...i,skipEscape:!0});if(typeof t==="string")t=unescape(t),t=qe(Js(pt(t,i),!0),{...i,skipEscape:!0});else if(typeof t==="object")t=qe(Js(t,!0),{...i,skipEscape:!0});return e.toLowerCase()===t.toLowerCase()}function qe(e,t){let i={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),s=[],o=Qc(n.scheme||i.scheme);if(o&&o.serialize)o.serialize(i,n);if(i.path!==void 0)if(!n.skipEscape){if(i.path=escape(i.path),i.scheme!==void 0)i.path=i.path.split("%3A").join(":")}else i.path=unescape(i.path);if(n.reference!=="suffix"&&i.scheme)s.push(i.scheme,":");let r=pR(i);if(r!==void 0){if(n.reference!=="suffix")s.push("//");if(s.push(r),i.path&&i.path[0]!=="/")s.push("/")}if(i.path!==void 0){let g=i.path;if(!n.absolutePath&&(!o||!o.absolutePath))g=hn(g);if(r===void 0&&g[0]==="/"&&g[1]==="/")g="/%2F"+g.slice(2);s.push(g)}if(i.query!==void 0)s.push("?",i.query);if(i.fragment!==void 0)s.push("#",i.fragment);return s.join("")}var yR=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function pt(e,t){let i=Object.assign({},t),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},s=!1;if(i.reference==="suffix")if(i.scheme)e=i.scheme+":"+e;else e="//"+e;let o=e.match(yR);if(o){if(n.scheme=o[1],n.userinfo=o[3],n.host=o[4],n.port=parseInt(o[5],10),n.path=o[6]||"",n.query=o[7],n.fragment=o[8],isNaN(n.port))n.port=o[5];if(n.host)if(AR(n.host)===!1){let a=mR(n.host);n.host=a.host.toLowerCase(),s=a.isIPV6}else s=!0;if(n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path)n.reference="same-document";else if(n.scheme===void 0)n.reference="relative";else if(n.fragment===void 0)n.reference="absolute";else n.reference="uri";if(i.reference&&i.reference!=="suffix"&&i.reference!==n.reference)n.error=n.error||"URI is not a "+i.reference+" reference.";let r=Qc(i.scheme||n.scheme);if(!i.unicodeSupport&&(!r||!r.unicodeSupport)){if(n.host&&(i.domainHost||r&&r.domainHost)&&s===!1&&ZR(n.host))try{n.host=URL.domainToASCII(n.host.toLowerCase())}catch(g){n.error=n.error||"Host's domain name can not be converted to ASCII: "+g}}if(!r||r&&!r.skipNormalize){if(e.indexOf("%")!==-1){if(n.scheme!==void 0)n.scheme=unescape(n.scheme);if(n.host!==void 0)n.host=unescape(n.host)}if(n.path)n.path=escape(unescape(n.path));if(n.fragment)n.fragment=encodeURI(decodeURIComponent(n.fragment))}if(r&&r.parse)r.parse(n,i)}else n.error=n.error||"URI can not be parsed.";return n}var lg={SCHEMES:bR,normalize:WR,resolve:hR,resolveComponent:_c,equal:fR,serialize:qe,parse:pt};Es.exports=lg;Es.exports.default=lg;Es.exports.fastUri=lg});var Mc=f(function(Ig){Object.defineProperty(Ig,"__esModule",{value:!0});var Lc=Kc();Lc.code='require("ajv/dist/runtime/uri").default';Ig.default=Lc});var Cg=f(function(se){Object.defineProperty(se,"__esModule",{value:!0});se.CodeGen=se.Name=se.nil=se.stringify=se.str=se._=se.KeywordCxt=void 0;var VR=yi();Object.defineProperty(se,"KeywordCxt",{enumerable:!0,get:function(){return VR.KeywordCxt}});var Bi=v();Object.defineProperty(se,"_",{enumerable:!0,get:function(){return Bi._}});Object.defineProperty(se,"str",{enumerable:!0,get:function(){return Bi.str}});Object.defineProperty(se,"stringify",{enumerable:!0,get:function(){return Bi.stringify}});Object.defineProperty(se,"nil",{enumerable:!0,get:function(){return Bi.nil}});Object.defineProperty(se,"Name",{enumerable:!0,get:function(){return Bi.Name}});Object.defineProperty(se,"CodeGen",{enumerable:!0,get:function(){return Bi.CodeGen}});var BR=Zn(),iC=Vi(),GR=Er(),fn=Wn(),RR=v(),yn=mn(),Us=un(),cg=N(),$c=Sc(),wR=Mc(),nC=(e,t)=>new RegExp(e,t);nC.code="new RegExp";var FR=["removeAdditional","useDefaults","coerceTypes"],HR=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),vR={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},kR={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},qc=200;function PR(e){var t,i,n,s,o,r,g,a,l,I,d,p,c,m,C,u,A,b,W,h,y,V,B,F,w;let T=e.strict,K=(t=e.code)===null||t===void 0?void 0:t.optimize,ee=K===!0||K===void 0?1:K||0,Fe=(n=(i=e.code)===null||i===void 0?void 0:i.regExp)!==null&&n!==void 0?n:nC,on=(s=e.uriResolver)!==null&&s!==void 0?s:wR.default;return{strictSchema:(r=(o=e.strictSchema)!==null&&o!==void 0?o:T)!==null&&r!==void 0?r:!0,strictNumbers:(a=(g=e.strictNumbers)!==null&&g!==void 0?g:T)!==null&&a!==void 0?a:!0,strictTypes:(I=(l=e.strictTypes)!==null&&l!==void 0?l:T)!==null&&I!==void 0?I:"log",strictTuples:(p=(d=e.strictTuples)!==null&&d!==void 0?d:T)!==null&&p!==void 0?p:"log",strictRequired:(m=(c=e.strictRequired)!==null&&c!==void 0?c:T)!==null&&m!==void 0?m:!1,code:e.code?{...e.code,optimize:ee,regExp:Fe}:{optimize:ee,regExp:Fe},loopRequired:(C=e.loopRequired)!==null&&C!==void 0?C:qc,loopEnum:(u=e.loopEnum)!==null&&u!==void 0?u:qc,meta:(A=e.meta)!==null&&A!==void 0?A:!0,messages:(b=e.messages)!==null&&b!==void 0?b:!0,inlineRefs:(W=e.inlineRefs)!==null&&W!==void 0?W:!0,schemaId:(h=e.schemaId)!==null&&h!==void 0?h:"$id",addUsedSchema:(y=e.addUsedSchema)!==null&&y!==void 0?y:!0,validateSchema:(V=e.validateSchema)!==null&&V!==void 0?V:!0,validateFormats:(B=e.validateFormats)!==null&&B!==void 0?B:!0,unicodeRegExp:(F=e.unicodeRegExp)!==null&&F!==void 0?F:!0,int32range:(w=e.int32range)!==null&&w!==void 0?w:!0,uriResolver:on}}class Os{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...PR(e)};let{es5:t,lines:i}=this.opts.code;this.scope=new RR.ValueScope({scope:{},prefixes:HR,es5:t,lines:i}),this.logger=JR(e.logger);let n=e.validateFormats;if(e.validateFormats=!1,this.RULES=(0,GR.getRules)(),eC.call(this,vR,e,"NOT SUPPORTED"),eC.call(this,kR,e,"DEPRECATED","warn"),this._metaOpts=SR.call(this),e.formats)NR.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords)XR.call(this,e.keywords);if(typeof e.meta=="object")this.addMetaSchema(e.meta);YR.call(this),e.validateFormats=n}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:t,schemaId:i}=this.opts,n=$c;if(i==="id")n={...$c},n.id=n.$id,delete n.$id;if(t&&e)this.addMetaSchema(n,n[i],!1)}defaultMeta(){let{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[t]||e:void 0}validate(e,t){let i;if(typeof e=="string"){if(i=this.getSchema(e),!i)throw Error(`no schema with key or ref "${e}"`)}else i=this.compile(e);let n=i(t);if(!("$async"in i))this.errors=i.errors;return n}compile(e,t){let i=this._addSchema(e,t);return i.validate||this._compileSchemaEnv(i)}compileAsync(e,t){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:i}=this.opts;return n.call(this,e,t);async function n(l,I){await s.call(this,l.$schema);let d=this._addSchema(l,I);return d.validate||o.call(this,d)}async function s(l){if(l&&!this.getSchema(l))await n.call(this,{$ref:l},!0)}async function o(l){try{return this._compileSchemaEnv(l)}catch(I){if(!(I instanceof iC.default))throw I;return r.call(this,I),await g.call(this,I.missingSchema),o.call(this,l)}}function r({missingSchema:l,missingRef:I}){if(this.refs[l])throw Error(`AnySchema ${l} is loaded but ${I} cannot be resolved`)}async function g(l){let I=await a.call(this,l);if(!this.refs[l])await s.call(this,I.$schema);if(!this.refs[l])this.addSchema(I,l,t)}async function a(l){let I=this._loading[l];if(I)return I;try{return await(this._loading[l]=i(l))}finally{delete this._loading[l]}}}addSchema(e,t,i,n=this.opts.validateSchema){if(Array.isArray(e)){for(let o of e)this.addSchema(o,void 0,i,n);return this}let s;if(typeof e==="object"){let{schemaId:o}=this.opts;if(s=e[o],s!==void 0&&typeof s!="string")throw Error(`schema ${o} must be string`)}return t=(0,yn.normalizeId)(t||s),this._checkUnique(t),this.schemas[t]=this._addSchema(e,i,t,n,!0),this}addMetaSchema(e,t,i=this.opts.validateSchema){return this.addSchema(e,t,!0,i),this}validateSchema(e,t){if(typeof e=="boolean")return!0;let i;if(i=e.$schema,i!==void 0&&typeof i!="string")throw Error("$schema must be a string");if(i=i||this.opts.defaultMeta||this.defaultMeta(),!i)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let n=this.validate(i,e);if(!n&&t){let s="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(s);else throw Error(s)}return n}getSchema(e){let t;while(typeof(t=tC.call(this,e))=="string")e=t;if(t===void 0){let{schemaId:i}=this.opts,n=new fn.SchemaEnv({schema:{},schemaId:i});if(t=fn.resolveSchema.call(this,n,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let t=tC.call(this,e);if(typeof t=="object")this._cache.delete(t.schema);return delete this.schemas[e],delete this.refs[e],this}case"object":{let t=e;this._cache.delete(t);let i=e[this.opts.schemaId];if(i)i=(0,yn.normalizeId)(i),delete this.schemas[i],delete this.refs[i];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let t of e)this.addKeyword(t);return this}addKeyword(e,t){let i;if(typeof e=="string"){if(i=e,typeof t=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=i}else if(typeof e=="object"&&t===void 0){if(t=e,i=t.keyword,Array.isArray(i)&&!i.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(UR.call(this,i,t),!t)return(0,cg.eachItem)(i,(s)=>dg.call(this,s)),this;TR.call(this,t);let n={...t,type:(0,Us.getJSONTypes)(t.type),schemaType:(0,Us.getJSONTypes)(t.schemaType)};return(0,cg.eachItem)(i,n.type.length===0?(s)=>dg.call(this,s,n):(s)=>n.type.forEach((o)=>dg.call(this,s,n,o))),this}getKeyword(e){let t=this.RULES.all[e];return typeof t=="object"?t.definition:!!t}removeKeyword(e){let{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(let i of t.rules){let n=i.rules.findIndex((s)=>s.keyword===e);if(n>=0)i.rules.splice(n,1)}return this}addFormat(e,t){if(typeof t=="string")t=new RegExp(t);return this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:i="data"}={}){if(!e||e.length===0)return"No errors";return e.map((n)=>`${i}${n.instancePath} ${n.message}`).reduce((n,s)=>n+t+s)}$dataMetaSchema(e,t){let i=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let n of t){let s=n.split("/").slice(1),o=e;for(let r of s)o=o[r];for(let r in i){let g=i[r];if(typeof g!="object")continue;let{$data:a}=g.definition,l=o[r];if(a&&l)o[r]=sC(l)}}return e}_removeAllSchemas(e,t){for(let i in e){let n=e[i];if(!t||t.test(i)){if(typeof n=="string")delete e[i];else if(n&&!n.meta)this._cache.delete(n.schema),delete e[i]}}}_addSchema(e,t,i,n=this.opts.validateSchema,s=this.opts.addUsedSchema){let o,{schemaId:r}=this.opts;if(typeof e=="object")o=e[r];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof e!="boolean")throw Error("schema must be object or boolean");let g=this._cache.get(e);if(g!==void 0)return g;i=(0,yn.normalizeId)(o||i);let a=yn.getSchemaRefs.call(this,e,i);if(g=new fn.SchemaEnv({schema:e,schemaId:r,meta:t,baseId:i,localRefs:a}),this._cache.set(g.schema,g),s&&!i.startsWith("#")){if(i)this._checkUnique(i);this.refs[i]=g}if(n)this.validateSchema(e,!0);return g}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta)this._compileMetaSchema(e);else fn.compileSchema.call(this,e);if(!e.validate)throw Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let t=this.opts;this.opts=this._metaOpts;try{fn.compileSchema.call(this,e)}finally{this.opts=t}}}Os.ValidationError=BR.default;Os.MissingRefError=iC.default;se.default=Os;function eC(e,t,i,n="error"){for(let s in e){let o=s;if(o in t)this.logger[n](`${i}: option ${s}. ${e[o]}`)}}function tC(e){return e=(0,yn.normalizeId)(e),this.schemas[e]||this.refs[e]}function YR(){let e=this.opts.schemas;if(!e)return;if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function NR(){for(let e in this.opts.formats){let t=this.opts.formats[e];if(t)this.addFormat(e,t)}}function XR(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let i=e[t];if(!i.keyword)i.keyword=t;this.addKeyword(i)}}function SR(){let e={...this.opts};for(let t of FR)delete e[t];return e}var xR={log(){},warn(){},error(){}};function JR(e){if(e===!1)return xR;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw Error("logger must implement log, warn and error methods")}var ER=/^[a-z_$][a-z0-9_$:-]*$/i;function UR(e,t){let{RULES:i}=this;if((0,cg.eachItem)(e,(n)=>{if(i.keywords[n])throw Error(`Keyword ${n} is already defined`);if(!ER.test(n))throw Error(`Keyword ${n} has invalid name`)}),!t)return;if(t.$data&&!(("code"in t)||("validate"in t)))throw Error('$data keyword must have "code" or "validate" function')}function dg(e,t,i){var n;let s=t===null||t===void 0?void 0:t.post;if(i&&s)throw Error('keyword with "post" flag cannot have "type"');let{RULES:o}=this,r=s?o.post:o.rules.find(({type:a})=>a===i);if(!r)r={type:i,rules:[]},o.rules.push(r);if(o.keywords[e]=!0,!t)return;let g={keyword:e,definition:{...t,type:(0,Us.getJSONTypes)(t.type),schemaType:(0,Us.getJSONTypes)(t.schemaType)}};if(t.before)OR.call(this,r,g,t.before);else r.rules.push(g);o.all[e]=g,(n=t.implements)===null||n===void 0||n.forEach((a)=>this.addKeyword(a))}function OR(e,t,i){let n=e.rules.findIndex((s)=>s.keyword===i);if(n>=0)e.rules.splice(n,0,t);else e.rules.push(t),this.logger.warn(`rule ${i} is not defined`)}function TR(e){let{metaSchema:t}=e;if(t===void 0)return;if(e.$data&&this.opts.$data)t=sC(t);e.validateSchema=this.compile(t,!0)}var zR={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function sC(e){return{anyOf:[e,zR]}}});var oC=f(function(ug){Object.defineProperty(ug,"__esModule",{value:!0});var jR={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};ug.default=jR});var js=f(function(jt){Object.defineProperty(jt,"__esModule",{value:!0});jt.callRef=jt.getValidate=void 0;var DR=Vi(),rC=ve(),ye=v(),Gi=He(),gC=Wn(),Ts=N(),QR={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:i,it:n}=e,{baseId:s,schemaEnv:o,validateName:r,opts:g,self:a}=n,{root:l}=o;if((i==="#"||i==="#/")&&s===l.baseId)return d();let I=gC.resolveRef.call(a,l,s,i);if(I===void 0)throw new DR.default(n.opts.uriResolver,s,i);if(I instanceof gC.SchemaEnv)return p(I);return c(I);function d(){if(o===l)return zs(e,r,o,o.$async);let m=t.scopeValue("root",{ref:l});return zs(e,ye._`${m}.validate`,l,l.$async)}function p(m){let C=aC(e,m);zs(e,C,m,m.$async)}function c(m){let C=t.scopeValue("schema",g.code.source===!0?{ref:m,code:(0,ye.stringify)(m)}:{ref:m}),u=t.name("valid"),A=e.subschema({schema:m,dataTypes:[],schemaPath:ye.nil,topSchemaRef:C,errSchemaPath:i},u);e.mergeEvaluated(A),e.ok(u)}}};function aC(e,t){let{gen:i}=e;return t.validate?i.scopeValue("validate",{ref:t.validate}):ye._`${i.scopeValue("wrapper",{ref:t})}.validate`}jt.getValidate=aC;function zs(e,t,i,n){let{gen:s,it:o}=e,{allErrors:r,schemaEnv:g,opts:a}=o,l=a.passContext?Gi.default.this:ye.nil;if(n)I();else d();function I(){if(!g.$async)throw Error("async schema referenced by sync schema");let m=s.let("valid");s.try(()=>{if(s.code(ye._`await ${(0,rC.callValidateCode)(e,t,l)}`),c(t),!r)s.assign(m,!0)},(C)=>{if(s.if(ye._`!(${C} instanceof ${o.ValidationError})`,()=>s.throw(C)),p(C),!r)s.assign(m,!1)}),e.ok(m)}function d(){e.result((0,rC.callValidateCode)(e,t,l),()=>c(t),()=>p(t))}function p(m){let C=ye._`${m}.errors`;s.assign(Gi.default.vErrors,ye._`${Gi.default.vErrors} === null ? ${C} : ${Gi.default.vErrors}.concat(${C})`),s.assign(Gi.default.errors,ye._`${Gi.default.vErrors}.length`)}function c(m){var C;if(!o.opts.unevaluated)return;let u=(C=i===null||i===void 0?void 0:i.validate)===null||C===void 0?void 0:C.evaluated;if(o.props!==!0)if(u&&!u.dynamicProps){if(u.props!==void 0)o.props=Ts.mergeEvaluated.props(s,u.props,o.props)}else{let A=s.var("props",ye._`${m}.evaluated.props`);o.props=Ts.mergeEvaluated.props(s,A,o.props,ye.Name)}if(o.items!==!0)if(u&&!u.dynamicItems){if(u.items!==void 0)o.items=Ts.mergeEvaluated.items(s,u.items,o.items)}else{let A=s.var("items",ye._`${m}.evaluated.items`);o.items=Ts.mergeEvaluated.items(s,A,o.items,ye.Name)}}}jt.callRef=zs;jt.default=QR});var pg=f(function(mg){Object.defineProperty(mg,"__esModule",{value:!0});var _R=oC(),KR=js(),LR=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",_R.default,KR.default];mg.default=LR});var lC=f(function(Ag){Object.defineProperty(Ag,"__esModule",{value:!0});var Ds=v(),kt=Ds.operators,Qs={maximum:{okStr:"<=",ok:kt.LTE,fail:kt.GT},minimum:{okStr:">=",ok:kt.GTE,fail:kt.LT},exclusiveMaximum:{okStr:"<",ok:kt.LT,fail:kt.GTE},exclusiveMinimum:{okStr:">",ok:kt.GT,fail:kt.LTE}},MR={message:({keyword:e,schemaCode:t})=>Ds.str`must be ${Qs[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>Ds._`{comparison: ${Qs[e].okStr}, limit: ${t}}`},$R={keyword:Object.keys(Qs),type:"number",schemaType:"number",$data:!0,error:MR,code(e){let{keyword:t,data:i,schemaCode:n}=e;e.fail$data(Ds._`${i} ${Qs[t].fail} ${n} || isNaN(${i})`)}};Ag.default=$R});var IC=f(function(Zg){Object.defineProperty(Zg,"__esModule",{value:!0});var Vn=v(),qR={message:({schemaCode:e})=>Vn.str`must be multiple of ${e}`,params:({schemaCode:e})=>Vn._`{multipleOf: ${e}}`},e0={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:qR,code(e){let{gen:t,data:i,schemaCode:n,it:s}=e,o=s.opts.multipleOfPrecision,r=t.let("res"),g=o?Vn._`Math.abs(Math.round(${r}) - ${r}) > 1e-${o}`:Vn._`${r} !== parseInt(${r})`;e.fail$data(Vn._`(${n} === 0 || (${r} = ${i}/${n}, ${g}))`)}};Zg.default=e0});var cC=f(function(bg){Object.defineProperty(bg,"__esModule",{value:!0});function dC(e){let t=e.length,i=0,n=0,s;while(n<t)if(i++,s=e.charCodeAt(n++),s>=55296&&s<=56319&&n<t){if(s=e.charCodeAt(n),(s&64512)===56320)n++}return i}bg.default=dC;dC.code='require("ajv/dist/runtime/ucs2length").default'});var CC=f(function(Wg){Object.defineProperty(Wg,"__esModule",{value:!0});var Dt=v(),t0=N(),i0=cC(),n0={message({keyword:e,schemaCode:t}){let i=e==="maxLength"?"more":"fewer";return Dt.str`must NOT have ${i} than ${t} characters`},params:({schemaCode:e})=>Dt._`{limit: ${e}}`},s0={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:n0,code(e){let{keyword:t,data:i,schemaCode:n,it:s}=e,o=t==="maxLength"?Dt.operators.GT:Dt.operators.LT,r=s.opts.unicode===!1?Dt._`${i}.length`:Dt._`${(0,t0.useFunc)(e.gen,i0.default)}(${i})`;e.fail$data(Dt._`${r} ${o} ${n}`)}};Wg.default=s0});var uC=f(function(hg){Object.defineProperty(hg,"__esModule",{value:!0});var o0=ve(),_s=v(),r0={message:({schemaCode:e})=>_s.str`must match pattern "${e}"`,params:({schemaCode:e})=>_s._`{pattern: ${e}}`},g0={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:r0,code(e){let{data:t,$data:i,schema:n,schemaCode:s,it:o}=e,r=o.opts.unicodeRegExp?"u":"",g=i?_s._`(new RegExp(${s}, ${r}))`:(0,o0.usePattern)(e,n);e.fail$data(_s._`!${g}.test(${t})`)}};hg.default=g0});var mC=f(function(fg){Object.defineProperty(fg,"__esModule",{value:!0});var Bn=v(),a0={message({keyword:e,schemaCode:t}){let i=e==="maxProperties"?"more":"fewer";return Bn.str`must NOT have ${i} than ${t} properties`},params:({schemaCode:e})=>Bn._`{limit: ${e}}`},l0={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:a0,code(e){let{keyword:t,data:i,schemaCode:n}=e,s=t==="maxProperties"?Bn.operators.GT:Bn.operators.LT;e.fail$data(Bn._`Object.keys(${i}).length ${s} ${n}`)}};fg.default=l0});var pC=f(function(yg){Object.defineProperty(yg,"__esModule",{value:!0});var Gn=ve(),Rn=v(),I0=N(),d0={message:({params:{missingProperty:e}})=>Rn.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>Rn._`{missingProperty: ${e}}`},c0={keyword:"required",type:"object",schemaType:"array",$data:!0,error:d0,code(e){let{gen:t,schema:i,schemaCode:n,data:s,$data:o,it:r}=e,{opts:g}=r;if(!o&&i.length===0)return;let a=i.length>=g.loopRequired;if(r.allErrors)l();else I();if(g.strictRequired){let c=e.parentSchema.properties,{definedProperties:m}=e.it;for(let C of i)if((c===null||c===void 0?void 0:c[C])===void 0&&!m.has(C)){let u=r.schemaEnv.baseId+r.errSchemaPath,A=`required property "${C}" is not defined at "${u}" (strictRequired)`;(0,I0.checkStrictMode)(r,A,r.opts.strictRequired)}}function l(){if(a||o)e.block$data(Rn.nil,d);else for(let c of i)(0,Gn.checkReportMissingProp)(e,c)}function I(){let c=t.let("missing");if(a||o){let m=t.let("valid",!0);e.block$data(m,()=>p(c,m)),e.ok(m)}else t.if((0,Gn.checkMissingProp)(e,i,c)),(0,Gn.reportMissingProp)(e,c),t.else()}function d(){t.forOf("prop",n,(c)=>{e.setParams({missingProperty:c}),t.if((0,Gn.noPropertyInData)(t,s,c,g.ownProperties),()=>e.error())})}function p(c,m){e.setParams({missingProperty:c}),t.forOf(c,n,()=>{t.assign(m,(0,Gn.propertyInData)(t,s,c,g.ownProperties)),t.if((0,Rn.not)(m),()=>{e.error(),t.break()})},Rn.nil)}}};yg.default=c0});var AC=f(function(Vg){Object.defineProperty(Vg,"__esModule",{value:!0});var wn=v(),C0={message({keyword:e,schemaCode:t}){let i=e==="maxItems"?"more":"fewer";return wn.str`must NOT have ${i} than ${t} items`},params:({schemaCode:e})=>wn._`{limit: ${e}}`},u0={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:C0,code(e){let{keyword:t,data:i,schemaCode:n}=e,s=t==="maxItems"?wn.operators.GT:wn.operators.LT;e.fail$data(wn._`${i}.length ${s} ${n}`)}};Vg.default=u0});var Ks=f(function(Bg){Object.defineProperty(Bg,"__esModule",{value:!0});var ZC=_r();ZC.code='require("ajv/dist/runtime/equal").default';Bg.default=ZC});var bC=f(function(Rg){Object.defineProperty(Rg,"__esModule",{value:!0});var Gg=un(),oe=v(),m0=N(),p0=Ks(),A0={message:({params:{i:e,j:t}})=>oe.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>oe._`{i: ${e}, j: ${t}}`},Z0={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:A0,code(e){let{gen:t,data:i,$data:n,schema:s,parentSchema:o,schemaCode:r,it:g}=e;if(!n&&!s)return;let a=t.let("valid"),l=o.items?(0,Gg.getSchemaTypes)(o.items):[];e.block$data(a,I,oe._`${r} === false`),e.ok(a);function I(){let m=t.let("i",oe._`${i}.length`),C=t.let("j");e.setParams({i:m,j:C}),t.assign(a,!0),t.if(oe._`${m} > 1`,()=>(d()?p:c)(m,C))}function d(){return l.length>0&&!l.some((m)=>m==="object"||m==="array")}function p(m,C){let u=t.name("item"),A=(0,Gg.checkDataTypes)(l,u,g.opts.strictNumbers,Gg.DataType.Wrong),b=t.const("indices",oe._`{}`);t.for(oe._`;${m}--;`,()=>{if(t.let(u,oe._`${i}[${m}]`),t.if(A,oe._`continue`),l.length>1)t.if(oe._`typeof ${u} == "string"`,oe._`${u} += "_"`);t.if(oe._`typeof ${b}[${u}] == "number"`,()=>{t.assign(C,oe._`${b}[${u}]`),e.error(),t.assign(a,!1).break()}).code(oe._`${b}[${u}] = ${m}`)})}function c(m,C){let u=(0,m0.useFunc)(t,p0.default),A=t.name("outer");t.label(A).for(oe._`;${m}--;`,()=>t.for(oe._`${C} = ${m}; ${C}--;`,()=>t.if(oe._`${u}(${i}[${m}], ${i}[${C}])`,()=>{e.error(),t.assign(a,!1).break(A)})))}}};Rg.default=Z0});var WC=f(function(Fg){Object.defineProperty(Fg,"__esModule",{value:!0});var wg=v(),b0=N(),W0=Ks(),h0={message:"must be equal to constant",params:({schemaCode:e})=>wg._`{allowedValue: ${e}}`},f0={keyword:"const",$data:!0,error:h0,code(e){let{gen:t,data:i,$data:n,schemaCode:s,schema:o}=e;if(n||o&&typeof o=="object")e.fail$data(wg._`!${(0,b0.useFunc)(t,W0.default)}(${i}, ${s})`);else e.fail(wg._`${o} !== ${i}`)}};Fg.default=f0});var hC=f(function(Hg){Object.defineProperty(Hg,"__esModule",{value:!0});var Fn=v(),y0=N(),V0=Ks(),B0={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>Fn._`{allowedValues: ${e}}`},G0={keyword:"enum",schemaType:"array",$data:!0,error:B0,code(e){let{gen:t,data:i,$data:n,schema:s,schemaCode:o,it:r}=e;if(!n&&s.length===0)throw Error("enum must have non-empty array");let g=s.length>=r.opts.loopEnum,a,l=()=>a!==null&&a!==void 0?a:a=(0,y0.useFunc)(t,V0.default),I;if(g||n)I=t.let("valid"),e.block$data(I,d);else{if(!Array.isArray(s))throw Error("ajv implementation error");let c=t.const("vSchema",o);I=(0,Fn.or)(...s.map((m,C)=>p(c,C)))}e.pass(I);function d(){t.assign(I,!1),t.forOf("v",o,(c)=>t.if(Fn._`${l()}(${i}, ${c})`,()=>t.assign(I,!0).break()))}function p(c,m){let C=s[m];return typeof C==="object"&&C!==null?Fn._`${l()}(${i}, ${c}[${m}])`:Fn._`${i} === ${C}`}}};Hg.default=G0});var kg=f(function(vg){Object.defineProperty(vg,"__esModule",{value:!0});var R0=lC(),w0=IC(),F0=CC(),H0=uC(),v0=mC(),k0=pC(),P0=AC(),Y0=bC(),N0=WC(),X0=hC(),S0=[R0.default,w0.default,F0.default,H0.default,v0.default,k0.default,P0.default,Y0.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},N0.default,X0.default];vg.default=S0});var Yg=f(function(Hn){Object.defineProperty(Hn,"__esModule",{value:!0});Hn.validateAdditionalItems=void 0;var Qt=v(),Pg=N(),x0={message:({params:{len:e}})=>Qt.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Qt._`{limit: ${e}}`},J0={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:x0,code(e){let{parentSchema:t,it:i}=e,{items:n}=t;if(!Array.isArray(n)){(0,Pg.checkStrictMode)(i,'"additionalItems" is ignored when "items" is not an array of schemas');return}fC(e,n)}};function fC(e,t){let{gen:i,schema:n,data:s,keyword:o,it:r}=e;r.items=!0;let g=i.const("len",Qt._`${s}.length`);if(n===!1)e.setParams({len:t.length}),e.pass(Qt._`${g} <= ${t.length}`);else if(typeof n=="object"&&!(0,Pg.alwaysValidSchema)(r,n)){let l=i.var("valid",Qt._`${g} <= ${t.length}`);i.if((0,Qt.not)(l),()=>a(l)),e.ok(l)}function a(l){i.forRange("i",t.length,g,(I)=>{if(e.subschema({keyword:o,dataProp:I,dataPropType:Pg.Type.Num},l),!r.allErrors)i.if((0,Qt.not)(l),()=>i.break())})}}Hn.validateAdditionalItems=fC;Hn.default=J0});var Ng=f(function(vn){Object.defineProperty(vn,"__esModule",{value:!0});vn.validateTuple=void 0;var yC=v(),Ls=N(),E0=ve(),U0={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:i}=e;if(Array.isArray(t))return VC(e,"additionalItems",t);if(i.items=!0,(0,Ls.alwaysValidSchema)(i,t))return;e.ok((0,E0.validateArray)(e))}};function VC(e,t,i=e.schema){let{gen:n,parentSchema:s,data:o,keyword:r,it:g}=e;if(I(s),g.opts.unevaluated&&i.length&&g.items!==!0)g.items=Ls.mergeEvaluated.items(n,i.length,g.items);let a=n.name("valid"),l=n.const("len",yC._`${o}.length`);i.forEach((d,p)=>{if((0,Ls.alwaysValidSchema)(g,d))return;n.if(yC._`${l} > ${p}`,()=>e.subschema({keyword:r,schemaProp:p,dataProp:p},a)),e.ok(a)});function I(d){let{opts:p,errSchemaPath:c}=g,m=i.length,C=m===d.minItems&&(m===d.maxItems||d[t]===!1);if(p.strictTuples&&!C){let u=`"${r}" is ${m}-tuple, but minItems or maxItems/${t} are not specified or different at path "${c}"`;(0,Ls.checkStrictMode)(g,u,p.strictTuples)}}}vn.validateTuple=VC;vn.default=U0});var BC=f(function(Xg){Object.defineProperty(Xg,"__esModule",{value:!0});var O0=Ng(),T0={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(e)=>(0,O0.validateTuple)(e,"items")};Xg.default=T0});var RC=f(function(Sg){Object.defineProperty(Sg,"__esModule",{value:!0});var GC=v(),z0=N(),j0=ve(),D0=Yg(),Q0={message:({params:{len:e}})=>GC.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>GC._`{limit: ${e}}`},_0={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:Q0,code(e){let{schema:t,parentSchema:i,it:n}=e,{prefixItems:s}=i;if(n.items=!0,(0,z0.alwaysValidSchema)(n,t))return;if(s)(0,D0.validateAdditionalItems)(e,s);else e.ok((0,j0.validateArray)(e))}};Sg.default=_0});var wC=f(function(xg){Object.defineProperty(xg,"__esModule",{value:!0});var Pe=v(),Ms=N(),K0={message:({params:{min:e,max:t}})=>t===void 0?Pe.str`must contain at least ${e} valid item(s)`:Pe.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?Pe._`{minContains: ${e}}`:Pe._`{minContains: ${e}, maxContains: ${t}}`},L0={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:K0,code(e){let{gen:t,schema:i,parentSchema:n,data:s,it:o}=e,r,g,{minContains:a,maxContains:l}=n;if(o.opts.next)r=a===void 0?1:a,g=l;else r=1;let I=t.const("len",Pe._`${s}.length`);if(e.setParams({min:r,max:g}),g===void 0&&r===0){(0,Ms.checkStrictMode)(o,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(g!==void 0&&r>g){(0,Ms.checkStrictMode)(o,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,Ms.alwaysValidSchema)(o,i)){let C=Pe._`${I} >= ${r}`;if(g!==void 0)C=Pe._`${C} && ${I} <= ${g}`;e.pass(C);return}o.items=!0;let d=t.name("valid");if(g===void 0&&r===1)c(d,()=>t.if(d,()=>t.break()));else if(r===0){if(t.let(d,!0),g!==void 0)t.if(Pe._`${s}.length > 0`,p)}else t.let(d,!1),p();e.result(d,()=>e.reset());function p(){let C=t.name("_valid"),u=t.let("count",0);c(C,()=>t.if(C,()=>m(u)))}function c(C,u){t.forRange("i",0,I,(A)=>{e.subschema({keyword:"contains",dataProp:A,dataPropType:Ms.Type.Num,compositeRule:!0},C),u()})}function m(C){if(t.code(Pe._`${C}++`),g===void 0)t.if(Pe._`${C} >= ${r}`,()=>t.assign(d,!0).break());else if(t.if(Pe._`${C} > ${g}`,()=>t.assign(d,!1).break()),r===1)t.assign(d,!0);else t.if(Pe._`${C} >= ${r}`,()=>t.assign(d,!0))}}};xg.default=L0});var $s=f(function(et){Object.defineProperty(et,"__esModule",{value:!0});et.validateSchemaDeps=et.validatePropertyDeps=et.error=void 0;var Jg=v(),M0=N(),kn=ve();et.error={message:({params:{property:e,depsCount:t,deps:i}})=>{let n=t===1?"property":"properties";return Jg.str`must have ${n} ${i} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:i,missingProperty:n}})=>Jg._`{property: ${e},
|
|
8
|
+
missingProperty: ${n},
|
|
9
9
|
depsCount: ${t},
|
|
10
|
-
deps: ${r}}`};var mS={keyword:"dependencies",type:"object",schemaType:"object",error:Xe.error,code(e){let[t,r]=hS(e);qp(e,t),Mp(e,r)}};function hS({schema:e}){let t={},r={};for(let i in e){if(i==="__proto__")continue;let n=Array.isArray(e[i])?t:r;n[i]=e[i]}return[t,r]}function qp(e,t=e.schema){let{gen:r,data:i,it:n}=e;if(Object.keys(t).length===0)return;let s=r.let("missing");for(let o in t){let a=t[o];if(a.length===0)continue;let d=(0,vi.propertyInData)(r,i,o,n.opts.ownProperties);if(e.setParams({property:o,depsCount:a.length,deps:a.join(", ")}),n.allErrors)r.if(d,()=>{for(let u of a)(0,vi.checkReportMissingProp)(e,u)});else r.if(ba._`${d} && (${(0,vi.checkMissingProp)(e,a,s)})`),(0,vi.reportMissingProp)(e,s),r.else()}}Xe.validatePropertyDeps=qp;function Mp(e,t=e.schema){let{gen:r,data:i,keyword:n,it:s}=e,o=r.name("valid");for(let a in t){if((0,fS.alwaysValidSchema)(s,t[a]))continue;r.if((0,vi.propertyInData)(r,i,a,s.opts.ownProperties),()=>{let d=e.subschema({keyword:n,schemaProp:a},o);e.mergeValidEvaluated(d,o)},()=>r.var(o,!0)),e.ok(o)}}Xe.validateSchemaDeps=Mp;Xe.default=mS});var Bp=P(function(Pa){Object.defineProperty(Pa,"__esModule",{value:!0});var Up=j(),gS=D(),yS={message:"property name must be valid",params:({params:e})=>Up._`{propertyName: ${e.propertyName}}`},_S={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:yS,code(e){let{gen:t,schema:r,data:i,it:n}=e;if((0,gS.alwaysValidSchema)(n,r))return;let s=t.name("valid");t.forIn("key",i,(o)=>{e.setParams({propertyName:o}),e.subschema({keyword:"propertyNames",data:o,dataTypes:["string"],propertyName:o,compositeRule:!0},s),t.if((0,Up.not)(s),()=>{if(e.error(!0),!n.allErrors)t.break()})}),e.ok(s)}};Pa.default=_S});var wa=P(function(va){Object.defineProperty(va,"__esModule",{value:!0});var qn=je(),Be=j(),bS=Oe(),Mn=D(),PS={message:"must NOT have additional properties",params:({params:e})=>Be._`{additionalProperty: ${e.additionalProperty}}`},vS={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:PS,code(e){let{gen:t,schema:r,parentSchema:i,data:n,errsCount:s,it:o}=e;if(!s)throw Error("ajv implementation error");let{allErrors:a,opts:d}=o;if(o.props=!0,d.removeAdditional!=="all"&&(0,Mn.alwaysValidSchema)(o,r))return;let u=(0,qn.allSchemaProperties)(i.properties),l=(0,qn.allSchemaProperties)(i.patternProperties);c(),e.ok(Be._`${s} === ${bS.default.errors}`);function c(){t.forIn("key",n,(g)=>{if(!u.length&&!l.length)m(g);else t.if(p(g),()=>m(g))})}function p(g){let _;if(u.length>8){let b=(0,Mn.schemaRefOrVal)(o,i.properties,"properties");_=(0,qn.isOwnProperty)(t,b,g)}else if(u.length)_=(0,Be.or)(...u.map((b)=>Be._`${g} === ${b}`));else _=Be.nil;if(l.length)_=(0,Be.or)(_,...l.map((b)=>Be._`${(0,qn.usePattern)(e,b)}.test(${g})`));return(0,Be.not)(_)}function f(g){t.code(Be._`delete ${n}[${g}]`)}function m(g){if(d.removeAdditional==="all"||d.removeAdditional&&r===!1){f(g);return}if(r===!1){if(e.setParams({additionalProperty:g}),e.error(),!a)t.break();return}if(typeof r=="object"&&!(0,Mn.alwaysValidSchema)(o,r)){let _=t.name("valid");if(d.removeAdditional==="failing")h(g,_,!1),t.if((0,Be.not)(_),()=>{e.reset(),f(g)});else if(h(g,_),!a)t.if((0,Be.not)(_),()=>t.break())}}function h(g,_,b){let v={keyword:"additionalProperties",dataProp:g,dataPropType:Mn.Type.Str};if(b===!1)Object.assign(v,{compositeRule:!0,createErrors:!1,allErrors:!1});e.subschema(v,_)}}};va.default=vS});var Kp=P(function(Ea){Object.defineProperty(Ea,"__esModule",{value:!0});var wS=hr(),Gp=je(),$a=D(),Vp=wa(),$S={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:i,data:n,it:s}=e;if(s.opts.removeAdditional==="all"&&i.additionalProperties===void 0)Vp.default.code(new wS.KeywordCxt(s,Vp.default,"additionalProperties"));let o=(0,Gp.allSchemaProperties)(r);for(let c of o)s.definedProperties.add(c);if(s.opts.unevaluated&&o.length&&s.props!==!0)s.props=$a.mergeEvaluated.props(t,(0,$a.toHash)(o),s.props);let a=o.filter((c)=>!(0,$a.alwaysValidSchema)(s,r[c]));if(a.length===0)return;let d=t.name("valid");for(let c of a){if(u(c))l(c);else{if(t.if((0,Gp.propertyInData)(t,n,c,s.opts.ownProperties)),l(c),!s.allErrors)t.else().var(d,!0);t.endIf()}e.it.definedProperties.add(c),e.ok(d)}function u(c){return s.opts.useDefaults&&!s.compositeRule&&r[c].default!==void 0}function l(c){e.subschema({keyword:"properties",schemaProp:c,dataProp:c},d)}}};Ea.default=$S});var Jp=P(function(Ia){Object.defineProperty(Ia,"__esModule",{value:!0});var zp=je(),Un=j(),Wp=D(),Hp=D(),ES={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:i,parentSchema:n,it:s}=e,{opts:o}=s,a=(0,zp.allSchemaProperties)(r),d=a.filter((h)=>(0,Wp.alwaysValidSchema)(s,r[h]));if(a.length===0||d.length===a.length&&(!s.opts.unevaluated||s.props===!0))return;let u=o.strictSchema&&!o.allowMatchingProperties&&n.properties,l=t.name("valid");if(s.props!==!0&&!(s.props instanceof Un.Name))s.props=(0,Hp.evaluatedPropsToName)(t,s.props);let{props:c}=s;p();function p(){for(let h of a){if(u)f(h);if(s.allErrors)m(h);else t.var(l,!0),m(h),t.if(l)}}function f(h){for(let g in u)if(new RegExp(h).test(g))(0,Wp.checkStrictMode)(s,`property ${g} matches pattern ${h} (use allowMatchingProperties)`)}function m(h){t.forIn("key",i,(g)=>{t.if(Un._`${(0,zp.usePattern)(e,h)}.test(${g})`,()=>{let _=d.includes(h);if(!_)e.subschema({keyword:"patternProperties",schemaProp:h,dataProp:g,dataPropType:Hp.Type.Str},l);if(s.opts.unevaluated&&c!==!0)t.assign(Un._`${c}[${g}]`,!0);else if(!_&&!s.allErrors)t.if((0,Un.not)(l),()=>t.break())})})}}};Ia.default=ES});var Qp=P(function(Sa){Object.defineProperty(Sa,"__esModule",{value:!0});var IS=D(),SS={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:i}=e;if((0,IS.alwaysValidSchema)(i,r)){e.fail();return}let n=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},n),e.failResult(n,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Sa.default=SS});var Yp=P(function(xa){Object.defineProperty(xa,"__esModule",{value:!0});var xS=je(),RS={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:xS.validateUnion,error:{message:"must match a schema in anyOf"}};xa.default=RS});var Xp=P(function(Ra){Object.defineProperty(Ra,"__esModule",{value:!0});var Bn=j(),CS=D(),OS={message:"must match exactly one schema in oneOf",params:({params:e})=>Bn._`{passingSchemas: ${e.passing}}`},jS={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:OS,code(e){let{gen:t,schema:r,parentSchema:i,it:n}=e;if(!Array.isArray(r))throw Error("ajv implementation error");if(n.opts.discriminator&&i.discriminator)return;let s=r,o=t.let("valid",!1),a=t.let("passing",null),d=t.name("_valid");e.setParams({passing:a}),t.block(u),e.result(o,()=>e.reset(),()=>e.error(!0));function u(){s.forEach((l,c)=>{let p;if((0,CS.alwaysValidSchema)(n,l))t.var(d,!0);else p=e.subschema({keyword:"oneOf",schemaProp:c,compositeRule:!0},d);if(c>0)t.if(Bn._`${d} && ${o}`).assign(o,!1).assign(a,Bn._`[${a}, ${c}]`).else();t.if(d,()=>{if(t.assign(o,!0),t.assign(a,c),p)e.mergeEvaluated(p,Bn.Name)})})}}};Ra.default=jS});var Zp=P(function(Ca){Object.defineProperty(Ca,"__esModule",{value:!0});var FS=D(),TS={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:i}=e;if(!Array.isArray(r))throw Error("ajv implementation error");let n=t.name("valid");r.forEach((s,o)=>{if((0,FS.alwaysValidSchema)(i,s))return;let a=e.subschema({keyword:"allOf",schemaProp:o},n);e.ok(n),e.mergeEvaluated(a)})}};Ca.default=TS});var rf=P(function(Oa){Object.defineProperty(Oa,"__esModule",{value:!0});var Gn=j(),tf=D(),kS={message:({params:e})=>Gn.str`must match "${e.ifClause}" schema`,params:({params:e})=>Gn._`{failingKeyword: ${e.ifClause}}`},AS={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:kS,code(e){let{gen:t,parentSchema:r,it:i}=e;if(r.then===void 0&&r.else===void 0)(0,tf.checkStrictMode)(i,'"if" without "then" and "else" is ignored');let n=ef(i,"then"),s=ef(i,"else");if(!n&&!s)return;let o=t.let("valid",!0),a=t.name("_valid");if(d(),e.reset(),n&&s){let l=t.let("ifClause");e.setParams({ifClause:l}),t.if(a,u("then",l),u("else",l))}else if(n)t.if(a,u("then"));else t.if((0,Gn.not)(a),u("else"));e.pass(o,()=>e.error(!0));function d(){let l=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);e.mergeEvaluated(l)}function u(l,c){return()=>{let p=e.subschema({keyword:l},a);if(t.assign(o,a),e.mergeValidEvaluated(p,o),c)t.assign(c,Gn._`${l}`);else e.setParams({ifClause:l})}}}};function ef(e,t){let r=e.schema[t];return r!==void 0&&!(0,tf.alwaysValidSchema)(e,r)}Oa.default=AS});var nf=P(function(ja){Object.defineProperty(ja,"__esModule",{value:!0});var DS=D(),NS={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){if(t.if===void 0)(0,DS.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};ja.default=NS});var Ta=P(function(Fa){Object.defineProperty(Fa,"__esModule",{value:!0});var LS=ma(),qS=Ap(),MS=ha(),US=Np(),BS=Lp(),GS=Ln(),VS=Bp(),KS=wa(),zS=Kp(),WS=Jp(),HS=Qp(),JS=Yp(),QS=Xp(),YS=Zp(),XS=rf(),ZS=nf();function ex(e=!1){let t=[HS.default,JS.default,QS.default,YS.default,XS.default,ZS.default,VS.default,KS.default,GS.default,zS.default,WS.default];if(e)t.push(qS.default,US.default);else t.push(LS.default,MS.default);return t.push(BS.default),t}Fa.default=ex});var Aa=P(function(wi){Object.defineProperty(wi,"__esModule",{value:!0});wi.dynamicAnchor=void 0;var ka=j(),tx=Oe(),sf=ci(),rx=jn(),ix={keyword:"$dynamicAnchor",schemaType:"string",code:(e)=>of(e,e.schema)};function of(e,t){let{gen:r,it:i}=e;i.schemaEnv.root.dynamicAnchors[t]=!0;let n=ka._`${tx.default.dynamicAnchors}${(0,ka.getProperty)(t)}`,s=i.errSchemaPath==="#"?i.validateName:nx(e);r.if(ka._`!${n}`,()=>r.assign(n,s))}wi.dynamicAnchor=of;function nx(e){let{schemaEnv:t,schema:r,self:i}=e.it,{root:n,baseId:s,localRefs:o,meta:a}=t.root,{schemaId:d}=i.opts,u=new sf.SchemaEnv({schema:r,schemaId:d,root:n,baseId:s,localRefs:o,meta:a});return sf.compileSchema.call(i,u),(0,rx.getValidate)(e,u)}wi.default=ix});var Da=P(function($i){Object.defineProperty($i,"__esModule",{value:!0});$i.dynamicRef=void 0;var af=j(),sx=Oe(),lf=jn(),ox={keyword:"$dynamicRef",schemaType:"string",code:(e)=>cf(e,e.schema)};function cf(e,t){let{gen:r,keyword:i,it:n}=e;if(t[0]!=="#")throw Error(`"${i}" only supports hash fragment reference`);let s=t.slice(1);if(n.allErrors)o();else{let d=r.let("valid",!1);o(d),e.ok(d)}function o(d){if(n.schemaEnv.root.dynamicAnchors[s]){let u=r.let("_v",af._`${sx.default.dynamicAnchors}${(0,af.getProperty)(s)}`);r.if(u,a(u,d),a(n.validateName,d))}else a(n.validateName,d)()}function a(d,u){return u?()=>r.block(()=>{(0,lf.callRef)(e,d),r.let(u,!0)}):()=>(0,lf.callRef)(e,d)}}$i.dynamicRef=cf;$i.default=ox});var df=P(function(Na){Object.defineProperty(Na,"__esModule",{value:!0});var ax=Aa(),lx=D(),cx={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){if(e.schema)(0,ax.dynamicAnchor)(e,"");else(0,lx.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};Na.default=cx});var uf=P(function(La){Object.defineProperty(La,"__esModule",{value:!0});var dx=Da(),ux={keyword:"$recursiveRef",schemaType:"string",code:(e)=>(0,dx.dynamicRef)(e,e.schema)};La.default=ux});var pf=P(function(qa){Object.defineProperty(qa,"__esModule",{value:!0});var px=Aa(),fx=Da(),mx=df(),hx=uf(),gx=[px.default,fx.default,mx.default,hx.default];qa.default=gx});var mf=P(function(Ma){Object.defineProperty(Ma,"__esModule",{value:!0});var ff=Ln(),yx={keyword:"dependentRequired",type:"object",schemaType:"object",error:ff.error,code:(e)=>(0,ff.validatePropertyDeps)(e)};Ma.default=yx});var hf=P(function(Ua){Object.defineProperty(Ua,"__esModule",{value:!0});var _x=Ln(),bx={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(e)=>(0,_x.validateSchemaDeps)(e)};Ua.default=bx});var gf=P(function(Ba){Object.defineProperty(Ba,"__esModule",{value:!0});var Px=D(),vx={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:r}){if(t.contains===void 0)(0,Px.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}};Ba.default=vx});var yf=P(function(Ga){Object.defineProperty(Ga,"__esModule",{value:!0});var wx=mf(),$x=hf(),Ex=gf(),Ix=[wx.default,$x.default,Ex.default];Ga.default=Ix});var bf=P(function(Va){Object.defineProperty(Va,"__esModule",{value:!0});var Ct=j(),_f=D(),Sx=Oe(),xx={message:"must NOT have unevaluated properties",params:({params:e})=>Ct._`{unevaluatedProperty: ${e.unevaluatedProperty}}`},Rx={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:xx,code(e){let{gen:t,schema:r,data:i,errsCount:n,it:s}=e;if(!n)throw Error("ajv implementation error");let{allErrors:o,props:a}=s;if(a instanceof Ct.Name)t.if(Ct._`${a} !== true`,()=>t.forIn("key",i,(c)=>t.if(u(a,c),()=>d(c))));else if(a!==!0)t.forIn("key",i,(c)=>a===void 0?d(c):t.if(l(a,c),()=>d(c)));s.props=!0,e.ok(Ct._`${n} === ${Sx.default.errors}`);function d(c){if(r===!1){if(e.setParams({unevaluatedProperty:c}),e.error(),!o)t.break();return}if(!(0,_f.alwaysValidSchema)(s,r)){let p=t.name("valid");if(e.subschema({keyword:"unevaluatedProperties",dataProp:c,dataPropType:_f.Type.Str},p),!o)t.if((0,Ct.not)(p),()=>t.break())}}function u(c,p){return Ct._`!${c} || !${c}[${p}]`}function l(c,p){let f=[];for(let m in c)if(c[m]===!0)f.push(Ct._`${p} !== ${m}`);return(0,Ct.and)(...f)}}};Va.default=Rx});var vf=P(function(Ka){Object.defineProperty(Ka,"__esModule",{value:!0});var Bt=j(),Pf=D(),Cx={message:({params:{len:e}})=>Bt.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>Bt._`{limit: ${e}}`},Ox={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:Cx,code(e){let{gen:t,schema:r,data:i,it:n}=e,s=n.items||0;if(s===!0)return;let o=t.const("len",Bt._`${i}.length`);if(r===!1)e.setParams({len:s}),e.fail(Bt._`${o} > ${s}`);else if(typeof r=="object"&&!(0,Pf.alwaysValidSchema)(n,r)){let d=t.var("valid",Bt._`${o} <= ${s}`);t.if((0,Bt.not)(d),()=>a(d,s)),e.ok(d)}n.items=!0;function a(d,u){t.forRange("i",u,o,(l)=>{if(e.subschema({keyword:"unevaluatedItems",dataProp:l,dataPropType:Pf.Type.Num},d),!n.allErrors)t.if((0,Bt.not)(d),()=>t.break())})}}};Ka.default=Ox});var wf=P(function(za){Object.defineProperty(za,"__esModule",{value:!0});var jx=bf(),Fx=vf(),Tx=[jx.default,Fx.default];za.default=Tx});var $f=P(function(Wa){Object.defineProperty(Wa,"__esModule",{value:!0});var Q=j(),kx={message:({schemaCode:e})=>Q.str`must match format "${e}"`,params:({schemaCode:e})=>Q._`{format: ${e}}`},Ax={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:kx,code(e,t){let{gen:r,data:i,$data:n,schema:s,schemaCode:o,it:a}=e,{opts:d,errSchemaPath:u,schemaEnv:l,self:c}=a;if(!d.validateFormats)return;if(n)p();else f();function p(){let m=r.scopeValue("formats",{ref:c.formats,code:d.code.formats}),h=r.const("fDef",Q._`${m}[${o}]`),g=r.let("fType"),_=r.let("format");r.if(Q._`typeof ${h} == "object" && !(${h} instanceof RegExp)`,()=>r.assign(g,Q._`${h}.type || "string"`).assign(_,Q._`${h}.validate`),()=>r.assign(g,Q._`"string"`).assign(_,h)),e.fail$data((0,Q.or)(b(),v()));function b(){if(d.strictSchema===!1)return Q.nil;return Q._`${o} && !${_}`}function v(){let w=l.$async?Q._`(${h}.async ? await ${_}(${i}) : ${_}(${i}))`:Q._`${_}(${i})`,I=Q._`(typeof ${_} == "function" ? ${w} : ${_}.test(${i}))`;return Q._`${_} && ${_} !== true && ${g} === ${t} && !${I}`}}function f(){let m=c.formats[s];if(!m){b();return}if(m===!0)return;let[h,g,_]=v(m);if(h===t)e.pass(w());function b(){if(d.strictSchema===!1){c.logger.warn(I());return}throw Error(I());function I(){return`unknown format "${s}" ignored in schema at path "${u}"`}}function v(I){let E=I instanceof RegExp?(0,Q.regexpCode)(I):d.code.formats?Q._`${d.code.formats}${(0,Q.getProperty)(s)}`:void 0,x=r.scopeValue("formats",{key:s,ref:I,code:E});if(typeof I=="object"&&!(I instanceof RegExp))return[I.type||"string",I.validate,Q._`${x}.validate`];return["string",I,x]}function w(){if(typeof m=="object"&&!(m instanceof RegExp)&&m.async){if(!l.$async)throw Error("async format in sync schema");return Q._`await ${_}(${i})`}return typeof g=="function"?Q._`${_}(${i})`:Q._`${_}.test(${i})`}}}};Wa.default=Ax});var Ja=P(function(Ha){Object.defineProperty(Ha,"__esModule",{value:!0});var Dx=$f(),Nx=[Dx.default];Ha.default=Nx});var Qa=P(function(br){Object.defineProperty(br,"__esModule",{value:!0});br.contentVocabulary=br.metadataVocabulary=void 0;br.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];br.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var If=P(function(Ya){Object.defineProperty(Ya,"__esModule",{value:!0});var Lx=Qo(),qx=pa(),Mx=Ta(),Ux=pf(),Bx=yf(),Gx=wf(),Vx=Ja(),Ef=Qa(),Kx=[Ux.default,Lx.default,qx.default,(0,Mx.default)(!0),Vx.default,Ef.metadataVocabulary,Ef.contentVocabulary,Bx.default,Gx.default];Ya.default=Kx});var xf=P(function(Vn){Object.defineProperty(Vn,"__esModule",{value:!0});Vn.DiscrError=void 0;var Sf;(function(e){e.Tag="tag",e.Mapping="mapping"})(Sf||(Vn.DiscrError=Sf={}))});var el=P(function(Za){Object.defineProperty(Za,"__esModule",{value:!0});var Pr=j(),Xa=xf(),Rf=ci(),zx=gr(),Wx=D(),Hx={message:({params:{discrError:e,tagName:t}})=>e===Xa.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>Pr._`{error: ${e}, tag: ${r}, tagValue: ${t}}`},Jx={keyword:"discriminator",type:"object",schemaType:"object",error:Hx,code(e){let{gen:t,data:r,schema:i,parentSchema:n,it:s}=e,{oneOf:o}=n;if(!s.opts.discriminator)throw Error("discriminator: requires discriminator option");let a=i.propertyName;if(typeof a!="string")throw Error("discriminator: requires propertyName");if(i.mapping)throw Error("discriminator: mapping is not supported");if(!o)throw Error("discriminator: requires oneOf keyword");let d=t.let("valid",!1),u=t.const("tag",Pr._`${r}${(0,Pr.getProperty)(a)}`);t.if(Pr._`typeof ${u} == "string"`,()=>l(),()=>e.error(!1,{discrError:Xa.DiscrError.Tag,tag:u,tagName:a})),e.ok(d);function l(){let f=p();t.if(!1);for(let m in f)t.elseIf(Pr._`${u} === ${m}`),t.assign(d,c(f[m]));t.else(),e.error(!1,{discrError:Xa.DiscrError.Mapping,tag:u,tagName:a}),t.endIf()}function c(f){let m=t.name("valid"),h=e.subschema({keyword:"oneOf",schemaProp:f},m);return e.mergeEvaluated(h,Pr.Name),m}function p(){var f;let m={},h=_(n),g=!0;for(let w=0;w<o.length;w++){let I=o[w];if((I===null||I===void 0?void 0:I.$ref)&&!(0,Wx.schemaHasRulesButRef)(I,s.self.RULES)){let x=I.$ref;if(I=Rf.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,x),I instanceof Rf.SchemaEnv)I=I.schema;if(I===void 0)throw new zx.default(s.opts.uriResolver,s.baseId,x)}let E=(f=I===null||I===void 0?void 0:I.properties)===null||f===void 0?void 0:f[a];if(typeof E!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(h||_(I)),b(E,w)}if(!g)throw Error(`discriminator: "${a}" must be required`);return m;function _({required:w}){return Array.isArray(w)&&w.includes(a)}function b(w,I){if(w.const)v(w.const,I);else if(w.enum)for(let E of w.enum)v(E,I);else throw Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function v(w,I){if(typeof w!="string"||w in m)throw Error(`discriminator: "${a}" values must be unique strings`);m[w]=I}}}};Za.default=Jx});var Cf=P(function(_D,Qx){Qx.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}});var Of=P(function(bD,Yx){Yx.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}});var jf=P(function(PD,Xx){Xx.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}});var Ff=P(function(vD,Zx){Zx.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}});var Tf=P(function(wD,eR){eR.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}});var kf=P(function($D,tR){tR.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}});var Af=P(function(ED,rR){rR.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}});var Df=P(function(ID,iR){iR.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}});var Nf=P(function(tl){Object.defineProperty(tl,"__esModule",{value:!0});var nR=Cf(),sR=Of(),oR=jf(),aR=Ff(),lR=Tf(),cR=kf(),dR=Af(),uR=Df(),pR=["/properties"];function fR(e){return[nR,sR,oR,aR,lR,t(this,cR),dR,t(this,uR)].forEach((r)=>this.addMetaSchema(r,void 0,!1)),this;function t(r,i){return e?r.$dataMetaSchema(i,pR):i}}tl.default=fR});var nl=P(function(z,il){Object.defineProperty(z,"__esModule",{value:!0});z.MissingRefError=z.ValidationError=z.CodeGen=z.Name=z.nil=z.stringify=z.str=z._=z.KeywordCxt=z.Ajv2020=void 0;var mR=Wo(),hR=If(),gR=el(),yR=Nf(),rl="https://json-schema.org/draft/2020-12/schema";class Ei extends mR.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),hR.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(gR.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;if(!t)return;yR.default.call(this,e),this.refs["http://json-schema.org/schema"]=rl}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(rl)?rl:void 0)}}z.Ajv2020=Ei;il.exports=z=Ei;il.exports.Ajv2020=Ei;Object.defineProperty(z,"__esModule",{value:!0});z.default=Ei;var _R=hr();Object.defineProperty(z,"KeywordCxt",{enumerable:!0,get:function(){return _R.KeywordCxt}});var vr=j();Object.defineProperty(z,"_",{enumerable:!0,get:function(){return vr._}});Object.defineProperty(z,"str",{enumerable:!0,get:function(){return vr.str}});Object.defineProperty(z,"stringify",{enumerable:!0,get:function(){return vr.stringify}});Object.defineProperty(z,"nil",{enumerable:!0,get:function(){return vr.nil}});Object.defineProperty(z,"Name",{enumerable:!0,get:function(){return vr.Name}});Object.defineProperty(z,"CodeGen",{enumerable:!0,get:function(){return vr.CodeGen}});var bR=ai();Object.defineProperty(z,"ValidationError",{enumerable:!0,get:function(){return bR.default}});var PR=gr();Object.defineProperty(z,"MissingRefError",{enumerable:!0,get:function(){return PR.default}})});var Fg=P(function(nt){Object.defineProperty(nt,"__esModule",{value:!0});nt.formatNames=nt.fastFormats=nt.fullFormats=void 0;function it(e,t){return{validate:e,compare:t}}nt.fullFormats={date:it(Rg,rc),time:it(ec(!0),ic),"date-time":it(Ig(!0),Og),"iso-time":it(ec(),Cg),"iso-date-time":it(Ig(),jg),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:Zj,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:oF,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:eF,int32:{type:"number",validate:iF},int64:{type:"number",validate:nF},float:{type:"number",validate:xg},double:{type:"number",validate:xg},password:!0,binary:!0};nt.fastFormats={...nt.fullFormats,date:it(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,rc),time:it(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,ic),"date-time":it(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Og),"iso-time":it(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,Cg),"iso-date-time":it(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,jg),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};nt.formatNames=Object.keys(nt.fullFormats);function Hj(e){return e%4===0&&(e%100!==0||e%400===0)}var Jj=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Qj=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Rg(e){let t=Jj.exec(e);if(!t)return!1;let r=+t[1],i=+t[2],n=+t[3];return i>=1&&i<=12&&n>=1&&n<=(i===2&&Hj(r)?29:Qj[i])}function rc(e,t){if(!(e&&t))return;if(e>t)return 1;if(e<t)return-1;return 0}var Zl=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function ec(e){return function(r){let i=Zl.exec(r);if(!i)return!1;let n=+i[1],s=+i[2],o=+i[3],a=i[4],d=i[5]==="-"?-1:1,u=+(i[6]||0),l=+(i[7]||0);if(u>23||l>59||e&&!a)return!1;if(n<=23&&s<=59&&o<60)return!0;let c=s-l*d,p=n-u*d-(c<0?1:0);return(p===23||p===-1)&&(c===59||c===-1)&&o<61}}function ic(e,t){if(!(e&&t))return;let r=new Date("2020-01-01T"+e).valueOf(),i=new Date("2020-01-01T"+t).valueOf();if(!(r&&i))return;return r-i}function Cg(e,t){if(!(e&&t))return;let r=Zl.exec(e),i=Zl.exec(t);if(!(r&&i))return;if(e=r[1]+r[2]+r[3],t=i[1]+i[2]+i[3],e>t)return 1;if(e<t)return-1;return 0}var tc=/t|\s/i;function Ig(e){let t=ec(e);return function(i){let n=i.split(tc);return n.length===2&&Rg(n[0])&&t(n[1])}}function Og(e,t){if(!(e&&t))return;let r=new Date(e).valueOf(),i=new Date(t).valueOf();if(!(r&&i))return;return r-i}function jg(e,t){if(!(e&&t))return;let[r,i]=e.split(tc),[n,s]=t.split(tc),o=rc(r,n);if(o===void 0)return;return o||ic(i,s)}var Yj=/\/|:/,Xj=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function Zj(e){return Yj.test(e)&&Xj.test(e)}var Sg=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function eF(e){return Sg.lastIndex=0,Sg.test(e)}var tF=-2147483648,rF=2147483647;function iF(e){return Number.isInteger(e)&&e<=rF&&e>=tF}function nF(e){return Number.isInteger(e)}function xg(){return!0}var sF=/[^\\]\\Z/;function oF(e){if(sF.test(e))return!1;try{return new RegExp(e),!0}catch(t){return!1}}});var kg=P(function(nc){Object.defineProperty(nc,"__esModule",{value:!0});var aF=Qo(),lF=pa(),cF=Ta(),dF=Ja(),Tg=Qa(),uF=[aF.default,lF.default,(0,cF.default)(),dF.default,Tg.metadataVocabulary,Tg.contentVocabulary];nc.default=uF});var Ag=P(function(zM,pF){pF.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Ng=P(function(W,sc){Object.defineProperty(W,"__esModule",{value:!0});W.MissingRefError=W.ValidationError=W.CodeGen=W.Name=W.nil=W.stringify=W.str=W._=W.KeywordCxt=W.Ajv=void 0;var fF=Wo(),mF=kg(),hF=el(),Dg=Ag(),gF=["/properties"],Rs="http://json-schema.org/draft-07/schema";class Ki extends fF.default{_addVocabularies(){if(super._addVocabularies(),mF.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(hF.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(Dg,gF):Dg;this.addMetaSchema(e,Rs,!1),this.refs["http://json-schema.org/schema"]=Rs}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Rs)?Rs:void 0)}}W.Ajv=Ki;sc.exports=W=Ki;sc.exports.Ajv=Ki;Object.defineProperty(W,"__esModule",{value:!0});W.default=Ki;var yF=hr();Object.defineProperty(W,"KeywordCxt",{enumerable:!0,get:function(){return yF.KeywordCxt}});var Lr=j();Object.defineProperty(W,"_",{enumerable:!0,get:function(){return Lr._}});Object.defineProperty(W,"str",{enumerable:!0,get:function(){return Lr.str}});Object.defineProperty(W,"stringify",{enumerable:!0,get:function(){return Lr.stringify}});Object.defineProperty(W,"nil",{enumerable:!0,get:function(){return Lr.nil}});Object.defineProperty(W,"Name",{enumerable:!0,get:function(){return Lr.Name}});Object.defineProperty(W,"CodeGen",{enumerable:!0,get:function(){return Lr.CodeGen}});var _F=ai();Object.defineProperty(W,"ValidationError",{enumerable:!0,get:function(){return _F.default}});var bF=gr();Object.defineProperty(W,"MissingRefError",{enumerable:!0,get:function(){return bF.default}})});var Lg=P(function(qr){Object.defineProperty(qr,"__esModule",{value:!0});qr.formatLimitDefinition=void 0;var PF=Ng(),ze=j(),Tt=ze.operators,Cs={formatMaximum:{okStr:"<=",ok:Tt.LTE,fail:Tt.GT},formatMinimum:{okStr:">=",ok:Tt.GTE,fail:Tt.LT},formatExclusiveMaximum:{okStr:"<",ok:Tt.LT,fail:Tt.GTE},formatExclusiveMinimum:{okStr:">",ok:Tt.GT,fail:Tt.LTE}},vF={message:({keyword:e,schemaCode:t})=>ze.str`should be ${Cs[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>ze._`{comparison: ${Cs[e].okStr}, limit: ${t}}`};qr.formatLimitDefinition={keyword:Object.keys(Cs),type:"string",schemaType:"string",$data:!0,error:vF,code(e){let{gen:t,data:r,schemaCode:i,keyword:n,it:s}=e,{opts:o,self:a}=s;if(!o.validateFormats)return;let d=new PF.KeywordCxt(s,a.RULES.all.format.definition,"format");if(d.$data)u();else l();function u(){let p=t.scopeValue("formats",{ref:a.formats,code:o.code.formats}),f=t.const("fmt",ze._`${p}[${d.schemaCode}]`);e.fail$data((0,ze.or)(ze._`typeof ${f} != "object"`,ze._`${f} instanceof RegExp`,ze._`typeof ${f}.compare != "function"`,c(f)))}function l(){let p=d.schema,f=a.formats[p];if(!f||f===!0)return;if(typeof f!="object"||f instanceof RegExp||typeof f.compare!="function")throw Error(`"${n}": format "${p}" does not define "compare" function`);let m=t.scopeValue("formats",{key:p,ref:f,code:o.code.formats?ze._`${o.code.formats}${(0,ze.getProperty)(p)}`:void 0});e.fail$data(c(m))}function c(p){return ze._`${p}.compare(${r}, ${i}) ${Cs[n].fail} 0`}},dependencies:["format"]};var wF=(e)=>(e.addKeyword(qr.formatLimitDefinition),e);qr.default=wF});var Bg=P(function(zi,Ug){Object.defineProperty(zi,"__esModule",{value:!0});var Mr=Fg(),$F=Lg(),oc=j(),qg=new oc.Name("fullFormats"),EF=new oc.Name("fastFormats"),ac=(e,t={keywords:!0})=>{if(Array.isArray(t))return Mg(e,t,Mr.fullFormats,qg),e;let[r,i]=t.mode==="fast"?[Mr.fastFormats,EF]:[Mr.fullFormats,qg],n=t.formats||Mr.formatNames;if(Mg(e,n,r,i),t.keywords)(0,$F.default)(e);return e};ac.get=(e,t="full")=>{let i=(t==="fast"?Mr.fastFormats:Mr.fullFormats)[e];if(!i)throw Error(`Unknown format "${e}"`);return i};function Mg(e,t,r,i){var n,s;(n=(s=e.opts.code).formats)!==null&&n!==void 0||(s.formats=oc._`require("ajv-formats/dist/formats").${i}`);for(let o of t)e.addFormat(o,r[o])}Ug.exports=zi=ac;Object.defineProperty(zi,"__esModule",{value:!0});zi.default=ac});var jy=P(function(QU,Oy){Oy.exports=gT;function hT(e){let t={defaultWidth:0,output:process.stdout,tty:require("tty")};if(!e)return t;return Object.keys(t).forEach(function(r){if(!e[r])e[r]=t[r]}),e}function gT(e){let t=hT(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let r=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(r)&&r!==0)return r}return t.defaultWidth}});var Qy=P(function(dB,Jy){var jT=require("stream");class Hy extends jT{#r=null;constructor(e={}){super(e);this.writable=this.readable=!0,this.muted=!1,this.on("pipe",this._onpipe),this.replace=e.replace,this._prompt=e.prompt||null,this._hadControl=!1}#t(e,t){if(this._dest)return this._dest[e];if(this._src)return this._src[e];return t}#e(e,...t){if(typeof this._dest?.[e]==="function")this._dest[e](...t);if(typeof this._src?.[e]==="function")this._src[e](...t)}get isTTY(){if(this.#r!==null)return this.#r;return this.#t("isTTY",!1)}set isTTY(e){this.#r=e}get rows(){return this.#t("rows")}get columns(){return this.#t("columns")}mute(){this.muted=!0}unmute(){this.muted=!1}_onpipe(e){this._src=e}pipe(e,t){return this._dest=e,super.pipe(e,t)}pause(){if(this._src)return this._src.pause()}resume(){if(this._src)return this._src.resume()}write(e){if(this.muted){if(!this.replace)return!0;if(e.match(/^\u001b/)){if(e.indexOf(this._prompt)===0)e=e.slice(this._prompt.length),e=e.replace(/./g,this.replace),e=this._prompt+e;return this._hadControl=!0,this.emit("data",e)}else{if(this._prompt&&this._hadControl&&e.indexOf(this._prompt)===0)this._hadControl=!1,this.emit("data",this._prompt),e=e.slice(this._prompt.length);e=e.toString().replace(/./g,this.replace)}}this.emit("data",e)}end(e){if(this.muted)if(e&&this.replace)e=e.toString().replace(/./g,this.replace);else e=null;if(e)this.emit("data",e);this.emit("end")}destroy(...e){return this.#e("destroy",...e)}destroySoon(...e){return this.#e("destroySoon",...e)}close(...e){return this.#e("close",...e)}}Jy.exports=Hy});class at extends Error{constructor(e,t,r){super(r);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}}class lt extends at{constructor(e){super(1,"commander.invalidArgument",e);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}class sn{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue(e,t){if(t===this.defaultValue||!Array.isArray(t))return[e];return t.push(e),t}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new lt(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(t,r);return t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function on(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}var Xc=require("events"),ln=Ce(require("child_process")),He=Ce(require("path")),Yr=Ce(require("fs")),U=Ce(require("process")),Zc=require("util");var Hc=require("util");class an{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter((i)=>!i._hidden),r=e._getHelpCommand();if(r&&!r._hidden)t.push(r);if(this.sortSubcommands)t.sort((i,n)=>i.name().localeCompare(n.name()));return t}compareOptions(e,t){let r=(i)=>i.short?i.short.replace(/^-/,""):i.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter((i)=>!i.hidden),r=e._getHelpOption();if(r&&!r.hidden){let i=r.short&&e._findOption(r.short),n=r.long&&e._findOption(r.long);if(!i&&!n)t.push(r);else if(r.long&&!n)t.push(e.createOption(r.long,r.description));else if(r.short&&!i)t.push(e.createOption(r.short,r.description))}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let i=r.options.filter((n)=>!n.hidden);t.push(...i)}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleArguments(e){if(e._argsDescription)e.registeredArguments.forEach((t)=>{t.description=t.description||e._argsDescription[t.name()]||""});if(e.registeredArguments.find((t)=>t.description))return e.registeredArguments;return[]}subcommandTerm(e){let t=e.registeredArguments.map((r)=>on(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,i)=>Math.max(r,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(i)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,i)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(i)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,i)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(i)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,i)=>Math.max(r,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(i)))),0)}commandUsage(e){let t=e._name;if(e._aliases[0])t=t+"|"+e._aliases[0];let r="";for(let i=e.parent;i;i=i.parent)r=i.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((r)=>JSON.stringify(r)).join(", ")}`);if(e.defaultValue!==void 0){if(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue==="boolean")t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`)}if(e.presetArg!==void 0&&e.optional)t.push(`preset: ${JSON.stringify(e.presetArg)}`);if(e.envVar!==void 0)t.push(`env: ${e.envVar}`);if(t.length>0){let r=`(${t.join(", ")})`;if(e.description)return`${e.description} ${r}`;return r}return e.description}argumentDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((r)=>JSON.stringify(r)).join(", ")}`);if(e.defaultValue!==void 0)t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`);if(t.length>0){let r=`(${t.join(", ")})`;if(e.description)return`${e.description} ${r}`;return r}return e.description}formatItemList(e,t,r){if(t.length===0)return[];return[r.styleTitle(e),...t,""]}groupItems(e,t,r){let i=new Map;return e.forEach((n)=>{let s=r(n);if(!i.has(s))i.set(s,[])}),t.forEach((n)=>{let s=r(n);if(!i.has(s))i.set(s,[]);i.get(s).push(n)}),i}formatHelp(e,t){let r=t.padWidth(e,t),i=t.helpWidth??80;function n(l,c){return t.formatItem(l,r,c,t)}let s=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],o=t.commandDescription(e);if(o.length>0)s=s.concat([t.boxWrap(t.styleCommandDescription(o),i),""]);let a=t.visibleArguments(e).map((l)=>n(t.styleArgumentTerm(t.argumentTerm(l)),t.styleArgumentDescription(t.argumentDescription(l))));if(s=s.concat(this.formatItemList("Arguments:",a,t)),this.groupItems(e.options,t.visibleOptions(e),(l)=>l.helpGroupHeading??"Options:").forEach((l,c)=>{let p=l.map((f)=>n(t.styleOptionTerm(t.optionTerm(f)),t.styleOptionDescription(t.optionDescription(f))));s=s.concat(this.formatItemList(c,p,t))}),t.showGlobalOptions){let l=t.visibleGlobalOptions(e).map((c)=>n(t.styleOptionTerm(t.optionTerm(c)),t.styleOptionDescription(t.optionDescription(c))));s=s.concat(this.formatItemList("Global Options:",l,t))}return this.groupItems(e.commands,t.visibleCommands(e),(l)=>l.helpGroup()||"Commands:").forEach((l,c)=>{let p=l.map((f)=>n(t.styleSubcommandTerm(t.subcommandTerm(f)),t.styleSubcommandDescription(t.subcommandDescription(f))));s=s.concat(this.formatItemList(c,p,t))}),s.join(`
|
|
11
|
-
`)}displayWidth(e){return
|
|
12
|
-
`+" ".repeat(t+
|
|
13
|
-
${
|
|
14
|
-
`)}}class
|
|
10
|
+
deps: ${i}}`};var $0={keyword:"dependencies",type:"object",schemaType:"object",error:et.error,code(e){let[t,i]=q0(e);FC(e,t),HC(e,i)}};function q0({schema:e}){let t={},i={};for(let n in e){if(n==="__proto__")continue;let s=Array.isArray(e[n])?t:i;s[n]=e[n]}return[t,i]}function FC(e,t=e.schema){let{gen:i,data:n,it:s}=e;if(Object.keys(t).length===0)return;let o=i.let("missing");for(let r in t){let g=t[r];if(g.length===0)continue;let a=(0,kn.propertyInData)(i,n,r,s.opts.ownProperties);if(e.setParams({property:r,depsCount:g.length,deps:g.join(", ")}),s.allErrors)i.if(a,()=>{for(let l of g)(0,kn.checkReportMissingProp)(e,l)});else i.if(Jg._`${a} && (${(0,kn.checkMissingProp)(e,g,o)})`),(0,kn.reportMissingProp)(e,o),i.else()}}et.validatePropertyDeps=FC;function HC(e,t=e.schema){let{gen:i,data:n,keyword:s,it:o}=e,r=i.name("valid");for(let g in t){if((0,M0.alwaysValidSchema)(o,t[g]))continue;i.if((0,kn.propertyInData)(i,n,g,o.opts.ownProperties),()=>{let a=e.subschema({keyword:s,schemaProp:g},r);e.mergeValidEvaluated(a,r)},()=>i.var(r,!0)),e.ok(r)}}et.validateSchemaDeps=HC;et.default=$0});var kC=f(function(Eg){Object.defineProperty(Eg,"__esModule",{value:!0});var vC=v(),ew=N(),tw={message:"property name must be valid",params:({params:e})=>vC._`{propertyName: ${e.propertyName}}`},iw={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:tw,code(e){let{gen:t,schema:i,data:n,it:s}=e;if((0,ew.alwaysValidSchema)(s,i))return;let o=t.name("valid");t.forIn("key",n,(r)=>{e.setParams({propertyName:r}),e.subschema({keyword:"propertyNames",data:r,dataTypes:["string"],propertyName:r,compositeRule:!0},o),t.if((0,vC.not)(o),()=>{if(e.error(!0),!s.allErrors)t.break()})}),e.ok(o)}};Eg.default=iw});var Og=f(function(Ug){Object.defineProperty(Ug,"__esModule",{value:!0});var qs=ve(),Oe=v(),nw=He(),eo=N(),sw={message:"must NOT have additional properties",params:({params:e})=>Oe._`{additionalProperty: ${e.additionalProperty}}`},ow={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:sw,code(e){let{gen:t,schema:i,parentSchema:n,data:s,errsCount:o,it:r}=e;if(!o)throw Error("ajv implementation error");let{allErrors:g,opts:a}=r;if(r.props=!0,a.removeAdditional!=="all"&&(0,eo.alwaysValidSchema)(r,i))return;let l=(0,qs.allSchemaProperties)(n.properties),I=(0,qs.allSchemaProperties)(n.patternProperties);d(),e.ok(Oe._`${o} === ${nw.default.errors}`);function d(){t.forIn("key",s,(u)=>{if(!l.length&&!I.length)m(u);else t.if(p(u),()=>m(u))})}function p(u){let A;if(l.length>8){let b=(0,eo.schemaRefOrVal)(r,n.properties,"properties");A=(0,qs.isOwnProperty)(t,b,u)}else if(l.length)A=(0,Oe.or)(...l.map((b)=>Oe._`${u} === ${b}`));else A=Oe.nil;if(I.length)A=(0,Oe.or)(A,...I.map((b)=>Oe._`${(0,qs.usePattern)(e,b)}.test(${u})`));return(0,Oe.not)(A)}function c(u){t.code(Oe._`delete ${s}[${u}]`)}function m(u){if(a.removeAdditional==="all"||a.removeAdditional&&i===!1){c(u);return}if(i===!1){if(e.setParams({additionalProperty:u}),e.error(),!g)t.break();return}if(typeof i=="object"&&!(0,eo.alwaysValidSchema)(r,i)){let A=t.name("valid");if(a.removeAdditional==="failing")C(u,A,!1),t.if((0,Oe.not)(A),()=>{e.reset(),c(u)});else if(C(u,A),!g)t.if((0,Oe.not)(A),()=>t.break())}}function C(u,A,b){let W={keyword:"additionalProperties",dataProp:u,dataPropType:eo.Type.Str};if(b===!1)Object.assign(W,{compositeRule:!0,createErrors:!1,allErrors:!1});e.subschema(W,A)}}};Ug.default=ow});var NC=f(function(zg){Object.defineProperty(zg,"__esModule",{value:!0});var rw=yi(),PC=ve(),Tg=N(),YC=Og(),gw={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:i,parentSchema:n,data:s,it:o}=e;if(o.opts.removeAdditional==="all"&&n.additionalProperties===void 0)YC.default.code(new rw.KeywordCxt(o,YC.default,"additionalProperties"));let r=(0,PC.allSchemaProperties)(i);for(let d of r)o.definedProperties.add(d);if(o.opts.unevaluated&&r.length&&o.props!==!0)o.props=Tg.mergeEvaluated.props(t,(0,Tg.toHash)(r),o.props);let g=r.filter((d)=>!(0,Tg.alwaysValidSchema)(o,i[d]));if(g.length===0)return;let a=t.name("valid");for(let d of g){if(l(d))I(d);else{if(t.if((0,PC.propertyInData)(t,s,d,o.opts.ownProperties)),I(d),!o.allErrors)t.else().var(a,!0);t.endIf()}e.it.definedProperties.add(d),e.ok(a)}function l(d){return o.opts.useDefaults&&!o.compositeRule&&i[d].default!==void 0}function I(d){e.subschema({keyword:"properties",schemaProp:d,dataProp:d},a)}}};zg.default=gw});var JC=f(function(jg){Object.defineProperty(jg,"__esModule",{value:!0});var XC=ve(),to=v(),SC=N(),xC=N(),aw={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:i,data:n,parentSchema:s,it:o}=e,{opts:r}=o,g=(0,XC.allSchemaProperties)(i),a=g.filter((C)=>(0,SC.alwaysValidSchema)(o,i[C]));if(g.length===0||a.length===g.length&&(!o.opts.unevaluated||o.props===!0))return;let l=r.strictSchema&&!r.allowMatchingProperties&&s.properties,I=t.name("valid");if(o.props!==!0&&!(o.props instanceof to.Name))o.props=(0,xC.evaluatedPropsToName)(t,o.props);let{props:d}=o;p();function p(){for(let C of g){if(l)c(C);if(o.allErrors)m(C);else t.var(I,!0),m(C),t.if(I)}}function c(C){for(let u in l)if(new RegExp(C).test(u))(0,SC.checkStrictMode)(o,`property ${u} matches pattern ${C} (use allowMatchingProperties)`)}function m(C){t.forIn("key",n,(u)=>{t.if(to._`${(0,XC.usePattern)(e,C)}.test(${u})`,()=>{let A=a.includes(C);if(!A)e.subschema({keyword:"patternProperties",schemaProp:C,dataProp:u,dataPropType:xC.Type.Str},I);if(o.opts.unevaluated&&d!==!0)t.assign(to._`${d}[${u}]`,!0);else if(!A&&!o.allErrors)t.if((0,to.not)(I),()=>t.break())})})}}};jg.default=aw});var EC=f(function(Dg){Object.defineProperty(Dg,"__esModule",{value:!0});var lw=N(),Iw={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:i,it:n}=e;if((0,lw.alwaysValidSchema)(n,i)){e.fail();return}let s=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},s),e.failResult(s,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Dg.default=Iw});var UC=f(function(Qg){Object.defineProperty(Qg,"__esModule",{value:!0});var dw=ve(),cw={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:dw.validateUnion,error:{message:"must match a schema in anyOf"}};Qg.default=cw});var OC=f(function(_g){Object.defineProperty(_g,"__esModule",{value:!0});var io=v(),Cw=N(),uw={message:"must match exactly one schema in oneOf",params:({params:e})=>io._`{passingSchemas: ${e.passing}}`},mw={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:uw,code(e){let{gen:t,schema:i,parentSchema:n,it:s}=e;if(!Array.isArray(i))throw Error("ajv implementation error");if(s.opts.discriminator&&n.discriminator)return;let o=i,r=t.let("valid",!1),g=t.let("passing",null),a=t.name("_valid");e.setParams({passing:g}),t.block(l),e.result(r,()=>e.reset(),()=>e.error(!0));function l(){o.forEach((I,d)=>{let p;if((0,Cw.alwaysValidSchema)(s,I))t.var(a,!0);else p=e.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},a);if(d>0)t.if(io._`${a} && ${r}`).assign(r,!1).assign(g,io._`[${g}, ${d}]`).else();t.if(a,()=>{if(t.assign(r,!0),t.assign(g,d),p)e.mergeEvaluated(p,io.Name)})})}}};_g.default=mw});var TC=f(function(Kg){Object.defineProperty(Kg,"__esModule",{value:!0});var pw=N(),Aw={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:i,it:n}=e;if(!Array.isArray(i))throw Error("ajv implementation error");let s=t.name("valid");i.forEach((o,r)=>{if((0,pw.alwaysValidSchema)(n,o))return;let g=e.subschema({keyword:"allOf",schemaProp:r},s);e.ok(s),e.mergeEvaluated(g)})}};Kg.default=Aw});var DC=f(function(Lg){Object.defineProperty(Lg,"__esModule",{value:!0});var no=v(),jC=N(),Zw={message:({params:e})=>no.str`must match "${e.ifClause}" schema`,params:({params:e})=>no._`{failingKeyword: ${e.ifClause}}`},bw={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:Zw,code(e){let{gen:t,parentSchema:i,it:n}=e;if(i.then===void 0&&i.else===void 0)(0,jC.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let s=zC(n,"then"),o=zC(n,"else");if(!s&&!o)return;let r=t.let("valid",!0),g=t.name("_valid");if(a(),e.reset(),s&&o){let I=t.let("ifClause");e.setParams({ifClause:I}),t.if(g,l("then",I),l("else",I))}else if(s)t.if(g,l("then"));else t.if((0,no.not)(g),l("else"));e.pass(r,()=>e.error(!0));function a(){let I=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},g);e.mergeEvaluated(I)}function l(I,d){return()=>{let p=e.subschema({keyword:I},g);if(t.assign(r,g),e.mergeValidEvaluated(p,r),d)t.assign(d,no._`${I}`);else e.setParams({ifClause:I})}}}};function zC(e,t){let i=e.schema[t];return i!==void 0&&!(0,jC.alwaysValidSchema)(e,i)}Lg.default=bw});var QC=f(function(Mg){Object.defineProperty(Mg,"__esModule",{value:!0});var Ww=N(),hw={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:i}){if(t.if===void 0)(0,Ww.checkStrictMode)(i,`"${e}" without "if" is ignored`)}};Mg.default=hw});var qg=f(function($g){Object.defineProperty($g,"__esModule",{value:!0});var fw=Yg(),yw=BC(),Vw=Ng(),Bw=RC(),Gw=wC(),Rw=$s(),ww=kC(),Fw=Og(),Hw=NC(),vw=JC(),kw=EC(),Pw=UC(),Yw=OC(),Nw=TC(),Xw=DC(),Sw=QC();function xw(e=!1){let t=[kw.default,Pw.default,Yw.default,Nw.default,Xw.default,Sw.default,ww.default,Fw.default,Rw.default,Hw.default,vw.default];if(e)t.push(yw.default,Bw.default);else t.push(fw.default,Vw.default);return t.push(Gw.default),t}$g.default=xw});var ta=f(function(Pn){Object.defineProperty(Pn,"__esModule",{value:!0});Pn.dynamicAnchor=void 0;var ea=v(),Jw=He(),_C=Wn(),Ew=js(),Uw={keyword:"$dynamicAnchor",schemaType:"string",code:(e)=>KC(e,e.schema)};function KC(e,t){let{gen:i,it:n}=e;n.schemaEnv.root.dynamicAnchors[t]=!0;let s=ea._`${Jw.default.dynamicAnchors}${(0,ea.getProperty)(t)}`,o=n.errSchemaPath==="#"?n.validateName:Ow(e);i.if(ea._`!${s}`,()=>i.assign(s,o))}Pn.dynamicAnchor=KC;function Ow(e){let{schemaEnv:t,schema:i,self:n}=e.it,{root:s,baseId:o,localRefs:r,meta:g}=t.root,{schemaId:a}=n.opts,l=new _C.SchemaEnv({schema:i,schemaId:a,root:s,baseId:o,localRefs:r,meta:g});return _C.compileSchema.call(n,l),(0,Ew.getValidate)(e,l)}Pn.default=Uw});var ia=f(function(Yn){Object.defineProperty(Yn,"__esModule",{value:!0});Yn.dynamicRef=void 0;var LC=v(),Tw=He(),MC=js(),zw={keyword:"$dynamicRef",schemaType:"string",code:(e)=>$C(e,e.schema)};function $C(e,t){let{gen:i,keyword:n,it:s}=e;if(t[0]!=="#")throw Error(`"${n}" only supports hash fragment reference`);let o=t.slice(1);if(s.allErrors)r();else{let a=i.let("valid",!1);r(a),e.ok(a)}function r(a){if(s.schemaEnv.root.dynamicAnchors[o]){let l=i.let("_v",LC._`${Tw.default.dynamicAnchors}${(0,LC.getProperty)(o)}`);i.if(l,g(l,a),g(s.validateName,a))}else g(s.validateName,a)()}function g(a,l){return l?()=>i.block(()=>{(0,MC.callRef)(e,a),i.let(l,!0)}):()=>(0,MC.callRef)(e,a)}}Yn.dynamicRef=$C;Yn.default=zw});var qC=f(function(na){Object.defineProperty(na,"__esModule",{value:!0});var jw=ta(),Dw=N(),Qw={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){if(e.schema)(0,jw.dynamicAnchor)(e,"");else(0,Dw.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};na.default=Qw});var eu=f(function(sa){Object.defineProperty(sa,"__esModule",{value:!0});var _w=ia(),Kw={keyword:"$recursiveRef",schemaType:"string",code:(e)=>(0,_w.dynamicRef)(e,e.schema)};sa.default=Kw});var tu=f(function(oa){Object.defineProperty(oa,"__esModule",{value:!0});var Lw=ta(),Mw=ia(),$w=qC(),qw=eu(),eF=[Lw.default,Mw.default,$w.default,qw.default];oa.default=eF});var nu=f(function(ra){Object.defineProperty(ra,"__esModule",{value:!0});var iu=$s(),tF={keyword:"dependentRequired",type:"object",schemaType:"object",error:iu.error,code:(e)=>(0,iu.validatePropertyDeps)(e)};ra.default=tF});var su=f(function(ga){Object.defineProperty(ga,"__esModule",{value:!0});var iF=$s(),nF={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(e)=>(0,iF.validateSchemaDeps)(e)};ga.default=nF});var ou=f(function(aa){Object.defineProperty(aa,"__esModule",{value:!0});var sF=N(),oF={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:i}){if(t.contains===void 0)(0,sF.checkStrictMode)(i,`"${e}" without "contains" is ignored`)}};aa.default=oF});var ru=f(function(la){Object.defineProperty(la,"__esModule",{value:!0});var rF=nu(),gF=su(),aF=ou(),lF=[rF.default,gF.default,aF.default];la.default=lF});var au=f(function(Ia){Object.defineProperty(Ia,"__esModule",{value:!0});var Pt=v(),gu=N(),IF=He(),dF={message:"must NOT have unevaluated properties",params:({params:e})=>Pt._`{unevaluatedProperty: ${e.unevaluatedProperty}}`},cF={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:dF,code(e){let{gen:t,schema:i,data:n,errsCount:s,it:o}=e;if(!s)throw Error("ajv implementation error");let{allErrors:r,props:g}=o;if(g instanceof Pt.Name)t.if(Pt._`${g} !== true`,()=>t.forIn("key",n,(d)=>t.if(l(g,d),()=>a(d))));else if(g!==!0)t.forIn("key",n,(d)=>g===void 0?a(d):t.if(I(g,d),()=>a(d)));o.props=!0,e.ok(Pt._`${s} === ${IF.default.errors}`);function a(d){if(i===!1){if(e.setParams({unevaluatedProperty:d}),e.error(),!r)t.break();return}if(!(0,gu.alwaysValidSchema)(o,i)){let p=t.name("valid");if(e.subschema({keyword:"unevaluatedProperties",dataProp:d,dataPropType:gu.Type.Str},p),!r)t.if((0,Pt.not)(p),()=>t.break())}}function l(d,p){return Pt._`!${d} || !${d}[${p}]`}function I(d,p){let c=[];for(let m in d)if(d[m]===!0)c.push(Pt._`${p} !== ${m}`);return(0,Pt.and)(...c)}}};Ia.default=cF});var Iu=f(function(da){Object.defineProperty(da,"__esModule",{value:!0});var _t=v(),lu=N(),CF={message:({params:{len:e}})=>_t.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>_t._`{limit: ${e}}`},uF={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:CF,code(e){let{gen:t,schema:i,data:n,it:s}=e,o=s.items||0;if(o===!0)return;let r=t.const("len",_t._`${n}.length`);if(i===!1)e.setParams({len:o}),e.fail(_t._`${r} > ${o}`);else if(typeof i=="object"&&!(0,lu.alwaysValidSchema)(s,i)){let a=t.var("valid",_t._`${r} <= ${o}`);t.if((0,_t.not)(a),()=>g(a,o)),e.ok(a)}s.items=!0;function g(a,l){t.forRange("i",l,r,(I)=>{if(e.subschema({keyword:"unevaluatedItems",dataProp:I,dataPropType:lu.Type.Num},a),!s.allErrors)t.if((0,_t.not)(a),()=>t.break())})}}};da.default=uF});var du=f(function(ca){Object.defineProperty(ca,"__esModule",{value:!0});var mF=au(),pF=Iu(),AF=[mF.default,pF.default];ca.default=AF});var cu=f(function(Ca){Object.defineProperty(Ca,"__esModule",{value:!0});var L=v(),ZF={message:({schemaCode:e})=>L.str`must match format "${e}"`,params:({schemaCode:e})=>L._`{format: ${e}}`},bF={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:ZF,code(e,t){let{gen:i,data:n,$data:s,schema:o,schemaCode:r,it:g}=e,{opts:a,errSchemaPath:l,schemaEnv:I,self:d}=g;if(!a.validateFormats)return;if(s)p();else c();function p(){let m=i.scopeValue("formats",{ref:d.formats,code:a.code.formats}),C=i.const("fDef",L._`${m}[${r}]`),u=i.let("fType"),A=i.let("format");i.if(L._`typeof ${C} == "object" && !(${C} instanceof RegExp)`,()=>i.assign(u,L._`${C}.type || "string"`).assign(A,L._`${C}.validate`),()=>i.assign(u,L._`"string"`).assign(A,C)),e.fail$data((0,L.or)(b(),W()));function b(){if(a.strictSchema===!1)return L.nil;return L._`${r} && !${A}`}function W(){let h=I.$async?L._`(${C}.async ? await ${A}(${n}) : ${A}(${n}))`:L._`${A}(${n})`,y=L._`(typeof ${A} == "function" ? ${h} : ${A}.test(${n}))`;return L._`${A} && ${A} !== true && ${u} === ${t} && !${y}`}}function c(){let m=d.formats[o];if(!m){b();return}if(m===!0)return;let[C,u,A]=W(m);if(C===t)e.pass(h());function b(){if(a.strictSchema===!1){d.logger.warn(y());return}throw Error(y());function y(){return`unknown format "${o}" ignored in schema at path "${l}"`}}function W(y){let V=y instanceof RegExp?(0,L.regexpCode)(y):a.code.formats?L._`${a.code.formats}${(0,L.getProperty)(o)}`:void 0,B=i.scopeValue("formats",{key:o,ref:y,code:V});if(typeof y=="object"&&!(y instanceof RegExp))return[y.type||"string",y.validate,L._`${B}.validate`];return["string",y,B]}function h(){if(typeof m=="object"&&!(m instanceof RegExp)&&m.async){if(!I.$async)throw Error("async format in sync schema");return L._`await ${A}(${n})`}return typeof u=="function"?L._`${A}(${n})`:L._`${A}.test(${n})`}}}};Ca.default=bF});var ma=f(function(ua){Object.defineProperty(ua,"__esModule",{value:!0});var WF=cu(),hF=[WF.default];ua.default=hF});var pa=f(function(Ri){Object.defineProperty(Ri,"__esModule",{value:!0});Ri.contentVocabulary=Ri.metadataVocabulary=void 0;Ri.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Ri.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var uu=f(function(Aa){Object.defineProperty(Aa,"__esModule",{value:!0});var fF=pg(),yF=kg(),VF=qg(),BF=tu(),GF=ru(),RF=du(),wF=ma(),Cu=pa(),FF=[BF.default,fF.default,yF.default,(0,VF.default)(!0),wF.default,Cu.metadataVocabulary,Cu.contentVocabulary,GF.default,RF.default];Aa.default=FF});var pu=f(function(so){Object.defineProperty(so,"__esModule",{value:!0});so.DiscrError=void 0;var mu;(function(e){e.Tag="tag",e.Mapping="mapping"})(mu||(so.DiscrError=mu={}))});var Wa=f(function(ba){Object.defineProperty(ba,"__esModule",{value:!0});var wi=v(),Za=pu(),Au=Wn(),HF=Vi(),vF=N(),kF={message:({params:{discrError:e,tagName:t}})=>e===Za.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:i}})=>wi._`{error: ${e}, tag: ${i}, tagValue: ${t}}`},PF={keyword:"discriminator",type:"object",schemaType:"object",error:kF,code(e){let{gen:t,data:i,schema:n,parentSchema:s,it:o}=e,{oneOf:r}=s;if(!o.opts.discriminator)throw Error("discriminator: requires discriminator option");let g=n.propertyName;if(typeof g!="string")throw Error("discriminator: requires propertyName");if(n.mapping)throw Error("discriminator: mapping is not supported");if(!r)throw Error("discriminator: requires oneOf keyword");let a=t.let("valid",!1),l=t.const("tag",wi._`${i}${(0,wi.getProperty)(g)}`);t.if(wi._`typeof ${l} == "string"`,()=>I(),()=>e.error(!1,{discrError:Za.DiscrError.Tag,tag:l,tagName:g})),e.ok(a);function I(){let c=p();t.if(!1);for(let m in c)t.elseIf(wi._`${l} === ${m}`),t.assign(a,d(c[m]));t.else(),e.error(!1,{discrError:Za.DiscrError.Mapping,tag:l,tagName:g}),t.endIf()}function d(c){let m=t.name("valid"),C=e.subschema({keyword:"oneOf",schemaProp:c},m);return e.mergeEvaluated(C,wi.Name),m}function p(){var c;let m={},C=A(s),u=!0;for(let h=0;h<r.length;h++){let y=r[h];if((y===null||y===void 0?void 0:y.$ref)&&!(0,vF.schemaHasRulesButRef)(y,o.self.RULES)){let B=y.$ref;if(y=Au.resolveRef.call(o.self,o.schemaEnv.root,o.baseId,B),y instanceof Au.SchemaEnv)y=y.schema;if(y===void 0)throw new HF.default(o.opts.uriResolver,o.baseId,B)}let V=(c=y===null||y===void 0?void 0:y.properties)===null||c===void 0?void 0:c[g];if(typeof V!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${g}"`);u=u&&(C||A(y)),b(V,h)}if(!u)throw Error(`discriminator: "${g}" must be required`);return m;function A({required:h}){return Array.isArray(h)&&h.includes(g)}function b(h,y){if(h.const)W(h.const,y);else if(h.enum)for(let V of h.enum)W(V,y);else throw Error(`discriminator: "properties/${g}" must have "const" or "enum"`)}function W(h,y){if(typeof h!="string"||h in m)throw Error(`discriminator: "${g}" values must be unique strings`);m[h]=y}}}};ba.default=PF});var Zu=f(function(jX,YF){YF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}});var bu=f(function(DX,NF){NF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}});var Wu=f(function(QX,XF){XF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}});var hu=f(function(_X,SF){SF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}});var fu=f(function(KX,xF){xF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}});var yu=f(function(LX,JF){JF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}});var Vu=f(function(MX,EF){EF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}});var Bu=f(function($X,UF){UF.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}});var Gu=f(function(ha){Object.defineProperty(ha,"__esModule",{value:!0});var OF=Zu(),TF=bu(),zF=Wu(),jF=hu(),DF=fu(),QF=yu(),_F=Vu(),KF=Bu(),LF=["/properties"];function MF(e){return[OF,TF,zF,jF,DF,t(this,QF),_F,t(this,KF)].forEach((i)=>this.addMetaSchema(i,void 0,!1)),this;function t(i,n){return e?i.$dataMetaSchema(n,LF):n}}ha.default=MF});var Va=f(function(D,ya){Object.defineProperty(D,"__esModule",{value:!0});D.MissingRefError=D.ValidationError=D.CodeGen=D.Name=D.nil=D.stringify=D.str=D._=D.KeywordCxt=D.Ajv2020=void 0;var $F=Cg(),qF=uu(),eH=Wa(),tH=Gu(),fa="https://json-schema.org/draft/2020-12/schema";class Nn extends $F.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),qF.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(eH.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;if(!t)return;tH.default.call(this,e),this.refs["http://json-schema.org/schema"]=fa}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(fa)?fa:void 0)}}D.Ajv2020=Nn;ya.exports=D=Nn;ya.exports.Ajv2020=Nn;Object.defineProperty(D,"__esModule",{value:!0});D.default=Nn;var iH=yi();Object.defineProperty(D,"KeywordCxt",{enumerable:!0,get:function(){return iH.KeywordCxt}});var Fi=v();Object.defineProperty(D,"_",{enumerable:!0,get:function(){return Fi._}});Object.defineProperty(D,"str",{enumerable:!0,get:function(){return Fi.str}});Object.defineProperty(D,"stringify",{enumerable:!0,get:function(){return Fi.stringify}});Object.defineProperty(D,"nil",{enumerable:!0,get:function(){return Fi.nil}});Object.defineProperty(D,"Name",{enumerable:!0,get:function(){return Fi.Name}});Object.defineProperty(D,"CodeGen",{enumerable:!0,get:function(){return Fi.CodeGen}});var nH=Zn();Object.defineProperty(D,"ValidationError",{enumerable:!0,get:function(){return nH.default}});var sH=Vi();Object.defineProperty(D,"MissingRefError",{enumerable:!0,get:function(){return sH.default}})});var qu=f(function(nt){Object.defineProperty(nt,"__esModule",{value:!0});nt.formatNames=nt.fastFormats=nt.fullFormats=void 0;function it(e,t){return{validate:e,compare:t}}nt.fullFormats={date:it(Ku,Ea),time:it(xa(!0),Ua),"date-time":it(Du(!0),Mu),"iso-time":it(xa(),Lu),"iso-date-time":it(Du(),$u),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:wH,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:NH,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:FH,int32:{type:"number",validate:kH},int64:{type:"number",validate:PH},float:{type:"number",validate:_u},double:{type:"number",validate:_u},password:!0,binary:!0};nt.fastFormats={...nt.fullFormats,date:it(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,Ea),time:it(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Ua),"date-time":it(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Mu),"iso-time":it(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,Lu),"iso-date-time":it(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,$u),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};nt.formatNames=Object.keys(nt.fullFormats);function yH(e){return e%4===0&&(e%100!==0||e%400===0)}var VH=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,BH=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Ku(e){let t=VH.exec(e);if(!t)return!1;let i=+t[1],n=+t[2],s=+t[3];return n>=1&&n<=12&&s>=1&&s<=(n===2&&yH(i)?29:BH[n])}function Ea(e,t){if(!(e&&t))return;if(e>t)return 1;if(e<t)return-1;return 0}var Sa=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function xa(e){return function(i){let n=Sa.exec(i);if(!n)return!1;let s=+n[1],o=+n[2],r=+n[3],g=n[4],a=n[5]==="-"?-1:1,l=+(n[6]||0),I=+(n[7]||0);if(l>23||I>59||e&&!g)return!1;if(s<=23&&o<=59&&r<60)return!0;let d=o-I*a,p=s-l*a-(d<0?1:0);return(p===23||p===-1)&&(d===59||d===-1)&&r<61}}function Ua(e,t){if(!(e&&t))return;let i=new Date("2020-01-01T"+e).valueOf(),n=new Date("2020-01-01T"+t).valueOf();if(!(i&&n))return;return i-n}function Lu(e,t){if(!(e&&t))return;let i=Sa.exec(e),n=Sa.exec(t);if(!(i&&n))return;if(e=i[1]+i[2]+i[3],t=n[1]+n[2]+n[3],e>t)return 1;if(e<t)return-1;return 0}var Ja=/t|\s/i;function Du(e){let t=xa(e);return function(n){let s=n.split(Ja);return s.length===2&&Ku(s[0])&&t(s[1])}}function Mu(e,t){if(!(e&&t))return;let i=new Date(e).valueOf(),n=new Date(t).valueOf();if(!(i&&n))return;return i-n}function $u(e,t){if(!(e&&t))return;let[i,n]=e.split(Ja),[s,o]=t.split(Ja),r=Ea(i,s);if(r===void 0)return;return r||Ua(n,o)}var GH=/\/|:/,RH=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function wH(e){return GH.test(e)&&RH.test(e)}var Qu=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function FH(e){return Qu.lastIndex=0,Qu.test(e)}var HH=-2147483648,vH=2147483647;function kH(e){return Number.isInteger(e)&&e<=vH&&e>=HH}function PH(e){return Number.isInteger(e)}function _u(){return!0}var YH=/[^\\]\\Z/;function NH(e){if(YH.test(e))return!1;try{return new RegExp(e),!0}catch(t){return!1}}});var tm=f(function(Oa){Object.defineProperty(Oa,"__esModule",{value:!0});var XH=pg(),SH=kg(),xH=qg(),JH=ma(),em=pa(),EH=[XH.default,SH.default,(0,xH.default)(),JH.default,em.metadataVocabulary,em.contentVocabulary];Oa.default=EH});var im=f(function(WS,UH){UH.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var sm=f(function(Q,Ta){Object.defineProperty(Q,"__esModule",{value:!0});Q.MissingRefError=Q.ValidationError=Q.CodeGen=Q.Name=Q.nil=Q.stringify=Q.str=Q._=Q.KeywordCxt=Q.Ajv=void 0;var OH=Cg(),TH=tm(),zH=Wa(),nm=im(),jH=["/properties"],go="http://json-schema.org/draft-07/schema";class Sn extends OH.default{_addVocabularies(){if(super._addVocabularies(),TH.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(zH.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(nm,jH):nm;this.addMetaSchema(e,go,!1),this.refs["http://json-schema.org/schema"]=go}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(go)?go:void 0)}}Q.Ajv=Sn;Ta.exports=Q=Sn;Ta.exports.Ajv=Sn;Object.defineProperty(Q,"__esModule",{value:!0});Q.default=Sn;var DH=yi();Object.defineProperty(Q,"KeywordCxt",{enumerable:!0,get:function(){return DH.KeywordCxt}});var Pi=v();Object.defineProperty(Q,"_",{enumerable:!0,get:function(){return Pi._}});Object.defineProperty(Q,"str",{enumerable:!0,get:function(){return Pi.str}});Object.defineProperty(Q,"stringify",{enumerable:!0,get:function(){return Pi.stringify}});Object.defineProperty(Q,"nil",{enumerable:!0,get:function(){return Pi.nil}});Object.defineProperty(Q,"Name",{enumerable:!0,get:function(){return Pi.Name}});Object.defineProperty(Q,"CodeGen",{enumerable:!0,get:function(){return Pi.CodeGen}});var QH=Zn();Object.defineProperty(Q,"ValidationError",{enumerable:!0,get:function(){return QH.default}});var _H=Vi();Object.defineProperty(Q,"MissingRefError",{enumerable:!0,get:function(){return _H.default}})});var om=f(function(Yi){Object.defineProperty(Yi,"__esModule",{value:!0});Yi.formatLimitDefinition=void 0;var KH=sm(),ze=v(),Yt=ze.operators,ao={formatMaximum:{okStr:"<=",ok:Yt.LTE,fail:Yt.GT},formatMinimum:{okStr:">=",ok:Yt.GTE,fail:Yt.LT},formatExclusiveMaximum:{okStr:"<",ok:Yt.LT,fail:Yt.GTE},formatExclusiveMinimum:{okStr:">",ok:Yt.GT,fail:Yt.LTE}},LH={message:({keyword:e,schemaCode:t})=>ze.str`should be ${ao[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>ze._`{comparison: ${ao[e].okStr}, limit: ${t}}`};Yi.formatLimitDefinition={keyword:Object.keys(ao),type:"string",schemaType:"string",$data:!0,error:LH,code(e){let{gen:t,data:i,schemaCode:n,keyword:s,it:o}=e,{opts:r,self:g}=o;if(!r.validateFormats)return;let a=new KH.KeywordCxt(o,g.RULES.all.format.definition,"format");if(a.$data)l();else I();function l(){let p=t.scopeValue("formats",{ref:g.formats,code:r.code.formats}),c=t.const("fmt",ze._`${p}[${a.schemaCode}]`);e.fail$data((0,ze.or)(ze._`typeof ${c} != "object"`,ze._`${c} instanceof RegExp`,ze._`typeof ${c}.compare != "function"`,d(c)))}function I(){let p=a.schema,c=g.formats[p];if(!c||c===!0)return;if(typeof c!="object"||c instanceof RegExp||typeof c.compare!="function")throw Error(`"${s}": format "${p}" does not define "compare" function`);let m=t.scopeValue("formats",{key:p,ref:c,code:r.code.formats?ze._`${r.code.formats}${(0,ze.getProperty)(p)}`:void 0});e.fail$data(d(m))}function d(p){return ze._`${p}.compare(${i}, ${n}) ${ao[s].fail} 0`}},dependencies:["format"]};var MH=(e)=>(e.addKeyword(Yi.formatLimitDefinition),e);Yi.default=MH});var lm=f(function(xn,am){Object.defineProperty(xn,"__esModule",{value:!0});var Ni=qu(),$H=om(),za=v(),rm=new za.Name("fullFormats"),qH=new za.Name("fastFormats"),ja=(e,t={keywords:!0})=>{if(Array.isArray(t))return gm(e,t,Ni.fullFormats,rm),e;let[i,n]=t.mode==="fast"?[Ni.fastFormats,qH]:[Ni.fullFormats,rm],s=t.formats||Ni.formatNames;if(gm(e,s,i,n),t.keywords)(0,$H.default)(e);return e};ja.get=(e,t="full")=>{let n=(t==="fast"?Ni.fastFormats:Ni.fullFormats)[e];if(!n)throw Error(`Unknown format "${e}"`);return n};function gm(e,t,i,n){var s,o;(s=(o=e.opts.code).formats)!==null&&s!==void 0||(o.formats=za._`require("ajv-formats/dist/formats").${n}`);for(let r of t)e.addFormat(r,i[r])}am.exports=xn=ja;Object.defineProperty(xn,"__esModule",{value:!0});xn.default=ja});var ib=f(function(DO,tb){tb.exports=zY;function TY(e){let t={defaultWidth:0,output:process.stdout,tty:require("tty")};if(!e)return t;return Object.keys(t).forEach(function(i){if(!e[i])e[i]=t[i]}),e}function zY(e){let t=TY(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let i=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(i)&&i!==0)return i}return t.defaultWidth}});var hb=f(function(rT,Wb){var o1=require("stream");class bb extends o1{#i=null;constructor(e={}){super(e);this.writable=this.readable=!0,this.muted=!1,this.on("pipe",this._onpipe),this.replace=e.replace,this._prompt=e.prompt||null,this._hadControl=!1}#t(e,t){if(this._dest)return this._dest[e];if(this._src)return this._src[e];return t}#e(e,...t){if(typeof this._dest?.[e]==="function")this._dest[e](...t);if(typeof this._src?.[e]==="function")this._src[e](...t)}get isTTY(){if(this.#i!==null)return this.#i;return this.#t("isTTY",!1)}set isTTY(e){this.#i=e}get rows(){return this.#t("rows")}get columns(){return this.#t("columns")}mute(){this.muted=!0}unmute(){this.muted=!1}_onpipe(e){this._src=e}pipe(e,t){return this._dest=e,super.pipe(e,t)}pause(){if(this._src)return this._src.pause()}resume(){if(this._src)return this._src.resume()}write(e){if(this.muted){if(!this.replace)return!0;if(e.match(/^\u001b/)){if(e.indexOf(this._prompt)===0)e=e.slice(this._prompt.length),e=e.replace(/./g,this.replace),e=this._prompt+e;return this._hadControl=!0,this.emit("data",e)}else{if(this._prompt&&this._hadControl&&e.indexOf(this._prompt)===0)this._hadControl=!1,this.emit("data",this._prompt),e=e.slice(this._prompt.length);e=e.toString().replace(/./g,this.replace)}}this.emit("data",e)}end(e){if(this.muted)if(e&&this.replace)e=e.toString().replace(/./g,this.replace);else e=null;if(e)this.emit("data",e);this.emit("end")}destroy(...e){return this.#e("destroy",...e)}destroySoon(...e){return this.#e("destroySoon",...e)}close(...e){return this.#e("close",...e)}}Wb.exports=bb});class dt extends Error{constructor(e,t,i){super(i);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}}class ct extends dt{constructor(e){super(1,"commander.invalidArgument",e);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}class bs{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue(e,t){if(t===this.defaultValue||!Array.isArray(t))return[e];return t.push(e),t}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new ct(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(t,i);return t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function Ws(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}var NI=require("events"),fs=be(require("child_process")),Ke=be(require("path")),an=be(require("fs")),E=be(require("process")),XI=require("util");var vI=require("util");class hs{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter((n)=>!n._hidden),i=e._getHelpCommand();if(i&&!i._hidden)t.push(i);if(this.sortSubcommands)t.sort((n,s)=>n.name().localeCompare(s.name()));return t}compareOptions(e,t){let i=(n)=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return i(e).localeCompare(i(t))}visibleOptions(e){let t=e.options.filter((n)=>!n.hidden),i=e._getHelpOption();if(i&&!i.hidden){let n=i.short&&e._findOption(i.short),s=i.long&&e._findOption(i.long);if(!n&&!s)t.push(i);else if(i.long&&!s)t.push(e.createOption(i.long,i.description));else if(i.short&&!n)t.push(e.createOption(i.short,i.description))}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let i=e.parent;i;i=i.parent){let n=i.options.filter((s)=>!s.hidden);t.push(...n)}if(this.sortOptions)t.sort(this.compareOptions);return t}visibleArguments(e){if(e._argsDescription)e.registeredArguments.forEach((t)=>{t.description=t.description||e._argsDescription[t.name()]||""});if(e.registeredArguments.find((t)=>t.description))return e.registeredArguments;return[]}subcommandTerm(e){let t=e.registeredArguments.map((i)=>Ws(i)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(n)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((i,n)=>Math.max(i,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(n)))),0)}commandUsage(e){let t=e._name;if(e._aliases[0])t=t+"|"+e._aliases[0];let i="";for(let n=e.parent;n;n=n.parent)i=n.name()+" "+i;return i+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((i)=>JSON.stringify(i)).join(", ")}`);if(e.defaultValue!==void 0){if(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue==="boolean")t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`)}if(e.presetArg!==void 0&&e.optional)t.push(`preset: ${JSON.stringify(e.presetArg)}`);if(e.envVar!==void 0)t.push(`env: ${e.envVar}`);if(t.length>0){let i=`(${t.join(", ")})`;if(e.description)return`${e.description} ${i}`;return i}return e.description}argumentDescription(e){let t=[];if(e.argChoices)t.push(`choices: ${e.argChoices.map((i)=>JSON.stringify(i)).join(", ")}`);if(e.defaultValue!==void 0)t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`);if(t.length>0){let i=`(${t.join(", ")})`;if(e.description)return`${e.description} ${i}`;return i}return e.description}formatItemList(e,t,i){if(t.length===0)return[];return[i.styleTitle(e),...t,""]}groupItems(e,t,i){let n=new Map;return e.forEach((s)=>{let o=i(s);if(!n.has(o))n.set(o,[])}),t.forEach((s)=>{let o=i(s);if(!n.has(o))n.set(o,[]);n.get(o).push(s)}),n}formatHelp(e,t){let i=t.padWidth(e,t),n=t.helpWidth??80;function s(I,d){return t.formatItem(I,i,d,t)}let o=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],r=t.commandDescription(e);if(r.length>0)o=o.concat([t.boxWrap(t.styleCommandDescription(r),n),""]);let g=t.visibleArguments(e).map((I)=>s(t.styleArgumentTerm(t.argumentTerm(I)),t.styleArgumentDescription(t.argumentDescription(I))));if(o=o.concat(this.formatItemList("Arguments:",g,t)),this.groupItems(e.options,t.visibleOptions(e),(I)=>I.helpGroupHeading??"Options:").forEach((I,d)=>{let p=I.map((c)=>s(t.styleOptionTerm(t.optionTerm(c)),t.styleOptionDescription(t.optionDescription(c))));o=o.concat(this.formatItemList(d,p,t))}),t.showGlobalOptions){let I=t.visibleGlobalOptions(e).map((d)=>s(t.styleOptionTerm(t.optionTerm(d)),t.styleOptionDescription(t.optionDescription(d))));o=o.concat(this.formatItemList("Global Options:",I,t))}return this.groupItems(e.commands,t.visibleCommands(e),(I)=>I.helpGroup()||"Commands:").forEach((I,d)=>{let p=I.map((c)=>s(t.styleSubcommandTerm(t.subcommandTerm(c)),t.styleSubcommandDescription(t.subcommandDescription(c))));o=o.concat(this.formatItemList(d,p,t))}),o.join(`
|
|
11
|
+
`)}displayWidth(e){return vI.stripVTControlCharacters(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map((t)=>{if(t==="[options]")return this.styleOptionText(t);if(t==="[command]")return this.styleSubcommandText(t);if(t[0]==="["||t[0]==="<")return this.styleArgumentText(t);return this.styleCommandText(t)}).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map((t)=>{if(t==="[options]")return this.styleOptionText(t);if(t[0]==="["||t[0]==="<")return this.styleArgumentText(t);return this.styleSubcommandText(t)}).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,t,i,n){let o=" ".repeat(2);if(!i)return o+e;let r=e.padEnd(t+e.length-n.displayWidth(e)),g=2,l=(this.helpWidth??80)-t-g-2,I;if(l<this.minWidthToWrap||n.preformatted(i))I=i;else I=n.boxWrap(i,l).replace(/\n/g,`
|
|
12
|
+
`+" ".repeat(t+g));return o+r+" ".repeat(g)+I.replace(/\n/g,`
|
|
13
|
+
${o}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let i=e.split(/\r\n|\n/),n=/[\s]*[^\s]+/g,s=[];return i.forEach((o)=>{let r=o.match(n);if(r===null){s.push("");return}let g=[r.shift()],a=this.displayWidth(g[0]);r.forEach((l)=>{let I=this.displayWidth(l);if(a+I<=t){g.push(l),a+=I;return}s.push(g.join(""));let d=l.trimStart();g=[d],a=this.displayWidth(d)}),s.push(g.join(""))}),s.join(`
|
|
14
|
+
`)}}class gn{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let i=AW(e);if(this.short=i.shortFlag,this.long=i.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(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;if(typeof e==="string")t={[e]:!0};return this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_collectValue(e,t){if(t===this.defaultValue||!Array.isArray(t))return[e];return t.push(e),t}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new ct(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(t,i);return t},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return kI(this.name().replace(/^no-/,""));return kI(this.name())}helpGroup(e){return this.helpGroupHeading=e,this}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class Ir{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach((t)=>{if(t.negate)this.negativeOptions.set(t.attributeName(),t);else this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,i)=>{if(this.positiveOptions.has(i))this.dualOptions.add(i)})}valueFromOption(e,t){let i=t.attributeName();if(!this.dualOptions.has(i))return!0;let n=this.negativeOptions.get(i).presetArg,s=n!==void 0?n:!1;return t.negate===(s===e)}}function kI(e){return e.split("-").reduce((t,i)=>t+i[0].toUpperCase()+i.slice(1))}function AW(e){let t,i,n=/^-[^-]$/,s=/^--[^-]/,o=e.split(/[ |,]+/).concat("guard");if(n.test(o[0]))t=o.shift();if(s.test(o[0]))i=o.shift();if(!t&&n.test(o[0]))t=o.shift();if(!t&&s.test(o[0]))t=i,i=o.shift();if(o[0].startsWith("-")){let r=o[0],g=`option creation failed due to '${r}' in option flags '${e}'`;if(/^-[^-][^-]/.test(r))throw Error(`${g}
|
|
15
15
|
- a short flag is a single dash and a single character
|
|
16
16
|
- either use a single dash and a single character (for a short flag)
|
|
17
|
-
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(
|
|
18
|
-
- too many short flags`);if(
|
|
19
|
-
- too many long flags`);throw Error(`${
|
|
20
|
-
- unrecognised flag format`)}if(t===void 0&&
|
|
21
|
-
(Did you mean one of ${
|
|
22
|
-
(Did you mean ${
|
|
23
|
-
- specify the name in Command constructor or using .name()`);if(t=t||{},t.isDefault)this._defaultCommandName=e._name;if(t.noHelp||t.hidden)e._hidden=!0;return this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new
|
|
24
|
-
Expecting one of '${
|
|
25
|
-
- already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=(
|
|
26
|
-
- 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(e,t,
|
|
27
|
-
- if '${
|
|
17
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(n.test(r))throw Error(`${g}
|
|
18
|
+
- too many short flags`);if(s.test(r))throw Error(`${g}
|
|
19
|
+
- too many long flags`);throw Error(`${g}
|
|
20
|
+
- unrecognised flag format`)}if(t===void 0&&i===void 0)throw Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:i}}function ZW(e,t){if(Math.abs(e.length-t.length)>3)return Math.max(e.length,t.length);let i=[];for(let n=0;n<=e.length;n++)i[n]=[n];for(let n=0;n<=t.length;n++)i[0][n]=n;for(let n=1;n<=t.length;n++)for(let s=1;s<=e.length;s++){let o;if(e[s-1]===t[n-1])o=0;else o=1;if(i[s][n]=Math.min(i[s-1][n]+1,i[s][n-1]+1,i[s-1][n-1]+o),s>1&&n>1&&e[s-1]===t[n-2]&&e[s-2]===t[n-1])i[s][n]=Math.min(i[s][n],i[s-2][n-2]+1)}return i[e.length][t.length]}function dr(e,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let i=e.startsWith("--");if(i)e=e.slice(2),t=t.map((r)=>r.slice(2));let n=[],s=3,o=0.4;if(t.forEach((r)=>{if(r.length<=1)return;let g=ZW(e,r),a=Math.max(e.length,r.length);if((a-g)/a>o){if(g<s)s=g,n=[r];else if(g===s)n.push(r)}}),n.sort((r,g)=>r.localeCompare(g)),i)n=n.map((r)=>`--${r}`);if(n.length>1)return`
|
|
21
|
+
(Did you mean one of ${n.join(", ")}?)`;if(n.length===1)return`
|
|
22
|
+
(Did you mean ${n[0]}?)`;return""}class Ci extends NI.EventEmitter{constructor(e){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=e||"",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:(t)=>E.default.stdout.write(t),writeErr:(t)=>E.default.stderr.write(t),outputError:(t,i)=>i(t),getOutHelpWidth:()=>E.default.stdout.isTTY?E.default.stdout.columns:void 0,getErrHelpWidth:()=>E.default.stderr.isTTY?E.default.stderr.columns:void 0,getOutHasColors:()=>YI()??(E.default.stdout.isTTY&&E.default.stdout.hasColors?.()),getErrHasColors:()=>YI()??(E.default.stderr.isTTY&&E.default.stderr.hasColors?.()),stripColor:(t)=>XI.stripVTControlCharacters(t)},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(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,i){let n=t,s=i;if(typeof n==="object"&&n!==null)s=n,n=null;s=s||{};let[,o,r]=e.match(/([^ ]+) *(.*)/),g=this.createCommand(o);if(n)g.description(n),g._executableHandler=!0;if(s.isDefault)this._defaultCommandName=g._name;if(g._hidden=!!(s.noHelp||s.hidden),g._executableFile=s.executableFile||null,r)g.arguments(r);if(this._registerCommand(g),g.parent=this,g.copyInheritedSettings(this),n)return this;return g}createCommand(e){return new Ci(e)}createHelp(){return Object.assign(new hs,this.configureHelp())}configureHelp(e){if(e===void 0)return this._helpConfiguration;return this._helpConfiguration=e,this}configureOutput(e){if(e===void 0)return this._outputConfiguration;return this._outputConfiguration={...this._outputConfiguration,...e},this}showHelpAfterError(e=!0){if(typeof e!=="string")e=!!e;return this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw Error(`Command passed to .addCommand() must have a name
|
|
23
|
+
- specify the name in Command constructor or using .name()`);if(t=t||{},t.isDefault)this._defaultCommandName=e._name;if(t.noHelp||t.hidden)e._hidden=!0;return this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new bs(e,t)}argument(e,t,i,n){let s=this.createArgument(e,t);if(typeof i==="function")s.default(n).argParser(i);else s.default(i);return this.addArgument(s),this}arguments(e){return e.trim().split(/ +/).forEach((t)=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t?.variadic)throw Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e==="boolean"){if(this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup)this._initCommandGroup(this._getHelpCommand());return this}let i=e??"help [command]",[,n,s]=i.match(/([^ ]+) *(.*)/),o=t??"display help for command",r=this.createCommand(n);if(r.helpOption(!1),s)r.arguments(s);if(o)r.description(o);if(this._addImplicitHelpCommand=!0,this._helpCommand=r,e||t)this._initCommandGroup(r);return this}addHelpCommand(e,t){if(typeof e!=="object")return this.helpCommand(e,t),this;return this._addImplicitHelpCommand=!0,this._helpCommand=e,this._initCommandGroup(e),this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook(e,t){let i=["preSubcommand","preAction","postAction"];if(!i.includes(e))throw Error(`Unexpected value for event passed to hook : '${e}'.
|
|
24
|
+
Expecting one of '${i.join("', '")}'`);if(this._lifeCycleHooks[e])this._lifeCycleHooks[e].push(t);else this._lifeCycleHooks[e]=[t];return this}exitOverride(e){if(e)this._exitCallback=e;else this._exitCallback=(t)=>{if(t.code!=="commander.executeSubCommandAsync")throw t};return this}_exit(e,t,i){if(this._exitCallback)this._exitCallback(new dt(e,t,i));E.default.exit(e)}action(e){let t=(i)=>{let n=this.registeredArguments.length,s=i.slice(0,n);if(this._storeOptionsAsProperties)s[n]=this;else s[n]=this.opts();return s.push(this),e.apply(this,s)};return this._actionHandler=t,this}createOption(e,t){return new gn(e,t)}_callParseArg(e,t,i,n){try{return e.parseArg(t,i)}catch(s){if(s.code==="commander.invalidArgument"){let o=`${n} ${s.message}`;this.error(o,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let i=e.long&&this._findOption(e.long)?e.long:e.short;throw Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${i}'
|
|
25
|
+
- already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=(n)=>[n.name()].concat(n.aliases()),i=t(e).find((n)=>this._findCommand(n));if(i){let n=t(this._findCommand(i)).join("|"),s=t(e).join("|");throw Error(`cannot add command '${s}' as already have command '${n}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),i=e.attributeName();if(e.defaultValue!==void 0)this.setOptionValueWithSource(i,e.defaultValue,"default");let n=(s,o,r)=>{if(s==null&&e.presetArg!==void 0)s=e.presetArg;let g=this.getOptionValue(i);if(s!==null&&e.parseArg)s=this._callParseArg(e,s,g,o);else if(s!==null&&e.variadic)s=e._collectValue(s,g);if(s==null)if(e.negate)s=!1;else if(e.isBoolean()||e.optional)s=!0;else s="";this.setOptionValueWithSource(i,s,r)};if(this.on("option:"+t,(s)=>{let o=`error: option '${e.flags}' argument '${s}' is invalid.`;n(s,o,"cli")}),e.envVar)this.on("optionEnv:"+t,(s)=>{let o=`error: option '${e.flags}' value '${s}' from env '${e.envVar}' is invalid.`;n(s,o,"env")});return this}_optionEx(e,t,i,n,s){if(typeof t==="object"&&t instanceof gn)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(t,i);if(o.makeOptionMandatory(!!e.mandatory),typeof n==="function")o.default(s).argParser(n);else if(n instanceof RegExp){let r=n;n=(g,a)=>{let l=r.exec(g);return l?l[0]:a},o.default(s).argParser(n)}else o.default(n);return this.addOption(o)}option(e,t,i,n){return this._optionEx({},e,t,i,n)}requiredOption(e,t,i,n){return this._optionEx({mandatory:!0},e,t,i,n)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){if(this._storeOptionsAsProperties)return this[e];return this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,i){if(this._storeOptionsAsProperties)this[e]=t;else this._optionValues[e]=t;return this._optionValueSources[e]=i,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach((i)=>{if(i.getOptionValueSource(e)!==void 0)t=i.getOptionValueSource(e)}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){if(E.default.versions?.electron)t.from="electron";let n=E.default.execArgv??[];if(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))t.from="eval"}if(e===void 0)e=E.default.argv;this.rawArgs=e.slice();let i;switch(t.from){case void 0:case"node":this._scriptPath=e[1],i=e.slice(2);break;case"electron":if(E.default.defaultApp)this._scriptPath=e[1],i=e.slice(2);else i=e.slice(1);break;case"user":i=e.slice(0);break;case"eval":i=e.slice(1);break;default:throw Error(`unexpected parse option { from: '${t.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",i}parse(e,t){this._prepareForParse();let i=this._prepareUserArgs(e,t);return this._parseCommand([],i),this}async parseAsync(e,t){this._prepareForParse();let i=this._prepareUserArgs(e,t);return await this._parseCommand([],i),this}_prepareForParse(){if(this._savedState===null)this.options.filter((e)=>e.negate&&e.defaultValue===void 0&&this.getOptionValue(e.attributeName())===void 0).forEach((e)=>{let t=e.long.replace(/^--no-/,"--");if(!this._findOption(t))this.setOptionValueWithSource(e.attributeName(),!0,"default")}),this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
26
|
+
- 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(e,t,i){if(an.default.existsSync(e))return;let n=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",s=`'${e}' does not exist
|
|
27
|
+
- if '${i}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
28
28
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
29
|
-
- ${
|
|
29
|
+
- ${n}`;throw Error(s)}_executeSubCommand(e,t){t=t.slice();let i=[".js",".ts",".tsx",".mjs",".cjs"];function n(l,I){let d=Ke.default.resolve(l,I);if(an.default.existsSync(d))return d;if(i.includes(Ke.default.extname(I)))return;let p=i.find((c)=>an.default.existsSync(`${d}${c}`));if(p)return`${d}${p}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=e._executableFile||`${this._name}-${e._name}`,o=this._executableDir||"";if(this._scriptPath){let l;try{l=an.default.realpathSync(this._scriptPath)}catch{l=this._scriptPath}o=Ke.default.resolve(Ke.default.dirname(l),o)}if(o){let l=n(o,s);if(!l&&!e._executableFile&&this._scriptPath){let I=Ke.default.basename(this._scriptPath,Ke.default.extname(this._scriptPath));if(I!==this._name)l=n(o,`${I}-${e._name}`)}s=l||s}let r=i.includes(Ke.default.extname(s)),g;if(E.default.platform!=="win32")if(r)t.unshift(s),t=PI(E.default.execArgv).concat(t),g=fs.default.spawn(E.default.argv[0],t,{stdio:"inherit"});else g=fs.default.spawn(s,t,{stdio:"inherit"});else this._checkForMissingExecutable(s,o,e._name),t.unshift(s),t=PI(E.default.execArgv).concat(t),g=fs.default.spawn(E.default.execPath,t,{stdio:"inherit"});if(!g.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((I)=>{E.default.on(I,()=>{if(g.killed===!1&&g.exitCode===null)g.kill(I)})});let a=this._exitCallback;g.on("close",(l)=>{if(l=l??1,!a)E.default.exit(l);else a(new dt(l,"commander.executeSubCommandAsync","(close)"))}),g.on("error",(l)=>{if(l.code==="ENOENT")this._checkForMissingExecutable(s,o,e._name);else if(l.code==="EACCES")throw Error(`'${s}' not executable`);if(!a)E.default.exit(1);else{let I=new dt(1,"commander.executeSubCommandAsync","(error)");I.nestedError=l,a(I)}}),this.runningCommand=g}_dispatchSubcommand(e,t,i){let n=this._findCommand(e);if(!n)this.help({error:!0});n._prepareForParse();let s;return s=this._chainOrCallSubCommandHook(s,n,"preSubcommand"),s=this._chainOrCall(s,()=>{if(n._executableHandler)this._executeSubCommand(n,t.concat(i));else return n._parseCommand(t,i)}),s}_dispatchHelpCommand(e){if(!e)this.help();let t=this._findCommand(e);if(t&&!t._executableHandler)t.help();return this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((e,t)=>{if(e.required&&this.args[t]==null)this.missingArgument(e.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let e=(i,n,s)=>{let o=n;if(n!==null&&i.parseArg){let r=`error: command-argument value '${n}' is invalid for argument '${i.name()}'.`;o=this._callParseArg(i,n,s,r)}return o};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((i,n)=>{let s=i.defaultValue;if(i.variadic){if(n<this.args.length){if(s=this.args.slice(n),i.parseArg)s=s.reduce((o,r)=>e(i,r,o),i.defaultValue)}else if(s===void 0)s=[]}else if(n<this.args.length){if(s=this.args[n],i.parseArg)s=e(i,s,i.defaultValue)}t[n]=s}),this.processedArgs=t}_chainOrCall(e,t){if(e?.then&&typeof e.then==="function")return e.then(()=>t());return t()}_chainOrCallHooks(e,t){let i=e,n=[];if(this._getCommandAndAncestors().reverse().filter((s)=>s._lifeCycleHooks[t]!==void 0).forEach((s)=>{s._lifeCycleHooks[t].forEach((o)=>{n.push({hookedCommand:s,callback:o})})}),t==="postAction")n.reverse();return n.forEach((s)=>{i=this._chainOrCall(i,()=>s.callback(s.hookedCommand,this))}),i}_chainOrCallSubCommandHook(e,t,i){let n=e;if(this._lifeCycleHooks[i]!==void 0)this._lifeCycleHooks[i].forEach((s)=>{n=this._chainOrCall(n,()=>s(this,t))});return n}_parseCommand(e,t){let i=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(i.operands),t=i.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let n=()=>{if(i.unknown.length>0)this.unknownOption(i.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){n(),this._processArguments();let o;if(o=this._chainOrCallHooks(o,"preAction"),o=this._chainOrCall(o,()=>this._actionHandler(this.processedArgs)),this.parent)o=this._chainOrCall(o,()=>{this.parent.emit(s,e,t)});return o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent?.listenerCount(s))n(),this._processArguments(),this.parent.emit(s,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);if(this.listenerCount("command:*"))this.emit("command:*",e,t);else if(this.commands.length)this.unknownCommand();else n(),this._processArguments()}else if(this.commands.length)n(),this.help({error:!0});else n(),this._processArguments()}_findCommand(e){if(!e)return;return this.commands.find((t)=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find((t)=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((e)=>{e.options.forEach((t)=>{if(t.mandatory&&e.getOptionValue(t.attributeName())===void 0)e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter((i)=>{let n=i.attributeName();if(this.getOptionValue(n)===void 0)return!1;return this.getOptionValueSource(n)!=="default"});e.filter((i)=>i.conflictsWith.length>0).forEach((i)=>{let n=e.find((s)=>i.conflictsWith.includes(s.attributeName()));if(n)this._conflictingOption(i,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((e)=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],i=[],n=t;function s(l){return l.length>1&&l[0]==="-"}let o=(l)=>{if(!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l))return!1;return!this._getCommandAndAncestors().some((I)=>I.options.map((d)=>d.short).some((d)=>/^-\d$/.test(d)))},r=null,g=null,a=0;while(a<e.length||g){let l=g??e[a++];if(g=null,l==="--"){if(n===i)n.push(l);n.push(...e.slice(a));break}if(r&&(!s(l)||o(l))){this.emit(`option:${r.name()}`,l);continue}if(r=null,s(l)){let I=this._findOption(l);if(I){if(I.required){let d=e[a++];if(d===void 0)this.optionMissingArgument(I);this.emit(`option:${I.name()}`,d)}else if(I.optional){let d=null;if(a<e.length&&(!s(e[a])||o(e[a])))d=e[a++];this.emit(`option:${I.name()}`,d)}else this.emit(`option:${I.name()}`);r=I.variadic?I:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let I=this._findOption(`-${l[1]}`);if(I){if(I.required||I.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${I.name()}`,l.slice(2));else this.emit(`option:${I.name()}`),g=`-${l.slice(2)}`;continue}}if(/^--[^=]+=/.test(l)){let I=l.indexOf("="),d=this._findOption(l.slice(0,I));if(d&&(d.required||d.optional)){this.emit(`option:${d.name()}`,l.slice(I+1));continue}}if(n===t&&s(l)&&!(this.commands.length===0&&o(l)))n=i;if((this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&i.length===0){if(this._findCommand(l)){t.push(l),i.push(...e.slice(a));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(a));break}else if(this._defaultCommandName){i.push(l,...e.slice(a));break}}if(this._passThroughOptions){n.push(l,...e.slice(a));break}n.push(l)}return{operands:t,unknown:i}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let i=0;i<t;i++){let n=this.options[i].attributeName();e[n]=n===this._versionOptionName?this._version:this[n]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){if(this._outputConfiguration.outputError(`${e}
|
|
30
30
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
31
31
|
`);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(`
|
|
32
|
-
`),this.outputHelp({error:!0});let
|
|
33
|
-
`),this._exit(0,"commander.version",e)}),this}description(e,t){if(e===void 0&&t===void 0)return this._description;if(this._description=e,t)this._argsDescription=t;return this}summary(e){if(e===void 0)return this._summary;return this._summary=e,this}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)t=this.commands[this.commands.length-1];if(e===t._name)throw Error("Command alias can't be the same as its name");let
|
|
34
|
-
Expecting one of '${
|
|
35
|
-
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((
|
|
36
|
-
`);return new
|
|
37
|
-
${t}`,e)}}var Hs="x-potato-sdk-base-url",ed=(e,t,r)=>(y(e.length>0,"The SDK base URL cannot be empty"),y(t.length>0,"The SDK API key cannot be empty"),{headers:{Accept:"application/json",Authorization:`ApiKey ${t}`,[Hs]:new URL(e).toString()},fetch:r});async function C(e,t){let{fetch:r=globalThis.fetch,...i}=t,n=new Headers(i.headers),s=n.get(Hs);y(s,"The SDK base URL is missing"),n.delete(Hs);let o=await r(new URL(e,s),{...i,headers:n}),a=await o.text();if(!o.ok){let d=a;if(a.length===0)d=void 0;else if(o.headers.get("content-type")?.includes("application/json"))d=JSON.parse(a);throw re.fromResponse(o.status,d)}return a.length===0?void 0:JSON.parse(a)}var nv=()=>"/api/v2-beta/me",td=async(e)=>C(nv(),{...e,method:"GET"}),sv=(e)=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([i,n])=>{if(n!==void 0)t.append(i,n===null?"null":n.toString())});let r=t.toString();return r.length>0?`/api/v2-beta/projects?${r}`:"/api/v2-beta/projects"},Js=async(e,t)=>C(sv(e),{...t,method:"GET"}),ov=()=>"/api/v2-beta/projects",rd=async(e,t)=>C(ov(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),av=(e)=>`/api/v2-beta/projects/${e}`,id=async(e,t)=>C(av(e),{...t,method:"GET"}),lv=(e)=>`/api/v2-beta/projects/${e}`,nd=async(e,t,r)=>C(lv(e),{...r,method:"PATCH",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),cv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([n,s])=>{if(s!==void 0)r.append(n,s===null?"null":s.toString())});let i=r.toString();return i.length>0?`/api/v2-beta/projects/${e}/pipelines?${i}`:`/api/v2-beta/projects/${e}/pipelines`},Qs=async(e,t,r)=>C(cv(e,t),{...r,method:"GET"}),dv=(e)=>`/api/v2-beta/pipelines/${e}`,sd=async(e,t)=>C(dv(e),{...t,method:"GET"}),uv=(e)=>`/api/v2-beta/pipelines/${e}`,od=async(e,t,r)=>C(uv(e),{...r,method:"PATCH",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),pv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([n,s])=>{if(s!==void 0)r.append(n,s===null?"null":s.toString())});let i=r.toString();return i.length>0?`/api/v2-beta/projects/${e}/datasets?${i}`:`/api/v2-beta/projects/${e}/datasets`},Ys=async(e,t,r)=>C(pv(e,t),{...r,method:"GET"}),fv=(e)=>`/api/v2-beta/projects/${e}/datasets`,ad=async(e,t,r)=>C(fv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),mv=(e)=>`/api/v2-beta/datasets/${e}`,ld=async(e,t)=>C(mv(e),{...t,method:"GET"}),hv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([n,s])=>{if(s!==void 0)r.append(n,s===null?"null":s.toString())});let i=r.toString();return i.length>0?`/api/v2-beta/datasets/${e}/fields?${i}`:`/api/v2-beta/datasets/${e}/fields`},Xs=async(e,t,r)=>C(hv(e,t),{...r,method:"GET"}),gv=(e)=>`/api/v2-beta/datasets/${e}/fields`,Zs=async(e,t,r)=>C(gv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),yv=(e)=>`/api/v2-beta/datasets/${e}/inferred-fields`,cd=async(e,t)=>C(yv(e),{...t,method:"GET"}),_v=(e)=>`/api/v2-beta/datasets/${e}/items`,dd=async(e,t,r)=>C(_v(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),bv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([n,s])=>{if(s!==void 0)r.append(n,s===null?"null":s.toString())});let i=r.toString();return i.length>0?`/api/v2-beta/datasets/${e}/items?${i}`:`/api/v2-beta/datasets/${e}/items`},eo=async(e,t,r)=>C(bv(e,t),{...r,method:"GET"}),Pv=(e)=>`/api/v2-beta/datasets/${e}/uploads`,ud=async(e,t,r)=>C(Pv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),vv=(e)=>`/api/v2-beta/uploads/${e}/finalize`,pd=async(e,t)=>C(vv(e),{...t,method:"POST"}),wv=(e)=>`/api/v2-beta/uploads/${e}`,to=async(e,t)=>C(wv(e),{...t,method:"GET"}),$v=(e)=>`/api/v2-beta/projects/${e}/pipelines/import`,fd=async(e,t,r)=>C($v(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Ev=(e)=>`/api/v2-beta/pipelines/${e}/dataset`,md=async(e,t,r)=>C(Ev(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Iv=(e)=>`/api/v2-beta/pipelines/${e}/export`,hd=async(e,t)=>C(Iv(e),{...t,method:"GET"}),Sv=(e)=>`/api/v2-beta/pipelines/${e}/copy`,gd=async(e,t,r)=>C(Sv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),xv=(e)=>`/api/v2-beta/pipelines/${e}/cost-estimate`,yd=async(e,t,r)=>C(xv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Rv=(e)=>`/api/v2-beta/pipelines/${e}/runs`,_d=async(e,t)=>C(Rv(e),{...t,method:"POST"}),Cv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([n,s])=>{if(s!==void 0)r.append(n,s===null?"null":s.toString())});let i=r.toString();return i.length>0?`/api/v2-beta/pipelines/${e}/runs?${i}`:`/api/v2-beta/pipelines/${e}/runs`},ro=async(e,t,r)=>C(Cv(e,t),{...r,method:"GET"}),Ov=(e)=>`/api/v2-beta/runs/${e}`,io=async(e,t)=>C(Ov(e),{...t,method:"GET"});var jv=(e)=>`/api/v2-beta/runs/${e}/cancel`,bd=async(e,t)=>C(jv(e),{...t,method:"POST"}),Fv=(e)=>`/api/v2-beta/datasets/${e}/exports`,Pd=async(e,t,r)=>C(Fv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Tv=(e)=>`/api/v2-beta/exports/${e}`,no=async(e,t)=>C(Tv(e),{...t,method:"GET"}),kv=(e)=>`/api/v2-beta/pipelines/${e}/graph`,vd=async(e,t)=>C(kv(e),{...t,method:"GET"}),Av=(e)=>`/api/v2-beta/pipelines/${e}/graph`,wd=async(e,t,r)=>C(Av(e),{...r,method:"PUT",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Dv=(e)=>`/api/v2-beta/pipelines/${e}/graph/validate`,$d=async(e,t,r)=>C(Dv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Nv=(e,t)=>`/api/v2-beta/pipelines/${e}/graph/nodes/${t}`,Ed=async(e,t,r,i)=>C(Nv(e,t),{...i,method:"PATCH",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(r)}),Lv=(e)=>`/api/v2-beta/projects/${e}/secrets`,Id=async(e,t)=>C(Lv(e),{...t,method:"GET"}),qv=(e,t)=>`/api/v2-beta/projects/${e}/secrets/${t}`,Sd=async(e,t,r,i)=>C(qv(e,t),{...i,method:"PUT",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(r)}),Mv=(e)=>`/api/v2-beta/projects/${e}/files`,xd=async(e,t)=>C(Mv(e),{...t,method:"GET"}),Uv=(e)=>`/api/v2-beta/projects/${e}/files`,Rd=async(e,t,r)=>C(Uv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Bv=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}/finalize`,Cd=async(e,t,r)=>C(Bv(e,t),{...r,method:"POST"}),Gv=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}`,Od=async(e,t,r)=>C(Gv(e,t),{...r,method:"DELETE"}),Vv=(e,t)=>{let r=new URLSearchParams;Object.entries(t||{}).forEach(([n,s])=>{if(s!==void 0)r.append(n,s===null?"null":s.toString())});let i=r.toString();return i.length>0?`/api/v2-beta/runs/${e}/items?${i}`:`/api/v2-beta/runs/${e}/items`},so=async(e,t,r)=>C(Vv(e,t),{...r,method:"GET"}),Kv=(e,t)=>`/api/v2-beta/runs/${e}/items/${t}`,jd=async(e,t,r)=>C(Kv(e,t),{...r,method:"GET"}),zv=(e)=>`/api/v2-beta/pipelines/${e}/checks`,Fd=async(e,t)=>C(zv(e),{...t,method:"GET"}),Wv=(e)=>`/api/v2-beta/pipelines/${e}/checks`,Td=async(e,t,r)=>C(Wv(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),Hv=(e)=>`/api/v2-beta/checks/${e}`,oo=async(e,t)=>C(Hv(e),{...t,method:"GET"});async function*bt(e,t={}){let r=t.offset;while(!0){let i=await e({limit:t.limit,offset:r});if(yield*i.items,!i.pagination.hasMore)return;r=i.pagination.offset+i.pagination.limit}}var Xr=async(e,t,r={})=>{let i=r.timeoutMs??60000,n=r.intervalMs??1000;y(Number.isFinite(i)&&i>=0,"The wait timeout must be a nonnegative finite number"),y(Number.isFinite(n)&&n>0,"The polling interval must be a positive finite number");let s=Date.now()+i,o=new AbortController,a=setTimeout(()=>o.abort(),i);try{while(!0){if(o.signal.aborted)throw re.waitTimeout(i);let d=await e(o.signal);if(t(d))return d;let u=s-Date.now();if(u<=0)throw re.waitTimeout(i);let{promise:l,resolve:c}=Promise.withResolvers();setTimeout(c,Math.min(n,u)),await l}}catch(d){if(o.signal.aborted)throw re.waitTimeout(i);throw d}finally{clearTimeout(a)}};var Qv=(e)=>{let t=ed(e.baseUrl,e.apiKey,e.fetch);async function r(l,c){switch(l.type){case"datasetUpload":return Xr((p)=>to(l.uploadId,{...t,signal:p}),(p)=>p.status==="succeeded"||p.status==="failed",c);case"datasetExport":return Xr((p)=>no(l.exportId,{...t,signal:p}),(p)=>p.status==="succeeded",c);case"pipelineCheck":return Xr((p)=>oo(l.checkRunId,{...t,signal:p}),(p)=>p.status==="succeeded"||p.status==="failed",c);case"pipelineRun":return Xr((p)=>io(l.runId,{...t,signal:p}),(p)=>p.status==="succeeded"||p.status==="failed",c)}}return{me:()=>td(t),projects:{create:(l)=>rd(l,t),get:({projectId:l})=>id(l,t),update:({projectId:l,...c})=>nd(l,c,t),listPage:(l={})=>Js(l,t),listAll:(l={})=>bt(async(c)=>{let p=await Js({...l,...c},t);return{items:p.projects,pagination:p.pagination}},l)},pipelines:{import:({projectId:l,...c})=>fd(l,c,t),get:({pipelineId:l})=>sd(l,t),update:({pipelineId:l,...c})=>od(l,c,t),listPage:({projectId:l,...c})=>Qs(l,c,t),listAll:({projectId:l,...c})=>bt(async(p)=>{let f=await Qs(l,{...c,...p},t);return{items:f.pipelines,pagination:f.pagination}},c),getGraph:({pipelineId:l})=>vd(l,t),replaceGraph:({pipelineId:l,...c})=>wd(l,"version"in c?{graph:c.graph,expectedVersion:c.version}:c,t),validateGraph:({pipelineId:l,...c})=>$d(l,c,t),estimateCost:({pipelineId:l,...c})=>yd(l,c,t),patchNode:({pipelineId:l,nodeId:c,...p})=>Ed(l,c,p,t),attachDataset:({pipelineId:l,...c})=>md(l,c,t),export:({pipelineId:l})=>hd(l,t),copy:({pipelineId:l,...c})=>gd(l,c,t)},datasets:{create:({projectId:l,...c})=>ad(l,c,t),get:({datasetId:l})=>ld(l,t),listPage:({projectId:l,...c})=>Ys(l,c,t),listAll:({projectId:l,...c})=>bt(async(p)=>{let f=await Ys(l,{...c,...p},t);return{items:f.datasets,pagination:f.pagination}},c),createField:async({datasetId:l,...c})=>{let p=await Zs(l,c,t);return y(!("fields"in p),"Creating one field must return that field"),p},createFields:async({datasetId:l,fields:c})=>{let p=await Zs(l,{fields:c},t);return y("fields"in p,"Creating several fields must return those fields"),p.fields},listFieldsPage:({datasetId:l,...c})=>Xs(l,c,t),getInferredFields:({datasetId:l})=>cd(l,t),listAllFields:({datasetId:l,...c})=>bt(async(p)=>{let f=await Xs(l,{...c,...p},t);return{items:f.fields,pagination:f.pagination}},c),appendItems:({datasetId:l,...c})=>dd(l,c,t),listItemsPage:({datasetId:l,...c})=>eo(l,c,t),listAllItems:({datasetId:l,...c})=>bt(async(p)=>{let f=await eo(l,{...c,...p},t);return{items:f.items,pagination:f.pagination}},c),startUpload:({datasetId:l,...c})=>ud(l,c,t),finalizeUpload:({uploadId:l})=>pd(l,t),getUpload:({uploadId:l})=>to(l,t),startExport:({datasetId:l,...c})=>Pd(l,c,t),getExport:({exportId:l})=>no(l,t)},runs:{start:({pipelineId:l})=>{let c=new Headers(t.headers);return c.set("Content-Type","application/json"),_d(l,{...t,headers:c,body:"{}"})},get:({runId:l})=>io(l,t),cancel:({runId:l})=>bd(l,t),listPage:({pipelineId:l,...c})=>ro(l,c,t),listAll:({pipelineId:l,...c})=>bt(async(p)=>{let f=await ro(l,{...c,...p},t);return{items:f.runs,pagination:f.pagination}},c),listItemsPage:({runId:l,...c})=>so(l,c,t),listAllItems:({runId:l,...c})=>bt(async(p)=>{let f=await so(l,{...c,...p},t);return{items:f.items,pagination:f.pagination}},c),getItem:({runId:l,itemId:c})=>jd(l,c,t)},secrets:{list:async({projectId:l})=>(await Id(l,t)).secrets,set:({projectId:l,name:c,...p})=>Sd(l,c,p,t)},files:{list:async({projectId:l})=>(await xd(l,t)).files,startUpload:({projectId:l,...c})=>Rd(l,c,t),finalizeUpload:({projectId:l,fileId:c})=>Cd(l,c,t),delete:({projectId:l,fileId:c})=>Od(l,c,t)},checks:{list:async({pipelineId:l})=>(await Fd(l,t)).checks,start:({pipelineId:l,...c})=>Td(l,c,t),get:({checkRunId:l})=>oo(l,t)},waitFor:r}};function ct(e){return Qv(e)}var wr=require("fs/promises"),sl=require("path"),qf=Ce(nl(),1);var Kn="toloka.json";class ol extends Error{constructor(e,t){super(e,t);this.name="TolokaStateError"}}var vR="^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))(?!.*//).+$",wR={type:"object",properties:{projectId:{type:"string",minLength:1},pipelines:{type:"object",propertyNames:{type:"string",pattern:vR},additionalProperties:{type:"object",properties:{pipelineId:{type:"string",minLength:1}},required:["pipelineId"],additionalProperties:!1}},datasets:{type:"object",propertyNames:{type:"string",minLength:1},additionalProperties:{type:"object",properties:{datasetId:{type:"string",minLength:1}},required:["datasetId"],additionalProperties:!1}}},required:["projectId","pipelines","datasets"],additionalProperties:!1},$R=new qf.default({allErrors:!0,strict:!1}),Lf=$R.compile(wR);function ER(e){let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return`${typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/"}: ${e.message??`failed ${e.keyword} validation`}`}function Mf(e){if(Lf(e))return e;let t=Lf.errors;throw y(t,"toloka.json validation failed without errors"),new ol(`Invalid toloka.json: ${t.map(ER).join("; ")}`)}async function Ie(e){let t;try{t=await wr.readFile(sl.join(e,Kn),"utf8")}catch(r){if(r instanceof Error&&"code"in r&&r.code==="ENOENT")return;throw r}try{return Mf(JSON.parse(t))}catch(r){if(r instanceof SyntaxError)throw new ol(`Invalid toloka.json: ${r.message}`,{cause:r});throw r}}async function Gt(e,t){let r=Mf(t),i=Object.fromEntries(Object.entries(r.pipelines).sort(([s],[o])=>s<o?-1:s>o?1:0)),n=Object.fromEntries(Object.entries(r.datasets).sort(([s],[o])=>s<o?-1:s>o?1:0));await wr.mkdir(e,{recursive:!0}),await wr.writeFile(sl.join(e,Kn),`${JSON.stringify({projectId:r.projectId,pipelines:i,datasets:n},null,2)}
|
|
38
|
-
`,"utf8")}var
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
`),{cause:d})}let o=[`Created project ${s.id} as ${r}.`];if(e.sourceRoot!==void 0){let d=await qR(e.sourceRoot,i,s,r);if(d!==void 0)o.push(d)}let a=o.join(`
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
`)}}}var pg=require("crypto"),Xt=require("fs/promises"),Ss=require("path");var Er=require("path");function cm(){let e=WR();return async(t)=>{for(let r of t)r.module=e(r.filename);return t}}function WR(e=process.argv[1]?Er.dirname(process.argv[1]):process.cwd(),t=Er.sep==="\\"){let r=t?lm(e):e;return(i)=>{if(!i)return;let n=t?lm(i):i,{dir:s,base:o,ext:a}=Er.posix.parse(n);if(a===".js"||a===".mjs"||a===".cjs")o=o.slice(0,-1*a.length);let d=decodeURIComponent(o);if(!s)s=".";let u=s.lastIndexOf("/node_modules");if(u>-1)return`${s.slice(u+14).replace(/\//g,".")}:${d}`;if(s.startsWith(r)){let l=s.slice(r.length+1).replace(/\//g,".");return l?`${l}:${d}`:d}return d}}function lm(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var pl=(e)=>{if("flags"in e){let t=dm(e.flags),r=um(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([n,s])=>[n,Xn(s)])),i=Object.fromEntries(Object.entries(t).map(([n,s])=>[n,HR(n,s,r[n])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:i}}};function HR(e,t,r){return{key:e,enabled:typeof t=="string"?!0:t,variant:typeof t=="string"?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:r?JSON.stringify(r):void 0,description:void 0}}}var dm=(e)=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,Ci(r)]).filter(([,t])=>t!==void 0)),um=(e)=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter((r)=>{let i=t[r];return i.enabled&&i.metadata&&i.metadata.payload!==void 0}).map((r)=>{let i=t[r].metadata?.payload;return[r,i?Xn(i):void 0]}))},Ci=(e)=>e===void 0?void 0:e.variant??e.enabled,Xn=(e)=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var JR=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],Oi=(e,t=[])=>{let r={},i=(n)=>{if(e[n]!==void 0)r[n]=e[n]};return JR.forEach(i),t.forEach(i),r};var Se=function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.AiQueue="ai_queue",e.LogsQueue="logs_queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e}({});function fl(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var YR="NativeGzipValidationError",XR=31,ZR=139,eC=8,tC=(e)=>e.length>=2&&e[0]===XR&&e[1]===ZR;var ji,rC=()=>{if(ji)return ji;ji=[];for(let e=0;e<256;e++){let t=e;for(let r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;ji[e]=t>>>0}return ji},iC=(e)=>{let t=rC(),r=4294967295;for(let i=0;i<e.length;i++)r=t[(r^e[i])&255]^r>>>8;return(4294967295^r)>>>0},Zn=(e)=>{let t=Error(`Native gzip produced invalid output: ${e}`);throw t.name=YR,t},nC=async(e,t)=>{if(e.size<18)Zn("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());if(!tC(r)||r[2]!==eC)Zn("invalid-header");let i=new DataView(await e.slice(e.size-8).arrayBuffer());if(i.getUint32(0,!0)!==iC(t))Zn("invalid-crc");let n=t.length>>>0;if(i.getUint32(4,!0)!==n)Zn("invalid-size")};async function Kt(e,t=!0,r){try{let i=new TextEncoder().encode(e),n=new globalThis.CompressionStream("gzip"),s=n.writable.getWriter(),o=s.write(i).then(()=>s.close()).catch(async(u)=>{try{await s.abort(u)}catch{}throw u}),a=new Response(n.readable).blob(),[d]=await Promise.all([a,o]);return await nC(d,i),d}catch(i){if(r?.rethrow)throw i;if(t)console.error("Failed to gzip compress data",i);return null}}var sC=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],pm=function(e,t=[]){if(!e)return!1;let r=e.toLowerCase();return sC.concat(t).some((i)=>{let n=i.toLowerCase();return r.indexOf(n)!==-1})};function Ir(e){let t=[];return JSON.stringify(e,function(r,i){if(typeof i=="bigint")return i.toString();if(typeof i=="function"||typeof i=="symbol")return;if(i instanceof Error)return{name:i.name,message:i.message,stack:i.stack};if(i&&typeof i=="object"){while(t.length>0&&t[t.length-1]!==this)t.pop();if(t.includes(i))return"[Circular]";t.push(i)}return i})??"null"}var aC=Array.isArray,fm=Object.prototype,r1=fm.hasOwnProperty,es=fm.toString,Ze=aC||function(e){return es.call(e)==="[object Array]"};var Fi=(e)=>e===Object(e)&&!Ze(e);var zt=(e)=>e===void 0,ht=(e)=>es.call(e)=="[object String]",mm=(e)=>ht(e)&&e.trim().length===0,hm=(e)=>e===null;var Ti=(e)=>es.call(e)=="[object Number]"&&e===e;var gm=(e)=>es.call(e)==="[object Boolean]";var ym=(e)=>e instanceof Error;function ts(e){return e===null||typeof e!="object"}function Wt(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function _m(e){return Wt(e,"ErrorEvent")}function Sr(e){return typeof Event<"u"&&lC(e,Event)}function bm(e){return Wt(e,"Object")}function lC(e,t){try{return e instanceof t}catch{return!1}}function ki(e,t,r,i,n){if(t>r)i.warn("min cannot be greater than max."),t=r;if(Ti(e))if(e>r)return i.warn(" cannot be greater than max: "+r+". Using max value instead."),r;else{if(!(e<t))return e;return i.warn(" cannot be less than min: "+t+". Using min value instead."),t}return i.warn(" must be a number. using max or fallback. max: "+r+", fallback: "+n),ki(n||r,t,r,i)}var cC=86400000,dC=1,uC=10;function Pm(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??dC,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??uC}}class ml{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=ki(e.bucketSize,0,100,e._logger),this._refillRate=ki(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=ki(e.refillInterval,0,cC,e._logger)}_applyRefill(e,t){let r=t-e.lastAccess,i=Math.floor(r/this._refillInterval);if(i>0){let n=i*this._refillRate;e.tokens=Math.min(e.tokens+n,this._bucketSize),e.lastAccess=e.lastAccess+i*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),r=String(e),i=this._buckets[r];if(i)this._applyRefill(i,t);else i={tokens:this._bucketSize,lastAccess:t},this._buckets[r]=i;if(i.tokens===0)return!0;if(i.tokens--,i.tokens===0)this._onBucketRateLimited?.(e);return i.tokens===0}stop(){this._buckets={}}}/*! For license information please see uuidv7.mjs.LICENSE.txt */class Ht{constructor(e){this.bytes=e}static ofInner(e){if(e.length===16)return new Ht(e);throw TypeError("not 128-bit length")}static fromFieldsV7(e,t,r,i){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(i)||e<0||t<0||r<0||i<0||e>281474976710655||t>4095||r>1073741823||i>4294967295)throw RangeError("invalid field value");let n=new Uint8Array(16);return n[0]=e/1099511627776,n[1]=e/4294967296,n[2]=e/16777216,n[3]=e/65536,n[4]=e/256,n[5]=e,n[6]=112|t>>>8,n[7]=t,n[8]=128|r>>>24,n[9]=r>>>16,n[10]=r>>>8,n[11]=r,n[12]=i>>>24,n[13]=i>>>16,n[14]=i>>>8,n[15]=i,new Ht(n)}static parse(e){let t;switch(e.length){case 32:t=/^[0-9a-f]{32}$/i.exec(e)?.[0];break;case 36:t=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;case 38:t=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(e)?.slice(1,6).join("");break;case 45:t=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;default:break}if(t){let r=new Uint8Array(16);for(let i=0;i<16;i+=4){let n=parseInt(t.substring(2*i,2*i+8),16);r[i+0]=n>>>24,r[i+1]=n>>>16,r[i+2]=n>>>8,r[i+3]=n}return new Ht(r)}throw SyntaxError("could not parse UUID string")}toString(){let e="";for(let t=0;t<this.bytes.length;t++)if(e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]),t===3||t===5||t===7||t===9)e+="-";return e}toHex(){let e="";for(let t=0;t<this.bytes.length;t++)e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error("unreachable");if(e<=7)return this.bytes.every((t)=>t===0)?"NIL":"VAR_0";if(e<=11)return"VAR_10";if(e<=13)return"VAR_110";if(e<=15)return this.bytes.every((t)=>t===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new Ht(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(let t=0;t<16;t++){let r=this.bytes[t]-e.bytes[t];if(r!==0)return Math.sign(r)}return 0}}class wm{constructor(e){this.timestamp=0,this.counter=0,this.random=e??pC()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let r=this.generateOrAbortCore(e,t);if(r===void 0)this.timestamp=0,r=this.generateOrAbortCore(e,t);return r}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return Ht.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,Ht.ofInner(e)}}var pC=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),vm,xe=()=>fC().toString(),fC=()=>(vm||(vm=new wm)).generate();class hl{add(e){let t=xe(),r=++this.nextId;return this.promiseByIds[t]={id:r,promise:e},e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds).map((r)=>r.promise),t=e.length;while(t>0)await Promise.all(e),e=Object.values(this.promiseByIds).map((r)=>r.promise),t=e.length}getPromises(e=[],t=this.nextId){let r=new Set(e);return Object.values(this.promiseByIds).filter((i)=>i.id<=t&&!r.has(i.promise)).map((i)=>i.promise)}get maxId(){return this.nextId}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={},this.nextId=0}}function mC(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var $m=(e,t,r)=>{function i(s,...o){t(()=>{let a=r[s];a(e,...o)})}return{debug:(...s)=>{i("debug",...s)},info:(...s)=>{i("log",...s)},warn:(...s)=>{i("warn",...s)},error:(...s)=>{i("error",...s)},critical:(...s)=>{r.error(e,...s)},createLogger:(s)=>$m(`${e} ${s}`,t,r)}},hC=(e)=>e();function Em(e,t=hC){return $m(e,t,mC())}var Rr="Mobile",is="iOS",xr="Android",Cm="Tablet",m1=xr+" "+Cm;var yC="Apple",h1=yC+" Watch",Om="Safari",ns="BlackBerry",jm="Samsung",_C=jm+"Browser",bC=jm+" Internet",ss="Chrome",PC=ss+" OS",vC=ss+" "+is,Fm="Internet Explorer",wC=Fm+" "+Rr,yl="Opera",g1=yl+" Mini",Tm="Edge",$C="Microsoft "+Tm,_l="Firefox",EC=_l+" "+is,bl="Nintendo",Pl="PlayStation",rs="Xbox",IC=xr+" "+Rr,SC=Rr+" "+Om,Ai="Windows",xC=Ai+" Phone";var km="Generic",y1=km+" "+Rr.toLowerCase(),_1=km+" "+Cm.toLowerCase(),RC="Konqueror",CC="Oculus Browser",Im="Vivaldi",OC="Yandex",Sm="Whale",jC="DuckDuckGo",FC="Pale Moon",xm="Waterfox",Rm="Brave",TC="Google Search App",H="(\\d+(\\.\\d+)?)",gl=new RegExp("Version/"+H);var b1=new RegExp(rs,"i"),P1=new RegExp(Pl+" \\w+","i"),v1=new RegExp(bl+" \\w+","i"),kC=new RegExp(ns+"|PlayBook|BB10","i"),AC={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"};var w1={[wC]:[new RegExp("rv:"+H)],[$C]:[new RegExp(Tm+"?\\/"+H)],[ss]:[new RegExp("("+ss+"|CrMo)\\/"+H)],[vC]:[new RegExp("CriOS\\/"+H)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+H)],[Om]:[gl],[SC]:[gl],[yl]:[new RegExp("("+yl+"|OPR)\\/"+H)],[_l]:[new RegExp(_l+"\\/"+H)],[EC]:[new RegExp("FxiOS\\/"+H)],[RC]:[new RegExp("Konqueror[:/]?"+H,"i")],[ns]:[new RegExp(ns+" "+H),gl],[IC]:[new RegExp("android\\s"+H,"i")],[bC]:[new RegExp(_C+"\\/"+H)],[CC]:[new RegExp("OculusBrowser\\/"+H)],[Im]:[new RegExp(Im+"\\/"+H)],[OC]:[new RegExp("YaBrowser\\/"+H)],[Sm]:[new RegExp(Sm+"\\/"+H)],[Rm]:[new RegExp(Rm+"\\/"+H)],[jC]:[new RegExp("(DuckDuckGo|Ddg)\\/"+H)],[FC]:[new RegExp("PaleMoon\\/"+H)],[xm]:[new RegExp(xm+"\\/"+H)],[TC]:[new RegExp("GSA\\/"+H)],[Fm]:[new RegExp("(rv:|MSIE )"+H)],Mozilla:[new RegExp("rv:"+H)]};var $1=[[new RegExp(rs+"; "+rs+" (.*?)[);]","i"),(e)=>[rs,e&&e[1]||""]],[new RegExp(bl,"i"),[bl,""]],[new RegExp(Pl,"i"),[Pl,""]],[kC,[ns,""]],[new RegExp(Ai,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[xC,""];if(new RegExp(Rr).test(t)&&!/IEMobile\b/.test(t))return[Ai+" "+Rr,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let i=r[1],n=AC[i]||"";if(/arm/i.test(t))n="RT";return[Ai,n]}return[Ai,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,(e)=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[is,t.join(".")]}return[is,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,(e)=>{let t="";if(e&&e.length>=3)t=zt(e[2])?e[3]:e[2];return["watchOS",t]}],[new RegExp("("+xr+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+xr+")","i"),(e)=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[xr,t.join(".")]}return[xr,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,(e)=>{let t=["Mac OS X",""];if(e&&e[1]){let r=[e[1],e[2],e[3]||"0"];t[1]=r.join(".")}return t}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[PC,""]],[/Linux|debian/i,["Linux",""]]];var Am="utf8",DC=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function NC(e){return typeof e=="string"&&DC.test(e)}function os(e,t){return NC(e)?e:t()}function Dm(e){return e?.replace(/\/+$/,"")}async function Nm(e,t){let r=null;for(let i=0;i<t.retryCount+1;i++){if(i>0)await new Promise((n)=>setTimeout(n,t.retryDelay));try{return await e()}catch(n){if(r=n,!t.retryCheck(n))throw n}}throw r}function vl(){return new Date().toISOString()}function ue(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}var Lm=(e)=>e instanceof Error;function wl(e){return Promise.all(e.map((t)=>(t??Promise.resolve()).then((r)=>({status:"fulfilled",value:r}),(r)=>({status:"rejected",reason:r}))))}var qC={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},A1=qC.info;function $l(e){if(gm(e))return{boolValue:e};if(typeof e=="number"){if(!Number.isFinite(e))return{stringValue:String(e)};if(Number.isInteger(e))return{intValue:e};return{doubleValue:e}}if(typeof e=="string")return{stringValue:e};if(Ze(e))return{arrayValue:{values:e.map((t)=>$l(t))}};try{return{stringValue:JSON.stringify(e)}}catch{return{stringValue:String(e)}}}function Di(e){let t=[];for(let r in e){let i=e[r];if(!(hm(i)||zt(i)))t.push({key:r,value:$l(i)})}return t}var Ni=[0,5,10,25,50,75,100,250,500,750,1000,2500,5000,7500,1e4];function El(e){return String(e)+"000000"}function Il(e,t,r,i){let n="";if(i)n=Object.keys(i).sort().map((o)=>`${JSON.stringify(o)}:${JSON.stringify(i[o])}`).join(",");return`${e}\x00${t}\x00${r??""}\x00${n}`}function qm(e,t){for(let r=0;r<t.length;r++)if(e<=t[r])return r;return t.length}function Sl(e,t,r){return{...e.resourceAttributes,"service.name":e.serviceName||"unknown_service",...e.environment&&{"deployment.environment":e.environment},...e.serviceVersion&&{"service.version":e.serviceVersion},"telemetry.sdk.name":t,"telemetry.sdk.version":r}}function xl(e,t,r,i){return{resourceMetrics:[{resource:{attributes:Di(t)},scopeMetrics:[{scope:{name:r,version:i},metrics:e}]}]}}function as(e){let t=e?.resourceAttributes;return{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1000}}var Mm=1;class ls{constructor(e,t,r){this._instance=e,this._config=t,this._logger=r,this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._generation=0}count(e,t=1,r){this._capture({name:e,type:"count",value:t,unit:r?.unit,attributes:r?.attributes})}gauge(e,t,r){this._capture({name:e,type:"gauge",value:t,unit:r?.unit,attributes:r?.attributes})}histogram(e,t,r){this._capture({name:e,type:"histogram",value:t,unit:r?.unit,attributes:r?.attributes})}flush(){let e=this._flushPromise,r=(async()=>{if(e)await e.catch(()=>{});await this._doFlush()})().finally(()=>{if(this._flushPromise===r)this._flushPromise=null});return this._flushPromise=r,r}drainWindow(){if(this._series.size===0)return null;let e=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(e)}reset(){this._generation++,this._clearFlushTimer(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(e){if(this._instance.isDisabled||this._instance.optedOut)return;let t=this._runBeforeSend(e);if(t===null)return;if(!t.name||typeof t.name!="string")return void this._logger.warn("Dropping metric with empty name");if(typeof t.value!="number"||!Number.isFinite(t.value))return void this._logger.warn(`Dropping metric '${t.name}': value must be a finite number`);if(t.type==="count"&&t.value<0)return void this._logger.warn(`Dropping count '${t.name}': counters are monotonic, value must be >= 0`);let r,i;try{r=t.attributes?{...t.attributes}:void 0,i=Il(t.type,t.name,t.unit,r)}catch(o){this._logger.warn(`Dropping metric '${t.name}': attributes could not be serialized`,o);return}let n=this._series.get(i);if(!n){if(!this._admitNewSeries())return;n={name:t.name,type:t.type,unit:t.unit,attributes:r,windowStartMs:Date.now()},this._series.set(i,n)}let s=this._typeByName.get(t.name);if(s===void 0)this._typeByName.set(t.name,t.type);else if(s!==t.type&&!this._typeCollisionWarned.has(t.name))this._typeCollisionWarned.add(t.name),this._logger.warn(`Metric name '${t.name}' is already used as a ${s}; recording it as a ${t.type} too will blend both series in charts. Use a distinct name.`);this._fold(n,t.value),this._armFlushTimer()}_admitNewSeries(){if(this._series.size<this._config.maxSeriesPerFlush)return!0;if(!this._seriesCapWarned)this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`);return!1}_fold(e,t){switch(e.type){case"count":e.total=(e.total??0)+t;break;case"gauge":e.last=t;break;case"histogram":{if(!e.hist)e.hist={count:0,sum:0,min:t,max:t,bucketCounts:Array(Ni.length+1).fill(0)};let r=e.hist;r.count+=1,r.sum+=t,r.min=Math.min(r.min,t),r.max=Math.max(r.max,t),r.bucketCounts[qm(t,Ni)]+=1;break}}}_runBeforeSend(e){let t=this._config.beforeSend;if(!t)return e;let r=Ze(t)?t:[t],i=e;for(let n of r)try{let s=n(i);if(!s)return this._logger.info("Metric was rejected in beforeSend function"),null;i=s}catch(s){return this._logger.error("Error in beforeSend function for metric:",s),null}return i}_armFlushTimer(){if(this._flushTimer)return;this._flushTimer=ue(()=>{this._flushTimer=void 0,this.flush().catch((e)=>{this._logger.error("Metrics flush failed:",e)})},this._config.flushIntervalMs)}_clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}async _doFlush(){if(this._series.size===0)return;let e=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let t=this._generation,r=await this._instance._sendMetricsBatch(this._buildPayload(e));if(t!==this._generation)return;switch(r.kind){case"ok":return;case"retry-later":this._mergeWindowBack(e),this._armFlushTimer();return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",r.error);return}}_buildPayload(e){return xl(this._buildMetrics(e),Sl(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(e){let t=El(Date.now()),r=new Map;for(let i of e.values()){let n=Il(i.type,i.name,i.unit,void 0),s=r.get(n);if(!s){if(s={name:i.name,...i.unit&&{unit:i.unit}},i.type==="count")s.sum={aggregationTemporality:Mm,isMonotonic:!0,dataPoints:[]};else if(i.type==="gauge")s.gauge={dataPoints:[]};else s.histogram={aggregationTemporality:Mm,dataPoints:[]};r.set(n,s)}let o=Di(i.attributes??{}),a=El(i.windowStartMs);if(i.type==="count"){let d={attributes:o,startTimeUnixNano:a,timeUnixNano:t,asDouble:i.total??0};s.sum.dataPoints.push(d)}else if(i.type==="gauge"){let d={attributes:o,timeUnixNano:t,asDouble:i.last??0};s.gauge.dataPoints.push(d)}else if(i.hist){let d={attributes:o,startTimeUnixNano:a,timeUnixNano:t,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:Ni};s.histogram.dataPoints.push(d)}}return Array.from(r.values())}_mergeWindowBack(e){for(let[t,r]of e){let i=this._series.get(t);if(!i){if(this._admitNewSeries())this._series.set(t,r);continue}switch(i.windowStartMs=Math.min(i.windowStartMs,r.windowStartMs),i.type){case"count":i.total=(i.total??0)+(r.total??0);break;case"gauge":break;case"histogram":if(r.hist)if(i.hist){i.hist.count+=r.hist.count,i.hist.sum+=r.hist.sum,i.hist.min=Math.min(i.hist.min,r.hist.min),i.hist.max=Math.max(i.hist.max,r.hist.max);for(let n=0;n<i.hist.bucketCounts.length;n++)i.hist.bucketCounts[n]+=r.hist.bucketCounts[n]}else i.hist=r.hist;break}}}}class Rl{constructor(){this.events={},this.events={}}on(e,t){if(!this.events[e])this.events[e]=[];return this.events[e].push(t),()=>{this.events[e]=this.events[e].filter((r)=>r!==t)}}emit(e,t){for(let r of this.events[e]||[])r(t);for(let r of this.events["*"]||[])r(e,t)}}var $e={};U_($e,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>_s,DOMExceptionCoercer:()=>Xm,EXCEPTION_STEP_INTERNAL_FIELDS:()=>Li,ErrorCoercer:()=>fs,ErrorEventCoercer:()=>Zm,ErrorPropertiesBuilder:()=>us,EventCoercer:()=>th,ExceptionStepsBuffer:()=>nh,ObjectCoercer:()=>gs,PrimitiveCoercer:()=>ys,PromiseRejectionEventCoercer:()=>rh,ReduceableCache:()=>ih,StringCoercer:()=>ms,chromeStackLineParser:()=>Cl,createDefaultStackParser:()=>jl,createStackParser:()=>Ym,geckoStackLineParser:()=>Ol,getUtf8ByteLength:()=>sh,nodeStackLineParser:()=>Wm,opera10StackLineParser:()=>Vm,opera11StackLineParser:()=>Km,resolveExceptionStepsConfig:()=>Fl,reverseAndStripFrames:()=>Qm,stripReservedExceptionStepFields:()=>aO,winjsStackLineParser:()=>Gm});var cs,Um,ds;function Bm(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);if(ds&&r.length===Um)return ds;return Um=r.length,ds=r.reduce((i,n)=>{if(!cs)cs={};let s=cs[n];if(s)i[s[0]]=s[1];else{let o=e(n);for(let a=o.length-1;a>=0;a--){let u=o[a]?.filename,l=t[n];if(u&&l){i[u]=l,cs[n]=[u,l];break}}}return i},{}),ds}var GC=4;class us{constructor(e,t,r=[]){this.coercers=e,this.stackParser=t,this.modifiers=r}buildFromUnknown(e,t={}){let i=t&&t.mechanism||{handled:!0,type:"generic"},s=this.buildCoercingContext(i,t,0).apply(e),o=this.buildParsingContext(t),a=this.parseStacktrace(s,o);return{$exception_list:this.convertToExceptionList(a,i),$exception_level:"error"}}async modifyFrames(e){for(let t of e)if(t.stacktrace&&t.stacktrace.frames&&Ze(t.stacktrace.frames))t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames);return e}coerceFallback(e){return{type:"Error",value:"Unknown error",stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let r;if(e.cause!=null)r=this.parseStacktrace(e.cause,t);let i;if(e.stack!=""&&e.stack!=null)i=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap);return{...e,cause:r,stack:i}}applyChunkIds(e,t){return e.map((r)=>{if(r.filename&&t)r.chunk_id=t[r.filename];return r})}applyCoercers(e,t){for(let r of this.coercers)if(r.match(e))return r.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let r of this.modifiers)t=await r(t);return t}convertToExceptionList(e,t){let r={type:e.type,value:e.value,mechanism:{type:t.type??"generic",handled:t.handled??!0,synthetic:e.synthetic??!1}};if(e.stack)r.stacktrace={type:"raw",frames:e.stack};let i=[r];if(e.cause!=null)i.push(...this.convertToExceptionList(e.cause,{...t,handled:!0}));return i}buildParsingContext(e){return{chunkIdMap:Bm(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,r=0){let i=(s,o)=>{if(!(o<=GC))return;{let a=this.buildCoercingContext(e,t,o);return this.applyCoercers(s,a)}};return{...t,syntheticException:r==0?t.syntheticException:void 0,mechanism:e,apply:(s)=>i(s,r),next:(s)=>i(s,r+1)}}}var se="?";function et(e,t,r,i,n){let s={platform:e,filename:t,function:r==="<anonymous>"?se:r,in_app:!0};if(!zt(i))s.lineno=i;if(!zt(n))s.colno=n;return s}var ps=(e,t)=>{let r=e.indexOf("safari-extension")!==-1,i=e.indexOf("safari-web-extension")!==-1;return r||i?[e.indexOf("@")!==-1?e.split("@")[0]:se,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var VC=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,KC=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,zC=/\((\S*)(?::(\d+))(?::(\d+))\)/,Cl=(e,t)=>{let r=VC.exec(e);if(r){let[,n,s,o]=r;return et(t,n,se,+s,+o)}let i=KC.exec(e);if(i){if(i[2]&&i[2].indexOf("eval")===0){let a=zC.exec(i[2]);if(a)i[2]=a[1],i[3]=a[2],i[4]=a[3]}let[s,o]=ps(i[1]||se,i[2]);return et(t,o,s,i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}};var WC=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,HC=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Ol=(e,t)=>{let r=WC.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let o=HC.exec(r[3]);if(o)r[1]=r[1]||"eval",r[3]=o[1],r[4]=o[2],r[5]=""}let n=r[3],s=r[1]||se;return[s,n]=ps(s,n),et(t,n,s,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var JC=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,Gm=(e,t)=>{let r=JC.exec(e);return r?et(t,r[2],r[1]||se,+r[3],r[4]?+r[4]:void 0):void 0};var QC=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,Vm=(e,t)=>{let r=QC.exec(e);return r?et(t,r[2],r[3]||se,+r[1]):void 0},YC=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,Km=(e,t)=>{let r=YC.exec(e);return r?et(t,r[5],r[3]||r[4]||se,+r[1],+r[2]):void 0};var XC=/^\s*[-]{4,}$/,ZC=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,eO=/^Promise\.(?:all|any)$/,tO=/^index \d+$/,rO="node:internal/promise",Wm=(e,t)=>{let r=e.match(ZC);if(r){let i,n,s,o,a;if(r[1]){s=r[1];let l=s.lastIndexOf(".");if(s[l-1]===".")l--;if(l>0){i=s.slice(0,l),n=s.slice(l+1);let c=i.indexOf(".Module");if(c>0)s=s.slice(c+1),i=i.slice(0,c)}o=void 0}if(n)o=i,a=n;if(n==="<anonymous>")a=void 0,s=void 0;if(s===void 0)a=a||se,s=o?`${o}.${a}`:a;let d=r[2]?.startsWith("file://")?r[2].slice(7):r[2],u=r[5]==="native";if(d?.match(/\/[A-Z]:/))d=d.slice(1);if(!d&&r[5]&&!u)d=r[5];if(eO.test(s)&&tO.test(d||""))d=rO;return{filename:d?decodeURI(d):void 0,module:void 0,function:s,lineno:zm(r[3]),colno:zm(r[4]),in_app:iO(d||"",u),platform:t}}if(e.match(XC))return{filename:e,platform:t}};function iO(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes("node_modules/")}function zm(e){return parseInt(e||"",10)||void 0}var Hm=/\(error: (.*)\)/,Jm=50;function Qm(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,Jm).map((r)=>({...r,filename:r.filename||nO(t).filename,function:r.function||se}))}function nO(e){return e[e.length-1]||{}}function jl(){return Ym("web:javascript",Cl,Ol)}function Ym(e,...t){return(r,i=0)=>{let n=[],s=r.split(`
|
|
55
|
-
`);for(let o=i;o<s.length;o++){let a=s[o];if(a.length>1024)continue;let d=Hm.test(a)?a.replace(Hm,"$1"):a;if(!d.match(/\S*Error: /)){for(let u of t){let l=u(d,e);if(l){n.push(l);break}}if(n.length>=Jm)break}}return Qm(n)}}class Xm{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,t){let r=ht(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:r?e.stack:void 0,cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){let t=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?`${t}: ${e.message}`:t}isDOMException(e){return Wt(e,"DOMException")}isDOMError(e){return Wt(e,"DOMError")}}class fs{match(e){return ym(e)}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let r=e.message;if(r.error&&typeof r.error.message=="string")return String(r.error.message);return String(r)}getStack(e){return e.stacktrace||e.stack||void 0}}class Zm{constructor(){}match(e){return _m(e)&&e.error!=null}coerce(e,t){let r=t.apply(e.error);if(!r)return{type:"ErrorEvent",value:e.message,stack:t.syntheticException?.stack,synthetic:!0};return r}}var sO=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class ms{match(e){return typeof e=="string"}coerce(e,t){let[r,i]=this.getInfos(e);return{type:r??"Error",value:i??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t="Error",r=e,i=e.match(sO);if(i)t=i[1],r=i[2];return[t,r]}}var eh=["fatal","error","warning","log","info","debug"];function hs(e,t=40){let r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(let i=r.length;i>0;i--){let n=r.slice(0,i).join(", ");if(!(n.length>t)){if(i===r.length)return n;return n.length<=t?n:`${n.slice(0,t)}...`}}return""}class gs{match(e){return typeof e=="object"&&e!==null}coerce(e,t){let r=this.getErrorPropertyFromObject(e);if(r)return t.apply(r);return{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return Sr(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){let i=`'${e.name}' captured as exception`;if("message"in e&&typeof e.message=="string")i+=` with message: '${e.message}'`;return i}if("message"in e&&typeof e.message=="string")return e.message;let t=this.getObjectClassName(e),r=hs(e);return`${t&&t!=="Object"?`'${t}'`:"Object"} captured as exception with keys: ${r}`}isSeverityLevel(e){return ht(e)&&!mm(e)&&eh.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let r=e[t];if(Lm(r))return r}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(t){return}}}class th{match(e){return Sr(e)}coerce(e,t){let r=e.constructor.name;return{type:r,value:`${r} captured as exception with keys: ${hs(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class ys{match(e){return ts(e)}coerce(e,t){return{type:"Error",value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class rh{match(e){return Wt(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!Sr(e))return!1;try{let t=e.detail;return t!=null&&typeof t=="object"&&"reason"in t}catch{return!1}}coerce(e,t){let r=this.getUnhandledRejectionReason(e);if(ts(r))return{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(r)}`,stack:t.syntheticException?.stack,synthetic:!0};return t.apply(r)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}class ih{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(t===void 0)return;return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){while(this._cache.size>=this._maxSize){let e=this._cache.keys().next().value;if(e)this._cache.delete(e)}}}var Li={MESSAGE:"$message",TIMESTAMP:"$timestamp"},oO=new Set([Li.MESSAGE,Li.TIMESTAMP]),_s={enabled:!0,max_bytes:32768};function Fl(e){if(!e)return{..._s};return{enabled:e.enabled??_s.enabled,max_bytes:lO(e.max_bytes,_s.max_bytes)}}function aO(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((i,n)=>{if(oO.has(n))return t.push(n),i;return i[n]=e[n],i},{}),droppedKeys:t}}class nh{constructor(e){this._entries=[],this._totalBytes=0,this._config=Fl(e)}setConfig(e){this._config=Fl(e),this._trimToMaxBytes()}add(e){let t=cO(e);if(!t)return;let r=sh(t.json);if(r>this._config.max_bytes)return;this._entries.push({step:t.step,bytes:r}),this._totalBytes+=r,this._trimToMaxBytes()}getAttachable(){return this._entries.map((e)=>e.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){while(this._totalBytes>this._config.max_bytes&&this._entries.length>0){let e=this._entries.shift();if(e)this._totalBytes-=e.bytes}}}function lO(e,t){if(!Ti(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);if(r<0)return t;return r}function cO(e){let t;try{t=Ir(e)}catch{return}try{let r=JSON.parse(t);if(!Fi(r))return;let i=r,n=i[Li.MESSAGE],s=i[Li.TIMESTAMP];if(!ht(n)||n.trim().length===0)return;if(!ht(s)&&!Ti(s))return;return{step:i,json:t}}catch{return}}function sh(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let i=0;i<t.length;i++)if(t[i]==="%")r+=1,i+=2;else r+=1;return r}class jt extends Error{constructor(e,t){super("HTTP error while fetching PostHog: status="+e.status+", reqByteLength="+t),this.response=e,this.reqByteLength=t,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}}class Jt extends Error{constructor(e){super("Network error while fetching PostHog",e instanceof Error?{cause:e}:{}),this.error=e,this.name="PostHogFetchNetworkError"}}var lh=(e,t)=>{for(let r of Object.keys(t))if(r.startsWith("$feature/")||r==="$active_feature_flags")e[r]=t[r]};async function oh(e){if(e instanceof jt){let t="";try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function dO(e){return typeof e=="object"&&(e instanceof jt||ch(e))}function ch(e){return e instanceof Jt}function uO(e){if(e instanceof jt)return e.status===502||e.status===504;if(!(e instanceof Jt))return!1;let t=e.error;return(t?.code??t?.cause?.code)!=="ECONNREFUSED"}function Cr(e){return typeof e=="object"&&e instanceof jt&&e.status===413}function qi(e){if(e instanceof jt)return e.status===408||e.status===429||e.status>=500;return ch(e)}function ah(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var Tl="default";class bs{getErrorPropertiesBuilder(){if(!this._errorPropertiesBuilder)this._errorPropertiesBuilder=this.createErrorPropertiesBuilder();return this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new us([new fs,new gs,new ms,new ys],jl())}constructor(e,t={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new hl,this._events=new Rl,this._isInitialized=!1;let r=typeof e=="string"?e.trim():"",i=typeof t.host=="string"?t.host.trim():"",n=!r;if(this._logger=Em("[PostHog]",this.logMsgIfDebug.bind(this)),n)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=r,this.host=Dm(i||"https://us.i.posthog.com"),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1000),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3000,retryCheck:qi},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3000,this.featureFlagsRequestMaxRetries=t.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=t.disableGeoip??!0,this.disabled=(t.disabled??!1)||n,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!fl()||(t?.disableCompression??!1)}logMsgIfDebug(e){if(this.isDebug)e()}wrap(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return e();this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Se.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Se.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Se.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let t=this.on("*",(r,i)=>this._logger.info(r,i));this.removeDebugCallback=()=>{t(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){let t=e.properties||{},r={...t,...this.getCommonEventProperties()};if(lh(r,t),e.event==="$feature_flag_called"&&r.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled())r=Oi(r);return{distinct_id:e.distinct_id,event:e.event,properties:r}}isMinimalFlagCalledEventsEnabled(){return!1}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,r){this.wrap(()=>{let i={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};this.enqueue("identify",i,r)})}async identifyStatelessImmediate(e,t,r){let i={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};await this.sendImmediate("identify",i,r)}captureStateless(e,t,r,i){this.wrap(()=>{let n=this.buildPayload({distinct_id:e,event:t,properties:r});this.enqueue("capture",n,i)})}async captureStatelessImmediate(e,t,r,i){let n=this.buildPayload({distinct_id:e,event:t,properties:r});await this.sendImmediate("capture",n,i)}aliasStateless(e,t,r,i){this.wrap(()=>{let n=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...r||{},distinct_id:t,alias:e}});this.enqueue("alias",n,i)})}async aliasStatelessImmediate(e,t,r,i){let n=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...r||{},distinct_id:t,alias:e}});await this.sendImmediate("alias",n,i)}groupIdentifyStateless(e,t,r,i,n,s){this.wrap(()=>{let o=this.buildPayload({distinct_id:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{},...s||{}}});this.enqueue("capture",o,i)})}async groupIdentifyStatelessImmediate(e,t,r,i,n,s){let o=this.buildPayload({distinct_id:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{},...s||{}}});await this.sendImmediate("capture",o,i)}async getRemoteConfig(){await this._initPromise;let e=this.host;if(e==="https://us.i.posthog.com")e="https://us-assets.i.posthog.com";else if(e==="https://eu.i.posthog.com")e="https://eu-assets.i.posthog.com";let t=`${e}/array/${this.apiKey}/config`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(t,r,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((i)=>i.json()).catch((i)=>{this._logger.error("Remote config could not be loaded",i),this._events.emit("error",i)})}async getFlags(e,t={},r={},i={},n={},s=!1){await this._initPromise;let o=s?"&config=true":"",a=`${this.host}/flags/?v=2${o}`,d={token:this.apiKey,distinct_id:e,groups:t,person_properties:r,group_properties:i,...n};if(r.$device_id)d.$device_id=r.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)d.evaluation_contexts=this.evaluationContexts;let u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(d)};return this._logger.info("Flags URL",a),this.fetchWithRetry(a,u,{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:uO},this.featureFlagsRequestTimeoutMs).then((l)=>l.json()).then((l)=>({success:!0,response:pl(l)})).catch((l)=>(this._events.emit("error",l),{success:!1,error:this.categorizeRequestError(l)}))}categorizeRequestError(e){if(e instanceof jt)return{type:"api_error",statusCode:e.status};if(e instanceof Jt){let t=e.error;if(t instanceof Error&&(t.name==="AbortError"||t.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(e,t,r={},i={},n={},s){await this._initPromise;let o=await this.getFeatureFlagDetailStateless(e,t,r,i,n,s);if(o===void 0)return{response:void 0,requestId:void 0};let a=Ci(o.response);if(a===void 0)a=!1;return{response:a,requestId:o.requestId}}async getFeatureFlagDetailStateless(e,t,r={},i={},n={},s){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(t,r,i,n,s,[e]);if(o===void 0)return;return{response:o.flags[e],requestId:o.requestId,evaluatedAt:o.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,r={},i={},n={},s){await this._initPromise;let o=await this.getFeatureFlagPayloadsStateless(t,r,i,n,s,[e]);if(!o)return;let a=o[e];if(a===void 0)return null;return a}async getFeatureFlagPayloadsStateless(e,t={},r={},i={},n,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,r,i,n,s)).payloads}async getFeatureFlagsStateless(e,t={},r={},i={},n,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,r,i,n,s)}async getFeatureFlagsAndPayloadsStateless(e,t={},r={},i={},n,s){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(e,t,r,i,n,s);if(!o)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:o.featureFlags,payloads:o.featureFlagPayloads,requestId:o.requestId}}async getFeatureFlagDetailsStateless(e,t={},r={},i={},n,s){await this._initPromise;let o={geoip_disable:n??this.disableGeoip};if(s)o.flag_keys_to_evaluate=s;let a=await this.getFlags(e,t,r,i,o);if(!a.success)return;let d=a.response;if(d.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(d.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:d?.requestId,quotaLimited:d.quotaLimited};return d}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=(await this.fetchWithRetry(e,t).then((n)=>{if(n.status!==200||!n.json){let s=`Surveys API could not be loaded: ${n.status}`,o=Error(s);this._logger.error(o),this._events.emit("error",Error(s));return}return n.json()}).catch((n)=>{this._logger.error("Surveys API could not be loaded",n),this._events.emit("error",n)}))?.surveys;if(i)this._logger.info("Surveys fetched from API: ",JSON.stringify(i));return i??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(Se.Props);return this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(Se.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(Se.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}getQueueRouteKey(e){return Tl}persistedQueueKeyForRoute(e){return Se.Queue}getActiveQueueRoutes(){return[Tl]}getRouteQueue(e){return this.getPersistedProperty(this.persistedQueueKeyForRoute(e))||[]}enqueue(e,t,r){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let i=this.prepareMessage(t,r);if(i=this.processBeforeEnqueue(i),i===null)return;i=this.normalizeMessage(i);let n=this.persistedQueueKeyForRoute(this.getQueueRouteKey(i)),s=this.getPersistedProperty(n)||[];if(s.length>=this.maxQueueSize)s.shift(),this._logger.warn("Queue is full, the oldest event is dropped.");if(s.push({message:i}),this.setPersistedProperty(n,s),this._events.emit(e,i),s.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=ue(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate(e,t,r){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let i=this.prepareMessage(t,r);if(i=this.processBeforeEnqueue(i),i===null)return;i=this.normalizeMessage(i);try{await this.sendBatch([i],void 0,this.getQueueRouteKey(i))}catch(n){this._events.emit("error",n)}}normalizeMessage(e){let{type:t,library:r,library_version:i,...n}=e,s=ah(n.properties)?n.properties:void 0;if(r!==void 0&&s?.$lib===void 0)s={...s||{},$lib:r};if(i!==void 0&&s?.$lib_version===void 0)s={...s||{},$lib_version:i};if(s)n.properties=s;return n.uuid=os(n.uuid,xe),n}prepareMessage(e,t){let r={...e,timestamp:t?.timestamp?t?.timestamp:vl(),uuid:os(t?.uuid,xe)};if(t?.disableGeoip??this.disableGeoip){if(!ah(r.properties))r.properties={};r.properties.$geoip_disable=!0}if(r.distinctId)r.distinct_id=r.distinctId,delete r.distinctId;return r}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){if(this.pendingFlushPromise)return;this.flush().catch(async(e)=>{await oh(e)})}async waitForPendingPromises(e,t=[]){let r=t.filter((n)=>!!n),i=0;while(!0){let n=this.promiseQueue.getPromises([...r,...this.flushPromises],e);if(n.length===0)return;if(i>0)this._logger.debug(`flush() re-checking ${n.length} pending promise(s) before flushing`);await Promise.all(n.map((s)=>s.catch(()=>{}))),i++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(e){if(this.disabled)return Promise.resolve();if(!e&&this.pendingFlushPromise)return this.pendingFlushPromise;let t=this.flushPromise,r=this.promiseQueue.maxId,i=Promise.resolve().then(()=>{if(e)return this.waitForPendingPromises(r,[t,i])}).then(()=>wl([t])).then(()=>{if(this.pendingFlushPromise===i)this.pendingFlushPromise=null;return this._flush()});return this.pendingFlushPromise=i,this.flushPromise=i,this.flushPromises.add(i),this.addPendingPromise(i),wl([i]).then(()=>{if(this.flushPromises.delete(i),this.pendingFlushPromise===i)this.pendingFlushPromise=null;if(this.flushPromise===i)this.flushPromise=null}),i}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};if(e&&e!=="")t["User-Agent"]=e;return t}async sendBatch(e,t,r=Tl){let i={api_key:this.apiKey,batch:e,sent_at:vl()};if(this.historicalMigration)i.historical_migration=!0;let n=Ir(i),s=`${this.host}/batch/`,o=this.disableCompression?null:await Kt(n,this.isDebug),a={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...o!==null&&{"Content-Encoding":"gzip"}},body:o||n};await(await this.fetchWithRetry(s,a,t)).body?.cancel()?.catch(()=>{})}async _flush(){this.clearFlushTimer(),await this._initPromise;let e=this.getActiveQueueRoutes();if(!e.some((i)=>this.getRouteQueue(i).length>0))return;let t=[],r;for(let i of e)try{await this._flushRoute(i,t)}catch(n){if(r===void 0)r=n}if(r!==void 0)throw r;this._events.emit("flush",t)}async _flushRoute(e,t){let r=this.persistedQueueKeyForRoute(e),i=this.getPersistedProperty(r)||[];if(!i.length)return;let n=i.length,s=0;while(i.length>0&&s<n){let o=i.slice(0,this.maxBatchSize),a=o.map((l)=>l.message===void 0?l.message:this.normalizeMessage(l.message)),d=async()=>{let c=(this.getPersistedProperty(r)||[]).slice(o.length);this.setPersistedProperty(r,c),i=c,this._dequeuedMessagesCount+=o.length,await this.flushStorage()},u={retryCheck:(l)=>{if(Cr(l))return!1;return qi(l)}};try{await this.sendBatch(a,u,e)}catch(l){if(Cr(l)&&a.length>1){this.maxBatchSize=Math.max(1,Math.floor(a.length/2)),this._logger.warn(`Received 413 when sending batch of size ${a.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(l instanceof Jt))await d();throw this._events.emit("error",l),l}await d(),t.push(...a),s+=a.length}}async _sendLogsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),r=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,i=this.disableCompression?null:await Kt(t,this.isDebug),n={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...i!==null&&{"Content-Encoding":"gzip"}},body:i||t};try{return await this.fetchWithRetry(r,n,{retryCheck:(s)=>{if(Cr(s))return!1;return qi(s)}}),{kind:"ok"}}catch(s){if(Cr(s))return{kind:"too-large"};if(s instanceof Jt)return{kind:"retry-later",error:s};return{kind:"fatal",error:s}}}async _sendMetricsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),r=`${this.host}/i/v1/metrics?token=${encodeURIComponent(this.apiKey)}`,i=this.disableCompression?null:await Kt(t,this.isDebug),n={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...i!==null&&{"Content-Encoding":"gzip"}},body:i||t};try{return await this.fetchWithRetry(r,n,{retryCheck:(s)=>{if(Cr(s))return!1;return qi(s)}}),{kind:"ok"}}catch(s){if(Cr(s))return{kind:"too-large"};if(qi(s))return{kind:"retry-later",error:s};return{kind:"fatal",error:s}}}async fetchWithRetry(e,t,r,i){let n=t.body?t.body:"",s=-1;try{s=n instanceof Blob?n.size:Buffer.byteLength(n,Am)}catch{if(n instanceof Blob)s=n.size;else s=new TextEncoder().encode(n).length}return await Nm(async()=>{let o=new AbortController,a=i??this.requestTimeout,d=ue(()=>o.abort(),a),u=null;try{u=await this.fetch(e,{signal:o.signal,...t})}catch(c){throw new Jt(c)}finally{clearTimeout(d)}if(t.mode!=="no-cors"&&(u.status<200||u.status>=400))throw new jt(u,s);return u},{...this._retryOptions,...r})}async _shutdown(e=30000){await this._initPromise;let t=!1;if(this.clearFlushTimer(),this.disabled)return;let r=async()=>{try{await this.promiseQueue.join();while(!0){if(!this.getActiveQueueRoutes().some((o)=>this.getRouteQueue(o).length>0))break;let s=this._dequeuedMessagesCount;if(await this.flush(),t)break;if(this._dequeuedMessagesCount===s){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(n){if(!dO(n))throw n;await oh(n)}},i;try{return await Promise.race([new Promise((n,s)=>{i=ue(()=>{this._logger.error("Timed out while shutting down PostHog"),t=!0,s("Timeout while shutting down PostHog. Some events may not have been sent.")},e)}),r()])}finally{clearTimeout(i)}}async shutdown(e=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var ph=require("fs"),fh=require("readline"),Ps=new $e.ReduceableCache(25),mh=new $e.ReduceableCache(20),kl=7,gO=1000,yO=1e4;async function hh(e){let t={};for(let n=e.length-1;n>=0;n--){let s=e[n],o=s?.filename;if(!s||typeof o!="string"||typeof s.lineno!="number"||vO(o)||wO(s))continue;if(!t[o])t[o]=[];t[o].push(s.lineno)}let r=Object.keys(t);if(r.length==0)return e;let i=[];for(let n of r){if(mh.get(n))continue;let s=t[n];if(!s)continue;s.sort((d,u)=>d-u);let o=EO(s);if(o.every((d)=>$O(n,d)))continue;let a=IO(Ps,n,{});i.push(_O(n,o,a))}if(await Promise.all(i).catch(()=>{}),e&&e.length>0)bO(e,Ps);return Ps.reduce(),e}function _O(e,t,r){return new Promise((i)=>{let n=ph.createReadStream(e),s=fh.createInterface({input:n});function o(){n.destroy(),i()}let a=0,d=0,u=t[d];if(u===void 0)return void o();let l=u[0],c=u[1];function p(){mh.set(e,1),s.close(),s.removeAllListeners(),o()}n.on("error",p),s.on("error",p),s.on("close",o),s.on("line",(f)=>{if(a++,a<l)return;if(r[a]=SO(f,0),a>=c){if(d===t.length-1){s.close(),s.removeAllListeners();return}d++;let m=t[d];if(m===void 0){s.close(),s.removeAllListeners();return}l=m[0],c=m[1]}})})}function bO(e,t){for(let r of e)if(r.filename&&r.context_line===void 0&&typeof r.lineno=="number"){let i=t.get(r.filename);if(i===void 0)continue;PO(r.lineno,r,i)}}function PO(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let n=gh(e);n<e;n++){let s=r[n];if(s===void 0)return void dh(t);t.pre_context.push(s)}if(r[e]===void 0)return void dh(t);t.context_line=r[e];let i=yh(e);t.post_context=[];for(let n=e+1;n<=i;n++){let s=r[n];if(s===void 0)break;t.post_context.push(s)}}function dh(e){delete e.pre_context,delete e.context_line,delete e.post_context}function vO(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function wO(e){if(e.lineno!==void 0&&e.lineno>yO)return!0;if(e.colno!==void 0&&e.colno>gO)return!0;return!1}function $O(e,t){let r=Ps.get(e);if(r===void 0)return!1;for(let i=t[0];i<=t[1];i++)if(r[i]===void 0)return!1;return!0}function EO(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let i=uh(r),n=[];while(!0){if(t===e.length-1){n.push(i);break}let s=e[t+1];if(typeof s!="number")break;if(s<=i[1])i[1]=s+kl;else n.push(i),i=uh(s);t++}return n}function uh(e){return[gh(e),yh(e)]}function gh(e){return Math.max(1,e-kl)}function yh(e){return e+kl}function IO(e,t,r){let i=e.get(t);if(i===void 0)return e.set(t,r),r;return i}function SO(e,t){let r=e,i=r.length;if(i<=150)return r;if(t>i)t=i;let n=Math.max(t-60,0);if(n<5)n=0;let s=Math.min(n+140,i);if(s>i-5)s=i;if(s===i)n=Math.max(s-140,0);if(r=r.slice(n,s),n>0)r=`...${r}`;if(s<i)r+="...";return r}var Or=require("path");function _h(e=process.cwd()){let t=Or.sep==="\\",r=(n)=>t?n.replace(/\\/g,"/"):n,i=r(e);return async(n)=>{for(let s of n)if(!(!s.filename||s.filename.startsWith("node:")||s.filename.startsWith("data:"))){if(Or.isAbsolute(s.filename))s.filename=r(Or.relative(i,r(s.filename)))}return n}}var bh="5.46.1";var gt={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};class Qt{constructor(e){this._host=e.host,this._distinctId=e.distinctId,this._groups=e.groups,this._disableGeoip=e.disableGeoip,this._flags=e.flags,this._requestId=e.requestId,this._evaluatedAt=e.evaluatedAt,this._flagDefinitionsLoadedAt=e.flagDefinitionsLoadedAt,this._errorsWhileComputing=e.errorsWhileComputing??!1,this._quotaLimited=e.quotaLimited??!1,this._accessed=e.accessed??new Set,this._isSlice=e.isSlice??!1}isEnabled(e){let t=this._flags[e];return this._recordAccess(e),t?.enabled??!1}getFlag(e){let t=this._flags[e];if(this._recordAccess(e),!t)return;if(!t.enabled)return!1;return t.variant??!0}getFlagPayload(e){return this._flags[e]?.payload}onlyAccessed(){let e={};for(let t of this._accessed){let r=this._flags[t];if(r)e[t]=r}return this._cloneWith(e)}only(e){let t={},r=[];for(let i of e){let n=this._flags[i];if(n)t[i]=n;else r.push(i)}if(r.length>0)this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${r.join(", ")}`);return this._cloneWith(t)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let e={},t=[];for(let[r,i]of Object.entries(this._flags)){let n=i.enabled===!1?!1:i.variant??!0;if(e[`$feature/${r}`]=n,i.enabled)t.push(r)}if(t.length>0)t.sort(),e.$active_feature_flags=t;return e}_cloneWith(e){return new Qt({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:e,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(e){if(this._accessed.add(e),this._distinctId==="")return;if(this._isSlice&&!(e in this._flags))return;let t=this._flags[e],r=t===void 0?void 0:t.enabled===!1?!1:t.variant??!0,i={$feature_flag:e,$feature_flag_response:r,$feature_flag_id:t?.id,$feature_flag_version:t?.version,$feature_flag_reason:t?.reason,locally_evaluated:t?.locallyEvaluated??!1,[`$feature/${e}`]:r,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:t?.locallyEvaluated?Date.now():this._evaluatedAt};if(t?.hasExperiment!==void 0)i.$feature_flag_has_experiment=t.hasExperiment;if(t?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0)i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt;let n=[];if(this._errorsWhileComputing)n.push(gt.ERRORS_WHILE_COMPUTING);if(this._quotaLimited)n.push(gt.QUOTA_LIMITED);if(t===void 0)n.push(gt.FLAG_MISSING);if(n.length>0)i.$feature_flag_error=n.join(",");this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:e,response:r,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}}async function Ph(e){let t=globalThis.crypto?.subtle;if(!t)throw Error("SubtleCrypto API not available");let r=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(r)).map((n)=>n.toString(16).padStart(2,"0")).join("")}var xO=60000,RO=1152921504606847000,CO=["is_not","is_set"];class jr extends Error{constructor(e){super();Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=e,Object.setPrototypeOf(this,jr.prototype)}}function Eh(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}class q extends Error{constructor(e){super(e);Eh(this,q)}}class tt extends Error{constructor(e){super(e);Eh(this,tt)}}class Al{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:r,timeout:i,host:n,customHeaders:s,...o}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=r,this.host=n,this.poller=void 0,this.fetch=o.fetch||fetch,this.onError=o.onError,this.customHeaders=s,this.onLoad=o.onLoad,this.onMinimalFlagCalledEvents=o.onMinimalFlagCalledEvents,this.cacheProvider=o.cacheProvider,this.strictLocalEvaluation=o.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){if(this.debugMode)e()}createEvaluationContext(e,t={},r={},i={},n={}){return{distinctId:e,groups:t,personProperties:r,groupProperties:i,evaluationCache:n}}async getFeatureFlag(e,t,r={},i={},n={}){await this.loadFeatureFlags();let s,o;if(!this.loadedSuccessfullyOnce)return s;if(o=this.featureFlagsByKey[e],o!==void 0){let a=this.createEvaluationContext(t,r,i,n);try{s=(await this.computeFlagAndPayloadLocally(o,a)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${s}`))}catch(d){if(d instanceof tt||d instanceof q)this.logMsgIfDebug(()=>console.debug(`${d.name} when computing flag locally: ${e}: ${d.message}`));else if(d instanceof Error)this.onError?.(Error(`Error computing flag locally: ${e}: ${d}`))}}return s}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let r={},i={},n=this.featureFlags.length==0,s=t?t.map((a)=>this.featureFlagsByKey[a]).filter(Boolean):this.featureFlags,o={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(s.map(async(a)=>{try{let{value:d,payload:u}=await this.computeFlagAndPayloadLocally(a,o);if(r[a.key]=d,u)i[a.key]=u}catch(d){if(d instanceof tt||d instanceof q)this.logMsgIfDebug(()=>console.debug(`${d.name} when computing flag locally: ${a.key}: ${d.message}`));else if(d instanceof Error)this.onError?.(Error(`Error computing flag locally: ${a.key}: ${d}`));n=!0}})),{response:r,payloads:i,fallbackToFlags:n}}async computeFlagAndPayloadLocally(e,t,r={}){let{matchValue:i,skipLoadCheck:n=!1}=r;if(!n)await this.loadFeatureFlags();if(!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let s;s=i!==void 0?i:await this.computeFlagValueLocally(e,t);let o=this.getFeatureFlagPayload(e.key,s);return{value:s,payload:o}}async computeFlagValueLocally(e,t){let{distinctId:r,groups:i,personProperties:n,groupProperties:s}=t;if(!e.active)return!1;if(e.ensure_experience_continuity)throw new q("Flag has experience continuity enabled");let a=(e.filters||{}).aggregation_group_type_index;if(a!=null){let d=this.groupTypeMapping[String(a)];if(!d)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${a} for feature flag ${e.key}`)),new q("Flag has unknown group type index");if(!(d in i))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;if(e.bucketing_identifier==="device_id"&&(n?.$device_id===void 0||n?.$device_id===null||n?.$device_id===""))this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let u=s[d];return await this.matchFeatureFlagProperties(e,i[d],u,t)}{let d=this.getBucketingValueForFlag(e,r,n);if(d===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new q(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,d,n,t)}}getBucketingValueForFlag(e,t,r){if(e.filters?.aggregation_group_type_index!=null)return t;if(e.bucketing_identifier==="device_id"){let i=r?.$device_id;if(i==null||i==="")return;return i}return t}getFeatureFlagPayload(e,t){let r=null;if(t!==!1&&t!=null){if(typeof t=="boolean")r=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null;else if(typeof t=="string")r=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null;if(r!=null){if(typeof r=="object")return r;if(typeof r=="string")try{return JSON.parse(r)}catch{}return r}}return null}async evaluateFlagDependency(e,t,r){let{evaluationCache:i}=r,n=e.key;if(!this.featureFlagsByKey)throw new q("Feature flags not available for dependency evaluation");if(!("dependency_chain"in e))throw new q(`Flag dependency property for '${n}' is missing required 'dependency_chain' field`);let s=e.dependency_chain;if(!Array.isArray(s))throw new q(`Flag dependency property for '${n}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new q(`Circular dependency detected for flag '${n}' (empty dependency chain)`);for(let a of s){if(!(a in i)){let u=this.featureFlagsByKey[a];if(u)if(u.active)try{let l=await this.computeFlagValueLocally(u,r);i[a]=l}catch(l){throw new q(`Error evaluating flag dependency '${a}' for flag '${n}': ${l}`)}else i[a]=!1;else throw new q(`Missing flag dependency '${a}' for flag '${n}'`)}if(i[a]==null)throw new q(`Dependency '${a}' could not be evaluated`)}let o=i[n];return this.flagEvaluatesToExpectedValue(e.value,o)}flagEvaluatesToExpectedValue(e,t){if(typeof e=="boolean")return e===t||typeof t=="string"&&t!==""&&e===!0;if(typeof e=="string")return t===e;return!1}async matchFeatureFlagProperties(e,t,r,i){let n=e.filters||{},s=n.groups||[],o=n.aggregation_group_type_index,a=n.early_exit??!1,{groups:d,groupProperties:u}=i,l=!1,c;for(let p of s)try{let f=p.aggregation_group_type_index!==void 0?p.aggregation_group_type_index:o,m=r,h=t;if(f!==o){if(f!=null){let _=this.groupTypeMapping[String(f)];if(!_||!(_ in d)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${e.key}': group type index ${f} not available`));continue}if(!(_ in u)){l=!0;continue}m=u[_],h=d[_]}}let g=await this.isConditionMatch(e,h,p,m,i);if(g==="match"){let _=p.variant,b=n.multivariate?.variants||[];c=_&&b.some((v)=>v.key===_)?_:await this.getMatchingVariant(e,h)||!0;break}if(a&&g==="out_of_rollout_bound")return!1}catch(f){if(f instanceof tt)throw f;if(f instanceof q)l=!0;else throw f}if(c!==void 0)return c;if(l)throw new q("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(e,t,r,i,n){let s=r.rollout_percentage,o=(a)=>{this.logMsgIfDebug(()=>console.warn(a))};if((r.properties||[]).length>0){for(let a of r.properties){let d=a.type,u=!1;if(d==="cohort"){let l=await Sh(a,i,this.cohorts,this.debugMode,(c)=>this.evaluateFlagDependency(c,i,n));u=a.operator==="not_in"?!l:l}else u=d==="flag"?await this.evaluateFlagDependency(a,i,n):Ih(a,i,o);if(!u)return"no_match"}if(s==null)return"match"}if(s!=null&&await vh(e.key,t)>s/100)return"out_of_rollout_bound";return"match"}async getMatchingVariant(e,t){let r=await vh(e.key,t,"variant"),i=this.variantLookupTable(e).find((n)=>r>=n.valueMin&&r<n.valueMax);if(i)return i.key}variantLookupTable(e){let t=[],r=0,i=0;return((e.filters||{}).multivariate?.variants||[]).forEach((o)=>{i=r+o.rollout_percentage/100,t.push({valueMin:r,valueMax:i,key:o.key}),r=i}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((t,r)=>(t[r.key]=r,t),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0,this.onMinimalFlagCalledEvents?.(e.minimalFlagCalledEvents===!0)}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter((r)=>r.ensure_experience_continuity);if(t.length>0)console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map((r)=>r.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();if(t)return this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0;return!1}catch(t){return this.onError?.(Error(`Failed to load from cache: ${t}`)),!1}}async loadFeatureFlags(e=!1){if(this.loadedSuccessfullyOnce&&!e)return;if(!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt)return void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period"));if(!this.loadingPromise)this.loadingPromise=this._loadFeatureFlags().catch((t)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${t}`))).finally(()=>{this.loadingPromise=void 0});return this.loadingPromise}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){if(!this.shouldBeginExponentialBackoff)return this.pollingInterval;return Math.min(xO,this.pollingInterval*2**this.backOffCount)}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){if(this.poller)clearTimeout(this.poller),this.poller=void 0;this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(r){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${r}`))}if(!e){if(await this.loadFromCache("Loaded flags from cache (skipped fetch)"))return;if(this.loadedSuccessfullyOnce)return}let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=t.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new jr(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.onMinimalFlagCalledEvents?.(!1);return;case 403:throw this.beginBackoff(),new jr(`Your secret key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new jr(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let r=await t.json()??{};if(!("flags"in r))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(r)}`));this.flagsEtag=t.headers?.get("ETag")??void 0;let i={flags:r.flags??[],groupTypeMapping:r.group_type_mapping||{},cohorts:r.cohorts||{},minimalFlagCalledEvents:r.minimal_flag_called_events===!0};if(this.updateFlagState(i),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(i)}catch(n){this.onError?.(Error(`Failed to store in cache: ${n}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(i.flags);break}default:return}}catch(e){if(e instanceof jr)this.onError?.(e)}}getPersonalApiKeyRequestOptions(e="GET",t){let r={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};if(t)r["If-None-Match"]=t;return{method:e,headers:r}}_requestFeatureFlagDefinitions(){let e=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),r=null;if(this.timeout&&typeof this.timeout=="number"){let i=new AbortController;r=ue(()=>{i.abort()},this.timeout),t.signal=i.signal}try{let i=this.fetch;return i(e,t)}finally{clearTimeout(r)}}async stopPoller(e=30000){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();if(t instanceof Promise)await Promise.race([t,new Promise((r,i)=>setTimeout(()=>i(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(t){this.onError?.(Error(`Error during cache shutdown: ${t}`))}}}async function vh(e,t,r=""){let i=await Ph(`${e}.${t}${r}`);return parseInt(i.slice(0,15),16)/RO}function Ih(e,t,r){let{key:i,value:n}=e,s=e.operator||"exact";if(i in t){if(s==="is_not_set")return!1}else{if(s==="is_not_set")return!0;throw new q(`Property ${i} not found in propertyValues`)}let o=t[i];if(o==null&&!CO.includes(s)){if(r)r(`Property ${i} cannot have a value of null/undefined with the ${s} operator`);return!1}function a(u,l){if(Array.isArray(u))return u.map((c)=>String(c).toLowerCase()).includes(String(l).toLowerCase());return String(u).toLowerCase()===String(l).toLowerCase()}function d(u,l,c){if(c==="gt")return u>l;if(c==="gte")return u>=l;if(c==="lt")return u<l;if(c==="lte")return u<=l;throw Error(`Invalid operator: ${c}`)}switch(s){case"exact":return a(n,o);case"is_not":return!a(n,o);case"is_set":return i in t;case"icontains":return String(o).toLowerCase().includes(String(n).toLowerCase());case"not_icontains":return!String(o).toLowerCase().includes(String(n).toLowerCase());case"regex":return wh(String(n))&&String(o).match(String(n))!==null;case"not_regex":return wh(String(n))&&String(o).match(String(n))===null;case"gt":case"gte":case"lt":case"lte":{let u=typeof n=="number"?n:parseFloat(String(n)),l;if(l=typeof o=="number"?o:o!=null?parseFloat(String(o)):NaN,Number.isFinite(u)&&Number.isFinite(l))return d(l,u,s);return d(String(o),String(n),s)}case"is_date_after":case"is_date_before":{if(typeof n=="boolean")throw new q("Date operations cannot be performed on boolean values");let u=kO(String(n));if(u==null)u=$h(n);if(u==null)throw new q(`Invalid date: ${n}`);let l=$h(o);if(["is_date_before"].includes(s))return l<u;return l>u}case"semver_eq":return ke(oe(String(o)),oe(String(n)))===0;case"semver_neq":return ke(oe(String(o)),oe(String(n)))!==0;case"semver_gt":return ke(oe(String(o)),oe(String(n)))>0;case"semver_gte":return ke(oe(String(o)),oe(String(n)))>=0;case"semver_lt":return ke(oe(String(o)),oe(String(n)))<0;case"semver_lte":return ke(oe(String(o)),oe(String(n)))<=0;case"semver_tilde":{let u=oe(String(o)),{lower:l,upper:c}=jO(String(n));return ke(u,l)>=0&&ke(u,c)<0}case"semver_caret":{let u=oe(String(o)),{lower:l,upper:c}=FO(String(n));return ke(u,l)>=0&&ke(u,c)<0}case"semver_wildcard":{let u=oe(String(o)),{lower:l,upper:c}=TO(String(n));return ke(u,l)>=0&&ke(u,c)<0}default:throw new q(`Unknown operator: ${s}`)}}function OO(e,t){if(!(e in t))throw new tt(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function Sh(e,t,r,i=!1,n){let s=String(e.value);OO(s,r);let o=r[s];return xh(o,t,r,i,n)}async function xh(e,t,r,i=!1,n){if(!e)return!0;let{type:s,values:o}=e;if(!o||o.length===0)return!0;let a=!1;if("values"in o[0]){for(let d of o)try{let u=await xh(d,t,r,i,n);if(s==="AND"){if(!u)return!1}else if(u)return!0}catch(u){if(u instanceof tt)throw u;if(u instanceof q){if(i)console.debug(`Failed to compute property ${d} locally: ${u}`);a=!0}else throw u}if(a)throw new q("Can't match cohort without a given cohort property value");return s==="AND"}for(let d of o)try{let u;if(d.type==="cohort")u=await Sh(d,t,r,i,n);else if(d.type==="flag"){if(!n)throw new q(`Flag dependency '${d.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);u=await n(d)}else u=Ih(d,t);let l=d.negation||!1;if(s==="AND"){if(!u&&!l)return!1;if(u&&l)return!1}else{if(u&&!l)return!0;if(!u&&l)return!0}}catch(u){if(u instanceof tt)throw u;if(u instanceof q){if(i)console.debug(`Failed to compute property ${d} locally: ${u}`);a=!0}else throw u}if(a)throw new q("can't match cohort without a given cohort property value");return s==="AND"}function wh(e){try{return new RegExp(e),!0}catch(t){return!1}}function Rh(e,t){if(!/^\d+$/.test(e))throw new q(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new q(`Invalid semver: ${t}`);return parseInt(e,10)}function oe(e){let r=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!r||r.startsWith("."))throw new q(`Invalid semver: ${e}`);let i=r.split("."),n=(d)=>{if(d===void 0||d==="")return 0;return Rh(d,e)},s=n(i[0]),o=n(i[1]),a=n(i[2]);return[s,o,a]}function ke(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function jO(e){let t=oe(e),r=[t[0],t[1],t[2]],i=[t[0],t[1]+1,0];return{lower:r,upper:i}}function FO(e){let t=oe(e),[r,i,n]=t,s=[r,i,n],o;return o=r>0?[r+1,0,0]:i>0?[0,i+1,0]:[0,0,n+1],{lower:s,upper:o}}function TO(e){let r=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!r)throw new q(`Invalid wildcard semver: ${e}`);let i=r.split("."),n=(d)=>{try{return Rh(d,e)}catch{throw new q(`Invalid wildcard semver: ${e}`)}},s=n(i[0]),o,a;if(i.length===1)o=[s,0,0],a=[s+1,0,0];else{let d=n(i[1]);o=[s,d,0],a=[s,d+1,0]}return{lower:o,upper:a}}function $h(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new q(`${e} is in an invalid date format`)}throw new q(`The date provided ${e} must be a string, number, or date object`)}function kO(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),i=new Date(new Date().toISOString());if(!r)return null;{if(!r.groups)return null;let n=parseInt(r.groups.number);if(n>=1e4)return null;let s=r.groups.interval;if(s=="h")i.setUTCHours(i.getUTCHours()-n);else if(s=="d")i.setUTCDate(i.getUTCDate()-n);else if(s=="w")i.setUTCDate(i.getUTCDate()-7*n);else if(s=="m")i.setUTCMonth(i.getUTCMonth()-n);else{if(s!="y")return null;i.setUTCFullYear(i.getUTCFullYear()-n)}return i}}function AO(e,t){let r=!1;return Object.assign((i)=>{let s=global.process.listeners("uncaughtException").filter((o)=>o.name!=="domainUncaughtExceptionClear"&&o._posthogErrorHandler!==!0).length===0;if(e(i,{mechanism:{type:"onuncaughtexception",handled:!1}}),!r&&s)r=!0,t(i)},{_posthogErrorHandler:!0})}function Ch(e,t){globalThis.process?.on("uncaughtException",AO(e,t))}function Oh(e){globalThis.process?.on("unhandledRejection",(t)=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var DO=2000;class rt{constructor(e,t,r){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=r,this._rateLimiter=new ml({...Pm(t),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return Fi(e)&&"__posthog_previously_captured_error"in e&&e.__posthog_previously_captured_error===!0}static async buildEventMessage(e,t,r,i,n){let s={...n},o=e.buildFromUnknown(t,r);return o.$exception_list=await e.modifyFrames(o.$exception_list),{event:"$exception",distinctId:i,properties:{...o,...s},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled())Ch(this.onException.bind(this),this.onFatalError.bind(this)),Oh(this.onException.bind(this))}onException(e,t){this.client.addPendingPromise((async()=>{if(!rt.isPreviouslyCapturedError(e)){let r=await rt.buildEventMessage(this.client.getErrorPropertiesBuilder(),e,t),n=r.properties?.$exception_list[0]?.type??"Exception";if(this._rateLimiter.consumeRateLimit(n))return void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:n});return this.client._capturePreparedEvent(r,!1)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(DO),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}class Dl{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=t!==null?t:void 0}constructor(){this._memoryStorage={}}}function NO(e){return e==="v0"||e==="v1"}function jh(){let e=typeof process<"u"?process.env?.POSTHOG_CAPTURE_MODE:void 0;return NO(e)?e:"v0"}var Mi="analytics",Ui="ai";function Fh(e){return typeof e.event=="string"&&e.event.startsWith("$ai_")}class Fr extends Error{constructor({requestId:e,drops:t,retryExhausted:r,cause:i}){super(Fr.buildMessage(e,t,r,i)),this.name="CaptureV1Error",this.requestId=e,this.drops=t,this.retryExhausted=r,this.cause=i}static buildMessage(e,t,r,i){let n=`Capture V1 batch ${e} did not fully deliver: ${t.length} dropped, ${r.length} undelivered`;if(i instanceof Error)n+=` (${i.message})`;return n}}function Nl(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.trim().toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function LO(e){return typeof e=="string"?e:void 0}var qO=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:Nl},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:Nl},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:Nl},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:LO}],MO=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function UO(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function BO(e){if(typeof e=="string"){let r=new Date(e);return Number.isNaN(r.getTime())?new Date().toISOString():e}if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=e==null?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}function Th(e,t,r){if(r!==void 0&&!(t in e))e[t]=r}function GO(e){let r={...UO(e.properties)?e.properties:{}},i={};for(let{property:s,optionKey:o,coerce:a}of qO)if(s in r){let d=a(r[s]);if(d!==void 0)i[o]=d;delete r[s]}let n={};for(let{property:s,field:o}of MO)if(s in r){let a=r[s];if(typeof a=="string")n[o]=a;delete r[s]}return delete r.$lib,delete r.$lib_version,Th(r,"$set",e.$set),Th(r,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:BO(e.timestamp),...n,options:i,properties:r}}function kh(e,{createdAt:t,historicalMigration:r}){let i={created_at:t,batch:e.map(GO)};if(r)i.historical_migration=!0;return i}var VO="/i/v1/analytics/events",KO=30000,zO=new Set([408,500,502,503,504]);class Ll{constructor(e,t){this.config=e,this.maxBackoffMs=e.maxBackoffMs??KO,this.fetchFn=t.fetch,this.onError=t.onError,this.now=t.now??Date.now,this.sleep=t.sleep??((r)=>new Promise((i)=>ue(i,r))),this.generateRequestId=t.generateRequestId??xe,this.compress=t.compress??Kt}async sendV1Batch(e){if(e.length===0)return;let t=this.generateRequestId(),r=new Date(this.now()).toISOString(),{batch:i}=kh(e,{createdAt:r,historicalMigration:this.config.historicalMigration}),n=`${this.config.host}${VO}`,s=[],o=i,a=Math.max(1,this.config.maxAttempts);for(let d=1;d<=a;d++){let u=d===a,l=Ir({created_at:r,...this.config.historicalMigration?{historical_migration:!0}:{},batch:o}),c;try{c=await this.sendOnce(n,l,d,t)}catch(g){if(u)return this.surfaceBatchFailure(t,s,o,g);await this.sleep(this.backoffDelay(d));continue}let{status:p}=c;if(p<200||p>=300){if(!u&&zO.has(p)){let _=this.parseRetryAfter(c);await this.cancelBody(c),await this.sleep(this.backoffDelay(d,_));continue}let g=await this.buildHttpError(c,p);return this.surfaceBatchFailure(t,s,o,g)}let f;try{f=await this.parseResponse(c)}catch{return this.surfaceBatchFailure(t,s,o,Error(`Capture V1 returned an unparseable ${p} response body`))}let m=this.classify(o,f,s);if(m.length===0)return this.surfacePartialDrops(t,s);if(u)return void this.onError(new Fr({requestId:t,drops:s,retryExhausted:m.map((g)=>g.uuid)}));o=m;let h=this.parseRetryAfter(c);await this.sleep(this.backoffDelay(d,h))}}async sendOnce(e,t,r,i){let n=this.buildHeaders(r,i),s=t;if(this.config.compressionEnabled){let d=await this.compress(t,this.config.isDebug);if(d!==null)s=d,n["Content-Encoding"]="gzip"}let o=new AbortController,a=ue(()=>o.abort(),this.config.requestTimeoutMs);try{return await this.fetchFn(e,{method:"POST",headers:n,body:s,signal:o.signal})}finally{clearTimeout(a)}}buildHeaders(e,t){let r=`${this.config.libraryId}/${this.config.libraryVersion}`,i={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":r,"PostHog-Attempt":String(e),"PostHog-Request-Id":t,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};if(this.config.userAgent)i["User-Agent"]=this.config.userAgent;return i}classify(e,t,r){let i=t.results??{},n=[];for(let s of e){let o=i[s.uuid];if(o){if(o.result==="drop")r.push({uuid:s.uuid,details:o.details??void 0});else if(o.result==="retry")n.push(s)}}return n}backoffDelay(e,t){let r=Math.min(this.config.initialRetryDelayMs*2**(e-1),this.maxBackoffMs);if(t===void 0)return r;return Math.max(r,Math.min(t,this.maxBackoffMs))}parseRetryAfter(e){let t=e.headers?.get("Retry-After");if(!t)return;let r=t.trim();if(/^\d+$/.test(r)){let s=parseInt(r,10);return Number.isFinite(s)&&s>0?1000*s:void 0}let i=Date.parse(r);if(Number.isNaN(i))return;let n=i-this.now();return n>0?n:void 0}async parseResponse(e){let t=await e.text(),r=JSON.parse(t);if(typeof r!="object"||r===null||Array.isArray(r))throw Error("unexpected response shape");let i=r.results;if(i!==void 0&&(typeof i!="object"||i===null||Array.isArray(i)))throw Error("unexpected results shape");return{results:i??{}}}async buildHttpError(e,t){let r="";try{r=(await e.text()).slice(0,512)}catch{}let i=r?`: ${r}`:"";return Error(`Capture V1 request failed with HTTP ${t}${i}`)}surfaceBatchFailure(e,t,r,i){this.onError(new Fr({requestId:e,drops:t,retryExhausted:r.map((n)=>n.uuid),cause:i}))}surfacePartialDrops(e,t){if(t.length>0)this.onError(new Fr({requestId:e,drops:t,retryExhausted:[]}))}async cancelBody(e){await e.body?.cancel()?.catch(()=>{})}}var WO=100,Ah=30000,HO=50000,JO=50,QO=500,YO="https://us.i.posthog.com",Dh=new Set;function vs(e,t){if(Dh.has(e))return;Dh.add(e),console.warn(`[PostHog] ${t}`)}function XO(e){return typeof e=="string"?e.trim():""}function ZO(e){return(typeof e=="string"?e.trim():"")||void 0}function ej(e){return(typeof e=="string"?e.trim():"")||YO}function tj(e){return(Array.isArray(e)?e:[e]).filter((r)=>typeof r=="string"&&r.trim().length>0)}function rj(e){if(!e)return{};let t={};for(let[i,n]of Object.entries(e))t[`$feature/${i}`]=n;let r=Object.keys(e).filter((i)=>e[i]!==!1).sort();if(r.length>0)t.$active_feature_flags=r;return t}class ql extends bs{constructor(e,t={}){let r=XO(e),i={...t,maxQueueSize:t.maxQueueSize??1e4,flushInterval:t.flushInterval??5000,host:ej(t.host),personalApiKey:ZO(t.secretKey??t.personalApiKey)};if(super(r,i),this._memoryStorage=new Dl,this._minimalFlagCalledEvents=!1,this.options=i,this.captureMode=jh(),this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,WO):Ah,typeof i.waitUntilDebounceMs=="number")this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0);if(typeof i.waitUntilMaxWaitMs=="number")this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0);if(!this.disabled&&i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');if(i.enableLocalEvaluation!==!1)this.featureFlagsPoller=new Al({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:r,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:(s)=>{this._events.emit("error",s)},onLoad:(s)=>{this._events.emit("localEvaluationFlagsLoaded",s)},onMinimalFlagCalledEvents:(s)=>{this._minimalFlagCalledEvents=s},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation})}this.errorTracking=new rt(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||HO}enqueue(e,t,r){super.enqueue(e,t,r),this.scheduleDebouncedFlush()}async flush(){let e=this.flushWithPendingPromises(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e)return;if(this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let s,o=new Promise((a)=>{s=a});try{e(o)}catch{return}this._waitUntilCycle={resolve:s,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt,r=this.options.waitUntilMaxWaitMs??QO,i=t>=r;if(this._waitUntilCycle.timer!==void 0)clearTimeout(this._waitUntilCycle.timer);if(i)return void this.resolveWaitUntilFlush();let n=this.options.waitUntilDebounceMs??JO;this._waitUntilCycle.timer=ue(()=>{this.resolveWaitUntilFlush()},n)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;if(e)clearTimeout(e.timer),this._waitUntilCycle=void 0;return e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await this.flushWithPendingPromises()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getQueueRouteKey(e){return this.captureMode==="v1"&&Fh(e)?Ui:Mi}persistedQueueKeyForRoute(e){return e===Ui?Se.AiQueue:Se.Queue}getActiveQueueRoutes(){return this.captureMode==="v1"?[Mi,Ui]:[Mi]}async sendBatch(e,t,r=Mi){if(this.captureMode!=="v1"||r===Ui)return super.sendBatch(e,t,r);let i=e.filter((n)=>n!==void 0);await this.getV1Sender().sendV1Batch(i)}getV1Sender(){if(!this._v1Sender)this._v1Sender=new Ll({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3000,isDebug:this.isDebug},{fetch:(e,t)=>this.fetch(e,t),onError:(e)=>this._events.emit("error",e)});return this._v1Sender}getLibraryVersion(){return bh}get metrics(){if(!this._metrics)this._metrics=new ls(this,as(this.options.metrics),this._logger);return this._metrics}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getCommonEventProperties(){let e=super.getCommonEventProperties();if(this.options.isServer??!0)e.$is_server=!0;return e}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}_warnIfInvalidCapture(e,t,r){if(typeof e=="string")this._logger.warn(t);if(e.event==="$exception"&&!e._originatedFromCaptureException)this._logger.warn(r)}_sendPreparedEvent(e,t,r,i){return this.addPendingPromise(this._prepareEventMessage(t,i).then(({distinctId:n,event:s,properties:o,options:a})=>{let d={timestamp:a.timestamp,disableGeoip:a.disableGeoip,uuid:a.uuid},u={distinctId:n,event:s,properties:{...o,...this.getCommonEventProperties()}};return r?this.sendImmediate(e,u,d):this.enqueue(e,u,d)}).catch((n)=>{if(n)console.error(n)}))}_capturePreparedEvent(e,t){return this._sendPreparedEvent("capture",e,t)}capture(e){this._warnIfInvalidCapture(e,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(e,!1)}async captureImmediate(e){return this._warnIfInvalidCapture(e,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(e,!0)}identify({distinctId:e,properties:t={},disableGeoip:r}){let{$set:i,$set_once:n,$anon_distinct_id:s,...o}=t,u={$set:i||o,$set_once:n||{},$anon_distinct_id:s??void 0};this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:u,disableGeoip:r},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:r}){let{$set:i,$set_once:n,$anon_distinct_id:s,...o}=t,u={$set:i||o,$set_once:n||{},$anon_distinct_id:s??void 0};await this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:u,disableGeoip:r},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:e,properties:t={},propertiesOnce:r={}}){if(Object.keys(t).length===0&&Object.keys(r).length===0)return;let i={};if(Object.keys(t).length>0)i.$set=t;if(Object.keys(r).length>0)i.$set_once=r;this.capture({distinctId:e,event:"$set",properties:i})}unsetPersonProperties({distinctId:e,properties:t}){let r=tj(t);if(r.length===0)return;this.capture({distinctId:e,event:"$set",properties:{$unset:r}})}alias(e){this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(e){await this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=Ah){if(this.isLocalEvaluationReady())return!0;if(this.featureFlagsPoller===void 0)return!1;return new Promise((t)=>{let r=setTimeout(()=>{i(),t(!1)},e),i=this._events.on("localEvaluationFlagsLoaded",(n)=>{clearTimeout(r),i(),t(n>0)})})}_resolveDistinctId(e,t){if(typeof e=="string")return{distinctId:e,options:t};return{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,r={},i){if(this.disabled)return void this._logger.warn("The client is disabled");let n=r.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&e in this._flagOverrides){let E=this._flagOverrides[e];if(E===void 0)return;let x=this._payloadOverrides?.[e];return{key:e,enabled:E!==!1,variant:typeof E=="string"?E:void 0,payload:x}}let{groups:s,disableGeoip:o}=r,{onlyEvaluateLocally:a,personProperties:d,groupProperties:u}=r,l=this.addLocalPersonAndGroupProperties(t,s,d,u);d=l.allPersonProperties,u=l.allGroupProperties;let c=this.createFeatureFlagEvaluationContext(t,s,this.personPropertiesForLocalEvaluation(t,d),u);if(a==null)a=this.options.strictLocalEvaluation??!1;let p,f=!1,m,h,g,_,b,v,w;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let E=this.featureFlagsPoller?.featureFlagsByKey[e];if(E)try{let x=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(E,c,{matchValue:i});if(x){f=!0;let T=x.value;_=E.id,v="Evaluated locally",w=E.has_experiment,p={key:e,enabled:T!==!1,variant:typeof T=="string"?T:void 0,payload:x.payload??void 0}}}catch(x){if(x instanceof tt||x instanceof q)this._logger?.info(`${x.name} when computing flag locally: ${e}: ${x.message}`);else throw x}}if(!f&&!a){let E=await super.getFeatureFlagDetailsStateless(c.distinctId,c.groups,d,u,o,[e]);if(E===void 0)g=gt.UNKNOWN_ERROR;else{this._minimalFlagCalledEvents=E.minimalFlagCalledEvents===!0,m=E.requestId,h=E.evaluatedAt;let x=[];if(E.errorsWhileComputingFlags)x.push(gt.ERRORS_WHILE_COMPUTING);if(E.quotaLimited?.includes("feature_flags"))x.push(gt.QUOTA_LIMITED);let T=E.flags[e];if(T===void 0)x.push(gt.FLAG_MISSING);else{_=T.metadata?.id,b=T.metadata?.version,v=T.reason?.description??T.reason?.code,w=T.metadata?.has_experiment;let R;if(T.metadata?.payload!==void 0)try{R=JSON.parse(T.metadata.payload)}catch{R=T.metadata.payload}p={key:e,enabled:T.enabled,variant:T.variant,payload:R}}if(x.length>0)g=x.join(",")}}if(n){let E=p===void 0?void 0:p.enabled===!1?!1:p.variant??!0,x={$feature_flag:e,$feature_flag_response:E,$feature_flag_id:_,$feature_flag_version:b,$feature_flag_reason:v,locally_evaluated:f,[`$feature/${e}`]:E,$feature_flag_request_id:m,$feature_flag_evaluated_at:f?Date.now():h};if(w!==void 0)x.$feature_flag_has_experiment=w;if(f&&this.featureFlagsPoller){let T=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();if(T!==void 0)x.$feature_flag_definitions_loaded_at=T}if(g)x.$feature_flag_error=g;this._captureFlagCalledEventIfNeeded({distinctId:t,key:e,response:E,groups:s,disableGeoip:o,properties:x})}if(p!==void 0&&this._payloadOverrides!==void 0&&e in this._payloadOverrides)p={...p,payload:this._payloadOverrides[e]};return p}async getFeatureFlag(e,t,r){vs("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:r?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i===void 0)return;if(i.enabled===!1)return!1;return i.variant??!0}async getFeatureFlagPayload(e,t,r,i){if(vs("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&e in this._payloadOverrides)return this._payloadOverrides[e];let n=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:!1},r);if(n===void 0)return;return n.payload??null}async getFeatureFlagResult(e,t,r){let{distinctId:i,options:n}=this._resolveDistinctId(t,r);if(!i)return void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()");return this._getFeatureFlagResult(e,i,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0})}async getRemoteConfigPayload(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let t=await this._requestRemoteConfigPayload(e);if(!t)return;let r=await t.json();if(typeof r=="string")try{return JSON.parse(r)}catch(i){}return r}async isFeatureEnabled(e,t,r){vs("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:r?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i===void 0)return;if(i.enabled===!1)return!1;return!!(i.variant??!0)||!1}async getAllFlags(e,t){let{distinctId:r,options:i}=this._resolveDistinctId(e,t);if(!r)return this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{};return(await this.getAllFlagsAndPayloads(r,i)).featureFlags||{}}async getAllFlagsAndPayloads(e,t){let{distinctId:r,options:i}=this._resolveDistinctId(e,t);if(!r)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:n,disableGeoip:s,flagKeys:o}=i||{},{onlyEvaluateLocally:a,personProperties:d,groupProperties:u}=i||{},l=this.addLocalPersonAndGroupProperties(r,n,d,u);d=l.allPersonProperties,u=l.allGroupProperties;let c=this.createFeatureFlagEvaluationContext(r,n,this.personPropertiesForLocalEvaluation(r,d),u);if(a==null)a=this.options.strictLocalEvaluation??!1;let p=await this.featureFlagsPoller?.getAllFlagsAndPayloads(c,o),f={},m={},h=!0;if(p)f=p.response,m=p.payloads,h=p.fallbackToFlags;if(h&&!a){let g=await super.getFeatureFlagsAndPayloadsStateless(c.distinctId,c.groups,d,u,s,o);f={...f,...g.flags||{}},m={...m,...g.payloads||{}}}if(this._flagOverrides!==void 0)f={...f,...this._flagOverrides};if(this._payloadOverrides!==void 0)m={...m,...this._payloadOverrides};return{featureFlags:f,featureFlagPayloads:m}}async evaluateFlags(e,t){let{distinctId:r,options:i}=this._resolveDistinctId(e,t);if(!r)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new Qt({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new Qt({host:this._getFeatureFlagEvaluationsHost(),distinctId:r,flags:{}});let{groups:n,disableGeoip:s,flagKeys:o}=i||{},{onlyEvaluateLocally:a,personProperties:d,groupProperties:u}=i||{},l=this.addLocalPersonAndGroupProperties(r,n,d,u);d=l.allPersonProperties,u=l.allGroupProperties;let c=this.createFeatureFlagEvaluationContext(r,n,this.personPropertiesForLocalEvaluation(r,d),u);if(a==null)a=this.options.strictLocalEvaluation??!1;let p={},f,m,h=!1,g=!1,_=await this.featureFlagsPoller?.getAllFlagsAndPayloads(c,o),b=new Set;if(_)for(let[w,I]of Object.entries(_.response)){let E=this.featureFlagsPoller?.featureFlagsByKey[w];p[w]={key:w,enabled:I!==!1,variant:typeof I=="string"?I:void 0,payload:_.payloads[w],id:E?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0,hasExperiment:E?.has_experiment},b.add(w)}if((_?_.fallbackToFlags:!0)&&!a){let w=await super.getFeatureFlagDetailsStateless(c.distinctId,c.groups,d,u,s,o);if(w){this._minimalFlagCalledEvents=w.minimalFlagCalledEvents===!0,f=w.requestId,m=w.evaluatedAt,h=Boolean(w.errorsWhileComputingFlags),g=Array.isArray(w.quotaLimited)&&w.quotaLimited.includes("feature_flags");for(let[I,E]of Object.entries(w.flags)){if(b.has(I))continue;let x;if(E.metadata?.payload!==void 0)try{x=JSON.parse(E.metadata.payload)}catch{x=E.metadata.payload}p[I]={key:I,enabled:E.enabled,variant:E.variant,payload:x,id:E.metadata?.id,version:E.metadata?.version,reason:E.reason?.description??E.reason?.code,locallyEvaluated:!1,hasExperiment:E.metadata?.has_experiment}}}}if(this._flagOverrides!==void 0)for(let[w,I]of Object.entries(this._flagOverrides)){if(I===void 0){delete p[w];continue}let E=p[w];p[w]={key:w,enabled:I!==!1,variant:typeof I=="string"?I:void 0,payload:E?.payload,id:E?.id,version:E?.version,reason:E?.reason,locallyEvaluated:E?.locallyEvaluated??!1,hasExperiment:E?.hasExperiment}}if(this._payloadOverrides!==void 0)for(let[w,I]of Object.entries(this._payloadOverrides)){let E=p[w];if(E)p[w]={...E,payload:I}}return new Qt({host:this._getFeatureFlagEvaluationsHost(),distinctId:r,groups:n,disableGeoip:s,flags:p,requestId:f,evaluatedAt:m,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:h,quotaLimited:g})}_shouldSendMinimalFlagCalledEvent(e,t){return e==="$feature_flag_called"&&this._minimalFlagCalledEvents&&t.$feature_flag_has_experiment===!1}_captureFlagCalledEventIfNeeded(e){let{distinctId:t,key:r,response:i,groups:n,disableGeoip:s,properties:o}=e,a=n&&Object.keys(n).length>0?`_${JSON.stringify(Object.entries(n).sort(([u],[l])=>u<l?-1:u>l?1:0))}`:"",d=`${r}_${i}${a}`;if(t in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[t].has(d))return;if(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize)this.distinctIdHasSentFlagCalls={};if(this.distinctIdHasSentFlagCalls[t]instanceof Set)this.distinctIdHasSentFlagCalls[t].add(d);else this.distinctIdHasSentFlagCalls[t]=new Set([d]);this.capture({distinctId:t,event:"$feature_flag_called",properties:o,groups:n,disableGeoip:s})}_getFeatureFlagEvaluationsHost(){if(!this._featureFlagEvaluationsHost)this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:(e)=>this._captureFlagCalledEventIfNeeded(e),logWarning:(e)=>{if(this.options.featureFlagsLogWarnings!==!1)console.warn(`[PostHog] ${e}`)}};return this._featureFlagEvaluationsHost}groupIdentify({groupType:e,groupKey:t,properties:r,distinctId:i,disableGeoip:n}){this._sendPreparedEvent("capture",{distinctId:i||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{}},disableGeoip:n},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:e,groupKey:t,properties:r,distinctId:i,disableGeoip:n}){await this._sendPreparedEvent("capture",{distinctId:i||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:r||{}},disableGeoip:n},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=(r)=>Object.fromEntries(r.map((i)=>[i,!0]));if(e===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){if("flags"in e){if(e.flags===!1)this._flagOverrides=void 0;else if(Array.isArray(e.flags))this._flagOverrides=t(e.flags);else if(e.flags!==void 0)this._flagOverrides={...e.flags}}if("payloads"in e){if(e.payloads===!1)this._payloadOverrides=void 0;else if(e.payloads!==void 0)this._payloadOverrides={...e.payloads}}return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e;if("flags"in t){let r=t.flags;if(r===!1||Array.isArray(r)||typeof r=="object"&&r!==null)return!0}if("payloads"in t){let r=t.payloads;if(r===!1||typeof r=="object"&&r!==null)return!0}return!1}withContext(e,t,r){if(!this.context)return t();return this.context.run(e,t,r)}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=Date.now()+(e??30000),r=this._consumeWaitUntilCycle();if(await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown(),this._metrics)await Promise.race([this._metrics.flush().catch(()=>{}),new Promise((i)=>ue(i,Math.max(0,t-Date.now())))]),this._metrics.reset();try{return await super._shutdown(Math.max(0,t-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},r?.()}}async _requestRemoteConfigPayload(e){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let n=new AbortController;i=ue(()=>{n.abort()},this.options.requestTimeout),r.signal=n.signal}try{return await this.fetch(t,r)}catch(n){this._events.emit("error",n);return}finally{if(i)clearTimeout(i)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let r={},i={};for(let[n,s]of Object.entries(e))if(bm(s)&&t&&n in t){let o={};for(let[a,d]of Object.entries(s))o[String(a)]=String(d);i[String(n)]=o}else r[String(n)]=String(s);return{personProperties:r,groupProperties:i}}async getFeatureFlagsForEvent(e,t,r,i){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let n=i?.personProperties||{},s=i?.groupProperties||{},o=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let d={};for(let[u,l]of Object.entries(t||{}))d[u]=String(l);return await this.getAllFlags(e,{groups:d,personProperties:n,groupProperties:s,disableGeoip:r,onlyEvaluateLocally:!0,flagKeys:o})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let d={};for(let[u,l]of Object.entries(t||{}))d[u]=String(l);return await this.getAllFlags(e,{groups:d,personProperties:n,groupProperties:s,disableGeoip:r,onlyEvaluateLocally:!0,flagKeys:o})}return(await super.getFeatureFlagsStateless(e,t,n,s,r)).flags}addLocalPersonAndGroupProperties(e,t,r,i){let n={...r||{}},s={};if(t)for(let o of Object.keys(t))s[o]={$group_key:t[o],...i?.[o]||{}};return{allPersonProperties:n,allGroupProperties:s}}personPropertiesForLocalEvaluation(e,t){return{distinct_id:e,...t||{}}}createFeatureFlagEvaluationContext(e,t,r,i){return{distinctId:e,groups:t||{},personProperties:r||{},groupProperties:i||{},evaluationCache:{}}}captureException(e,t,r,i,n){if(!rt.isPreviouslyCapturedError(e)){let s=Error("PostHog syntheticException");this.addPendingPromise(rt.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:s},t,r).then((o)=>this._capturePreparedEvent({...o,uuid:i,flags:n},!1)))}}async captureExceptionImmediate(e,t,r,i){if(!rt.isPreviouslyCapturedError(e)){let n=Error("PostHog syntheticException");return this.addPendingPromise(rt.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:n},t,r).then((s)=>this.captureImmediate({...s,flags:i})))}}async prepareEventMessage(e){return this._prepareEventMessage(e)}async _prepareEventMessage(e,t={}){let{distinctId:r,event:i,properties:n,groups:s,flags:o,sendFeatureFlags:a,timestamp:d,disableGeoip:u,uuid:l}=e,c=this.context?.get(),p=t.includeContextProperties??!0,f=r||c?.distinctId,m=p?{...this.props,...c?.properties||{},...n||{}}:{...n||{}};if(!f)f=xe(),m.$process_person_profile=!1;if(p&&c?.sessionId&&!m.$session_id)m.$session_id=c.sessionId;let h=this._shouldSendMinimalFlagCalledEvent(i,m)?Oi(m):m,g=this._runBeforeSend({distinctId:f,event:i,properties:h,groups:s,flags:o,sendFeatureFlags:a,timestamp:d,disableGeoip:u,uuid:l});if(!g)return Promise.reject(null);let _=await Promise.resolve().then(async()=>{if(o){if(a)console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`.");return o._getEventProperties()}if(a){vs("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let b=typeof a=="object"?a:void 0,v=await this.getFeatureFlagsForEvent(g.distinctId,s,u,b);return rj(v)}return{}}).catch(()=>({})).then((b)=>{let v=g.groups||s;return{...b,...g.properties||{},...v!==void 0&&Object.keys(v).length>0?{$groups:v}:{}}});if(g.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof _.$raw_user_agent=="string"){if(pm(_.$raw_user_agent,this.options.custom_blocked_useragents||[]))g.event="$bot_pageview",_.$browser_type="bot"}return{distinctId:g.distinctId,event:g.event,properties:_,options:{timestamp:g.timestamp,disableGeoip:g.disableGeoip,uuid:g.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let r=Array.isArray(t)?t:[t],i=e;for(let n of r){if(i=n(i),!i)return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}return i}}var Nh=require("async_hooks");class Ml{constructor(){this.storage=new Nh.AsyncLocalStorage}get(){return this.storage.getStore()}run(e,t,r){return this.storage.run(this.resolve(e,r),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let r=this.get()||{};return{distinctId:e.distinctId??r.distinctId,sessionId:e.sessionId??r.sessionId,properties:{...r.properties||{},...e.properties||{}}}}}function ij(e,{organization:t,projectId:r,prefix:i,severityAllowList:n=["error"],sendExceptionsToPostHog:s=!0}={}){return(o)=>{if(!(n==="*"||n.includes(o.level)))return o;if(!o.tags)o.tags={};let d=o.tags[Lh.POSTHOG_ID_TAG];if(d===void 0)return o;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${d}`,u).toString();o.tags["PostHog Person URL"]=l;let c=o.exception?.values||[],p=c.map((m)=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map((h)=>({...h,platform:"node:javascript"}))}:void 0})),f={$exception_message:c[0]?.value||o.message,$exception_type:c[0]?.type,$exception_level:o.level,$exception_list:p,$sentry_event_id:o.event_id,$sentry_exception:o.exception,$sentry_exception_message:c[0]?.value||o.message,$sentry_exception_type:c[0]?.type,$sentry_tags:o.tags};if(t&&r)f.$sentry_url=(i||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+o.event_id;if(s)e.capture({event:"$exception",distinctId:d,properties:f});return o}}class Lh{static#r=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(e,t,r,i,n){this.name="posthog-node",this.name="posthog-node",this.setupOnce=function(s,o){let a=o()?.getClient()?.getDsn()?.projectId;s(ij(e,{organization:t,projectId:a,prefix:r,severityAllowList:i,sendExceptionsToPostHog:n??!0}))}}}class Ul extends ql{getLibraryId(){return"posthog-node"}initializeContext(){return new Ml}createErrorPropertiesBuilder(){return new $e.ErrorPropertiesBuilder([new $e.EventCoercer,new $e.ErrorCoercer,new $e.ObjectCoercer,new $e.StringCoercer,new $e.PrimitiveCoercer],$e.createStackParser("node:javascript",$e.nodeStackLineParser),[cm(),hh,_h()])}}var ee=require("fs/promises"),fe=require("path");var qh={name:"@toloka-platform/sdk",version:"0.1.0-preview.5",private:!1,description:"Preview. Build, inspect, and operate Toloka pipeline projects as TypeScript source. The public API may change.",license:"Apache-2.0",bin:{toloka:"bin/toloka.js"},files:["README.md","bin","docs","dist","examples","openapi/gen","skills","src"],type:"module",main:"./src/index.ts",exports:{".":"./src/index.ts","./examples/face-image-collection":"./examples/face-image-collection/pipeline.ts"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/",tag:"preview"},scripts:{build:"bun ./scripts/build-cli.ts ./dist/cli",generate:"orval --config ./openapi/orval.config.js",prepack:"bun run build","sync-skill-catalog":"bun ./scripts/sync-skill-catalog.ts",test:"vitest run",typecheck:"tsc --noEmit"},dependencies:{"@inquirer/select":"5.2.1",ajv:"8.17.1","ajv-formats":"3.0.1",commander:"15.0.0","es-toolkit":"1.42.0","posthog-node":"5.46.1"},devDependencies:{"@types/node":"24.10.1",orval:"7.17.0",typescript:"7.0.2",vitest:"4.1.0",yaml:"2.9.0"},engines:{bun:"1.4.0"}};var Mh=require("fs/promises"),Uh=require("path"),ws=(e,...t)=>e instanceof Error&&("code"in e)&&typeof e.code==="string"&&t.includes(e.code),$s=(e)=>ws(e,"ENOENT"),Tr=async(e)=>{try{return await Mh.lstat(e)}catch(t){if($s(t))return;throw t}},Bi=async(e,t,r="write")=>{let i=e;for(let n of t.split("/")){i=Uh.join(i,n);let s=await Tr(i);if(s===void 0)return;y(!s.isSymbolicLink(),`Refusing to ${r} through symbolic link ${i}.`)}};var Kh=require("crypto"),Y=require("fs/promises"),pe=require("path"),zh=require("url");var sj=(e)=>{let t=typeof e.body==="string"?e.body:e.body===void 0?void 0:JSON.stringify(e.body);return t===void 0||t.length===0?void 0:t},Gi=(e)=>{if(e instanceof re){let t=sj(e);return t===void 0?e.message:`${e.message}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
32
|
+
`),this.outputHelp({error:!0});let i=t||{},n=i.exitCode||1,s=i.code||"commander.error";this._exit(n,s,e)}_parseOptionsEnv(){this.options.forEach((e)=>{if(e.envVar&&e.envVar in E.default.env){let t=e.attributeName();if(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))if(e.required||e.optional)this.emit(`optionEnv:${e.name()}`,E.default.env[e.envVar]);else this.emit(`optionEnv:${e.name()}`)}})}_parseOptionsImplied(){let e=new Ir(this.options),t=(i)=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter((i)=>i.implied!==void 0&&t(i.attributeName())&&e.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach((i)=>{Object.keys(i.implied).filter((n)=>!t(n)).forEach((n)=>{this.setOptionValueWithSource(n,i.implied[n],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let i=(o)=>{let r=o.attributeName(),g=this.getOptionValue(r),a=this.options.find((I)=>I.negate&&r===I.attributeName()),l=this.options.find((I)=>!I.negate&&r===I.attributeName());if(a&&(a.presetArg===void 0&&g===!1||a.presetArg!==void 0&&g===a.presetArg))return a;return l||o},n=(o)=>{let r=i(o),g=r.attributeName();if(this.getOptionValueSource(g)==="env")return`environment variable '${r.envVar}'`;return`option '${r.flags}'`},s=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],s=this;do{let o=s.createHelp().visibleOptions(s).filter((r)=>r.long).map((r)=>r.long);n=n.concat(o),s=s.parent}while(s&&!s._enablePositionalOptions);t=dr(e,n)}let i=`error: unknown option '${e}'${t}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,i=t===1?"":"s",n=e.length,s=this.parent?` for '${this.name()}'`:"",o=e.join(", "),r=`error: too many arguments${s}. Expected ${t} argument${i} but got ${n}: ${o}.`;this.error(r,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach((s)=>{if(n.push(s.name()),s.alias())n.push(s.alias())}),t=dr(e,n)}let i=`error: unknown command '${e}'${t}`;this.error(i,{code:"commander.unknownCommand"})}version(e,t,i){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",i=i||"output the version number";let n=this.createOption(t,i);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
|
|
33
|
+
`),this._exit(0,"commander.version",e)}),this}description(e,t){if(e===void 0&&t===void 0)return this._description;if(this._description=e,t)this._argsDescription=t;return this}summary(e){if(e===void 0)return this._summary;return this._summary=e,this}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)t=this.commands[this.commands.length-1];if(e===t._name)throw Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(e);if(i){let n=[i.name()].concat(i.aliases()).join("|");throw Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}return t._aliases.push(e),this}aliases(e){if(e===void 0)return this._aliases;return e.forEach((t)=>this.alias(t)),this}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map((i)=>Ws(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){if(e===void 0)return this._name;return this._name=e,this}helpGroup(e){if(e===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=e,this}commandsGroup(e){if(e===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=e,this}optionsGroup(e){if(e===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=e,this}_initOptionGroup(e){if(this._defaultOptionGroup&&!e.helpGroupHeading)e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){if(this._defaultCommandGroup&&!e.helpGroup())e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Ke.default.basename(e,Ke.default.extname(e)),this}executableDir(e){if(e===void 0)return this._executableDir;return this._executableDir=e,this}helpInformation(e){let t=this.createHelp(),i=this._getOutputContext(e);t.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let n=t.formatHelp(this,t);if(i.hasColors)return n;return this._outputConfiguration.stripColor(n)}_getOutputContext(e){e=e||{};let t=!!e.error,i,n,s;if(t)i=(r)=>this._outputConfiguration.writeErr(r),n=this._outputConfiguration.getErrHasColors(),s=this._outputConfiguration.getErrHelpWidth();else i=(r)=>this._outputConfiguration.writeOut(r),n=this._outputConfiguration.getOutHasColors(),s=this._outputConfiguration.getOutHelpWidth();return{error:t,write:(r)=>{if(!n)r=this._outputConfiguration.stripColor(r);return i(r)},hasColors:n,helpWidth:s}}outputHelp(e){let t;if(typeof e==="function")t=e,e=void 0;let i=this._getOutputContext(e),n={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach((o)=>o.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let s=this.helpInformation({error:i.error});if(t){if(s=t(s),typeof s!=="string"&&!Buffer.isBuffer(s))throw Error("outputHelp callback must return a string or a Buffer")}if(i.write(s),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",n),this._getCommandAndAncestors().forEach((o)=>o.emit("afterAllHelp",n))}helpOption(e,t){if(typeof e==="boolean"){if(e){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),e||t)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(E.default.exitCode??0);if(t===0&&e&&typeof e!=="function"&&e.error)t=1;this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let i=["beforeAll","before","after","afterAll"];if(!i.includes(e))throw Error(`Unexpected value for position to addHelpText.
|
|
34
|
+
Expecting one of '${i.join("', '")}'`);let n=`${e}Help`;return this.on(n,(s)=>{let o;if(typeof t==="function")o=t({error:s.error,command:s.command});else o=t;if(o)s.write(`${o}
|
|
35
|
+
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((n)=>t.is(n)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function PI(e){return e.map((t)=>{if(!t.startsWith("--inspect"))return t;let i,n="127.0.0.1",s="9229",o;if((o=t.match(/^(--inspect(-brk)?)$/))!==null)i=o[1];else if((o=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(i=o[1],/^\d+$/.test(o[3]))s=o[3];else n=o[3];else if((o=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)i=o[1],n=o[3],s=o[4];if(i&&s!=="0")return`${i}=${n}:${parseInt(s)+1}`;return t})}function YI(){if(E.default.env.NO_COLOR||E.default.env.FORCE_COLOR==="0"||E.default.env.FORCE_COLOR==="false")return!1;if(E.default.env.FORCE_COLOR||E.default.env.CLICOLOR_FORCE!==void 0)return!0;return}var iN=new Ci;function Z(e,t){if(e)return;if(typeof t==="string")throw Error(t);throw t}var iW=require("fs/promises"),Zs=require("path"),nW=require("readline/promises");class te extends Error{code;status;body;requestId;constructor(e,t,i,n,s){super(e);this.name="PotatoApiError",this.code=t,this.status=i,this.body=n,this.requestId=s}static fromResponse(e,t,i){let n=i===void 0?"":` (request id: ${i})`;return new te(`Potato API request failed with status ${e}${n}`,"http",e,t,i)}static waitTimeout(e){return new te(`Potato API job did not reach a terminal status within ${e} ms`,"wait_timeout",void 0,{timeoutMs:e})}}class ui extends Error{code="invalid_pipeline_graph";issues;constructor(e,t){super(e);this.name="PipelineGraphValidationError",this.issues=t}static fromIssues(e){let t=e.map(({path:i,reason:n})=>`- ${i}: ${n}`).join(`
|
|
36
|
+
`);return new ui(`Pipeline graph validation failed
|
|
37
|
+
${t}`,e)}}var Cr="x-potato-sdk-base-url",SI=(e,t,i)=>(Z(e.length>0,"The SDK base URL cannot be empty"),Z(t.length>0,"The SDK API key cannot be empty"),{headers:{Accept:"application/json",Authorization:`ApiKey ${t}`,[Cr]:new URL(e).toString()},fetch:i});async function R(e,t){let{fetch:i=globalThis.fetch,...n}=t,s=new Headers(n.headers),o=s.get(Cr);Z(o,"The SDK base URL is missing"),s.delete(Cr);let r=await i(new URL(e,o),{...n,headers:s}),g=await r.text();if(!r.ok){let a=g;if(g.length===0)a=void 0;else if(r.headers.get("content-type")?.includes("application/json"))a=JSON.parse(g);throw te.fromResponse(r.status,a,r.headers.get("x-request-id")??void 0)}return g.length===0?void 0:JSON.parse(g)}var Py=()=>"/api/v2-beta/base-models",xI=async(e)=>R(Py(),{...e,method:"GET"}),Yy=(e)=>`/api/v2-beta/base-models/${e}`,JI=async(e,t)=>R(Yy(e),{...t,method:"GET"}),Ny=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([s,o])=>{if(o!==void 0)i.append(s,o===null?"null":o.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/projects/${e}/models?${n}`:`/api/v2-beta/projects/${e}/models`},ur=async(e,t,i)=>R(Ny(e,t),{...i,method:"GET"}),Xy=(e)=>`/api/v2-beta/projects/${e}/models`,EI=async(e,t,i)=>R(Xy(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),Sy=(e,t,i)=>{let n=new URLSearchParams;Object.entries(i||{}).forEach(([o,r])=>{if(r!==void 0)n.append(o,r===null?"null":r.toString())});let s=n.toString();return s.length>0?`/api/v2-beta/projects/${e}/models/${t}/versions?${s}`:`/api/v2-beta/projects/${e}/models/${t}/versions`},mr=async(e,t,i,n)=>R(Sy(e,t,i),{...n,method:"GET"}),xy=(e)=>`/api/v2-beta/model-versions/${e}`,UI=async(e,t)=>R(xy(e),{...t,method:"GET"}),Jy=(e,t)=>`/api/v2-beta/projects/${e}/models/${t}/archive`,OI=async(e,t,i)=>R(Jy(e,t),{...i,method:"POST"}),Ey=(e,t)=>`/api/v2-beta/projects/${e}/models/${t}`,TI=async(e,t,i)=>R(Ey(e,t),{...i,method:"GET"}),Uy=()=>"/api/v2-beta/me",zI=async(e)=>R(Uy(),{...e,method:"GET"}),Oy=(e)=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,s])=>{if(s!==void 0)t.append(n,s===null?"null":s.toString())});let i=t.toString();return i.length>0?`/api/v2-beta/projects?${i}`:"/api/v2-beta/projects"},pr=async(e,t)=>R(Oy(e),{...t,method:"GET"}),Ty=()=>"/api/v2-beta/projects",jI=async(e,t)=>R(Ty(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),zy=(e)=>`/api/v2-beta/projects/${e}`,DI=async(e,t)=>R(zy(e),{...t,method:"GET"}),jy=(e)=>`/api/v2-beta/projects/${e}`,QI=async(e,t,i)=>R(jy(e),{...i,method:"PATCH",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),Dy=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([s,o])=>{if(o!==void 0)i.append(s,o===null?"null":o.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/projects/${e}/pipelines?${n}`:`/api/v2-beta/projects/${e}/pipelines`},Ar=async(e,t,i)=>R(Dy(e,t),{...i,method:"GET"}),Qy=(e)=>`/api/v2-beta/pipelines/${e}`,_I=async(e,t)=>R(Qy(e),{...t,method:"GET"}),_y=(e)=>`/api/v2-beta/pipelines/${e}`,KI=async(e,t,i)=>R(_y(e),{...i,method:"PATCH",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),Ky=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([s,o])=>{if(o!==void 0)i.append(s,o===null?"null":o.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/projects/${e}/datasets?${n}`:`/api/v2-beta/projects/${e}/datasets`},Zr=async(e,t,i)=>R(Ky(e,t),{...i,method:"GET"}),Ly=(e)=>`/api/v2-beta/projects/${e}/datasets`,LI=async(e,t,i)=>R(Ly(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),My=(e)=>`/api/v2-beta/datasets/${e}`,MI=async(e,t)=>R(My(e),{...t,method:"GET"}),$y=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([s,o])=>{if(o!==void 0)i.append(s,o===null?"null":o.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/datasets/${e}/fields?${n}`:`/api/v2-beta/datasets/${e}/fields`},br=async(e,t,i)=>R($y(e,t),{...i,method:"GET"}),qy=(e)=>`/api/v2-beta/datasets/${e}/fields`,Wr=async(e,t,i)=>R(qy(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),eV=(e)=>`/api/v2-beta/datasets/${e}/inferred-fields`,$I=async(e,t)=>R(eV(e),{...t,method:"GET"}),tV=(e)=>`/api/v2-beta/datasets/${e}/items`,qI=async(e,t,i)=>R(tV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),iV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([s,o])=>{if(o!==void 0)i.append(s,o===null?"null":o.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/datasets/${e}/items?${n}`:`/api/v2-beta/datasets/${e}/items`},hr=async(e,t,i)=>R(iV(e,t),{...i,method:"GET"}),nV=(e)=>`/api/v2-beta/datasets/${e}/uploads`,ed=async(e,t,i)=>R(nV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),sV=(e)=>`/api/v2-beta/uploads/${e}/finalize`,td=async(e,t)=>R(sV(e),{...t,method:"POST"}),oV=(e)=>`/api/v2-beta/uploads/${e}/cancel`,id=async(e,t)=>R(oV(e),{...t,method:"POST"}),rV=(e)=>`/api/v2-beta/uploads/${e}`,fr=async(e,t)=>R(rV(e),{...t,method:"GET"}),gV=(e)=>`/api/v2-beta/projects/${e}/pipelines/import`,nd=async(e,t,i)=>R(gV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),aV=(e)=>`/api/v2-beta/pipelines/${e}/dataset`,sd=async(e,t,i)=>R(aV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),lV=(e)=>`/api/v2-beta/pipelines/${e}/export`,od=async(e,t)=>R(lV(e),{...t,method:"GET"}),IV=(e)=>`/api/v2-beta/pipelines/${e}/copy`,rd=async(e,t,i)=>R(IV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),dV=(e)=>`/api/v2-beta/pipelines/${e}/cost-estimate`,gd=async(e,t,i)=>R(dV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),cV=(e)=>`/api/v2-beta/pipelines/${e}/runs`,ad=async(e,t)=>R(cV(e),{...t,method:"POST"}),CV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([s,o])=>{if(o!==void 0)i.append(s,o===null?"null":o.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/pipelines/${e}/runs?${n}`:`/api/v2-beta/pipelines/${e}/runs`},yr=async(e,t,i)=>R(CV(e,t),{...i,method:"GET"}),uV=(e)=>`/api/v2-beta/runs/${e}`,Vr=async(e,t)=>R(uV(e),{...t,method:"GET"});var mV=(e)=>`/api/v2-beta/runs/${e}/cancel`,ld=async(e,t)=>R(mV(e),{...t,method:"POST"});var pV=(e)=>`/api/v2-beta/datasets/${e}/exports`,Id=async(e,t,i)=>R(pV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),AV=(e)=>`/api/v2-beta/exports/${e}`,Br=async(e,t)=>R(AV(e),{...t,method:"GET"}),ZV=(e)=>`/api/v2-beta/pipelines/${e}/graph`,dd=async(e,t)=>R(ZV(e),{...t,method:"GET"}),bV=(e)=>`/api/v2-beta/pipelines/${e}/graph`,cd=async(e,t,i)=>R(bV(e),{...i,method:"PUT",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),WV=(e)=>`/api/v2-beta/pipelines/${e}/graph/validate`,Cd=async(e,t,i)=>R(WV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),hV=(e,t)=>`/api/v2-beta/pipelines/${e}/graph/nodes/${t}`,ud=async(e,t,i,n)=>R(hV(e,t),{...n,method:"PATCH",headers:{"Content-Type":"application/json",...n?.headers},body:JSON.stringify(i)}),fV=(e)=>`/api/v2-beta/projects/${e}/secrets`,md=async(e,t)=>R(fV(e),{...t,method:"GET"}),yV=(e,t)=>`/api/v2-beta/projects/${e}/secrets/${t}`,pd=async(e,t,i,n)=>R(yV(e,t),{...n,method:"PUT",headers:{"Content-Type":"application/json",...n?.headers},body:JSON.stringify(i)}),VV=(e)=>`/api/v2-beta/projects/${e}/files`,Ad=async(e,t)=>R(VV(e),{...t,method:"GET"}),BV=(e)=>`/api/v2-beta/projects/${e}/files`,Zd=async(e,t,i)=>R(BV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),GV=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}/finalize`,bd=async(e,t,i)=>R(GV(e,t),{...i,method:"POST"}),RV=(e,t)=>`/api/v2-beta/projects/${e}/files/${t}`,Wd=async(e,t,i)=>R(RV(e,t),{...i,method:"DELETE"}),wV=(e,t)=>{let i=new URLSearchParams;Object.entries(t||{}).forEach(([s,o])=>{if(o!==void 0)i.append(s,o===null?"null":o.toString())});let n=i.toString();return n.length>0?`/api/v2-beta/runs/${e}/items?${n}`:`/api/v2-beta/runs/${e}/items`},Gr=async(e,t,i)=>R(wV(e,t),{...i,method:"GET"}),FV=(e,t)=>`/api/v2-beta/runs/${e}/items/${t}`,hd=async(e,t,i)=>R(FV(e,t),{...i,method:"GET"}),HV=(e)=>`/api/v2-beta/pipelines/${e}/checks`,fd=async(e,t)=>R(HV(e),{...t,method:"GET"}),vV=(e)=>`/api/v2-beta/pipelines/${e}/checks`,yd=async(e,t,i)=>R(vV(e),{...i,method:"POST",headers:{"Content-Type":"application/json",...i?.headers},body:JSON.stringify(t)}),kV=(e)=>`/api/v2-beta/checks/${e}`,Rr=async(e,t)=>R(kV(e),{...t,method:"GET"});async function*Le(e,t={}){let i=t.offset;while(!0){let n=await e({limit:t.limit,offset:i});if(yield*n.items,!n.pagination.hasMore)return;i=n.pagination.offset+n.pagination.limit}}var ln=async(e,t,i={})=>{let n=i.timeoutMs??60000,s=i.intervalMs??1000;Z(Number.isFinite(n)&&n>=0,"The wait timeout must be a nonnegative finite number"),Z(Number.isFinite(s)&&s>0,"The polling interval must be a positive finite number");let o=Date.now()+n,r=new AbortController,g=setTimeout(()=>r.abort(),n);try{while(!0){if(r.signal.aborted)throw te.waitTimeout(n);let a=await e(r.signal);if(t(a))return a;let l=o-Date.now();if(l<=0)throw te.waitTimeout(n);let{promise:I,resolve:d}=Promise.withResolvers();setTimeout(d,Math.min(s,l)),await I}}catch(a){if(r.signal.aborted)throw te.waitTimeout(n);throw a}finally{clearTimeout(g)}};var YV=(e)=>{let t=SI(e.baseUrl,e.apiKey,e.fetch),i=()=>{let c=new Headers(t.headers);return c.set("Content-Type","application/json"),{...t,headers:c,body:"{}"}};async function n(c,m){switch(c.type){case"datasetUpload":return ln((C)=>fr(c.uploadId,{...t,signal:C}),(C)=>C.status==="succeeded"||C.status==="failed",m);case"datasetExport":return ln((C)=>Br(c.exportId,{...t,signal:C}),(C)=>C.status==="succeeded",m);case"pipelineCheck":return ln((C)=>Rr(c.checkRunId,{...t,signal:C}),(C)=>C.status==="succeeded"||C.status==="failed",m);case"pipelineRun":return ln((C)=>Vr(c.runId,{...t,signal:C}),(C)=>C.status==="succeeded"||C.status==="failed",m)}}return{me:()=>zI(t),projects:{create:(c)=>jI(c,t),get:({projectId:c})=>DI(c,t),update:({projectId:c,...m})=>QI(c,m,t),listPage:(c={})=>pr(c,t),listAll:(c={})=>Le(async(m)=>{let C=await pr({...c,...m},t);return{items:C.projects,pagination:C.pagination}},c)},pipelines:{import:({projectId:c,...m})=>nd(c,m,t),get:({pipelineId:c})=>_I(c,t),update:({pipelineId:c,...m})=>KI(c,m,t),listPage:({projectId:c,...m})=>Ar(c,m,t),listAll:({projectId:c,...m})=>Le(async(C)=>{let u=await Ar(c,{...m,...C},t);return{items:u.pipelines,pagination:u.pagination}},m),getGraph:({pipelineId:c})=>dd(c,t),replaceGraph:({pipelineId:c,...m})=>cd(c,"version"in m?{graph:m.graph,expectedVersion:m.version}:m,t),validateGraph:({pipelineId:c,...m})=>Cd(c,m,t),estimateCost:({pipelineId:c,...m})=>gd(c,m,t),patchNode:({pipelineId:c,nodeId:m,...C})=>ud(c,m,C,t),attachDataset:({pipelineId:c,...m})=>sd(c,m,t),export:({pipelineId:c})=>od(c,t),copy:({pipelineId:c,...m})=>rd(c,m,t)},datasets:{create:({projectId:c,...m})=>LI(c,m,t),get:({datasetId:c})=>MI(c,t),listPage:({projectId:c,...m})=>Zr(c,m,t),listAll:({projectId:c,...m})=>Le(async(C)=>{let u=await Zr(c,{...m,...C},t);return{items:u.datasets,pagination:u.pagination}},m),createField:async({datasetId:c,...m})=>{let C=await Wr(c,m,t);return Z(!("fields"in C),"Creating one field must return that field"),C},createFields:async({datasetId:c,fields:m})=>{let C=await Wr(c,{fields:m},t);return Z("fields"in C,"Creating several fields must return those fields"),C.fields},listFieldsPage:({datasetId:c,...m})=>br(c,m,t),getInferredFields:({datasetId:c})=>$I(c,t),listAllFields:({datasetId:c,...m})=>Le(async(C)=>{let u=await br(c,{...m,...C},t);return{items:u.fields,pagination:u.pagination}},m),appendItems:({datasetId:c,...m})=>qI(c,m,t),listItemsPage:({datasetId:c,...m})=>hr(c,m,t),listAllItems:({datasetId:c,...m})=>Le(async(C)=>{let u=await hr(c,{...m,...C},t);return{items:u.items,pagination:u.pagination}},m),startUpload:({datasetId:c,...m})=>ed(c,m,t),finalizeUpload:({uploadId:c})=>td(c,i()),cancelUpload:({uploadId:c})=>id(c,i()),getUpload:({uploadId:c})=>fr(c,t),startExport:({datasetId:c,...m})=>Id(c,m,t),getExport:({exportId:c})=>Br(c,t)},baseModels:{list:async()=>(await xI(t)).baseModels,get:({id:c})=>JI(c,t)},models:{listPage:({projectId:c,...m})=>ur(c,m,t),listAll:({projectId:c,...m})=>Le(async(C)=>{let u=await ur(c,{...m,...C},t);return{items:u.models,pagination:u.pagination}},m),get:({projectId:c,modelId:m})=>TI(c,m,t),listVersionsPage:({projectId:c,modelId:m,...C})=>mr(c,m,C,t),listAllVersions:({projectId:c,modelId:m,...C})=>Le(async(u)=>{let A=await mr(c,m,{...C,...u},t);return{items:A.versions,pagination:A.pagination}},C),create:({projectId:c,...m})=>EI(c,m,t),getVersion:({modelVersionId:c})=>UI(c,t),archive:({projectId:c,modelId:m})=>{let C=new Headers(t.headers);return C.set("Content-Type","application/json"),OI(c,m,{...t,headers:C})}},runs:{start:({pipelineId:c})=>ad(c,i()),get:({runId:c})=>Vr(c,t),cancel:({runId:c})=>ld(c,t),listPage:({pipelineId:c,...m})=>yr(c,m,t),listAll:({pipelineId:c,...m})=>Le(async(C)=>{let u=await yr(c,{...m,...C},t);return{items:u.runs,pagination:u.pagination}},m),listItemsPage:({runId:c,...m})=>Gr(c,m,t),listAllItems:({runId:c,...m})=>Le(async(C)=>{let u=await Gr(c,{...m,...C},t);return{items:u.items,pagination:u.pagination}},m),getItem:({runId:c,itemId:m})=>hd(c,m,t)},secrets:{list:async({projectId:c})=>(await md(c,t)).secrets,set:({projectId:c,name:m,...C})=>pd(c,m,C,t)},files:{list:async({projectId:c})=>(await Ad(c,t)).files,startUpload:({projectId:c,...m})=>Zd(c,m,t),finalizeUpload:({projectId:c,fileId:m})=>bd(c,m,t),delete:({projectId:c,fileId:m})=>Wd(c,m,t)},checks:{list:async({pipelineId:c})=>(await fd(c,t)).checks,start:({pipelineId:c,...m})=>yd(c,m,t),get:({checkRunId:c})=>Rr(c,t)},waitFor:n}};function Ct(e){return YV(e)}var Hi=require("fs/promises"),Ba=require("path"),wu=be(Va(),1);var oo="toloka.json";class Ga extends Error{constructor(e,t){super(e,t);this.name="TolokaStateError"}}var oH="^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))(?!.*//).+$",rH={type:"object",properties:{projectId:{type:"string",minLength:1},pipelines:{type:"object",propertyNames:{type:"string",pattern:oH},additionalProperties:{type:"object",properties:{pipelineId:{type:"string",minLength:1}},required:["pipelineId"],additionalProperties:!1}},datasets:{type:"object",propertyNames:{type:"string",minLength:1},additionalProperties:{type:"object",properties:{datasetId:{type:"string",minLength:1}},required:["datasetId"],additionalProperties:!1}}},required:["projectId","pipelines","datasets"],additionalProperties:!1},gH=new wu.default({allErrors:!0,strict:!1}),Ru=gH.compile(rH);function aH(e){let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return`${typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/"}: ${e.message??`failed ${e.keyword} validation`}`}function Fu(e){if(Ru(e))return e;let t=Ru.errors;throw Z(t,"toloka.json validation failed without errors"),new Ga(`Invalid toloka.json: ${t.map(aH).join("; ")}`)}async function Ge(e){let t;try{t=await Hi.readFile(Ba.join(e,oo),"utf8")}catch(i){if(i instanceof Error&&"code"in i&&i.code==="ENOENT")return;throw i}try{return Fu(JSON.parse(t))}catch(i){if(i instanceof SyntaxError)throw new Ga(`Invalid toloka.json: ${i.message}`,{cause:i});throw i}}async function Kt(e,t){let i=Fu(t),n=Object.fromEntries(Object.entries(i.pipelines).sort(([o],[r])=>o<r?-1:o>r?1:0)),s=Object.fromEntries(Object.entries(i.datasets).sort(([o],[r])=>o<r?-1:o>r?1:0));await Hi.mkdir(e,{recursive:!0}),await Hi.writeFile(Ba.join(e,oo),`${JSON.stringify({projectId:i.projectId,pipelines:n,datasets:s},null,2)}
|
|
38
|
+
`,"utf8")}var co=require("fs"),Fm=require("child_process"),Hm=require("module"),vm=require("events"),Xt=require("fs/promises"),Ma=require("os"),Nt=require("path"),Ka=require("url");var ku=require("oxc-parser");var Hu=require("oxc-parser"),Ra=(e,t,i)=>{let n=Hu.parseSync(e,t,{lang:i,preserveParens:!1});return n.errors.some((s)=>s.severity==="Error")?null:n.program},vu=(e)=>{let t=e?.value;if(!t)return null;if(t.type==="Literal")return typeof t.value==="string"?t.value:null;if(t.type==="JSXExpressionContainer"){let i=t.expression;if(i.type==="Literal"&&typeof i.value==="string")return i.value;if(i.type==="TemplateLiteral"&&i.expressions.length===0)return i.quasis[0]?.value.cooked??null}return null};var wa=(e)=>{let t=IH(e.postprocess);if(!t||t.size===0)return[];let i=lH(e.code);if(!i||i.size===0)return[];return[...i].filter(([n])=>t.has(n)).sort(([n],[s])=>n.localeCompare(s)).map(([n,s])=>{let o=s===n?`path="${s}"`:`path="${s}" \u2014 a dotted path binds its top-level key "${n}"`;return{severity:"error",text:`Postprocess returns the key "${n}", but a Field component is bound to it (${o}). Every submission of this interface fails at runtime with: Postprocess cannot write key '${n}' because a component is bound to it. Fix: bind the Field to a raw key (e.g. path="raw_${n}") and derive "${n}" in postprocess, or remove "${n}" from the postprocess return.`}})},lH=(e)=>{let t=Ra("code.tsx",`(
|
|
39
|
+
${e}
|
|
40
|
+
)`,"tsx");if(!t)return null;let i=new Map;return new ku.Visitor({JSXOpeningElement(s){let o=s.name;while(o.type==="JSXMemberExpression")o=o.object;if(o.type!=="JSXIdentifier"||o.name!=="Field")return;let r=s.attributes.find((l)=>l.type==="JSXAttribute"&&l.name.type==="JSXIdentifier"&&l.name.name==="path"),g=vu(r);if(!g)return;let a=g.split(/[.[]/u)[0];if(a&&!i.has(a))i.set(a,g)}}).visit(t),i},IH=(e)=>{let t=Ra("postprocess.ts",`(() => {
|
|
41
|
+
${e}
|
|
42
|
+
})`,"ts");if(!t)return null;let i=t.body.length===1?t.body[0]:void 0;if(i?.type!=="ExpressionStatement"||i.expression.type!=="ArrowFunctionExpression"||i.expression.body.type!=="BlockStatement")return null;let n=new Set;for(let s of cH(i.expression.body))Lt(s,n);return n},dH=new Set(["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"]),cH=(e)=>{let t=[],i=(n)=>{if(!n||typeof n!=="object")return;if(Array.isArray(n)){for(let o of n)i(o);return}let s=n;if(typeof s.type==="string"){if(dH.has(s.type))return;if(s.type==="ReturnStatement"&&s.argument)t.push(s.argument)}for(let o of Object.values(s))i(o)};return i(e.body),t},Lt=(e,t)=>{if(e.type==="ObjectExpression")Pu(e,t);else if(e.type==="ConditionalExpression")Lt(e.consequent,t),Lt(e.alternate,t);else if(e.type==="LogicalExpression")Lt(e.left,t),Lt(e.right,t);else if(e.type==="SequenceExpression"){let i=e.expressions.at(-1);if(i)Lt(i,t)}else if(e.type==="TSAsExpression"||e.type==="TSSatisfiesExpression"||e.type==="TSNonNullExpression"||e.type==="TSTypeAssertion")Lt(e.expression,t)},Pu=(e,t)=>{for(let i of e.properties){if(i.type==="SpreadElement"){if(i.argument.type==="ObjectExpression")Pu(i.argument,t);continue}if(!i.computed&&i.key.type==="Identifier")t.add(i.key.name);else if(i.key.type==="Literal"&&(typeof i.key.value==="string"||typeof i.key.value==="number"))t.add(String(i.key.value))}};var xu=require("module"),Ju=be(require("path"));var ro=require("oxc-parser"),Te=be(require("typescript-api"));var Xn={version:1,react:{url:"https://tlkfrontprod.azureedge.net/template-builder-production/static/types/react@18.2.17/index.d.ts",sha256:"40a1b33c67109be18a961127873e8ba198429eacf11a468b4a052cddc9a73f8d",source:Buffer.from("Ly8gVHlwZSBkZWZpbml0aW9ucyBmb3IgUmVhY3QgMTguMgovLyBQcm9qZWN0OiBodHRwczovL3JlYWN0LmRldi8KLy8gRGVmaW5pdGlvbnMgYnk6IEFzYW5hIDxodHRwczovL2FzYW5hLmNvbT4KLy8gICAgICAgICAgICAgICAgIEFzc3VyZVNpZ24gPGh0dHA6Ly93d3cuYXNzdXJlc2lnbi5jb20+Ci8vICAgICAgICAgICAgICAgICBNaWNyb3NvZnQgPGh0dHBzOi8vbWljcm9zb2Z0LmNvbT4KLy8gICAgICAgICAgICAgICAgIEpvaG4gUmVpbGx5IDxodHRwczovL2dpdGh1Yi5jb20vam9obm55cmVpbGx5PgovLyAgICAgICAgICAgICAgICAgQmVub2l0IEJlbmV6ZWNoIDxodHRwczovL2dpdGh1Yi5jb20vYmJlbmV6ZWNoPgovLyAgICAgICAgICAgICAgICAgUGF0cmljaW8gWmF2b2xpbnNreSA8aHR0cHM6Ly9naXRodWIuY29tL3B6YXZvbGluc2t5PgovLyAgICAgICAgICAgICAgICAgRXJpYyBBbmRlcnNvbiA8aHR0cHM6Ly9naXRodWIuY29tL2VyaWNhbmRlcnNvbj4KLy8gICAgICAgICAgICAgICAgIERvdnlkYXMgTmF2aWNrYXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9Eb3Z5ZGFzTmF2aWNrYXM+Ci8vICAgICAgICAgICAgICAgICBKb3NoIFJ1dGhlcmZvcmQgPGh0dHBzOi8vZ2l0aHViLmNvbS90aGVydXRoZXI0ZD4KLy8gICAgICAgICAgICAgICAgIEd1aWxoZXJtZSBIw7xibmVyIDxodHRwczovL2dpdGh1Yi5jb20vZ3VpbGhlcm1laHVibmVyPgovLyAgICAgICAgICAgICAgICAgRmVyZHkgQnVkaGlkaGFybWEgPGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJkYWJlcj4KLy8gICAgICAgICAgICAgICAgIEpvaGFubiBSYWtvdG9oYXJpc29hIDxodHRwczovL2dpdGh1Yi5jb20vanJha290b2hhcmlzb2E+Ci8vICAgICAgICAgICAgICAgICBPbGl2aWVyIFBhc2NhbCA8aHR0cHM6Ly9naXRodWIuY29tL3Bhc2NhbG9saXY+Ci8vICAgICAgICAgICAgICAgICBNYXJ0aW4gSG9jaGVsIDxodHRwczovL2dpdGh1Yi5jb20vaG90ZWxsPgovLyAgICAgICAgICAgICAgICAgRnJhbmsgTGkgPGh0dHBzOi8vZ2l0aHViLmNvbS9mcmFua2xpeHVlZmVpPgovLyAgICAgICAgICAgICAgICAgSmVzc2ljYSBGcmFuY28gPGh0dHBzOi8vZ2l0aHViLmNvbS9KZXNzaWRoaWE+Ci8vICAgICAgICAgICAgICAgICBTYXJhbnNoIEthdGFyaWEgPGh0dHBzOi8vZ2l0aHViLmNvbS9zYXJhbnNoa2F0YXJpYT4KLy8gICAgICAgICAgICAgICAgIEthbml0a29ybiBTdWphdXRyYSA8aHR0cHM6Ly9naXRodWIuY29tL2x1a3l0aD4KLy8gICAgICAgICAgICAgICAgIFNlYmFzdGlhbiBTaWxiZXJtYW5uIDxodHRwczovL2dpdGh1Yi5jb20vZXBzMWxvbj4KLy8gICAgICAgICAgICAgICAgIEt5bGUgU2N1bGx5IDxodHRwczovL2dpdGh1Yi5jb20vemlla2E+Ci8vICAgICAgICAgICAgICAgICBDb25nIFpoYW5nIDxodHRwczovL2dpdGh1Yi5jb20vZGFuY2VycGhpbD4KLy8gICAgICAgICAgICAgICAgIERpbWl0cmkgTWl0cm9wb3Vsb3MgPGh0dHBzOi8vZ2l0aHViLmNvbS9kaW1pdHJvcG91bG9zPgovLyAgICAgICAgICAgICAgICAgSm9uZ0NoYW4gQ2hvaSA8aHR0cHM6Ly9naXRodWIuY29tL2Rpc2p1a3I+Ci8vICAgICAgICAgICAgICAgICBWaWN0b3IgTWFnYWxow6NlcyA8aHR0cHM6Ly9naXRodWIuY29tL3ZoZm1hZz4KLy8gICAgICAgICAgICAgICAgIERhbGUgVGFuIDxodHRwczovL2dpdGh1Yi5jb20vaGVsbGF0YW4+Ci8vICAgICAgICAgICAgICAgICBQcml5YW5zaHUgUmF2IDxodHRwczovL2dpdGh1Yi5jb20vcHJpeWFuc2h1cmF2PgovLyAgICAgICAgICAgICAgICAgRG1pdHJ5IFNlbWlncmFkc2t5IDxodHRwczovL2dpdGh1Yi5jb20vU2VtaWdyYWRza3k+Ci8vIERlZmluaXRpb25zOiBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZAovLyBUeXBlU2NyaXB0IFZlcnNpb246IDIuOAoKLy8gTk9URTogVXNlcnMgb2YgdGhlIGBleHBlcmltZW50YWxgIGJ1aWxkcyBvZiBSZWFjdCBzaG91bGQgYWRkIGEgcmVmZXJlbmNlCi8vIHRvICdyZWFjdC9leHBlcmltZW50YWwnIGluIHRoZWlyIHByb2plY3QuIFNlZSBleHBlcmltZW50YWwuZC50cydzIHRvcCBjb21tZW50Ci8vIGZvciByZWZlcmVuY2UgYW5kIGRvY3VtZW50YXRpb24gb24gaG93IGV4YWN0bHkgdG8gZG8gaXQuCgovLy8gPHJlZmVyZW5jZSBwYXRoPSJnbG9iYWwuZC50cyIgLz4KCmltcG9ydCAqIGFzIENTUyBmcm9tICdjc3N0eXBlJzsKaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOwppbXBvcnQgeyBJbnRlcmFjdGlvbiBhcyBTY2hlZHVsZXJJbnRlcmFjdGlvbiB9IGZyb20gJ3NjaGVkdWxlci90cmFjaW5nJzsKCnR5cGUgTmF0aXZlQW5pbWF0aW9uRXZlbnQgPSBBbmltYXRpb25FdmVudDsKdHlwZSBOYXRpdmVDbGlwYm9hcmRFdmVudCA9IENsaXBib2FyZEV2ZW50Owp0eXBlIE5hdGl2ZUNvbXBvc2l0aW9uRXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50Owp0eXBlIE5hdGl2ZURyYWdFdmVudCA9IERyYWdFdmVudDsKdHlwZSBOYXRpdmVGb2N1c0V2ZW50ID0gRm9jdXNFdmVudDsKdHlwZSBOYXRpdmVLZXlib2FyZEV2ZW50ID0gS2V5Ym9hcmRFdmVudDsKdHlwZSBOYXRpdmVNb3VzZUV2ZW50ID0gTW91c2VFdmVudDsKdHlwZSBOYXRpdmVUb3VjaEV2ZW50ID0gVG91Y2hFdmVudDsKdHlwZSBOYXRpdmVQb2ludGVyRXZlbnQgPSBQb2ludGVyRXZlbnQ7CnR5cGUgTmF0aXZlVHJhbnNpdGlvbkV2ZW50ID0gVHJhbnNpdGlvbkV2ZW50Owp0eXBlIE5hdGl2ZVVJRXZlbnQgPSBVSUV2ZW50Owp0eXBlIE5hdGl2ZVdoZWVsRXZlbnQgPSBXaGVlbEV2ZW50Owp0eXBlIEJvb2xlYW5pc2ggPSBib29sZWFuIHwgJ3RydWUnIHwgJ2ZhbHNlJzsKCmRlY2xhcmUgY29uc3QgVU5ERUZJTkVEX1ZPSURfT05MWTogdW5pcXVlIHN5bWJvbDsKLy8gRGVzdHJ1Y3RvcnMgYXJlIG9ubHkgYWxsb3dlZCB0byByZXR1cm4gdm9pZC4KdHlwZSBEZXN0cnVjdG9yID0gKCkgPT4gdm9pZCB8IHsgW1VOREVGSU5FRF9WT0lEX09OTFldOiBuZXZlciB9Owp0eXBlIFZvaWRPclVuZGVmaW5lZE9ubHkgPSB2b2lkIHwgeyBbVU5ERUZJTkVEX1ZPSURfT05MWV06IG5ldmVyIH07CgovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LWp1c3QtbmFtZXNwYWNlCmV4cG9ydCA9IFJlYWN0OwpleHBvcnQgYXMgbmFtZXNwYWNlIFJlYWN0OwoKZGVjbGFyZSBuYW1lc3BhY2UgUmVhY3QgewogICAgLy8KICAgIC8vIFJlYWN0IEVsZW1lbnRzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgdHlwZSBFbGVtZW50VHlwZTxQID0gYW55PiA9CiAgICAgICAgewogICAgICAgICAgICBbSyBpbiBrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHNdOiBQIGV4dGVuZHMgSlNYLkludHJpbnNpY0VsZW1lbnRzW0tdID8gSyA6IG5ldmVyCiAgICAgICAgfVtrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHNdIHwKICAgICAgICBDb21wb25lbnRUeXBlPFA+OwogICAgdHlwZSBDb21wb25lbnRUeXBlPFAgPSB7fT4gPSBDb21wb25lbnRDbGFzczxQPiB8IEZ1bmN0aW9uQ29tcG9uZW50PFA+OwoKICAgIHR5cGUgSlNYRWxlbWVudENvbnN0cnVjdG9yPFA+ID0KICAgICAgICB8ICgoCiAgICAgICAgICAgICAgcHJvcHM6IFAsCiAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvZG9jcy9sZWdhY3ktY29udGV4dC5odG1sI3JlZmVyZW5jaW5nLWNvbnRleHQtaW4tc3RhdGVsZXNzLWZ1bmN0aW9uLWNvbXBvbmVudHMKICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICBkZXByZWNhdGVkTGVnYWN5Q29udGV4dD86IGFueSwKICAgICAgICAgICkgPT4gUmVhY3ROb2RlKQogICAgICAgIHwgKG5ldyAoCiAgICAgICAgICAgICAgcHJvcHM6IFAsCiAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvZG9jcy9sZWdhY3ktY29udGV4dC5odG1sI3JlZmVyZW5jaW5nLWNvbnRleHQtaW4tbGlmZWN5Y2xlLW1ldGhvZHMKICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICBkZXByZWNhdGVkTGVnYWN5Q29udGV4dD86IGFueSwKICAgICAgICAgICkgPT4gQ29tcG9uZW50PGFueSwgYW55Pik7CgogICAgaW50ZXJmYWNlIFJlZk9iamVjdDxUPiB7CiAgICAgICAgcmVhZG9ubHkgY3VycmVudDogVCB8IG51bGw7CiAgICB9CiAgICAvLyBCaXZhcmlhbmNlIGhhY2sgZm9yIGNvbnNpc3RlbnQgdW5zb3VuZG5lc3Mgd2l0aCBSZWZPYmplY3QKICAgIHR5cGUgUmVmQ2FsbGJhY2s8VD4gPSB7IGJpdmFyaWFuY2VIYWNrKGluc3RhbmNlOiBUIHwgbnVsbCk6IHZvaWQgfVsiYml2YXJpYW5jZUhhY2siXTsKICAgIHR5cGUgUmVmPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWZPYmplY3Q8VD4gfCBudWxsOwogICAgdHlwZSBMZWdhY3lSZWY8VD4gPSBzdHJpbmcgfCBSZWY8VD47CiAgICAvKioKICAgICAqIEdldHMgdGhlIGluc3RhbmNlIHR5cGUgZm9yIGEgUmVhY3QgZWxlbWVudC4gVGhlIGluc3RhbmNlIHdpbGwgYmUgZGlmZmVyZW50IGZvciB2YXJpb3VzIGNvbXBvbmVudCB0eXBlczoKICAgICAqCiAgICAgKiAtIFJlYWN0IGNsYXNzIGNvbXBvbmVudHMgd2lsbCBiZSB0aGUgY2xhc3MgaW5zdGFuY2UuIFNvIGlmIHlvdSBoYWQgYGNsYXNzIEZvbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDx7fT4ge31gCiAgICAgKiAgIGFuZCB1c2VkIGBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBGb28+YCB0aGVuIHRoZSB0eXBlIHdvdWxkIGJlIHRoZSBpbnN0YW5jZSBvZiBgRm9vYC4KICAgICAqIC0gUmVhY3Qgc3RhdGVsZXNzIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBkbyBub3QgaGF2ZSBhIGJhY2tpbmcgaW5zdGFuY2UgYW5kIHNvIGBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBCYXI+YAogICAgICogICAod2hlbiBgQmFyYCBpcyBgZnVuY3Rpb24gQmFyKCkge31gKSB3aWxsIGdpdmUgeW91IHRoZSBgdW5kZWZpbmVkYCB0eXBlLgogICAgICogLSBKU1ggaW50cmluc2ljcyBsaWtlIGBkaXZgIHdpbGwgZ2l2ZSB5b3UgdGhlaXIgRE9NIGluc3RhbmNlLiBGb3IgYFJlYWN0LkVsZW1lbnRSZWY8J2Rpdic+YCB0aGF0IHdvdWxkIGJlCiAgICAgKiAgIGBIVE1MRGl2RWxlbWVudGAuIEZvciBgUmVhY3QuRWxlbWVudFJlZjwnaW5wdXQnPmAgdGhhdCB3b3VsZCBiZSBgSFRNTElucHV0RWxlbWVudGAuCiAgICAgKiAtIFJlYWN0IHN0YXRlbGVzcyBmdW5jdGlvbmFsIGNvbXBvbmVudHMgdGhhdCBmb3J3YXJkIGEgYHJlZmAgd2lsbCBnaXZlIHlvdSB0aGUgYEVsZW1lbnRSZWZgIG9mIHRoZSBmb3J3YXJkZWQKICAgICAqICAgdG8gY29tcG9uZW50LgogICAgICoKICAgICAqIGBDYCBtdXN0IGJlIHRoZSB0eXBlIF9vZl8gYSBSZWFjdCBjb21wb25lbnQgc28geW91IG5lZWQgdG8gdXNlIHR5cGVvZiBhcyBpbiBgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTXlDb21wb25lbnQ+YC4KICAgICAqCiAgICAgKiBAdG9kbyBJbiBGbG93LCB0aGlzIHdvcmtzIGEgbGl0dGxlIGRpZmZlcmVudCB3aXRoIGZvcndhcmRlZCByZWZzIGFuZCB0aGUgYEFic3RyYWN0Q29tcG9uZW50YCB0aGF0CiAgICAgKiAgICAgICBgUmVhY3QuZm9yd2FyZFJlZigpYCByZXR1cm5zLgogICAgICovCiAgICB0eXBlIEVsZW1lbnRSZWY8CiAgICAgICAgQyBleHRlbmRzCiAgICAgICAgICAgIHwgRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxhbnk+CiAgICAgICAgICAgIHwgeyBuZXcgKHByb3BzOiBhbnkpOiBDb21wb25lbnQ8YW55PiB9CiAgICAgICAgICAgIHwgKChwcm9wczogYW55LCBjb250ZXh0PzogYW55KSA9PiBSZWFjdE5vZGUpCiAgICAgICAgICAgIHwga2V5b2YgSlNYLkludHJpbnNpY0VsZW1lbnRzCiAgICA+ID0KICAgICAgICAvLyBuZWVkIHRvIGNoZWNrIGZpcnN0IGlmIGByZWZgIGlzIGEgdmFsaWQgcHJvcCBmb3IgdHNAMy4wCiAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwgaW5mZXIgYHt9YCBpbnN0ZWFkIG9mIGBuZXZlcmAKICAgICAgICAicmVmIiBleHRlbmRzIGtleW9mIENvbXBvbmVudFByb3BzV2l0aFJlZjxDPgogICAgICAgICAgICA/IE5vbk51bGxhYmxlPENvbXBvbmVudFByb3BzV2l0aFJlZjxDPlsicmVmIl0+IGV4dGVuZHMgUmVmPAogICAgICAgICAgICAgICAgaW5mZXIgSW5zdGFuY2UKICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPyBJbnN0YW5jZQogICAgICAgICAgICAgICAgOiBuZXZlcgogICAgICAgICAgICA6IG5ldmVyOwoKICAgIHR5cGUgQ29tcG9uZW50U3RhdGUgPSBhbnk7CgogICAgdHlwZSBLZXkgPSBzdHJpbmcgfCBudW1iZXI7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwgWW91IHNob3VsZG4ndCBuZWVkIHRvIHVzZSB0aGlzIHR5cGUgc2luY2UgeW91IG5ldmVyIHNlZSB0aGVzZSBhdHRyaWJ1dGVzCiAgICAgKiBpbnNpZGUgeW91ciBjb21wb25lbnQgb3IgaGF2ZSB0byB2YWxpZGF0ZSB0aGVtLgogICAgICovCiAgICBpbnRlcmZhY2UgQXR0cmlidXRlcyB7CiAgICAgICAga2V5PzogS2V5IHwgbnVsbCB8IHVuZGVmaW5lZDsKICAgIH0KICAgIGludGVyZmFjZSBSZWZBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgQXR0cmlidXRlcyB7CiAgICAgICAgLyoqCiAgICAgICAgICogQWxsb3dzIGdldHRpbmcgYSByZWYgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS4KICAgICAgICAgKiBPbmNlIHRoZSBjb21wb25lbnQgdW5tb3VudHMsIFJlYWN0IHdpbGwgc2V0IGByZWYuY3VycmVudGAgdG8gYG51bGxgIChvciBjYWxsIHRoZSByZWYgd2l0aCBgbnVsbGAgaWYgeW91IHBhc3NlZCBhIGNhbGxiYWNrIHJlZikuCiAgICAgICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9sZWFybi9yZWZlcmVuY2luZy12YWx1ZXMtd2l0aC1yZWZzI3JlZnMtYW5kLXRoZS1kb20KICAgICAgICAgKi8KICAgICAgICByZWY/OiBSZWY8VD4gfCB1bmRlZmluZWQ7CiAgICB9CiAgICBpbnRlcmZhY2UgQ2xhc3NBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgQXR0cmlidXRlcyB7CiAgICAgICAgLyoqCiAgICAgICAgICogQWxsb3dzIGdldHRpbmcgYSByZWYgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS4KICAgICAgICAgKiBPbmNlIHRoZSBjb21wb25lbnQgdW5tb3VudHMsIFJlYWN0IHdpbGwgc2V0IGByZWYuY3VycmVudGAgdG8gYG51bGxgIChvciBjYWxsIHRoZSByZWYgd2l0aCBgbnVsbGAgaWYgeW91IHBhc3NlZCBhIGNhbGxiYWNrIHJlZikuCiAgICAgICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9sZWFybi9yZWZlcmVuY2luZy12YWx1ZXMtd2l0aC1yZWZzI3JlZnMtYW5kLXRoZS1kb20KICAgICAgICAgKi8KICAgICAgICByZWY/OiBMZWdhY3lSZWY8VD4gfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFJlYWN0RWxlbWVudDxQID0gYW55LCBUIGV4dGVuZHMgc3RyaW5nIHwgSlNYRWxlbWVudENvbnN0cnVjdG9yPGFueT4gPSBzdHJpbmcgfCBKU1hFbGVtZW50Q29uc3RydWN0b3I8YW55Pj4gewogICAgICAgIHR5cGU6IFQ7CiAgICAgICAgcHJvcHM6IFA7CiAgICAgICAga2V5OiBLZXkgfCBudWxsOwogICAgfQoKICAgIGludGVyZmFjZSBSZWFjdENvbXBvbmVudEVsZW1lbnQ8CiAgICAgICAgVCBleHRlbmRzIGtleW9mIEpTWC5JbnRyaW5zaWNFbGVtZW50cyB8IEpTWEVsZW1lbnRDb25zdHJ1Y3Rvcjxhbnk+LAogICAgICAgIFAgPSBQaWNrPENvbXBvbmVudFByb3BzPFQ+LCBFeGNsdWRlPGtleW9mIENvbXBvbmVudFByb3BzPFQ+LCAna2V5JyB8ICdyZWYnPj4KICAgID4gZXh0ZW5kcyBSZWFjdEVsZW1lbnQ8UCwgRXhjbHVkZTxULCBudW1iZXI+PiB7IH0KCiAgICBpbnRlcmZhY2UgRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+IGV4dGVuZHMgUmVhY3RFbGVtZW50PFAsIEZ1bmN0aW9uQ29tcG9uZW50PFA+PiB7CiAgICAgICAgcmVmPzogKCdyZWYnIGV4dGVuZHMga2V5b2YgUCA/IFAgZXh0ZW5kcyB7IHJlZj86IGluZmVyIFIgfCB1bmRlZmluZWQgfSA/IFIgOiBuZXZlciA6IG5ldmVyKSB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIENFbGVtZW50PFAsIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PiA9IENvbXBvbmVudEVsZW1lbnQ8UCwgVD47CiAgICBpbnRlcmZhY2UgQ29tcG9uZW50RWxlbWVudDxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPj4gZXh0ZW5kcyBSZWFjdEVsZW1lbnQ8UCwgQ29tcG9uZW50Q2xhc3M8UD4+IHsKICAgICAgICByZWY/OiBMZWdhY3lSZWY8VD4gfCB1bmRlZmluZWQ7CiAgICB9CgogICAgdHlwZSBDbGFzc2ljRWxlbWVudDxQPiA9IENFbGVtZW50PFAsIENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PjsKCiAgICAvLyBzdHJpbmcgZmFsbGJhY2sgZm9yIGN1c3RvbSB3ZWItY29tcG9uZW50cwogICAgaW50ZXJmYWNlIERPTUVsZW1lbnQ8UCBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHwgU1ZHQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIEVsZW1lbnQ+IGV4dGVuZHMgUmVhY3RFbGVtZW50PFAsIHN0cmluZz4gewogICAgICAgIHJlZjogTGVnYWN5UmVmPFQ+OwogICAgfQoKICAgIC8vIFJlYWN0SFRNTCBmb3IgUmVhY3RIVE1MRWxlbWVudAogICAgaW50ZXJmYWNlIFJlYWN0SFRNTEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50PiBleHRlbmRzIERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxBbGxIVE1MQXR0cmlidXRlczxUPiwgVD4geyB9CgogICAgaW50ZXJmYWNlIERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gZXh0ZW5kcyBET01FbGVtZW50PFAsIFQ+IHsKICAgICAgICB0eXBlOiBrZXlvZiBSZWFjdEhUTUw7CiAgICB9CgogICAgLy8gUmVhY3RTVkcgZm9yIFJlYWN0U1ZHRWxlbWVudAogICAgaW50ZXJmYWNlIFJlYWN0U1ZHRWxlbWVudCBleHRlbmRzIERPTUVsZW1lbnQ8U1ZHQXR0cmlidXRlczxTVkdFbGVtZW50PiwgU1ZHRWxlbWVudD4gewogICAgICAgIHR5cGU6IGtleW9mIFJlYWN0U1ZHOwogICAgfQoKICAgIGludGVyZmFjZSBSZWFjdFBvcnRhbCBleHRlbmRzIFJlYWN0RWxlbWVudCB7CiAgICAgICAga2V5OiBLZXkgfCBudWxsOwogICAgICAgIGNoaWxkcmVuOiBSZWFjdE5vZGU7CiAgICB9CgogICAgLy8KICAgIC8vIEZhY3RvcmllcwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIHR5cGUgRmFjdG9yeTxQPiA9IChwcm9wcz86IEF0dHJpYnV0ZXMgJiBQLCAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pID0+IFJlYWN0RWxlbWVudDxQPjsKCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYEZ1bmN0aW9uQ29tcG9uZW50RmFjdG9yeWAKICAgICAqLwogICAgdHlwZSBTRkNGYWN0b3J5PFA+ID0gRnVuY3Rpb25Db21wb25lbnRGYWN0b3J5PFA+OwoKICAgIHR5cGUgRnVuY3Rpb25Db21wb25lbnRGYWN0b3J5PFA+ID0gKHByb3BzPzogQXR0cmlidXRlcyAmIFAsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSkgPT4gRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+OwoKICAgIHR5cGUgQ29tcG9uZW50RmFjdG9yeTxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPj4gPQogICAgICAgIChwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSkgPT4gQ0VsZW1lbnQ8UCwgVD47CgogICAgdHlwZSBDRmFjdG9yeTxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPj4gPSBDb21wb25lbnRGYWN0b3J5PFAsIFQ+OwogICAgdHlwZSBDbGFzc2ljRmFjdG9yeTxQPiA9IENGYWN0b3J5PFAsIENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PjsKCiAgICB0eXBlIERPTUZhY3Rvcnk8UCBleHRlbmRzIERPTUF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBFbGVtZW50PiA9CiAgICAgICAgKHByb3BzPzogQ2xhc3NBdHRyaWJ1dGVzPFQ+ICYgUCB8IG51bGwsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSkgPT4gRE9NRWxlbWVudDxQLCBUPjsKCiAgICBpbnRlcmZhY2UgSFRNTEZhY3Rvcnk8VCBleHRlbmRzIEhUTUxFbGVtZW50PiBleHRlbmRzIERldGFpbGVkSFRNTEZhY3Rvcnk8QWxsSFRNTEF0dHJpYnV0ZXM8VD4sIFQ+IHt9CgogICAgaW50ZXJmYWNlIERldGFpbGVkSFRNTEZhY3Rvcnk8UCBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+LCBUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+IGV4dGVuZHMgRE9NRmFjdG9yeTxQLCBUPiB7CiAgICAgICAgKHByb3BzPzogQ2xhc3NBdHRyaWJ1dGVzPFQ+ICYgUCB8IG51bGwsIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQLCBUPjsKICAgIH0KCiAgICBpbnRlcmZhY2UgU1ZHRmFjdG9yeSBleHRlbmRzIERPTUZhY3Rvcnk8U1ZHQXR0cmlidXRlczxTVkdFbGVtZW50PiwgU1ZHRWxlbWVudD4gewogICAgICAgIChwcm9wcz86IENsYXNzQXR0cmlidXRlczxTVkdFbGVtZW50PiAmIFNWR0F0dHJpYnV0ZXM8U1ZHRWxlbWVudD4gfCBudWxsLCAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pOiBSZWFjdFNWR0VsZW1lbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCAtIFRoaXMgdHlwZSBpcyBub3QgcmVsZXZhbnQgd2hlbiB1c2luZyBSZWFjdC4gSW5saW5lIHRoZSB0eXBlIGluc3RlYWQgdG8gbWFrZSB0aGUgaW50ZW50IGNsZWFyLgogICAgICovCiAgICB0eXBlIFJlYWN0VGV4dCA9IHN0cmluZyB8IG51bWJlcjsKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQgLSBUaGlzIHR5cGUgaXMgbm90IHJlbGV2YW50IHdoZW4gdXNpbmcgUmVhY3QuIElubGluZSB0aGUgdHlwZSBpbnN0ZWFkIHRvIG1ha2UgdGhlIGludGVudCBjbGVhci4KICAgICAqLwogICAgdHlwZSBSZWFjdENoaWxkID0gUmVhY3RFbGVtZW50IHwgc3RyaW5nIHwgbnVtYmVyOwoKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQgVXNlIGVpdGhlciBgUmVhY3ROb2RlW11gIGlmIHlvdSBuZWVkIGFuIGFycmF5IG9yIGBJdGVyYWJsZTxSZWFjdE5vZGU+YCBpZiBpdHMgcGFzc2VkIHRvIGEgaG9zdCBjb21wb25lbnQuCiAgICAgKi8KICAgIGludGVyZmFjZSBSZWFjdE5vZGVBcnJheSBleHRlbmRzIFJlYWRvbmx5QXJyYXk8UmVhY3ROb2RlPiB7fQogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCAtIFRoaXMgdHlwZSBpcyBub3QgcmVsZXZhbnQgd2hlbiB1c2luZyBSZWFjdC4gSW5saW5lIHRoZSB0eXBlIGluc3RlYWQgdG8gbWFrZSB0aGUgaW50ZW50IGNsZWFyLgogICAgICovCiAgICB0eXBlIFJlYWN0RnJhZ21lbnQgPSBJdGVyYWJsZTxSZWFjdE5vZGU+OwoKICAgIC8qKgogICAgICogRm9yIGludGVybmFsIHVzYWdlIG9ubHkuCiAgICAgKiBEaWZmZXJlbnQgcmVsZWFzZSBjaGFubmVscyBkZWNsYXJlIGFkZGl0aW9uYWwgdHlwZXMgb2YgUmVhY3ROb2RlIHRoaXMgcGFydGljdWxhciByZWxlYXNlIGNoYW5uZWwgYWNjZXB0cy4KICAgICAqIEFwcCBvciBsaWJyYXJ5IHR5cGVzIHNob3VsZCBuZXZlciBhdWdtZW50IHRoaXMgaW50ZXJmYWNlLgogICAgICovCiAgICBpbnRlcmZhY2UgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfUkVBQ1RfTk9ERVMge30KICAgIHR5cGUgUmVhY3ROb2RlID0KICAgICAgICB8IFJlYWN0RWxlbWVudAogICAgICAgIHwgc3RyaW5nCiAgICAgICAgfCBudW1iZXIKICAgICAgICB8IEl0ZXJhYmxlPFJlYWN0Tm9kZT4KICAgICAgICB8IFJlYWN0UG9ydGFsCiAgICAgICAgfCBib29sZWFuCiAgICAgICAgfCBudWxsCiAgICAgICAgfCB1bmRlZmluZWQKICAgICAgICB8IERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX1JFQUNUX05PREVTW2tleW9mIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX1JFQUNUX05PREVTXTsKCiAgICAvLwogICAgLy8gVG9wIExldmVsIEFQSQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIC8vIERPTSBFbGVtZW50cwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeTxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KAogICAgICAgIHR5cGU6IGtleW9mIFJlYWN0SFRNTCk6IEhUTUxGYWN0b3J5PFQ+OwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeSgKICAgICAgICB0eXBlOiBrZXlvZiBSZWFjdFNWRyk6IFNWR0ZhY3Rvcnk7CiAgICBmdW5jdGlvbiBjcmVhdGVGYWN0b3J5PFAgZXh0ZW5kcyBET01BdHRyaWJ1dGVzPFQ+LCBUIGV4dGVuZHMgRWxlbWVudD4oCiAgICAgICAgdHlwZTogc3RyaW5nKTogRE9NRmFjdG9yeTxQLCBUPjsKCiAgICAvLyBDdXN0b20gY29tcG9uZW50cwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeTxQPih0eXBlOiBGdW5jdGlvbkNvbXBvbmVudDxQPik6IEZ1bmN0aW9uQ29tcG9uZW50RmFjdG9yeTxQPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhY3Rvcnk8UD4oCiAgICAgICAgdHlwZTogQ2xhc3NUeXBlPFAsIENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+LCBDbGFzc2ljQ29tcG9uZW50Q2xhc3M8UD4+KTogQ0ZhY3Rvcnk8UCwgQ2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4+OwogICAgZnVuY3Rpb24gY3JlYXRlRmFjdG9yeTxQLCBUIGV4dGVuZHMgQ29tcG9uZW50PFAsIENvbXBvbmVudFN0YXRlPiwgQyBleHRlbmRzIENvbXBvbmVudENsYXNzPFA+PigKICAgICAgICB0eXBlOiBDbGFzc1R5cGU8UCwgVCwgQz4pOiBDRmFjdG9yeTxQLCBUPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhY3Rvcnk8UD4odHlwZTogQ29tcG9uZW50Q2xhc3M8UD4pOiBGYWN0b3J5PFA+OwoKICAgIC8vIERPTSBFbGVtZW50cwogICAgLy8gVE9ETzogZ2VuZXJhbGl6ZSB0aGlzIHRvIGV2ZXJ5dGhpbmcgaW4gYGtleW9mIFJlYWN0SFRNTGAsIG5vdCBqdXN0ICJpbnB1dCIKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQoCiAgICAgICAgdHlwZTogImlucHV0IiwKICAgICAgICBwcm9wcz86IElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gJiBDbGFzc0F0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxJbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LCBIVE1MSW5wdXRFbGVtZW50PjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+LCBUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KAogICAgICAgIHR5cGU6IGtleW9mIFJlYWN0SFRNTCwKICAgICAgICBwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQLCBUPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIFNWR0F0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBTVkdFbGVtZW50PigKICAgICAgICB0eXBlOiBrZXlvZiBSZWFjdFNWRywKICAgICAgICBwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IFJlYWN0U1ZHRWxlbWVudDsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIERPTUF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBFbGVtZW50PigKICAgICAgICB0eXBlOiBzdHJpbmcsCiAgICAgICAgcHJvcHM/OiBDbGFzc0F0dHJpYnV0ZXM8VD4gJiBQIHwgbnVsbCwKICAgICAgICAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pOiBET01FbGVtZW50PFAsIFQ+OwoKICAgIC8vIEN1c3RvbSBjb21wb25lbnRzCgogICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudDxQIGV4dGVuZHMge30+KAogICAgICAgIHR5cGU6IEZ1bmN0aW9uQ29tcG9uZW50PFA+LAogICAgICAgIHByb3BzPzogQXR0cmlidXRlcyAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IEZ1bmN0aW9uQ29tcG9uZW50RWxlbWVudDxQPjsKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8UCBleHRlbmRzIHt9PigKICAgICAgICB0eXBlOiBDbGFzc1R5cGU8UCwgQ2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4sIENsYXNzaWNDb21wb25lbnRDbGFzczxQPj4sCiAgICAgICAgcHJvcHM/OiBDbGFzc0F0dHJpYnV0ZXM8Q2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4+ICYgUCB8IG51bGwsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogQ0VsZW1lbnQ8UCwgQ2xhc3NpY0NvbXBvbmVudDxQLCBDb21wb25lbnRTdGF0ZT4+OwogICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudDxQIGV4dGVuZHMge30sIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+LCBDIGV4dGVuZHMgQ29tcG9uZW50Q2xhc3M8UD4+KAogICAgICAgIHR5cGU6IENsYXNzVHlwZTxQLCBULCBDPiwKICAgICAgICBwcm9wcz86IENsYXNzQXR0cmlidXRlczxUPiAmIFAgfCBudWxsLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IENFbGVtZW50PFAsIFQ+OwogICAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudDxQIGV4dGVuZHMge30+KAogICAgICAgIHR5cGU6IEZ1bmN0aW9uQ29tcG9uZW50PFA+IHwgQ29tcG9uZW50Q2xhc3M8UD4gfCBzdHJpbmcsCiAgICAgICAgcHJvcHM/OiBBdHRyaWJ1dGVzICYgUCB8IG51bGwsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RFbGVtZW50PFA+OwoKICAgIC8vIERPTSBFbGVtZW50cwogICAgLy8gUmVhY3RIVE1MRWxlbWVudAogICAgZnVuY3Rpb24gY2xvbmVFbGVtZW50PFAgZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIEhUTUxFbGVtZW50PigKICAgICAgICBlbGVtZW50OiBEZXRhaWxlZFJlYWN0SFRNTEVsZW1lbnQ8UCwgVD4sCiAgICAgICAgcHJvcHM/OiBQLAogICAgICAgIC4uLmNoaWxkcmVuOiBSZWFjdE5vZGVbXSk6IERldGFpbGVkUmVhY3RIVE1MRWxlbWVudDxQLCBUPjsKICAgIC8vIFJlYWN0SFRNTEVsZW1lbnQsIGxlc3Mgc3BlY2lmaWMKICAgIGZ1bmN0aW9uIGNsb25lRWxlbWVudDxQIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4sIFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oCiAgICAgICAgZWxlbWVudDogUmVhY3RIVE1MRWxlbWVudDxUPiwKICAgICAgICBwcm9wcz86IFAsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RIVE1MRWxlbWVudDxUPjsKICAgIC8vIFNWR0VsZW1lbnQKICAgIGZ1bmN0aW9uIGNsb25lRWxlbWVudDxQIGV4dGVuZHMgU1ZHQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIFNWR0VsZW1lbnQ+KAogICAgICAgIGVsZW1lbnQ6IFJlYWN0U1ZHRWxlbWVudCwKICAgICAgICBwcm9wcz86IFAsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RTVkdFbGVtZW50OwogICAgLy8gRE9NIEVsZW1lbnQgKGhhcyB0byBiZSB0aGUgbGFzdCwgYmVjYXVzZSB0eXBlIGNoZWNraW5nIHN0b3BzIGF0IGZpcnN0IG92ZXJsb2FkIHRoYXQgZml0cykKICAgIGZ1bmN0aW9uIGNsb25lRWxlbWVudDxQIGV4dGVuZHMgRE9NQXR0cmlidXRlczxUPiwgVCBleHRlbmRzIEVsZW1lbnQ+KAogICAgICAgIGVsZW1lbnQ6IERPTUVsZW1lbnQ8UCwgVD4sCiAgICAgICAgcHJvcHM/OiBET01BdHRyaWJ1dGVzPFQ+ICYgUCwKICAgICAgICAuLi5jaGlsZHJlbjogUmVhY3ROb2RlW10pOiBET01FbGVtZW50PFAsIFQ+OwoKICAgIC8vIEN1c3RvbSBjb21wb25lbnRzCiAgICBmdW5jdGlvbiBjbG9uZUVsZW1lbnQ8UD4oCiAgICAgICAgZWxlbWVudDogRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+LAogICAgICAgIHByb3BzPzogUGFydGlhbDxQPiAmIEF0dHJpYnV0ZXMsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogRnVuY3Rpb25Db21wb25lbnRFbGVtZW50PFA+OwogICAgZnVuY3Rpb24gY2xvbmVFbGVtZW50PFAsIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+PigKICAgICAgICBlbGVtZW50OiBDRWxlbWVudDxQLCBUPiwKICAgICAgICBwcm9wcz86IFBhcnRpYWw8UD4gJiBDbGFzc0F0dHJpYnV0ZXM8VD4sCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogQ0VsZW1lbnQ8UCwgVD47CiAgICBmdW5jdGlvbiBjbG9uZUVsZW1lbnQ8UD4oCiAgICAgICAgZWxlbWVudDogUmVhY3RFbGVtZW50PFA+LAogICAgICAgIHByb3BzPzogUGFydGlhbDxQPiAmIEF0dHJpYnV0ZXMsCiAgICAgICAgLi4uY2hpbGRyZW46IFJlYWN0Tm9kZVtdKTogUmVhY3RFbGVtZW50PFA+OwoKICAgIC8vIENvbnRleHQgdmlhIFJlbmRlclByb3BzCiAgICBpbnRlcmZhY2UgUHJvdmlkZXJQcm9wczxUPiB7CiAgICAgICAgdmFsdWU6IFQ7CiAgICAgICAgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbnN1bWVyUHJvcHM8VD4gewogICAgICAgIGNoaWxkcmVuOiAodmFsdWU6IFQpID0+IFJlYWN0Tm9kZTsKICAgIH0KCiAgICAvLyBUT0RPOiBzaW1pbGFyIHRvIGhvdyBGcmFnbWVudCBpcyBhY3R1YWxseSBhIHN5bWJvbCwgdGhlIHZhbHVlcyByZXR1cm5lZCBmcm9tIGNyZWF0ZUNvbnRleHQsCiAgICAvLyBmb3J3YXJkUmVmIGFuZCBtZW1vIGFyZSBhY3R1YWxseSBvYmplY3RzIHRoYXQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5IGJ5IHRoZSByZW5kZXJlcjsgc2VlOgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvdjE2LjYuMC9wYWNrYWdlcy9yZWFjdC9zcmMvUmVhY3RDb250ZXh0LmpzI0wzNS1MNDgKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL3YxNi42LjAvcGFja2FnZXMvcmVhY3Qvc3JjL2ZvcndhcmRSZWYuanMjTDQyLUw0NQogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvdjE2LjYuMC9wYWNrYWdlcy9yZWFjdC9zcmMvbWVtby5qcyNMMjctTDMxCiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIG5vIHdheSBvZiB0ZWxsaW5nIHRoZSBKU1ggcGFyc2VyIHRoYXQgaXQncyBhIEpTWCBlbGVtZW50IHR5cGUgb3IgaXRzIHByb3BzIG90aGVyIHRoYW4KICAgIC8vIGJ5IHByZXRlbmRpbmcgdG8gYmUgYSBub3JtYWwgY29tcG9uZW50LgogICAgLy8KICAgIC8vIFdlIGRvbid0IGp1c3QgdXNlIENvbXBvbmVudFR5cGUgb3IgRnVuY3Rpb25Db21wb25lbnQgdHlwZXMgYmVjYXVzZSB5b3UgYXJlIG5vdCBzdXBwb3NlZCB0byBhdHRhY2ggc3RhdGljcyB0byB0aGlzCiAgICAvLyBvYmplY3QsIGJ1dCByYXRoZXIgdG8gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLgogICAgaW50ZXJmYWNlIEV4b3RpY0NvbXBvbmVudDxQID0ge30+IHsKICAgICAgICAvKioKICAgICAgICAgKiAqKk5PVEUqKjogRXhvdGljIGNvbXBvbmVudHMgYXJlIG5vdCBjYWxsYWJsZS4KICAgICAgICAgKi8KICAgICAgICAocHJvcHM6IFApOiBSZWFjdE5vZGU7CiAgICAgICAgcmVhZG9ubHkgJCR0eXBlb2Y6IHN5bWJvbDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTmFtZWRFeG90aWNDb21wb25lbnQ8UCA9IHt9PiBleHRlbmRzIEV4b3RpY0NvbXBvbmVudDxQPiB7CiAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFByb3ZpZGVyRXhvdGljQ29tcG9uZW50PFA+IGV4dGVuZHMgRXhvdGljQ29tcG9uZW50PFA+IHsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIENvbnRleHRUeXBlPEMgZXh0ZW5kcyBDb250ZXh0PGFueT4+ID0gQyBleHRlbmRzIENvbnRleHQ8aW5mZXIgVD4gPyBUIDogbmV2ZXI7CgogICAgLy8gTk9URTogb25seSB0aGUgQ29udGV4dCBvYmplY3QgaXRzZWxmIGNhbiBnZXQgYSBkaXNwbGF5TmFtZQogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0LWRldnRvb2xzL2Jsb2IvZTBiODU0ZTRjL2JhY2tlbmQvYXR0YWNoUmVuZGVyZXJGaWJlci5qcyNMMzEwLUwzMjUKICAgIHR5cGUgUHJvdmlkZXI8VD4gPSBQcm92aWRlckV4b3RpY0NvbXBvbmVudDxQcm92aWRlclByb3BzPFQ+PjsKICAgIHR5cGUgQ29uc3VtZXI8VD4gPSBFeG90aWNDb21wb25lbnQ8Q29uc3VtZXJQcm9wczxUPj47CiAgICBpbnRlcmZhY2UgQ29udGV4dDxUPiB7CiAgICAgICAgUHJvdmlkZXI6IFByb3ZpZGVyPFQ+OwogICAgICAgIENvbnN1bWVyOiBDb25zdW1lcjxUPjsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQ8VD4oCiAgICAgICAgLy8gSWYgeW91IHRob3VnaHQgdGhpcyBzaG91bGQgYmUgb3B0aW9uYWwsIHNlZQogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL3B1bGwvMjQ1MDkjaXNzdWVjb21tZW50LTM4MjIxMzEwNgogICAgICAgIGRlZmF1bHRWYWx1ZTogVCwKICAgICk6IENvbnRleHQ8VD47CgogICAgZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQ8UD4ob2JqZWN0OiB7fSB8IG51bGwgfCB1bmRlZmluZWQpOiBvYmplY3QgaXMgUmVhY3RFbGVtZW50PFA+OwoKICAgIC8vIFN5bmMgd2l0aCBgUmVhY3RDaGlsZHJlbmAgdW50aWwgYFJlYWN0Q2hpbGRyZW5gIGlzIHJlbW92ZWQuCiAgICBjb25zdCBDaGlsZHJlbjogewogICAgICAgIG1hcDxULCBDPihjaGlsZHJlbjogQyB8IFJlYWRvbmx5QXJyYXk8Qz4sIGZuOiAoY2hpbGQ6IEMsIGluZGV4OiBudW1iZXIpID0+IFQpOgogICAgICAgICAgICBDIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCA/IEMgOiBBcnJheTxFeGNsdWRlPFQsIGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkPj47CiAgICAgICAgZm9yRWFjaDxDPihjaGlsZHJlbjogQyB8IFJlYWRvbmx5QXJyYXk8Qz4sIGZuOiAoY2hpbGQ6IEMsIGluZGV4OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkOwogICAgICAgIGNvdW50KGNoaWxkcmVuOiBhbnkpOiBudW1iZXI7CiAgICAgICAgb25seTxDPihjaGlsZHJlbjogQyk6IEMgZXh0ZW5kcyBhbnlbXSA/IG5ldmVyIDogQzsKICAgICAgICB0b0FycmF5KGNoaWxkcmVuOiBSZWFjdE5vZGUgfCBSZWFjdE5vZGVbXSk6IEFycmF5PEV4Y2x1ZGU8UmVhY3ROb2RlLCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZD4+OwogICAgfTsKICAgIGNvbnN0IEZyYWdtZW50OiBFeG90aWNDb21wb25lbnQ8eyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB8IHVuZGVmaW5lZCB9PjsKICAgIGNvbnN0IFN0cmljdE1vZGU6IEV4b3RpY0NvbXBvbmVudDx7IGNoaWxkcmVuPzogUmVhY3ROb2RlIHwgdW5kZWZpbmVkIH0+OwoKICAgIGludGVyZmFjZSBTdXNwZW5zZVByb3BzIHsKICAgICAgICBjaGlsZHJlbj86IFJlYWN0Tm9kZSB8IHVuZGVmaW5lZDsKCiAgICAgICAgLyoqIEEgZmFsbGJhY2sgcmVhY3QgdHJlZSB0byBzaG93IHdoZW4gYSBTdXNwZW5zZSBjaGlsZCAobGlrZSBSZWFjdC5sYXp5KSBzdXNwZW5kcyAqLwogICAgICAgIGZhbGxiYWNrPzogUmVhY3ROb2RlOwogICAgfQoKICAgIGNvbnN0IFN1c3BlbnNlOiBFeG90aWNDb21wb25lbnQ8U3VzcGVuc2VQcm9wcz47CiAgICBjb25zdCB2ZXJzaW9uOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiB7QGxpbmsgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L1Byb2ZpbGVyI29ucmVuZGVyLWNhbGxiYWNrIFByb2ZpbGVyIEFQSX0KICAgICAqLwogICAgdHlwZSBQcm9maWxlck9uUmVuZGVyQ2FsbGJhY2sgPSAoCiAgICAgICAgaWQ6IHN0cmluZywKICAgICAgICBwaGFzZTogIm1vdW50IiB8ICJ1cGRhdGUiLAogICAgICAgIGFjdHVhbER1cmF0aW9uOiBudW1iZXIsCiAgICAgICAgYmFzZUR1cmF0aW9uOiBudW1iZXIsCiAgICAgICAgc3RhcnRUaW1lOiBudW1iZXIsCiAgICAgICAgY29tbWl0VGltZTogbnVtYmVyLAogICAgICAgIGludGVyYWN0aW9uczogU2V0PFNjaGVkdWxlckludGVyYWN0aW9uPiwKICAgICkgPT4gdm9pZDsKICAgIGludGVyZmFjZSBQcm9maWxlclByb3BzIHsKICAgICAgICBjaGlsZHJlbj86IFJlYWN0Tm9kZSB8IHVuZGVmaW5lZDsKICAgICAgICBpZDogc3RyaW5nOwogICAgICAgIG9uUmVuZGVyOiBQcm9maWxlck9uUmVuZGVyQ2FsbGJhY2s7CiAgICB9CgogICAgY29uc3QgUHJvZmlsZXI6IEV4b3RpY0NvbXBvbmVudDxQcm9maWxlclByb3BzPjsKCiAgICAvLwogICAgLy8gQ29tcG9uZW50IEFQSQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIHR5cGUgUmVhY3RJbnN0YW5jZSA9IENvbXBvbmVudDxhbnk+IHwgRWxlbWVudDsKCiAgICAvLyBCYXNlIGNvbXBvbmVudCBmb3IgcGxhaW4gSlMgY2xhc3NlcwogICAgaW50ZXJmYWNlIENvbXBvbmVudDxQID0ge30sIFMgPSB7fSwgU1MgPSBhbnk+IGV4dGVuZHMgQ29tcG9uZW50TGlmZWN5Y2xlPFAsIFMsIFNTPiB7IH0KICAgIGNsYXNzIENvbXBvbmVudDxQLCBTPiB7CiAgICAgICAgLy8gdHNsaW50IHdvbid0IGxldCBtZSBmb3JtYXQgdGhlIHNhbXBsZSBjb2RlIGluIGEgd2F5IHRoYXQgdnNjb2RlIGxpa2VzIGl0IDooCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgc2V0LCBgdGhpcy5jb250ZXh0YCB3aWxsIGJlIHNldCBhdCBydW50aW1lIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBnaXZlbiBDb250ZXh0LgogICAgICAgICAqCiAgICAgICAgICogVXNhZ2U6CiAgICAgICAgICoKICAgICAgICAgKiBgYGB0cwogICAgICAgICAqIHR5cGUgTXlDb250ZXh0ID0gbnVtYmVyCiAgICAgICAgICogY29uc3QgQ3R4ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxNeUNvbnRleHQ+KDApCiAgICAgICAgICoKICAgICAgICAgKiBjbGFzcyBGb28gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgICAqICAgc3RhdGljIGNvbnRleHRUeXBlID0gQ3R4CiAgICAgICAgICogICBjb250ZXh0ITogUmVhY3QuQ29udGV4dFR5cGU8dHlwZW9mIEN0eD4KICAgICAgICAgKiAgIHJlbmRlciAoKSB7CiAgICAgICAgICogICAgIHJldHVybiA8Pk15IGNvbnRleHQncyB2YWx1ZToge3RoaXMuY29udGV4dH08Lz47CiAgICAgICAgICogICB9CiAgICAgICAgICogfQogICAgICAgICAqIGBgYAogICAgICAgICAqCiAgICAgICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvQ29tcG9uZW50I3N0YXRpYy1jb250ZXh0dHlwZQogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBjb250ZXh0VHlwZT86IENvbnRleHQ8YW55PiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgdXNpbmcgdGhlIG5ldyBzdHlsZSBjb250ZXh0LCByZS1kZWNsYXJlIHRoaXMgaW4geW91ciBjbGFzcyB0byBiZSB0aGUKICAgICAgICAgKiBgUmVhY3QuQ29udGV4dFR5cGVgIG9mIHlvdXIgYHN0YXRpYyBjb250ZXh0VHlwZWAuCiAgICAgICAgICogU2hvdWxkIGJlIHVzZWQgd2l0aCB0eXBlIGFubm90YXRpb24gb3Igc3RhdGljIGNvbnRleHRUeXBlLgogICAgICAgICAqCiAgICAgICAgICogYGBgdHMKICAgICAgICAgKiBzdGF0aWMgY29udGV4dFR5cGUgPSBNeUNvbnRleHQKICAgICAgICAgKiAvLyBGb3IgVFMgcHJlLTMuNzoKICAgICAgICAgKiBjb250ZXh0ITogUmVhY3QuQ29udGV4dFR5cGU8dHlwZW9mIE15Q29udGV4dD4KICAgICAgICAgKiAvLyBGb3IgVFMgMy43IGFuZCBhYm92ZToKICAgICAgICAgKiBkZWNsYXJlIGNvbnRleHQ6IFJlYWN0LkNvbnRleHRUeXBlPHR5cGVvZiBNeUNvbnRleHQ+CiAgICAgICAgICogYGBgCiAgICAgICAgICoKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC9Db21wb25lbnQjY29udGV4dAogICAgICAgICAqLwogICAgICAgIGNvbnRleHQ6IHVua25vd247CgogICAgICAgIGNvbnN0cnVjdG9yKHByb3BzOiBSZWFkb25seTxQPiB8IFApOwogICAgICAgIC8qKgogICAgICAgICAqIEBkZXByZWNhdGVkCiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9kb2NzL2xlZ2FjeS1jb250ZXh0Lmh0bWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwcm9wczogUCwgY29udGV4dDogYW55KTsKCiAgICAgICAgLy8gV2UgTVVTVCBrZWVwIHNldFN0YXRlKCkgYXMgYSB1bmlmaWVkIHNpZ25hdHVyZSBiZWNhdXNlIGl0IGFsbG93cyBwcm9wZXIgY2hlY2tpbmcgb2YgdGhlIG1ldGhvZCByZXR1cm4gdHlwZS4KICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL2lzc3Vlcy8xODM2NSNpc3N1ZWNvbW1lbnQtMzUxMDEzMjU3CiAgICAgICAgLy8gQWxzbywgdGhlIGAgfCBTYCBhbGxvd3MgaW50ZWxsaXNlbnNlIHRvIG5vdCBiZSBkdW1iaXNlbnNlCiAgICAgICAgc2V0U3RhdGU8SyBleHRlbmRzIGtleW9mIFM+KAogICAgICAgICAgICBzdGF0ZTogKChwcmV2U3RhdGU6IFJlYWRvbmx5PFM+LCBwcm9wczogUmVhZG9ubHk8UD4pID0+IChQaWNrPFMsIEs+IHwgUyB8IG51bGwpKSB8IChQaWNrPFMsIEs+IHwgUyB8IG51bGwpLAogICAgICAgICAgICBjYWxsYmFjaz86ICgpID0+IHZvaWQKICAgICAgICApOiB2b2lkOwoKICAgICAgICBmb3JjZVVwZGF0ZShjYWxsYmFjaz86ICgpID0+IHZvaWQpOiB2b2lkOwogICAgICAgIHJlbmRlcigpOiBSZWFjdE5vZGU7CgogICAgICAgIHJlYWRvbmx5IHByb3BzOiBSZWFkb25seTxQPjsKICAgICAgICBzdGF0ZTogUmVhZG9ubHk8Uz47CiAgICAgICAgLyoqCiAgICAgICAgICogQGRlcHJlY2F0ZWQKICAgICAgICAgKiBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9kb2NzL3JlZnMtYW5kLXRoZS1kb20uaHRtbCNsZWdhY3ktYXBpLXN0cmluZy1yZWZzCiAgICAgICAgICovCiAgICAgICAgcmVmczogewogICAgICAgICAgICBba2V5OiBzdHJpbmddOiBSZWFjdEluc3RhbmNlCiAgICAgICAgfTsKICAgIH0KCiAgICBjbGFzcyBQdXJlQ29tcG9uZW50PFAgPSB7fSwgUyA9IHt9LCBTUyA9IGFueT4gZXh0ZW5kcyBDb21wb25lbnQ8UCwgUywgU1M+IHsgfQoKICAgIGludGVyZmFjZSBDbGFzc2ljQ29tcG9uZW50PFAgPSB7fSwgUyA9IHt9PiBleHRlbmRzIENvbXBvbmVudDxQLCBTPiB7CiAgICAgICAgcmVwbGFjZVN0YXRlKG5leHRTdGF0ZTogUywgY2FsbGJhY2s/OiAoKSA9PiB2b2lkKTogdm9pZDsKICAgICAgICBpc01vdW50ZWQoKTogYm9vbGVhbjsKICAgICAgICBnZXRJbml0aWFsU3RhdGU/KCk6IFM7CiAgICB9CgogICAgaW50ZXJmYWNlIENoaWxkQ29udGV4dFByb3ZpZGVyPENDPiB7CiAgICAgICAgZ2V0Q2hpbGRDb250ZXh0KCk6IENDOwogICAgfQoKICAgIC8vCiAgICAvLyBDbGFzcyBJbnRlcmZhY2VzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgdHlwZSBGQzxQID0ge30+ID0gRnVuY3Rpb25Db21wb25lbnQ8UD47CgogICAgaW50ZXJmYWNlIEZ1bmN0aW9uQ29tcG9uZW50PFAgPSB7fT4gewogICAgICAgIChwcm9wczogUCwgY29udGV4dD86IGFueSk6IFJlYWN0Tm9kZTsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdFByb3BzPzogUGFydGlhbDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIC0gRXF1aXZhbGVudCB3aXRoIGBSZWFjdC5GQ2AuCiAgICAgKi8KICAgIHR5cGUgVkZDPFAgPSB7fT4gPSBWb2lkRnVuY3Rpb25Db21wb25lbnQ8UD47CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCAtIEVxdWl2YWxlbnQgd2l0aCBgUmVhY3QuRnVuY3Rpb25Db21wb25lbnRgLgogICAgICovCiAgICBpbnRlcmZhY2UgVm9pZEZ1bmN0aW9uQ29tcG9uZW50PFAgPSB7fT4gewogICAgICAgIChwcm9wczogUCwgY29udGV4dD86IGFueSk6IFJlYWN0Tm9kZTsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdFByb3BzPzogUGFydGlhbDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEZvcndhcmRlZFJlZjxUPiA9ICgoaW5zdGFuY2U6IFQgfCBudWxsKSA9PiB2b2lkKSB8IE11dGFibGVSZWZPYmplY3Q8VCB8IG51bGw+IHwgbnVsbDsKCiAgICBpbnRlcmZhY2UgRm9yd2FyZFJlZlJlbmRlckZ1bmN0aW9uPFQsIFAgPSB7fT4gewogICAgICAgIChwcm9wczogUCwgcmVmOiBGb3J3YXJkZWRSZWY8VD4pOiBSZWFjdE5vZGU7CiAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLy8gZXhwbGljaXQgcmVqZWN0ZWQgd2l0aCBgbmV2ZXJgIHJlcXVpcmVkIGR1ZSB0bwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzY4MjYKICAgICAgICAvKioKICAgICAgICAgKiBkZWZhdWx0UHJvcHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gcmVuZGVyIGZ1bmN0aW9ucwogICAgICAgICAqLwogICAgICAgIGRlZmF1bHRQcm9wcz86IG5ldmVyIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIHByb3BUeXBlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiByZW5kZXIgZnVuY3Rpb25zCiAgICAgICAgICovCiAgICAgICAgcHJvcFR5cGVzPzogbmV2ZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbXBvbmVudENsYXNzPFAgPSB7fSwgUyA9IENvbXBvbmVudFN0YXRlPiBleHRlbmRzIFN0YXRpY0xpZmVjeWNsZTxQLCBTPiB7CiAgICAgICAgbmV3IChwcm9wczogUCwgY29udGV4dD86IGFueSk6IENvbXBvbmVudDxQLCBTPjsKICAgICAgICBwcm9wVHlwZXM/OiBXZWFrVmFsaWRhdGlvbk1hcDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZT86IENvbnRleHQ8YW55PiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgY2hpbGRDb250ZXh0VHlwZXM/OiBWYWxpZGF0aW9uTWFwPGFueT4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdFByb3BzPzogUGFydGlhbDxQPiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgQ2xhc3NpY0NvbXBvbmVudENsYXNzPFAgPSB7fT4gZXh0ZW5kcyBDb21wb25lbnRDbGFzczxQPiB7CiAgICAgICAgbmV3IChwcm9wczogUCwgY29udGV4dD86IGFueSk6IENsYXNzaWNDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+OwogICAgICAgIGdldERlZmF1bHRQcm9wcz8oKTogUDsKICAgIH0KCiAgICAvKioKICAgICAqIFdlIHVzZSBhbiBpbnRlcnNlY3Rpb24gdHlwZSB0byBpbmZlciBtdWx0aXBsZSB0eXBlIHBhcmFtZXRlcnMgZnJvbQogICAgICogYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGlzIHVzZWZ1bCBmb3IgbWFueSB0b3AtbGV2ZWwgQVBJIGRlZnMuCiAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy83MjM0IGZvciBtb3JlIGluZm8uCiAgICAgKi8KICAgIHR5cGUgQ2xhc3NUeXBlPFAsIFQgZXh0ZW5kcyBDb21wb25lbnQ8UCwgQ29tcG9uZW50U3RhdGU+LCBDIGV4dGVuZHMgQ29tcG9uZW50Q2xhc3M8UD4+ID0KICAgICAgICBDICYKICAgICAgICAobmV3IChwcm9wczogUCwgY29udGV4dD86IGFueSkgPT4gVCk7CgogICAgLy8KICAgIC8vIENvbXBvbmVudCBTcGVjcyBhbmQgTGlmZWN5Y2xlCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgLy8gVGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgc29tZXRoaW5nIGxpa2UgYExpZmVjeWNsZTxQLCBTPiB8IERlcHJlY2F0ZWRMaWZlY3ljbGU8UCwgUz5gLAogICAgLy8gYXMgUmVhY3Qgd2lsbCBfbm90XyBjYWxsIHRoZSBkZXByZWNhdGVkIGxpZmVjeWNsZSBtZXRob2RzIGlmIGFueSBvZiB0aGUgbmV3IGxpZmVjeWNsZQogICAgLy8gbWV0aG9kcyBhcmUgcHJlc2VudC4KICAgIGludGVyZmFjZSBDb21wb25lbnRMaWZlY3ljbGU8UCwgUywgU1MgPSBhbnk+IGV4dGVuZHMgTmV3TGlmZWN5Y2xlPFAsIFMsIFNTPiwgRGVwcmVjYXRlZExpZmVjeWNsZTxQLCBTPiB7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGEgY29tcG9uZW50IGlzIG1vdW50ZWQuIFNldHRpbmcgc3RhdGUgaGVyZSB3aWxsIHRyaWdnZXIgcmUtcmVuZGVyaW5nLgogICAgICAgICAqLwogICAgICAgIGNvbXBvbmVudERpZE1vdW50PygpOiB2b2lkOwogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2hhbmdlIGluIHByb3BzIGFuZCBzdGF0ZSBzaG91bGQgdHJpZ2dlciBhIHJlLXJlbmRlci4KICAgICAgICAgKgogICAgICAgICAqIGBDb21wb25lbnRgIGFsd2F5cyByZXR1cm5zIHRydWUuCiAgICAgICAgICogYFB1cmVDb21wb25lbnRgIGltcGxlbWVudHMgYSBzaGFsbG93IGNvbXBhcmlzb24gb24gcHJvcHMgYW5kIHN0YXRlIGFuZCByZXR1cm5zIHRydWUgaWYgYW55CiAgICAgICAgICogcHJvcHMgb3Igc3RhdGVzIGhhdmUgY2hhbmdlZC4KICAgICAgICAgKgogICAgICAgICAqIElmIGZhbHNlIGlzIHJldHVybmVkLCBgQ29tcG9uZW50I3JlbmRlcmAsIGBjb21wb25lbnRXaWxsVXBkYXRlYAogICAgICAgICAqIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYCB3aWxsIG5vdCBiZSBjYWxsZWQuCiAgICAgICAgICovCiAgICAgICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0U3RhdGU6IFJlYWRvbmx5PFM+LCBuZXh0Q29udGV4dDogYW55KTogYm9vbGVhbjsKICAgICAgICAvKioKICAgICAgICAgKiBDYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGEgY29tcG9uZW50IGlzIGRlc3Ryb3llZC4gUGVyZm9ybSBhbnkgbmVjZXNzYXJ5IGNsZWFudXAgaW4gdGhpcyBtZXRob2QsIHN1Y2ggYXMKICAgICAgICAgKiBjYW5jZWxsZWQgbmV0d29yayByZXF1ZXN0cywgb3IgY2xlYW5pbmcgdXAgYW55IERPTSBlbGVtZW50cyBjcmVhdGVkIGluIGBjb21wb25lbnREaWRNb3VudGAuCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50V2lsbFVubW91bnQ/KCk6IHZvaWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2F0Y2hlcyBleGNlcHRpb25zIGdlbmVyYXRlZCBpbiBkZXNjZW5kYW50IGNvbXBvbmVudHMuIFVuaGFuZGxlZCBleGNlcHRpb25zIHdpbGwgY2F1c2UKICAgICAgICAgKiB0aGUgZW50aXJlIGNvbXBvbmVudCB0cmVlIHRvIHVubW91bnQuCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50RGlkQ2F0Y2g/KGVycm9yOiBFcnJvciwgZXJyb3JJbmZvOiBFcnJvckluZm8pOiB2b2lkOwogICAgfQoKICAgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gd2F5IG9mIGRlY2xhcmluZyB0aGF0IHRoZSBjb21wb25lbnQgY29uc3RydWN0b3IgbXVzdCBpbXBsZW1lbnQgdGhpcwogICAgaW50ZXJmYWNlIFN0YXRpY0xpZmVjeWNsZTxQLCBTPiB7CiAgICAgICAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPzogR2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPFAsIFM+IHwgdW5kZWZpbmVkOwogICAgICAgIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj86IEdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjxQLCBTPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczxQLCBTPiA9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyBhbiB1cGRhdGUgdG8gYSBjb21wb25lbnQncyBzdGF0ZSBiYXNlZCBvbiBpdHMgbmV3IHByb3BzIGFuZCBvbGQgc3RhdGUuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiBpdHMgcHJlc2VuY2UgcHJldmVudHMgYW55IG9mIHRoZSBkZXByZWNhdGVkIGxpZmVjeWNsZSBtZXRob2RzIGZyb20gYmVpbmcgaW52b2tlZAogICAgICAgICAqLwogICAgICAgIChuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBwcmV2U3RhdGU6IFMpID0+IFBhcnRpYWw8Uz4gfCBudWxsOwoKICAgIHR5cGUgR2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPFAsIFM+ID0KICAgICAgICAvKioKICAgICAgICAgKiBUaGlzIGxpZmVjeWNsZSBpcyBpbnZva2VkIGFmdGVyIGFuIGVycm9yIGhhcyBiZWVuIHRocm93biBieSBhIGRlc2NlbmRhbnQgY29tcG9uZW50LgogICAgICAgICAqIEl0IHJlY2VpdmVzIHRoZSBlcnJvciB0aGF0IHdhcyB0aHJvd24gYXMgYSBwYXJhbWV0ZXIgYW5kIHNob3VsZCByZXR1cm4gYSB2YWx1ZSB0byB1cGRhdGUgc3RhdGUuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiBpdHMgcHJlc2VuY2UgcHJldmVudHMgYW55IG9mIHRoZSBkZXByZWNhdGVkIGxpZmVjeWNsZSBtZXRob2RzIGZyb20gYmVpbmcgaW52b2tlZAogICAgICAgICAqLwogICAgICAgIChlcnJvcjogYW55KSA9PiBQYXJ0aWFsPFM+IHwgbnVsbDsKCiAgICAvLyBUaGlzIHNob3VsZCBiZSAiaW5mZXIgU1MiIGJ1dCBjYW4ndCB1c2UgaXQgeWV0CiAgICBpbnRlcmZhY2UgTmV3TGlmZWN5Y2xlPFAsIFMsIFNTPiB7CiAgICAgICAgLyoqCiAgICAgICAgICogUnVucyBiZWZvcmUgUmVhY3QgYXBwbGllcyB0aGUgcmVzdWx0IG9mIGByZW5kZXJgIHRvIHRoZSBkb2N1bWVudCwgYW5kCiAgICAgICAgICogcmV0dXJucyBhbiBvYmplY3QgdG8gYmUgZ2l2ZW4gdG8gY29tcG9uZW50RGlkVXBkYXRlLiBVc2VmdWwgZm9yIHNhdmluZwogICAgICAgICAqIHRoaW5ncyBzdWNoIGFzIHNjcm9sbCBwb3NpdGlvbiBiZWZvcmUgYHJlbmRlcmAgY2F1c2VzIGNoYW5nZXMgdG8gaXQuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgcHJldmVudHMgYW55IG9mIHRoZSBkZXByZWNhdGVkCiAgICAgICAgICogbGlmZWN5Y2xlIGV2ZW50cyBmcm9tIHJ1bm5pbmcuCiAgICAgICAgICovCiAgICAgICAgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU/KHByZXZQcm9wczogUmVhZG9ubHk8UD4sIHByZXZTdGF0ZTogUmVhZG9ubHk8Uz4pOiBTUyB8IG51bGw7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHVwZGF0aW5nIG9jY3Vycy4gTm90IGNhbGxlZCBmb3IgdGhlIGluaXRpYWwgcmVuZGVyLgogICAgICAgICAqCiAgICAgICAgICogVGhlIHNuYXBzaG90IGlzIG9ubHkgcHJlc2VudCBpZiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSBpcyBwcmVzZW50IGFuZCByZXR1cm5zIG5vbi1udWxsLgogICAgICAgICAqLwogICAgICAgIGNvbXBvbmVudERpZFVwZGF0ZT8ocHJldlByb3BzOiBSZWFkb25seTxQPiwgcHJldlN0YXRlOiBSZWFkb25seTxTPiwgc25hcHNob3Q/OiBTUyk6IHZvaWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIERlcHJlY2F0ZWRMaWZlY3ljbGU8UCwgUz4gewogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgbW91bnRpbmcgb2NjdXJzLCBhbmQgYmVmb3JlIGBDb21wb25lbnQjcmVuZGVyYC4KICAgICAgICAgKiBBdm9pZCBpbnRyb2R1Y2luZyBhbnkgc2lkZS1lZmZlY3RzIG9yIHN1YnNjcmlwdGlvbnMgaW4gdGhpcyBtZXRob2QuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgY29tcG9uZW50RGlkTW91bnQgb3IgdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQ7IHdpbGwgc3RvcCB3b3JraW5nIGluIFJlYWN0IDE3CiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9ibG9nLzIwMTgvMDMvMjcvdXBkYXRlLW9uLWFzeW5jLXJlbmRlcmluZy5odG1sI2luaXRpYWxpemluZy1zdGF0ZQogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCNncmFkdWFsLW1pZ3JhdGlvbi1wYXRoCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50V2lsbE1vdW50PygpOiB2b2lkOwogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgbW91bnRpbmcgb2NjdXJzLCBhbmQgYmVmb3JlIGBDb21wb25lbnQjcmVuZGVyYC4KICAgICAgICAgKiBBdm9pZCBpbnRyb2R1Y2luZyBhbnkgc2lkZS1lZmZlY3RzIG9yIHN1YnNjcmlwdGlvbnMgaW4gdGhpcyBtZXRob2QuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIG5vdCBzdG9wIHdvcmtpbmcgaW4gUmVhY3QgMTcuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgY29tcG9uZW50RGlkTW91bnQgb3IgdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjaW5pdGlhbGl6aW5nLXN0YXRlCiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9ibG9nLzIwMTgvMDMvMjcvdXBkYXRlLW9uLWFzeW5jLXJlbmRlcmluZy5odG1sI2dyYWR1YWwtbWlncmF0aW9uLXBhdGgKICAgICAgICAgKi8KICAgICAgICBVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50PygpOiB2b2lkOwogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgbWF5IGJlIHJlY2VpdmluZyBuZXcgcHJvcHMuCiAgICAgICAgICogUmVhY3QgbWF5IGNhbGwgdGhpcyBldmVuIGlmIHByb3BzIGhhdmUgbm90IGNoYW5nZWQsIHNvIGJlIHN1cmUgdG8gY29tcGFyZSBuZXcgYW5kIGV4aXN0aW5nCiAgICAgICAgICogcHJvcHMgaWYgeW91IG9ubHkgd2FudCB0byBoYW5kbGUgY2hhbmdlcy4KICAgICAgICAgKgogICAgICAgICAqIENhbGxpbmcgYENvbXBvbmVudCNzZXRTdGF0ZWAgZ2VuZXJhbGx5IGRvZXMgbm90IHRyaWdnZXIgdGhpcyBtZXRob2QuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2Ugc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyBpbnN0ZWFkOyB3aWxsIHN0b3Agd29ya2luZyBpbiBSZWFjdCAxNwogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCN1cGRhdGluZy1zdGF0ZS1iYXNlZC1vbi1wcm9wcwogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCNncmFkdWFsLW1pZ3JhdGlvbi1wYXRoCiAgICAgICAgICovCiAgICAgICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz8obmV4dFByb3BzOiBSZWFkb25seTxQPiwgbmV4dENvbnRleHQ6IGFueSk6IHZvaWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBtYXkgYmUgcmVjZWl2aW5nIG5ldyBwcm9wcy4KICAgICAgICAgKiBSZWFjdCBtYXkgY2FsbCB0aGlzIGV2ZW4gaWYgcHJvcHMgaGF2ZSBub3QgY2hhbmdlZCwgc28gYmUgc3VyZSB0byBjb21wYXJlIG5ldyBhbmQgZXhpc3RpbmcKICAgICAgICAgKiBwcm9wcyBpZiB5b3Ugb25seSB3YW50IHRvIGhhbmRsZSBjaGFuZ2VzLgogICAgICAgICAqCiAgICAgICAgICogQ2FsbGluZyBgQ29tcG9uZW50I3NldFN0YXRlYCBnZW5lcmFsbHkgZG9lcyBub3QgdHJpZ2dlciB0aGlzIG1ldGhvZC4KICAgICAgICAgKgogICAgICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgbm90IHN0b3Agd29ya2luZyBpbiBSZWFjdCAxNy4KICAgICAgICAgKgogICAgICAgICAqIE5vdGU6IHRoZSBwcmVzZW5jZSBvZiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSBvciBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMKICAgICAgICAgKiBwcmV2ZW50cyB0aGlzIGZyb20gYmVpbmcgaW52b2tlZC4KICAgICAgICAgKgogICAgICAgICAqIEBkZXByZWNhdGVkIDE2LjMsIHVzZSBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIGluc3RlYWQKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjdXBkYXRpbmctc3RhdGUtYmFzZWQtb24tcHJvcHMKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjZ3JhZHVhbC1taWdyYXRpb24tcGF0aAogICAgICAgICAqLwogICAgICAgIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0Q29udGV4dDogYW55KTogdm9pZDsKICAgICAgICAvKioKICAgICAgICAgKiBDYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHJlbmRlcmluZyB3aGVuIG5ldyBwcm9wcyBvciBzdGF0ZSBpcyByZWNlaXZlZC4gTm90IGNhbGxlZCBmb3IgdGhlIGluaXRpYWwgcmVuZGVyLgogICAgICAgICAqCiAgICAgICAgICogTm90ZTogWW91IGNhbm5vdCBjYWxsIGBDb21wb25lbnQjc2V0U3RhdGVgIGhlcmUuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgaW5zdGVhZDsgd2lsbCBzdG9wIHdvcmtpbmcgaW4gUmVhY3QgMTcKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjcmVhZGluZy1kb20tcHJvcGVydGllcy1iZWZvcmUtYW4tdXBkYXRlCiAgICAgICAgICogQHNlZSBodHRwczovL2xlZ2FjeS5yZWFjdGpzLm9yZy9ibG9nLzIwMTgvMDMvMjcvdXBkYXRlLW9uLWFzeW5jLXJlbmRlcmluZy5odG1sI2dyYWR1YWwtbWlncmF0aW9uLXBhdGgKICAgICAgICAgKi8KICAgICAgICBjb21wb25lbnRXaWxsVXBkYXRlPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0U3RhdGU6IFJlYWRvbmx5PFM+LCBuZXh0Q29udGV4dDogYW55KTogdm9pZDsKICAgICAgICAvKioKICAgICAgICAgKiBDYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHJlbmRlcmluZyB3aGVuIG5ldyBwcm9wcyBvciBzdGF0ZSBpcyByZWNlaXZlZC4gTm90IGNhbGxlZCBmb3IgdGhlIGluaXRpYWwgcmVuZGVyLgogICAgICAgICAqCiAgICAgICAgICogTm90ZTogWW91IGNhbm5vdCBjYWxsIGBDb21wb25lbnQjc2V0U3RhdGVgIGhlcmUuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIG5vdCBzdG9wIHdvcmtpbmcgaW4gUmVhY3QgMTcuCiAgICAgICAgICoKICAgICAgICAgKiBOb3RlOiB0aGUgcHJlc2VuY2Ugb2YgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzCiAgICAgICAgICogcHJldmVudHMgdGhpcyBmcm9tIGJlaW5nIGludm9rZWQuCiAgICAgICAgICoKICAgICAgICAgKiBAZGVwcmVjYXRlZCAxNi4zLCB1c2UgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgaW5zdGVhZAogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9sZWdhY3kucmVhY3Rqcy5vcmcvYmxvZy8yMDE4LzAzLzI3L3VwZGF0ZS1vbi1hc3luYy1yZW5kZXJpbmcuaHRtbCNyZWFkaW5nLWRvbS1wcm9wZXJ0aWVzLWJlZm9yZS1hbi11cGRhdGUKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vbGVnYWN5LnJlYWN0anMub3JnL2Jsb2cvMjAxOC8wMy8yNy91cGRhdGUtb24tYXN5bmMtcmVuZGVyaW5nLmh0bWwjZ3JhZHVhbC1taWdyYXRpb24tcGF0aAogICAgICAgICAqLwogICAgICAgIFVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlPyhuZXh0UHJvcHM6IFJlYWRvbmx5PFA+LCBuZXh0U3RhdGU6IFJlYWRvbmx5PFM+LCBuZXh0Q29udGV4dDogYW55KTogdm9pZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTWl4aW48UCwgUz4gZXh0ZW5kcyBDb21wb25lbnRMaWZlY3ljbGU8UCwgUz4gewogICAgICAgIG1peGlucz86IEFycmF5PE1peGluPFAsIFM+PiB8IHVuZGVmaW5lZDsKICAgICAgICBzdGF0aWNzPzogewogICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKCiAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcHJvcFR5cGVzPzogVmFsaWRhdGlvbk1hcDxhbnk+IHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHRUeXBlcz86IFZhbGlkYXRpb25NYXA8YW55PiB8IHVuZGVmaW5lZDsKICAgICAgICBjaGlsZENvbnRleHRUeXBlcz86IFZhbGlkYXRpb25NYXA8YW55PiB8IHVuZGVmaW5lZDsKCiAgICAgICAgZ2V0RGVmYXVsdFByb3BzPygpOiBQOwogICAgICAgIGdldEluaXRpYWxTdGF0ZT8oKTogUzsKICAgIH0KCiAgICBpbnRlcmZhY2UgQ29tcG9uZW50U3BlYzxQLCBTPiBleHRlbmRzIE1peGluPFAsIFM+IHsKICAgICAgICByZW5kZXIoKTogUmVhY3ROb2RlOwoKICAgICAgICBbcHJvcGVydHlOYW1lOiBzdHJpbmddOiBhbnk7CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlUmVmPFQ+KCk6IFJlZk9iamVjdDxUPjsKCiAgICAvLyB3aWxsIHNob3cgYEZvcndhcmRSZWYoJHtDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWV9KWAgaW4gZGV2dG9vbHMgYnkgZGVmYXVsdCwKICAgIC8vIGJ1dCBjYW4gYmUgZ2l2ZW4gaXRzIG93biBzcGVjaWZpYyBuYW1lCiAgICBpbnRlcmZhY2UgRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxQPiBleHRlbmRzIE5hbWVkRXhvdGljQ29tcG9uZW50PFA+IHsKICAgICAgICBkZWZhdWx0UHJvcHM/OiBQYXJ0aWFsPFA+IHwgdW5kZWZpbmVkOwogICAgICAgIHByb3BUeXBlcz86IFdlYWtWYWxpZGF0aW9uTWFwPFA+IHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGZ1bmN0aW9uIGZvcndhcmRSZWY8VCwgUCA9IHt9PihyZW5kZXI6IEZvcndhcmRSZWZSZW5kZXJGdW5jdGlvbjxULCBQPik6IEZvcndhcmRSZWZFeG90aWNDb21wb25lbnQ8UHJvcHNXaXRob3V0UmVmPFA+ICYgUmVmQXR0cmlidXRlczxUPj47CgogICAgLyoqIEVuc3VyZXMgdGhhdCB0aGUgcHJvcHMgZG8gbm90IGluY2x1ZGUgcmVmIGF0IGFsbCAqLwogICAgdHlwZSBQcm9wc1dpdGhvdXRSZWY8UD4gPQogICAgICAgIC8vIE9taXQgd291bGQgbm90IGJlIHN1ZmZpY2llbnQgZm9yIHRoaXMuIFdlJ2QgbGlrZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBtYXBwaW5nIGFuZCBuZWVkIGEgZGlzdHJpYnV0aXZlIGNvbmRpdGlvbmFsIHRvIHN1cHBvcnQgdW5pb25zLgogICAgICAgIC8vIHNlZTogaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9jb25kaXRpb25hbC10eXBlcy5odG1sI2Rpc3RyaWJ1dGl2ZS1jb25kaXRpb25hbC10eXBlcwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjgzMzkKICAgICAgICBQIGV4dGVuZHMgYW55ID8gKCdyZWYnIGV4dGVuZHMga2V5b2YgUCA/IE9taXQ8UCwgJ3JlZic+IDogUCkgOiBQOwogICAgLyoqIEVuc3VyZXMgdGhhdCB0aGUgcHJvcHMgZG8gbm90IGluY2x1ZGUgc3RyaW5nIHJlZiwgd2hpY2ggY2Fubm90IGJlIGZvcndhcmRlZCAqLwogICAgdHlwZSBQcm9wc1dpdGhSZWY8UD4gPQogICAgICAgIC8vIEp1c3QgIlAgZXh0ZW5kcyB7IHJlZj86IGluZmVyIFIgfSIgbG9va3Mgc3VmZmljaWVudCwgYnV0IFIgd2lsbCBpbmZlciBhcyB7fSBpZiBQIGlzIHt9LgogICAgICAgICdyZWYnIGV4dGVuZHMga2V5b2YgUAogICAgICAgICAgICA/IFAgZXh0ZW5kcyB7IHJlZj86IGluZmVyIFIgfCB1bmRlZmluZWQgfQogICAgICAgICAgICAgICAgPyBzdHJpbmcgZXh0ZW5kcyBSCiAgICAgICAgICAgICAgICAgICAgPyBQcm9wc1dpdGhvdXRSZWY8UD4gJiB7IHJlZj86IEV4Y2x1ZGU8Uiwgc3RyaW5nPiB8IHVuZGVmaW5lZCB9CiAgICAgICAgICAgICAgICAgICAgOiBQCiAgICAgICAgICAgICAgICA6IFAKICAgICAgICAgICAgOiBQOwoKICAgIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW48UCA9IHVua25vd24+ID0gUCAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfCB1bmRlZmluZWQgfTsKCiAgICAvKioKICAgICAqIE5PVEU6IHByZWZlciBDb21wb25lbnRQcm9wc1dpdGhSZWYsIGlmIHRoZSByZWYgaXMgZm9yd2FyZGVkLAogICAgICogb3IgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmIHdoZW4gcmVmcyBhcmUgbm90IHN1cHBvcnRlZC4KICAgICAqLwogICAgdHlwZSBDb21wb25lbnRQcm9wczxUIGV4dGVuZHMga2V5b2YgSlNYLkludHJpbnNpY0VsZW1lbnRzIHwgSlNYRWxlbWVudENvbnN0cnVjdG9yPGFueT4+ID0KICAgICAgICBUIGV4dGVuZHMgSlNYRWxlbWVudENvbnN0cnVjdG9yPGluZmVyIFA+CiAgICAgICAgICAgID8gUAogICAgICAgICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHMKICAgICAgICAgICAgICAgID8gSlNYLkludHJpbnNpY0VsZW1lbnRzW1RdCiAgICAgICAgICAgICAgICA6IHt9OwogICAgdHlwZSBDb21wb25lbnRQcm9wc1dpdGhSZWY8VCBleHRlbmRzIEVsZW1lbnRUeXBlPiA9CiAgICAgICAgVCBleHRlbmRzIChuZXcgKHByb3BzOiBpbmZlciBQKSA9PiBDb21wb25lbnQ8YW55LCBhbnk+KQogICAgICAgICAgICA/IFByb3BzV2l0aG91dFJlZjxQPiAmIFJlZkF0dHJpYnV0ZXM8SW5zdGFuY2VUeXBlPFQ+PgogICAgICAgICAgICA6IFByb3BzV2l0aFJlZjxDb21wb25lbnRQcm9wczxUPj47CiAgICB0eXBlIENvbXBvbmVudFByb3BzV2l0aG91dFJlZjxUIGV4dGVuZHMgRWxlbWVudFR5cGU+ID0KICAgICAgICBQcm9wc1dpdGhvdXRSZWY8Q29tcG9uZW50UHJvcHM8VD4+OwoKICAgIHR5cGUgQ29tcG9uZW50UmVmPFQgZXh0ZW5kcyBFbGVtZW50VHlwZT4gPSBUIGV4dGVuZHMgTmFtZWRFeG90aWNDb21wb25lbnQ8CiAgICAgICAgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPFQ+ICYgUmVmQXR0cmlidXRlczxpbmZlciBNZXRob2Q+CiAgICA+CiAgICAgICAgPyBNZXRob2QKICAgICAgICA6IENvbXBvbmVudFByb3BzV2l0aFJlZjxUPiBleHRlbmRzIFJlZkF0dHJpYnV0ZXM8aW5mZXIgTWV0aG9kPgogICAgICAgICAgICA/IE1ldGhvZAogICAgICAgICAgICA6IG5ldmVyOwoKICAgIC8vIHdpbGwgc2hvdyBgTWVtbygke0NvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZX0pYCBpbiBkZXZ0b29scyBieSBkZWZhdWx0LAogICAgLy8gYnV0IGNhbiBiZSBnaXZlbiBpdHMgb3duIHNwZWNpZmljIG5hbWUKICAgIHR5cGUgTWVtb0V4b3RpY0NvbXBvbmVudDxUIGV4dGVuZHMgQ29tcG9uZW50VHlwZTxhbnk+PiA9IE5hbWVkRXhvdGljQ29tcG9uZW50PENvbXBvbmVudFByb3BzV2l0aFJlZjxUPj4gJiB7CiAgICAgICAgcmVhZG9ubHkgdHlwZTogVDsKICAgIH07CgogICAgZnVuY3Rpb24gbWVtbzxQIGV4dGVuZHMgb2JqZWN0PigKICAgICAgICBDb21wb25lbnQ6IEZ1bmN0aW9uQ29tcG9uZW50PFA+LAogICAgICAgIHByb3BzQXJlRXF1YWw/OiAocHJldlByb3BzOiBSZWFkb25seTxQPiwgbmV4dFByb3BzOiBSZWFkb25seTxQPikgPT4gYm9vbGVhbgogICAgKTogTmFtZWRFeG90aWNDb21wb25lbnQ8UD47CiAgICBmdW5jdGlvbiBtZW1vPFQgZXh0ZW5kcyBDb21wb25lbnRUeXBlPGFueT4+KAogICAgICAgIENvbXBvbmVudDogVCwKICAgICAgICBwcm9wc0FyZUVxdWFsPzogKHByZXZQcm9wczogUmVhZG9ubHk8Q29tcG9uZW50UHJvcHM8VD4+LCBuZXh0UHJvcHM6IFJlYWRvbmx5PENvbXBvbmVudFByb3BzPFQ+PikgPT4gYm9vbGVhbgogICAgKTogTWVtb0V4b3RpY0NvbXBvbmVudDxUPjsKCiAgICB0eXBlIExhenlFeG90aWNDb21wb25lbnQ8VCBleHRlbmRzIENvbXBvbmVudFR5cGU8YW55Pj4gPSBFeG90aWNDb21wb25lbnQ8Q29tcG9uZW50UHJvcHNXaXRoUmVmPFQ+PiAmIHsKICAgICAgICByZWFkb25seSBfcmVzdWx0OiBUOwogICAgfTsKCiAgICBmdW5jdGlvbiBsYXp5PFQgZXh0ZW5kcyBDb21wb25lbnRUeXBlPGFueT4+KAogICAgICAgIGZhY3Rvcnk6ICgpID0+IFByb21pc2U8eyBkZWZhdWx0OiBUIH0+CiAgICApOiBMYXp5RXhvdGljQ29tcG9uZW50PFQ+OwoKICAgIC8vCiAgICAvLyBSZWFjdCBIb29rcwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIC8vIGJhc2VkIG9uIHRoZSBjb2RlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzEzOTY4CgogICAgLy8gVW5saWtlIHRoZSBjbGFzcyBjb21wb25lbnQgc2V0U3RhdGUsIHRoZSB1cGRhdGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSBwYXJ0aWFsCiAgICB0eXBlIFNldFN0YXRlQWN0aW9uPFM+ID0gUyB8ICgocHJldlN0YXRlOiBTKSA9PiBTKTsKICAgIC8vIHRoaXMgdGVjaG5pY2FsbHkgZG9lcyBhY2NlcHQgYSBzZWNvbmQgYXJndW1lbnQsIGJ1dCBpdCdzIGFscmVhZHkgdW5kZXIgYSBkZXByZWNhdGlvbiB3YXJuaW5nCiAgICAvLyBhbmQgaXQncyBub3QgZXZlbiByZWxlYXNlZCBzbyBwcm9iYWJseSBiZXR0ZXIgdG8gbm90IGRlZmluZSBpdC4KICAgIHR5cGUgRGlzcGF0Y2g8QT4gPSAodmFsdWU6IEEpID0+IHZvaWQ7CiAgICAvLyBTaW5jZSBhY3Rpb24gX2Nhbl8gYmUgdW5kZWZpbmVkLCBkaXNwYXRjaCBtYXkgYmUgY2FsbGVkIHdpdGhvdXQgYW55IHBhcmFtZXRlcnMuCiAgICB0eXBlIERpc3BhdGNoV2l0aG91dEFjdGlvbiA9ICgpID0+IHZvaWQ7CiAgICAvLyBVbmxpa2UgcmVkdXgsIHRoZSBhY3Rpb25zIF9jYW5fIGJlIGFueXRoaW5nCiAgICB0eXBlIFJlZHVjZXI8UywgQT4gPSAocHJldlN0YXRlOiBTLCBhY3Rpb246IEEpID0+IFM7CiAgICAvLyBJZiB1c2VSZWR1Y2VyIGFjY2VwdHMgYSByZWR1Y2VyIHdpdGhvdXQgYWN0aW9uLCBkaXNwYXRjaCBtYXkgYmUgY2FsbGVkIHdpdGhvdXQgYW55IHBhcmFtZXRlcnMuCiAgICB0eXBlIFJlZHVjZXJXaXRob3V0QWN0aW9uPFM+ID0gKHByZXZTdGF0ZTogUykgPT4gUzsKICAgIC8vIHR5cGVzIHVzZWQgdG8gdHJ5IGFuZCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIHJlZHVjaW5nIFMKICAgIC8vIHRvIGEgc3VwZXJ0eXBlIGNvbW1vbiB3aXRoIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdXNlUmVkdWNlcigpCiAgICB0eXBlIFJlZHVjZXJTdGF0ZTxSIGV4dGVuZHMgUmVkdWNlcjxhbnksIGFueT4+ID0gUiBleHRlbmRzIFJlZHVjZXI8aW5mZXIgUywgYW55PiA/IFMgOiBuZXZlcjsKICAgIHR5cGUgUmVkdWNlckFjdGlvbjxSIGV4dGVuZHMgUmVkdWNlcjxhbnksIGFueT4+ID0gUiBleHRlbmRzIFJlZHVjZXI8YW55LCBpbmZlciBBPiA/IEEgOiBuZXZlcjsKICAgIC8vIFRoZSBpZGVudGl0eSBjaGVjayBpcyBkb25lIHdpdGggdGhlIFNhbWVWYWx1ZSBhbGdvcml0aG0gKE9iamVjdC5pcyksIHdoaWNoIGlzIHN0cmljdGVyIHRoYW4gPT09CiAgICB0eXBlIFJlZHVjZXJTdGF0ZVdpdGhvdXRBY3Rpb248UiBleHRlbmRzIFJlZHVjZXJXaXRob3V0QWN0aW9uPGFueT4+ID0KICAgICAgICBSIGV4dGVuZHMgUmVkdWNlcldpdGhvdXRBY3Rpb248aW5mZXIgUz4gPyBTIDogbmV2ZXI7CiAgICB0eXBlIERlcGVuZGVuY3lMaXN0ID0gUmVhZG9ubHlBcnJheTx1bmtub3duPjsKCiAgICAvLyBOT1RFOiBjYWxsYmFja3MgYXJlIF9vbmx5XyBhbGxvd2VkIHRvIHJldHVybiBlaXRoZXIgdm9pZCwgb3IgYSBkZXN0cnVjdG9yLgogICAgdHlwZSBFZmZlY3RDYWxsYmFjayA9ICgpID0+ICh2b2lkIHwgRGVzdHJ1Y3Rvcik7CgogICAgaW50ZXJmYWNlIE11dGFibGVSZWZPYmplY3Q8VD4gewogICAgICAgIGN1cnJlbnQ6IFQ7CiAgICB9CgogICAgLy8gVGhpcyB3aWxsIHRlY2huaWNhbGx5IHdvcmsgaWYgeW91IGdpdmUgYSBDb25zdW1lcjxUPiBvciBQcm92aWRlcjxUPiBidXQgaXQncyBkZXByZWNhdGVkIGFuZCB3YXJucwogICAgLyoqCiAgICAgKiBBY2NlcHRzIGEgY29udGV4dCBvYmplY3QgKHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGBSZWFjdC5jcmVhdGVDb250ZXh0YCkgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQKICAgICAqIGNvbnRleHQgdmFsdWUsIGFzIGdpdmVuIGJ5IHRoZSBuZWFyZXN0IGNvbnRleHQgcHJvdmlkZXIgZm9yIHRoZSBnaXZlbiBjb250ZXh0LgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlQ29udGV4dAogICAgICovCiAgICBmdW5jdGlvbiB1c2VDb250ZXh0PFQ+KGNvbnRleHQ6IENvbnRleHQ8VD4vKiwgKG5vdCBwdWJsaWMgQVBJKSBvYnNlcnZlZEJpdHM/OiBudW1iZXJ8Ym9vbGVhbiAqLyk6IFQ7CiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdGF0ZWZ1bCB2YWx1ZSwgYW5kIGEgZnVuY3Rpb24gdG8gdXBkYXRlIGl0LgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlU3RhdGUKICAgICAqLwogICAgZnVuY3Rpb24gdXNlU3RhdGU8Uz4oaW5pdGlhbFN0YXRlOiBTIHwgKCgpID0+IFMpKTogW1MsIERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPFM+Pl07CiAgICAvLyBjb252ZW5pZW5jZSBvdmVybG9hZCB3aGVuIGZpcnN0IGFyZ3VtZW50IGlzIG9taXR0ZWQKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0YXRlZnVsIHZhbHVlLCBhbmQgYSBmdW5jdGlvbiB0byB1cGRhdGUgaXQuCiAgICAgKgogICAgICogQHZlcnNpb24gMTYuOC4wCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VTdGF0ZQogICAgICovCiAgICBmdW5jdGlvbiB1c2VTdGF0ZTxTID0gdW5kZWZpbmVkPigpOiBbUyB8IHVuZGVmaW5lZCwgRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UyB8IHVuZGVmaW5lZD4+XTsKICAgIC8qKgogICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYHVzZVN0YXRlYC4KICAgICAqCiAgICAgKiBgdXNlUmVkdWNlcmAgaXMgdXN1YWxseSBwcmVmZXJhYmxlIHRvIGB1c2VTdGF0ZWAgd2hlbiB5b3UgaGF2ZSBjb21wbGV4IHN0YXRlIGxvZ2ljIHRoYXQgaW52b2x2ZXMKICAgICAqIG11bHRpcGxlIHN1Yi12YWx1ZXMuIEl0IGFsc28gbGV0cyB5b3Ugb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGNvbXBvbmVudHMgdGhhdCB0cmlnZ2VyIGRlZXAKICAgICAqIHVwZGF0ZXMgYmVjYXVzZSB5b3UgY2FuIHBhc3MgYGRpc3BhdGNoYCBkb3duIGluc3RlYWQgb2YgY2FsbGJhY2tzLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlUmVkdWNlcgogICAgICovCiAgICAvLyBvdmVybG9hZCB3aGVyZSBkaXNwYXRjaCBjb3VsZCBhY2NlcHQgMCBhcmd1bWVudHMuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyV2l0aG91dEFjdGlvbjxhbnk+LCBJPigKICAgICAgICByZWR1Y2VyOiBSLAogICAgICAgIGluaXRpYWxpemVyQXJnOiBJLAogICAgICAgIGluaXRpYWxpemVyOiAoYXJnOiBJKSA9PiBSZWR1Y2VyU3RhdGVXaXRob3V0QWN0aW9uPFI+CiAgICApOiBbUmVkdWNlclN0YXRlV2l0aG91dEFjdGlvbjxSPiwgRGlzcGF0Y2hXaXRob3V0QWN0aW9uXTsKICAgIC8qKgogICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYHVzZVN0YXRlYC4KICAgICAqCiAgICAgKiBgdXNlUmVkdWNlcmAgaXMgdXN1YWxseSBwcmVmZXJhYmxlIHRvIGB1c2VTdGF0ZWAgd2hlbiB5b3UgaGF2ZSBjb21wbGV4IHN0YXRlIGxvZ2ljIHRoYXQgaW52b2x2ZXMKICAgICAqIG11bHRpcGxlIHN1Yi12YWx1ZXMuIEl0IGFsc28gbGV0cyB5b3Ugb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGNvbXBvbmVudHMgdGhhdCB0cmlnZ2VyIGRlZXAKICAgICAqIHVwZGF0ZXMgYmVjYXVzZSB5b3UgY2FuIHBhc3MgYGRpc3BhdGNoYCBkb3duIGluc3RlYWQgb2YgY2FsbGJhY2tzLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlUmVkdWNlcgogICAgICovCiAgICAvLyBvdmVybG9hZCB3aGVyZSBkaXNwYXRjaCBjb3VsZCBhY2NlcHQgMCBhcmd1bWVudHMuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyV2l0aG91dEFjdGlvbjxhbnk+PigKICAgICAgICByZWR1Y2VyOiBSLAogICAgICAgIGluaXRpYWxpemVyQXJnOiBSZWR1Y2VyU3RhdGVXaXRob3V0QWN0aW9uPFI+LAogICAgICAgIGluaXRpYWxpemVyPzogdW5kZWZpbmVkCiAgICApOiBbUmVkdWNlclN0YXRlV2l0aG91dEFjdGlvbjxSPiwgRGlzcGF0Y2hXaXRob3V0QWN0aW9uXTsKICAgIC8qKgogICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYHVzZVN0YXRlYC4KICAgICAqCiAgICAgKiBgdXNlUmVkdWNlcmAgaXMgdXN1YWxseSBwcmVmZXJhYmxlIHRvIGB1c2VTdGF0ZWAgd2hlbiB5b3UgaGF2ZSBjb21wbGV4IHN0YXRlIGxvZ2ljIHRoYXQgaW52b2x2ZXMKICAgICAqIG11bHRpcGxlIHN1Yi12YWx1ZXMuIEl0IGFsc28gbGV0cyB5b3Ugb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGNvbXBvbmVudHMgdGhhdCB0cmlnZ2VyIGRlZXAKICAgICAqIHVwZGF0ZXMgYmVjYXVzZSB5b3UgY2FuIHBhc3MgYGRpc3BhdGNoYCBkb3duIGluc3RlYWQgb2YgY2FsbGJhY2tzLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlUmVkdWNlcgogICAgICovCiAgICAvLyBvdmVybG9hZCB3aGVyZSAiSSIgbWF5IGJlIGEgc3Vic2V0IG9mIFJlZHVjZXJTdGF0ZTxSPjsgdXNlZCB0byBwcm92aWRlIGF1dG9jb21wbGV0aW9uLgogICAgLy8gSWYgIkkiIG1hdGNoZXMgUmVkdWNlclN0YXRlPFI+IGV4YWN0bHkgdGhlbiB0aGUgbGFzdCBvdmVybG9hZCB3aWxsIGFsbG93IGluaXRpYWxpemVyIHRvIGJlIG9taXR0ZWQuCiAgICAvLyB0aGUgbGFzdCBvdmVybG9hZCBlZmZlY3RpdmVseSBiZWhhdmVzIGFzIGlmIHRoZSBpZGVudGl0eSBmdW5jdGlvbiAoeCA9PiB4KSBpcyB0aGUgaW5pdGlhbGl6ZXIuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyPGFueSwgYW55PiwgST4oCiAgICAgICAgcmVkdWNlcjogUiwKICAgICAgICBpbml0aWFsaXplckFyZzogSSAmIFJlZHVjZXJTdGF0ZTxSPiwKICAgICAgICBpbml0aWFsaXplcjogKGFyZzogSSAmIFJlZHVjZXJTdGF0ZTxSPikgPT4gUmVkdWNlclN0YXRlPFI+CiAgICApOiBbUmVkdWNlclN0YXRlPFI+LCBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9uPFI+Pl07CiAgICAvKioKICAgICAqIEFuIGFsdGVybmF0aXZlIHRvIGB1c2VTdGF0ZWAuCiAgICAgKgogICAgICogYHVzZVJlZHVjZXJgIGlzIHVzdWFsbHkgcHJlZmVyYWJsZSB0byBgdXNlU3RhdGVgIHdoZW4geW91IGhhdmUgY29tcGxleCBzdGF0ZSBsb2dpYyB0aGF0IGludm9sdmVzCiAgICAgKiBtdWx0aXBsZSBzdWItdmFsdWVzLiBJdCBhbHNvIGxldHMgeW91IG9wdGltaXplIHBlcmZvcm1hbmNlIGZvciBjb21wb25lbnRzIHRoYXQgdHJpZ2dlciBkZWVwCiAgICAgKiB1cGRhdGVzIGJlY2F1c2UgeW91IGNhbiBwYXNzIGBkaXNwYXRjaGAgZG93biBpbnN0ZWFkIG9mIGNhbGxiYWNrcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZHVjZXIKICAgICAqLwogICAgLy8gb3ZlcmxvYWQgZm9yIGZyZWUgIkkiOyBhbGwgZ29lcyBhcyBsb25nIGFzIGluaXRpYWxpemVyIGNvbnZlcnRzIGl0IGludG8gIlJlZHVjZXJTdGF0ZTxSPiIuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyPGFueSwgYW55PiwgST4oCiAgICAgICAgcmVkdWNlcjogUiwKICAgICAgICBpbml0aWFsaXplckFyZzogSSwKICAgICAgICBpbml0aWFsaXplcjogKGFyZzogSSkgPT4gUmVkdWNlclN0YXRlPFI+CiAgICApOiBbUmVkdWNlclN0YXRlPFI+LCBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9uPFI+Pl07CiAgICAvKioKICAgICAqIEFuIGFsdGVybmF0aXZlIHRvIGB1c2VTdGF0ZWAuCiAgICAgKgogICAgICogYHVzZVJlZHVjZXJgIGlzIHVzdWFsbHkgcHJlZmVyYWJsZSB0byBgdXNlU3RhdGVgIHdoZW4geW91IGhhdmUgY29tcGxleCBzdGF0ZSBsb2dpYyB0aGF0IGludm9sdmVzCiAgICAgKiBtdWx0aXBsZSBzdWItdmFsdWVzLiBJdCBhbHNvIGxldHMgeW91IG9wdGltaXplIHBlcmZvcm1hbmNlIGZvciBjb21wb25lbnRzIHRoYXQgdHJpZ2dlciBkZWVwCiAgICAgKiB1cGRhdGVzIGJlY2F1c2UgeW91IGNhbiBwYXNzIGBkaXNwYXRjaGAgZG93biBpbnN0ZWFkIG9mIGNhbGxiYWNrcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZHVjZXIKICAgICAqLwoKICAgIC8vIEknbSBub3Qgc3VyZSBpZiBJIGtlZXAgdGhpcyAyLWFyeSBvciBpZiBJIG1ha2UgaXQgKDIsMyktYXJ5OyBpdCdzIGN1cnJlbnRseSAoMiwzKS1hcnkuCiAgICAvLyBUaGUgRmxvdyB0eXBlcyBkbyBoYXZlIGFuIG92ZXJsb2FkIGZvciAzLWFyeSBpbnZvY2F0aW9uIHdpdGggdW5kZWZpbmVkIGluaXRpYWxpemVyLgoKICAgIC8vIE5PVEU6IHdpdGhvdXQgdGhlIFJlZHVjZXJTdGF0ZSBpbmRpcmVjdGlvbiwgVHlwZVNjcmlwdCB3b3VsZCByZWR1Y2UgUyB0byBiZSB0aGUgbW9zdCBjb21tb24KICAgIC8vIHN1cGVydHlwZSBiZXR3ZWVuIHRoZSByZWR1Y2VyJ3MgcmV0dXJuIHR5cGUgYW5kIHRoZSBpbml0aWFsU3RhdGUgKG9yIHRoZSBpbml0aWFsaXplcidzIHJldHVybiB0eXBlKSwKICAgIC8vIHdoaWNoIHdvdWxkIHByZXZlbnQgYXV0b2NvbXBsZXRpb24gZnJvbSBldmVyIHdvcmtpbmcuCgogICAgLy8gVE9ETzogZG91YmxlLWNoZWNrIGlmIHRoaXMgd2VpcmQgb3ZlcmxvYWQgbG9naWMgaXMgbmVjZXNzYXJ5LiBJdCBpcyBwb3NzaWJsZSBpdCdzIGVpdGhlciBhIGJ1ZwogICAgLy8gaW4gb2xkZXIgdmVyc2lvbnMsIG9yIGEgcmVncmVzc2lvbiBpbiBuZXdlciB2ZXJzaW9ucyBvZiB0aGUgdHlwZXNjcmlwdCBjb21wbGV0aW9uIHNlcnZpY2UuCiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyPFIgZXh0ZW5kcyBSZWR1Y2VyPGFueSwgYW55Pj4oCiAgICAgICAgcmVkdWNlcjogUiwKICAgICAgICBpbml0aWFsU3RhdGU6IFJlZHVjZXJTdGF0ZTxSPiwKICAgICAgICBpbml0aWFsaXplcj86IHVuZGVmaW5lZAogICAgKTogW1JlZHVjZXJTdGF0ZTxSPiwgRGlzcGF0Y2g8UmVkdWNlckFjdGlvbjxSPj5dOwogICAgLyoqCiAgICAgKiBgdXNlUmVmYCByZXR1cm5zIGEgbXV0YWJsZSByZWYgb2JqZWN0IHdob3NlIGAuY3VycmVudGAgcHJvcGVydHkgaXMgaW5pdGlhbGl6ZWQgdG8gdGhlIHBhc3NlZCBhcmd1bWVudAogICAgICogKGBpbml0aWFsVmFsdWVgKS4gVGhlIHJldHVybmVkIG9iamVjdCB3aWxsIHBlcnNpc3QgZm9yIHRoZSBmdWxsIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuCiAgICAgKgogICAgICogTm90ZSB0aGF0IGB1c2VSZWYoKWAgaXMgdXNlZnVsIGZvciBtb3JlIHRoYW4gdGhlIGByZWZgIGF0dHJpYnV0ZS4gSXTigJlzIGhhbmR5IGZvciBrZWVwaW5nIGFueSBtdXRhYmxlCiAgICAgKiB2YWx1ZSBhcm91bmQgc2ltaWxhciB0byBob3cgeW914oCZZCB1c2UgaW5zdGFuY2UgZmllbGRzIGluIGNsYXNzZXMuCiAgICAgKgogICAgICogQHZlcnNpb24gMTYuOC4wCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VSZWYKICAgICAqLwogICAgZnVuY3Rpb24gdXNlUmVmPFQ+KGluaXRpYWxWYWx1ZTogVCk6IE11dGFibGVSZWZPYmplY3Q8VD47CiAgICAvLyBjb252ZW5pZW5jZSBvdmVybG9hZCBmb3IgcmVmcyBnaXZlbiBhcyBhIHJlZiBwcm9wIGFzIHRoZXkgdHlwaWNhbGx5IHN0YXJ0IHdpdGggYSBudWxsIHZhbHVlCiAgICAvKioKICAgICAqIGB1c2VSZWZgIHJldHVybnMgYSBtdXRhYmxlIHJlZiBvYmplY3Qgd2hvc2UgYC5jdXJyZW50YCBwcm9wZXJ0eSBpcyBpbml0aWFsaXplZCB0byB0aGUgcGFzc2VkIGFyZ3VtZW50CiAgICAgKiAoYGluaXRpYWxWYWx1ZWApLiBUaGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgcGVyc2lzdCBmb3IgdGhlIGZ1bGwgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgYHVzZVJlZigpYCBpcyB1c2VmdWwgZm9yIG1vcmUgdGhhbiB0aGUgYHJlZmAgYXR0cmlidXRlLiBJdOKAmXMgaGFuZHkgZm9yIGtlZXBpbmcgYW55IG11dGFibGUKICAgICAqIHZhbHVlIGFyb3VuZCBzaW1pbGFyIHRvIGhvdyB5b3XigJlkIHVzZSBpbnN0YW5jZSBmaWVsZHMgaW4gY2xhc3Nlcy4KICAgICAqCiAgICAgKiBVc2FnZSBub3RlOiBpZiB5b3UgbmVlZCB0aGUgcmVzdWx0IG9mIHVzZVJlZiB0byBiZSBkaXJlY3RseSBtdXRhYmxlLCBpbmNsdWRlIGB8IG51bGxgIGluIHRoZSB0eXBlCiAgICAgKiBvZiB0aGUgZ2VuZXJpYyBhcmd1bWVudC4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZgogICAgICovCiAgICBmdW5jdGlvbiB1c2VSZWY8VD4oaW5pdGlhbFZhbHVlOiBUfG51bGwpOiBSZWZPYmplY3Q8VD47CiAgICAvLyBjb252ZW5pZW5jZSBvdmVybG9hZCBmb3IgcG90ZW50aWFsbHkgdW5kZWZpbmVkIGluaXRpYWxWYWx1ZSAvIGNhbGwgd2l0aCAwIGFyZ3VtZW50cwogICAgLy8gaGFzIGEgZGVmYXVsdCB0byBzdG9wIGl0IGZyb20gZGVmYXVsdGluZyB0byB7fSBpbnN0ZWFkCiAgICAvKioKICAgICAqIGB1c2VSZWZgIHJldHVybnMgYSBtdXRhYmxlIHJlZiBvYmplY3Qgd2hvc2UgYC5jdXJyZW50YCBwcm9wZXJ0eSBpcyBpbml0aWFsaXplZCB0byB0aGUgcGFzc2VkIGFyZ3VtZW50CiAgICAgKiAoYGluaXRpYWxWYWx1ZWApLiBUaGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgcGVyc2lzdCBmb3IgdGhlIGZ1bGwgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgYHVzZVJlZigpYCBpcyB1c2VmdWwgZm9yIG1vcmUgdGhhbiB0aGUgYHJlZmAgYXR0cmlidXRlLiBJdOKAmXMgaGFuZHkgZm9yIGtlZXBpbmcgYW55IG11dGFibGUKICAgICAqIHZhbHVlIGFyb3VuZCBzaW1pbGFyIHRvIGhvdyB5b3XigJlkIHVzZSBpbnN0YW5jZSBmaWVsZHMgaW4gY2xhc3Nlcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVJlZgogICAgICovCiAgICBmdW5jdGlvbiB1c2VSZWY8VCA9IHVuZGVmaW5lZD4oKTogTXV0YWJsZVJlZk9iamVjdDxUIHwgdW5kZWZpbmVkPjsKICAgIC8qKgogICAgICogVGhlIHNpZ25hdHVyZSBpcyBpZGVudGljYWwgdG8gYHVzZUVmZmVjdGAsIGJ1dCBpdCBmaXJlcyBzeW5jaHJvbm91c2x5IGFmdGVyIGFsbCBET00gbXV0YXRpb25zLgogICAgICogVXNlIHRoaXMgdG8gcmVhZCBsYXlvdXQgZnJvbSB0aGUgRE9NIGFuZCBzeW5jaHJvbm91c2x5IHJlLXJlbmRlci4gVXBkYXRlcyBzY2hlZHVsZWQgaW5zaWRlCiAgICAgKiBgdXNlTGF5b3V0RWZmZWN0YCB3aWxsIGJlIGZsdXNoZWQgc3luY2hyb25vdXNseSwgYmVmb3JlIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludC4KICAgICAqCiAgICAgKiBQcmVmZXIgdGhlIHN0YW5kYXJkIGB1c2VFZmZlY3RgIHdoZW4gcG9zc2libGUgdG8gYXZvaWQgYmxvY2tpbmcgdmlzdWFsIHVwZGF0ZXMuCiAgICAgKgogICAgICogSWYgeW914oCZcmUgbWlncmF0aW5nIGNvZGUgZnJvbSBhIGNsYXNzIGNvbXBvbmVudCwgYHVzZUxheW91dEVmZmVjdGAgZmlyZXMgaW4gdGhlIHNhbWUgcGhhc2UgYXMKICAgICAqIGBjb21wb25lbnREaWRNb3VudGAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlTGF5b3V0RWZmZWN0CiAgICAgKi8KICAgIGZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChlZmZlY3Q6IEVmZmVjdENhbGxiYWNrLCBkZXBzPzogRGVwZW5kZW5jeUxpc3QpOiB2b2lkOwogICAgLyoqCiAgICAgKiBBY2NlcHRzIGEgZnVuY3Rpb24gdGhhdCBjb250YWlucyBpbXBlcmF0aXZlLCBwb3NzaWJseSBlZmZlY3RmdWwgY29kZS4KICAgICAqCiAgICAgKiBAcGFyYW0gZWZmZWN0IEltcGVyYXRpdmUgZnVuY3Rpb24gdGhhdCBjYW4gcmV0dXJuIGEgY2xlYW51cCBmdW5jdGlvbgogICAgICogQHBhcmFtIGRlcHMgSWYgcHJlc2VudCwgZWZmZWN0IHdpbGwgb25seSBhY3RpdmF0ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGNoYW5nZS4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZUVmZmVjdAogICAgICovCiAgICBmdW5jdGlvbiB1c2VFZmZlY3QoZWZmZWN0OiBFZmZlY3RDYWxsYmFjaywgZGVwcz86IERlcGVuZGVuY3lMaXN0KTogdm9pZDsKICAgIC8vIE5PVEU6IHRoaXMgZG9lcyBub3QgYWNjZXB0IHN0cmluZ3MsIGJ1dCB0aGlzIHdpbGwgaGF2ZSB0byBiZSBmaXhlZCBieSByZW1vdmluZyBzdHJpbmdzIGZyb20gdHlwZSBSZWY8VD4KICAgIC8qKgogICAgICogYHVzZUltcGVyYXRpdmVIYW5kbGVgIGN1c3RvbWl6ZXMgdGhlIGluc3RhbmNlIHZhbHVlIHRoYXQgaXMgZXhwb3NlZCB0byBwYXJlbnQgY29tcG9uZW50cyB3aGVuIHVzaW5nCiAgICAgKiBgcmVmYC4gQXMgYWx3YXlzLCBpbXBlcmF0aXZlIGNvZGUgdXNpbmcgcmVmcyBzaG91bGQgYmUgYXZvaWRlZCBpbiBtb3N0IGNhc2VzLgogICAgICoKICAgICAqIGB1c2VJbXBlcmF0aXZlSGFuZGxlYCBzaG91bGQgYmUgdXNlZCB3aXRoIGBSZWFjdC5mb3J3YXJkUmVmYC4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZUltcGVyYXRpdmVIYW5kbGUKICAgICAqLwogICAgZnVuY3Rpb24gdXNlSW1wZXJhdGl2ZUhhbmRsZTxULCBSIGV4dGVuZHMgVD4ocmVmOiBSZWY8VD58dW5kZWZpbmVkLCBpbml0OiAoKSA9PiBSLCBkZXBzPzogRGVwZW5kZW5jeUxpc3QpOiB2b2lkOwogICAgLy8gSSBtYWRlICdpbnB1dHMnIHJlcXVpcmVkIGhlcmUgYW5kIGluIHVzZU1lbW8gYXMgdGhlcmUncyBubyBwb2ludCB0byBtZW1vaXppbmcgd2l0aG91dCB0aGUgbWVtb2l6YXRpb24ga2V5CiAgICAvLyB1c2VDYWxsYmFjayhYKSBpcyBpZGVudGljYWwgdG8ganVzdCB1c2luZyBYLCB1c2VNZW1vKCgpID0+IFkpIGlzIGlkZW50aWNhbCB0byBqdXN0IHVzaW5nIFkuCiAgICAvKioKICAgICAqIGB1c2VDYWxsYmFja2Agd2lsbCByZXR1cm4gYSBtZW1vaXplZCB2ZXJzaW9uIG9mIHRoZSBjYWxsYmFjayB0aGF0IG9ubHkgY2hhbmdlcyBpZiBvbmUgb2YgdGhlIGBpbnB1dHNgCiAgICAgKiBoYXMgY2hhbmdlZC4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZUNhbGxiYWNrCiAgICAgKi8KICAgIC8vIEEgc3BlY2lmaWMgZnVuY3Rpb24gdHlwZSB3b3VsZCBub3QgdHJpZ2dlciBpbXBsaWNpdCBhbnkuCiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvaXNzdWVzLzUyODczI2lzc3VlY29tbWVudC04NDU4MDY0MzUgZm9yIGEgY29tcGFyaXNvbiBiZXR3ZWVuIGBGdW5jdGlvbmAgYW5kIG1vcmUgc3BlY2lmaWMgdHlwZXMuCiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgYmFuLXR5cGVzCiAgICBmdW5jdGlvbiB1c2VDYWxsYmFjazxUIGV4dGVuZHMgRnVuY3Rpb24+KGNhbGxiYWNrOiBULCBkZXBzOiBEZXBlbmRlbmN5TGlzdCk6IFQ7CiAgICAvKioKICAgICAqIGB1c2VNZW1vYCB3aWxsIG9ubHkgcmVjb21wdXRlIHRoZSBtZW1vaXplZCB2YWx1ZSB3aGVuIG9uZSBvZiB0aGUgYGRlcHNgIGhhcyBjaGFuZ2VkLgogICAgICoKICAgICAqIEB2ZXJzaW9uIDE2LjguMAogICAgICogQHNlZSBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlTWVtbwogICAgICovCiAgICAvLyBhbGxvdyB1bmRlZmluZWQsIGJ1dCBkb24ndCBtYWtlIGl0IG9wdGlvbmFsIGFzIHRoYXQgaXMgdmVyeSBsaWtlbHkgYSBtaXN0YWtlCiAgICBmdW5jdGlvbiB1c2VNZW1vPFQ+KGZhY3Rvcnk6ICgpID0+IFQsIGRlcHM6IERlcGVuZGVuY3lMaXN0IHwgdW5kZWZpbmVkKTogVDsKICAgIC8qKgogICAgICogYHVzZURlYnVnVmFsdWVgIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgYSBsYWJlbCBmb3IgY3VzdG9tIGhvb2tzIGluIFJlYWN0IERldlRvb2xzLgogICAgICoKICAgICAqIE5PVEU6IFdlIGRvbuKAmXQgcmVjb21tZW5kIGFkZGluZyBkZWJ1ZyB2YWx1ZXMgdG8gZXZlcnkgY3VzdG9tIGhvb2suCiAgICAgKiBJdOKAmXMgbW9zdCB2YWx1YWJsZSBmb3IgY3VzdG9tIGhvb2tzIHRoYXQgYXJlIHBhcnQgb2Ygc2hhcmVkIGxpYnJhcmllcy4KICAgICAqCiAgICAgKiBAdmVyc2lvbiAxNi44LjAKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZURlYnVnVmFsdWUKICAgICAqLwogICAgLy8gdGhlIG5hbWUgb2YgdGhlIGN1c3RvbSBob29rIGlzIGl0c2VsZiBkZXJpdmVkIGZyb20gdGhlIGZ1bmN0aW9uIG5hbWUgYXQgcnVudGltZToKICAgIC8vIGl0J3MganVzdCB0aGUgZnVuY3Rpb24gbmFtZSB3aXRob3V0IHRoZSAidXNlIiBwcmVmaXguCiAgICBmdW5jdGlvbiB1c2VEZWJ1Z1ZhbHVlPFQ+KHZhbHVlOiBULCBmb3JtYXQ/OiAodmFsdWU6IFQpID0+IGFueSk6IHZvaWQ7CgogICAgLy8gbXVzdCBiZSBzeW5jaHJvbm91cwogICAgZXhwb3J0IHR5cGUgVHJhbnNpdGlvbkZ1bmN0aW9uID0gKCkgPT4gVm9pZE9yVW5kZWZpbmVkT25seTsKICAgIC8vIHN0cmFuZ2UgZGVmaW5pdGlvbiB0byBhbGxvdyB2c2NvZGUgdG8gc2hvdyBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbnZvY2F0aW9uCiAgICBleHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRpb25TdGFydEZ1bmN0aW9uIHsKICAgICAgICAvKioKICAgICAgICAgKiBTdGF0ZSB1cGRhdGVzIGNhdXNlZCBpbnNpZGUgdGhlIGNhbGxiYWNrIGFyZSBhbGxvd2VkIHRvIGJlIGRlZmVycmVkLgogICAgICAgICAqCiAgICAgICAgICogKipJZiBzb21lIHN0YXRlIHVwZGF0ZSBjYXVzZXMgYSBjb21wb25lbnQgdG8gc3VzcGVuZCwgdGhhdCBzdGF0ZSB1cGRhdGUgc2hvdWxkIGJlIHdyYXBwZWQgaW4gYSB0cmFuc2l0aW9uLioqCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQSBfc3luY2hyb25vdXNfIGZ1bmN0aW9uIHdoaWNoIGNhdXNlcyBzdGF0ZSB1cGRhdGVzIHRoYXQgY2FuIGJlIGRlZmVycmVkLgogICAgICAgICAqLwogICAgICAgIChjYWxsYmFjazogVHJhbnNpdGlvbkZ1bmN0aW9uKTogdm9pZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBkZWZlcnJlZCB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSB0aGF0IG1heSDigJxsYWcgYmVoaW5k4oCdIGl0LgogICAgICoKICAgICAqIFRoaXMgaXMgY29tbW9ubHkgdXNlZCB0byBrZWVwIHRoZSBpbnRlcmZhY2UgcmVzcG9uc2l2ZSB3aGVuIHlvdSBoYXZlIHNvbWV0aGluZyB0aGF0IHJlbmRlcnMgaW1tZWRpYXRlbHkKICAgICAqIGJhc2VkIG9uIHVzZXIgaW5wdXQgYW5kIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIHdhaXQgZm9yIGEgZGF0YSBmZXRjaC4KICAgICAqCiAgICAgKiBBIGdvb2QgZXhhbXBsZSBvZiB0aGlzIGlzIGEgdGV4dCBpbnB1dC4KICAgICAqCiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRoYXQgaXMgZ29pbmcgdG8gYmUgZGVmZXJyZWQKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VEZWZlcnJlZFZhbHVlCiAgICAgKi8KICAgIGV4cG9ydCBmdW5jdGlvbiB1c2VEZWZlcnJlZFZhbHVlPFQ+KHZhbHVlOiBUKTogVDsKCiAgICAvKioKICAgICAqIEFsbG93cyBjb21wb25lbnRzIHRvIGF2b2lkIHVuZGVzaXJhYmxlIGxvYWRpbmcgc3RhdGVzIGJ5IHdhaXRpbmcgZm9yIGNvbnRlbnQgdG8gbG9hZAogICAgICogYmVmb3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIG5leHQgc2NyZWVuLiBJdCBhbHNvIGFsbG93cyBjb21wb25lbnRzIHRvIGRlZmVyIHNsb3dlciwKICAgICAqIGRhdGEgZmV0Y2hpbmcgdXBkYXRlcyB1bnRpbCBzdWJzZXF1ZW50IHJlbmRlcnMgc28gdGhhdCBtb3JlIGNydWNpYWwgdXBkYXRlcyBjYW4gYmUKICAgICAqIHJlbmRlcmVkIGltbWVkaWF0ZWx5LgogICAgICoKICAgICAqIFRoZSBgdXNlVHJhbnNpdGlvbmAgaG9vayByZXR1cm5zIHR3byB2YWx1ZXMgaW4gYW4gYXJyYXkuCiAgICAgKgogICAgICogVGhlIGZpcnN0IGlzIGEgYm9vbGVhbiwgUmVhY3TigJlzIHdheSBvZiBpbmZvcm1pbmcgdXMgd2hldGhlciB3ZeKAmXJlIHdhaXRpbmcgZm9yIHRoZSB0cmFuc2l0aW9uIHRvIGZpbmlzaC4KICAgICAqIFRoZSBzZWNvbmQgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgY2FsbGJhY2suIFdlIGNhbiB1c2UgaXQgdG8gdGVsbCBSZWFjdCB3aGljaCBzdGF0ZSB3ZSB3YW50IHRvIGRlZmVyLgogICAgICoKICAgICAqICoqSWYgc29tZSBzdGF0ZSB1cGRhdGUgY2F1c2VzIGEgY29tcG9uZW50IHRvIHN1c3BlbmQsIHRoYXQgc3RhdGUgdXBkYXRlIHNob3VsZCBiZSB3cmFwcGVkIGluIGEgdHJhbnNpdGlvbi4qKmAKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VUcmFuc2l0aW9uCiAgICAgKi8KICAgIGV4cG9ydCBmdW5jdGlvbiB1c2VUcmFuc2l0aW9uKCk6IFtib29sZWFuLCBUcmFuc2l0aW9uU3RhcnRGdW5jdGlvbl07CgogICAgLyoqCiAgICAgKiBTaW1pbGFyIHRvIGB1c2VUcmFuc2l0aW9uYCBidXQgYWxsb3dzIHVzZXMgd2hlcmUgaG9va3MgYXJlIG5vdCBhdmFpbGFibGUuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxiYWNrIEEgX3N5bmNocm9ub3VzXyBmdW5jdGlvbiB3aGljaCBjYXVzZXMgc3RhdGUgdXBkYXRlcyB0aGF0IGNhbiBiZSBkZWZlcnJlZC4KICAgICAqLwogICAgZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbihzY29wZTogVHJhbnNpdGlvbkZ1bmN0aW9uKTogdm9pZDsKCiAgICBleHBvcnQgZnVuY3Rpb24gdXNlSWQoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogQHBhcmFtIGVmZmVjdCBJbXBlcmF0aXZlIGZ1bmN0aW9uIHRoYXQgY2FuIHJldHVybiBhIGNsZWFudXAgZnVuY3Rpb24KICAgICAqIEBwYXJhbSBkZXBzIElmIHByZXNlbnQsIGVmZmVjdCB3aWxsIG9ubHkgYWN0aXZhdGUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbGlzdCBjaGFuZ2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMTkxMwogICAgICovCiAgICAgZXhwb3J0IGZ1bmN0aW9uIHVzZUluc2VydGlvbkVmZmVjdChlZmZlY3Q6IEVmZmVjdENhbGxiYWNrLCBkZXBzPzogRGVwZW5kZW5jeUxpc3QpOiB2b2lkOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN1YnNjcmliZQogICAgICogQHBhcmFtIGdldFNuYXBzaG90CiAgICAgKgogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVhY3R3Zy9yZWFjdC0xOC9kaXNjdXNzaW9ucy84NgogICAgICovCiAgICAvLyBrZWVwIGluIHN5bmMgd2l0aCBgdXNlU3luY0V4dGVybmFsU3RvcmVgIGZyb20gYHVzZS1zeW5jLWV4dGVybmFsLXN0b3JlYAogICAgZXhwb3J0IGZ1bmN0aW9uIHVzZVN5bmNFeHRlcm5hbFN0b3JlPFNuYXBzaG90PigKICAgICAgICBzdWJzY3JpYmU6IChvblN0b3JlQ2hhbmdlOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkLAogICAgICAgIGdldFNuYXBzaG90OiAoKSA9PiBTbmFwc2hvdCwKICAgICAgICBnZXRTZXJ2ZXJTbmFwc2hvdD86ICgpID0+IFNuYXBzaG90LAogICAgKTogU25hcHNob3Q7CgogICAgLy8KICAgIC8vIEV2ZW50IFN5c3RlbQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gVE9ETzogY2hhbmdlIGFueSB0byB1bmtub3duIHdoZW4gbW92aW5nIHRvIFRTIHYzCiAgICBpbnRlcmZhY2UgQmFzZVN5bnRoZXRpY0V2ZW50PEUgPSBvYmplY3QsIEMgPSBhbnksIFQgPSBhbnk+IHsKICAgICAgICBuYXRpdmVFdmVudDogRTsKICAgICAgICBjdXJyZW50VGFyZ2V0OiBDOwogICAgICAgIHRhcmdldDogVDsKICAgICAgICBidWJibGVzOiBib29sZWFuOwogICAgICAgIGNhbmNlbGFibGU6IGJvb2xlYW47CiAgICAgICAgZGVmYXVsdFByZXZlbnRlZDogYm9vbGVhbjsKICAgICAgICBldmVudFBoYXNlOiBudW1iZXI7CiAgICAgICAgaXNUcnVzdGVkOiBib29sZWFuOwogICAgICAgIHByZXZlbnREZWZhdWx0KCk6IHZvaWQ7CiAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkKCk6IGJvb2xlYW47CiAgICAgICAgc3RvcFByb3BhZ2F0aW9uKCk6IHZvaWQ7CiAgICAgICAgaXNQcm9wYWdhdGlvblN0b3BwZWQoKTogYm9vbGVhbjsKICAgICAgICBwZXJzaXN0KCk6IHZvaWQ7CiAgICAgICAgdGltZVN0YW1wOiBudW1iZXI7CiAgICAgICAgdHlwZTogc3RyaW5nOwogICAgfQoKICAgIC8qKgogICAgICogY3VycmVudFRhcmdldCAtIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBldmVudCBsaXN0ZW5lciBpcyByZWdpc3RlcmVkLgogICAgICoKICAgICAqIHRhcmdldCAtIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IGZyb20gd2hpY2ggdGhlIGV2ZW50IHdhcyBvcmlnaW5hbGx5IGRpc3BhdGNoZWQuCiAgICAgKiBUaGlzIG1pZ2h0IGJlIGEgY2hpbGQgZWxlbWVudCB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgZXZlbnQgbGlzdGVuZXIgaXMgcmVnaXN0ZXJlZC4KICAgICAqIElmIHlvdSB0aG91Z2h0IHRoaXMgc2hvdWxkIGJlIGBFdmVudFRhcmdldCAmIFRgLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvaXNzdWVzLzExNTA4I2lzc3VlY29tbWVudC0yNTYwNDU2ODIKICAgICAqLwogICAgaW50ZXJmYWNlIFN5bnRoZXRpY0V2ZW50PFQgPSBFbGVtZW50LCBFID0gRXZlbnQ+IGV4dGVuZHMgQmFzZVN5bnRoZXRpY0V2ZW50PEUsIEV2ZW50VGFyZ2V0ICYgVCwgRXZlbnRUYXJnZXQ+IHt9CgogICAgaW50ZXJmYWNlIENsaXBib2FyZEV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFQsIE5hdGl2ZUNsaXBib2FyZEV2ZW50PiB7CiAgICAgICAgY2xpcGJvYXJkRGF0YTogRGF0YVRyYW5zZmVyOwogICAgfQoKICAgIGludGVyZmFjZSBDb21wb3NpdGlvbkV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFQsIE5hdGl2ZUNvbXBvc2l0aW9uRXZlbnQ+IHsKICAgICAgICBkYXRhOiBzdHJpbmc7CiAgICB9CgogICAgaW50ZXJmYWNlIERyYWdFdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBNb3VzZUV2ZW50PFQsIE5hdGl2ZURyYWdFdmVudD4gewogICAgICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyOwogICAgfQoKICAgIGludGVyZmFjZSBQb2ludGVyRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgTW91c2VFdmVudDxULCBOYXRpdmVQb2ludGVyRXZlbnQ+IHsKICAgICAgICBwb2ludGVySWQ6IG51bWJlcjsKICAgICAgICBwcmVzc3VyZTogbnVtYmVyOwogICAgICAgIHRhbmdlbnRpYWxQcmVzc3VyZTogbnVtYmVyOwogICAgICAgIHRpbHRYOiBudW1iZXI7CiAgICAgICAgdGlsdFk6IG51bWJlcjsKICAgICAgICB0d2lzdDogbnVtYmVyOwogICAgICAgIHdpZHRoOiBudW1iZXI7CiAgICAgICAgaGVpZ2h0OiBudW1iZXI7CiAgICAgICAgcG9pbnRlclR5cGU6ICdtb3VzZScgfCAncGVuJyB8ICd0b3VjaCc7CiAgICAgICAgaXNQcmltYXJ5OiBib29sZWFuOwogICAgfQoKICAgIGludGVyZmFjZSBGb2N1c0V2ZW50PFRhcmdldCA9IEVsZW1lbnQsIFJlbGF0ZWRUYXJnZXQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFRhcmdldCwgTmF0aXZlRm9jdXNFdmVudD4gewogICAgICAgIHJlbGF0ZWRUYXJnZXQ6IChFdmVudFRhcmdldCAmIFJlbGF0ZWRUYXJnZXQpIHwgbnVsbDsKICAgICAgICB0YXJnZXQ6IEV2ZW50VGFyZ2V0ICYgVGFyZ2V0OwogICAgfQoKICAgIGludGVyZmFjZSBGb3JtRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgU3ludGhldGljRXZlbnQ8VD4gewogICAgfQoKICAgIGludGVyZmFjZSBJbnZhbGlkRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgU3ludGhldGljRXZlbnQ8VD4gewogICAgICAgIHRhcmdldDogRXZlbnRUYXJnZXQgJiBUOwogICAgfQoKICAgIGludGVyZmFjZSBDaGFuZ2VFdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBTeW50aGV0aWNFdmVudDxUPiB7CiAgICAgICAgdGFyZ2V0OiBFdmVudFRhcmdldCAmIFQ7CiAgICB9CgogICAgZXhwb3J0IHR5cGUgTW9kaWZpZXJLZXkgPSAiQWx0IiB8ICJBbHRHcmFwaCIgfCAiQ2Fwc0xvY2siIHwgIkNvbnRyb2wiIHwgIkZuIiB8ICJGbkxvY2siIHwgIkh5cGVyIiB8ICJNZXRhIiB8ICJOdW1Mb2NrIiB8ICJTY3JvbGxMb2NrIiB8ICJTaGlmdCIgfCAiU3VwZXIiIHwgIlN5bWJvbCIgfCAiU3ltYm9sTG9jayI7CgogICAgaW50ZXJmYWNlIEtleWJvYXJkRXZlbnQ8VCA9IEVsZW1lbnQ+IGV4dGVuZHMgVUlFdmVudDxULCBOYXRpdmVLZXlib2FyZEV2ZW50PiB7CiAgICAgICAgYWx0S2V5OiBib29sZWFuOwogICAgICAgIC8qKiBAZGVwcmVjYXRlZCAqLwogICAgICAgIGNoYXJDb2RlOiBudW1iZXI7CiAgICAgICAgY3RybEtleTogYm9vbGVhbjsKICAgICAgICBjb2RlOiBzdHJpbmc7CiAgICAgICAgLyoqCiAgICAgICAgICogU2VlIFtET00gTGV2ZWwgMyBFdmVudHMgc3BlY10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLWtleS8ja2V5cy1tb2RpZmllcikuIGZvciBhIGxpc3Qgb2YgdmFsaWQgKGNhc2Utc2Vuc2l0aXZlKSBhcmd1bWVudHMgdG8gdGhpcyBtZXRob2QuCiAgICAgICAgICovCiAgICAgICAgZ2V0TW9kaWZpZXJTdGF0ZShrZXk6IE1vZGlmaWVyS2V5KTogYm9vbGVhbjsKICAgICAgICAvKioKICAgICAgICAgKiBTZWUgdGhlIFtET00gTGV2ZWwgMyBFdmVudHMgc3BlY10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLWtleS8jbmFtZWQta2V5LWF0dHJpYnV0ZS12YWx1ZXMpLiBmb3IgcG9zc2libGUgdmFsdWVzCiAgICAgICAgICovCiAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAga2V5Q29kZTogbnVtYmVyOwogICAgICAgIGxvY2FsZTogc3RyaW5nOwogICAgICAgIGxvY2F0aW9uOiBudW1iZXI7CiAgICAgICAgbWV0YUtleTogYm9vbGVhbjsKICAgICAgICByZXBlYXQ6IGJvb2xlYW47CiAgICAgICAgc2hpZnRLZXk6IGJvb2xlYW47CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgd2hpY2g6IG51bWJlcjsKICAgIH0KCiAgICBpbnRlcmZhY2UgTW91c2VFdmVudDxUID0gRWxlbWVudCwgRSA9IE5hdGl2ZU1vdXNlRXZlbnQ+IGV4dGVuZHMgVUlFdmVudDxULCBFPiB7CiAgICAgICAgYWx0S2V5OiBib29sZWFuOwogICAgICAgIGJ1dHRvbjogbnVtYmVyOwogICAgICAgIGJ1dHRvbnM6IG51bWJlcjsKICAgICAgICBjbGllbnRYOiBudW1iZXI7CiAgICAgICAgY2xpZW50WTogbnVtYmVyOwogICAgICAgIGN0cmxLZXk6IGJvb2xlYW47CiAgICAgICAgLyoqCiAgICAgICAgICogU2VlIFtET00gTGV2ZWwgMyBFdmVudHMgc3BlY10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3VpZXZlbnRzLWtleS8ja2V5cy1tb2RpZmllcikuIGZvciBhIGxpc3Qgb2YgdmFsaWQgKGNhc2Utc2Vuc2l0aXZlKSBhcmd1bWVudHMgdG8gdGhpcyBtZXRob2QuCiAgICAgICAgICovCiAgICAgICAgZ2V0TW9kaWZpZXJTdGF0ZShrZXk6IE1vZGlmaWVyS2V5KTogYm9vbGVhbjsKICAgICAgICBtZXRhS2V5OiBib29sZWFuOwogICAgICAgIG1vdmVtZW50WDogbnVtYmVyOwogICAgICAgIG1vdmVtZW50WTogbnVtYmVyOwogICAgICAgIHBhZ2VYOiBudW1iZXI7CiAgICAgICAgcGFnZVk6IG51bWJlcjsKICAgICAgICByZWxhdGVkVGFyZ2V0OiBFdmVudFRhcmdldCB8IG51bGw7CiAgICAgICAgc2NyZWVuWDogbnVtYmVyOwogICAgICAgIHNjcmVlblk6IG51bWJlcjsKICAgICAgICBzaGlmdEtleTogYm9vbGVhbjsKICAgIH0KCiAgICBpbnRlcmZhY2UgVG91Y2hFdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBVSUV2ZW50PFQsIE5hdGl2ZVRvdWNoRXZlbnQ+IHsKICAgICAgICBhbHRLZXk6IGJvb2xlYW47CiAgICAgICAgY2hhbmdlZFRvdWNoZXM6IFRvdWNoTGlzdDsKICAgICAgICBjdHJsS2V5OiBib29sZWFuOwogICAgICAgIC8qKgogICAgICAgICAqIFNlZSBbRE9NIExldmVsIDMgRXZlbnRzIHNwZWNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy1rZXkvI2tleXMtbW9kaWZpZXIpLiBmb3IgYSBsaXN0IG9mIHZhbGlkIChjYXNlLXNlbnNpdGl2ZSkgYXJndW1lbnRzIHRvIHRoaXMgbWV0aG9kLgogICAgICAgICAqLwogICAgICAgIGdldE1vZGlmaWVyU3RhdGUoa2V5OiBNb2RpZmllcktleSk6IGJvb2xlYW47CiAgICAgICAgbWV0YUtleTogYm9vbGVhbjsKICAgICAgICBzaGlmdEtleTogYm9vbGVhbjsKICAgICAgICB0YXJnZXRUb3VjaGVzOiBUb3VjaExpc3Q7CiAgICAgICAgdG91Y2hlczogVG91Y2hMaXN0OwogICAgfQoKICAgIGludGVyZmFjZSBVSUV2ZW50PFQgPSBFbGVtZW50LCBFID0gTmF0aXZlVUlFdmVudD4gZXh0ZW5kcyBTeW50aGV0aWNFdmVudDxULCBFPiB7CiAgICAgICAgZGV0YWlsOiBudW1iZXI7CiAgICAgICAgdmlldzogQWJzdHJhY3RWaWV3OwogICAgfQoKICAgIGludGVyZmFjZSBXaGVlbEV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIE1vdXNlRXZlbnQ8VCwgTmF0aXZlV2hlZWxFdmVudD4gewogICAgICAgIGRlbHRhTW9kZTogbnVtYmVyOwogICAgICAgIGRlbHRhWDogbnVtYmVyOwogICAgICAgIGRlbHRhWTogbnVtYmVyOwogICAgICAgIGRlbHRhWjogbnVtYmVyOwogICAgfQoKICAgIGludGVyZmFjZSBBbmltYXRpb25FdmVudDxUID0gRWxlbWVudD4gZXh0ZW5kcyBTeW50aGV0aWNFdmVudDxULCBOYXRpdmVBbmltYXRpb25FdmVudD4gewogICAgICAgIGFuaW1hdGlvbk5hbWU6IHN0cmluZzsKICAgICAgICBlbGFwc2VkVGltZTogbnVtYmVyOwogICAgICAgIHBzZXVkb0VsZW1lbnQ6IHN0cmluZzsKICAgIH0KCiAgICBpbnRlcmZhY2UgVHJhbnNpdGlvbkV2ZW50PFQgPSBFbGVtZW50PiBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PFQsIE5hdGl2ZVRyYW5zaXRpb25FdmVudD4gewogICAgICAgIGVsYXBzZWRUaW1lOiBudW1iZXI7CiAgICAgICAgcHJvcGVydHlOYW1lOiBzdHJpbmc7CiAgICAgICAgcHNldWRvRWxlbWVudDogc3RyaW5nOwogICAgfQoKICAgIC8vCiAgICAvLyBFdmVudCBIYW5kbGVyIFR5cGVzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgdHlwZSBFdmVudEhhbmRsZXI8RSBleHRlbmRzIFN5bnRoZXRpY0V2ZW50PGFueT4+ID0geyBiaXZhcmlhbmNlSGFjayhldmVudDogRSk6IHZvaWQgfVsiYml2YXJpYW5jZUhhY2siXTsKCiAgICB0eXBlIFJlYWN0RXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxTeW50aGV0aWNFdmVudDxUPj47CgogICAgdHlwZSBDbGlwYm9hcmRFdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPENsaXBib2FyZEV2ZW50PFQ+PjsKICAgIHR5cGUgQ29tcG9zaXRpb25FdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPENvbXBvc2l0aW9uRXZlbnQ8VD4+OwogICAgdHlwZSBEcmFnRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxEcmFnRXZlbnQ8VD4+OwogICAgdHlwZSBGb2N1c0V2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8Rm9jdXNFdmVudDxUPj47CiAgICB0eXBlIEZvcm1FdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPEZvcm1FdmVudDxUPj47CiAgICB0eXBlIENoYW5nZUV2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8Q2hhbmdlRXZlbnQ8VD4+OwogICAgdHlwZSBLZXlib2FyZEV2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8S2V5Ym9hcmRFdmVudDxUPj47CiAgICB0eXBlIE1vdXNlRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxNb3VzZUV2ZW50PFQ+PjsKICAgIHR5cGUgVG91Y2hFdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPFRvdWNoRXZlbnQ8VD4+OwogICAgdHlwZSBQb2ludGVyRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxQb2ludGVyRXZlbnQ8VD4+OwogICAgdHlwZSBVSUV2ZW50SGFuZGxlcjxUID0gRWxlbWVudD4gPSBFdmVudEhhbmRsZXI8VUlFdmVudDxUPj47CiAgICB0eXBlIFdoZWVsRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxXaGVlbEV2ZW50PFQ+PjsKICAgIHR5cGUgQW5pbWF0aW9uRXZlbnRIYW5kbGVyPFQgPSBFbGVtZW50PiA9IEV2ZW50SGFuZGxlcjxBbmltYXRpb25FdmVudDxUPj47CiAgICB0eXBlIFRyYW5zaXRpb25FdmVudEhhbmRsZXI8VCA9IEVsZW1lbnQ+ID0gRXZlbnRIYW5kbGVyPFRyYW5zaXRpb25FdmVudDxUPj47CgogICAgLy8KICAgIC8vIFByb3BzIC8gRE9NIEF0dHJpYnV0ZXMKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBpbnRlcmZhY2UgSFRNTFByb3BzPFQ+IGV4dGVuZHMgQWxsSFRNTEF0dHJpYnV0ZXM8VD4sIENsYXNzQXR0cmlidXRlczxUPiB7CiAgICB9CgogICAgdHlwZSBEZXRhaWxlZEhUTUxQcm9wczxFIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4sIFQ+ID0gQ2xhc3NBdHRyaWJ1dGVzPFQ+ICYgRTsKCiAgICBpbnRlcmZhY2UgU1ZHUHJvcHM8VD4gZXh0ZW5kcyBTVkdBdHRyaWJ1dGVzPFQ+LCBDbGFzc0F0dHJpYnV0ZXM8VD4gewogICAgfQoKICAgIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBTVkdQcm9wczxUPiB7fQogICAgaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50QXR0cmlidXRlczxUPiBleHRlbmRzIFNWR1Byb3BzPFQ+IHt9CgogICAgaW50ZXJmYWNlIERPTUF0dHJpYnV0ZXM8VD4gewogICAgICAgIGNoaWxkcmVuPzogUmVhY3ROb2RlIHwgdW5kZWZpbmVkOwogICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPzogewogICAgICAgICAgICAvLyBTaG91bGQgYmUgSW5uZXJIVE1MWydpbm5lckhUTUwnXS4KICAgICAgICAgICAgLy8gQnV0IHVuZm9ydHVuYXRlbHkgd2UncmUgbWl4aW5nIHJlbmRlcmVyLXNwZWNpZmljIHR5cGUgZGVjbGFyYXRpb25zLgogICAgICAgICAgICBfX2h0bWw6IHN0cmluZyB8IFRydXN0ZWRIVE1MOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIENsaXBib2FyZCBFdmVudHMKICAgICAgICBvbkNvcHk/OiBDbGlwYm9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db3B5Q2FwdHVyZT86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkN1dD86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkN1dENhcHR1cmU/OiBDbGlwYm9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25QYXN0ZT86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBhc3RlQ2FwdHVyZT86IENsaXBib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gQ29tcG9zaXRpb24gRXZlbnRzCiAgICAgICAgb25Db21wb3NpdGlvbkVuZD86IENvbXBvc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ29tcG9zaXRpb25FbmRDYXB0dXJlPzogQ29tcG9zaXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db21wb3NpdGlvblN0YXJ0PzogQ29tcG9zaXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZT86IENvbXBvc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ29tcG9zaXRpb25VcGRhdGU/OiBDb21wb3NpdGlvbkV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZT86IENvbXBvc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBGb2N1cyBFdmVudHMKICAgICAgICBvbkZvY3VzPzogRm9jdXNFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Gb2N1c0NhcHR1cmU/OiBGb2N1c0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkJsdXI/OiBGb2N1c0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkJsdXJDYXB0dXJlPzogRm9jdXNFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIEZvcm0gRXZlbnRzCiAgICAgICAgb25DaGFuZ2U/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlQ2FwdHVyZT86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25CZWZvcmVJbnB1dD86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25CZWZvcmVJbnB1dENhcHR1cmU/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uSW5wdXQ/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uSW5wdXRDYXB0dXJlPzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblJlc2V0PzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblJlc2V0Q2FwdHVyZT86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TdWJtaXQ/OiBGb3JtRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU3VibWl0Q2FwdHVyZT86IEZvcm1FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25JbnZhbGlkPzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkludmFsaWRDYXB0dXJlPzogRm9ybUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gSW1hZ2UgRXZlbnRzCiAgICAgICAgb25Mb2FkPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Mb2FkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRXJyb3I/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsgLy8gYWxzbyBhIE1lZGlhIEV2ZW50CiAgICAgICAgb25FcnJvckNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsgLy8gYWxzbyBhIE1lZGlhIEV2ZW50CgogICAgICAgIC8vIEtleWJvYXJkIEV2ZW50cwogICAgICAgIG9uS2V5RG93bj86IEtleWJvYXJkRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uS2V5RG93bkNhcHR1cmU/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogQGRlcHJlY2F0ZWQgKi8KICAgICAgICBvbktleVByZXNzPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgb25LZXlQcmVzc0NhcHR1cmU/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbktleVVwPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25LZXlVcENhcHR1cmU/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gTWVkaWEgRXZlbnRzCiAgICAgICAgb25BYm9ydD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQWJvcnRDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DYW5QbGF5PzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DYW5QbGF5Q2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2FuUGxheVRocm91Z2g/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNhblBsYXlUaHJvdWdoQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHVyYXRpb25DaGFuZ2U/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW1wdGllZD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW1wdGllZENhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkVuY3J5cHRlZD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW5jcnlwdGVkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRW5kZWQ/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkVuZGVkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9hZGVkRGF0YT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9hZGVkRGF0YUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkxvYWRlZE1ldGFkYXRhPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Mb2FkZWRNZXRhZGF0YUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkxvYWRTdGFydD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9hZFN0YXJ0Q2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUGF1c2U/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBhdXNlQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUGxheT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUGxheUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBsYXlpbmc/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBsYXlpbmdDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qcm9ncmVzcz86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUHJvZ3Jlc3NDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25SYXRlQ2hhbmdlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25SYXRlQ2hhbmdlQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUmVzaXplPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25SZXNpemVDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TZWVrZWQ/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblNlZWtlZENhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblNlZWtpbmc/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblNlZWtpbmdDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TdGFsbGVkPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25TdGFsbGVkQ2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU3VzcGVuZD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU3VzcGVuZENhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRpbWVVcGRhdGU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRpbWVVcGRhdGVDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Wb2x1bWVDaGFuZ2U/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblZvbHVtZUNoYW5nZUNhcHR1cmU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbldhaXRpbmc/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbldhaXRpbmdDYXB0dXJlPzogUmVhY3RFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIE1vdXNlRXZlbnRzCiAgICAgICAgb25BdXhDbGljaz86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQXV4Q2xpY2tDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DbGljaz86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2xpY2tDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Db250ZXh0TWVudT86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ29udGV4dE1lbnVDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Eb3VibGVDbGljaz86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRG91YmxlQ2xpY2tDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25EcmFnPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdFbmQ/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0VuZENhcHR1cmU/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0VudGVyPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdFbnRlckNhcHR1cmU/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0V4aXQ/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ0V4aXRDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdMZWF2ZT86IERyYWdFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25EcmFnTGVhdmVDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdPdmVyPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyYWdPdmVyQ2FwdHVyZT86IERyYWdFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25EcmFnU3RhcnQ/OiBEcmFnRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uRHJhZ1N0YXJ0Q2FwdHVyZT86IERyYWdFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ecm9wPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkRyb3BDYXB0dXJlPzogRHJhZ0V2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlRG93bj86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VEb3duQ2FwdHVyZT86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VFbnRlcj86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VMZWF2ZT86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VNb3ZlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Nb3VzZU1vdmVDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Nb3VzZU91dD86IE1vdXNlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTW91c2VPdXRDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Nb3VzZU92ZXI/OiBNb3VzZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlT3ZlckNhcHR1cmU/OiBNb3VzZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlVXA/OiBNb3VzZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbk1vdXNlVXBDYXB0dXJlPzogTW91c2VFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFNlbGVjdGlvbiBFdmVudHMKICAgICAgICBvblNlbGVjdD86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU2VsZWN0Q2FwdHVyZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBUb3VjaCBFdmVudHMKICAgICAgICBvblRvdWNoQ2FuY2VsPzogVG91Y2hFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ub3VjaENhbmNlbENhcHR1cmU/OiBUb3VjaEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRvdWNoRW5kPzogVG91Y2hFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ub3VjaEVuZENhcHR1cmU/OiBUb3VjaEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblRvdWNoTW92ZT86IFRvdWNoRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVG91Y2hNb3ZlQ2FwdHVyZT86IFRvdWNoRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVG91Y2hTdGFydD86IFRvdWNoRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVG91Y2hTdGFydENhcHR1cmU/OiBUb3VjaEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gUG9pbnRlciBFdmVudHMKICAgICAgICBvblBvaW50ZXJEb3duPzogUG9pbnRlckV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyTW92ZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyTW92ZUNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlclVwPzogUG9pbnRlckV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvblBvaW50ZXJVcENhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlckNhbmNlbD86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyQ2FuY2VsQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyRW50ZXI/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlckVudGVyQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyTGVhdmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlckxlYXZlQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyT3Zlcj86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyT3ZlckNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uUG9pbnRlck91dD86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Qb2ludGVyT3V0Q2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Hb3RQb2ludGVyQ2FwdHVyZT86IFBvaW50ZXJFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Hb3RQb2ludGVyQ2FwdHVyZUNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPzogUG9pbnRlckV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkxvc3RQb2ludGVyQ2FwdHVyZUNhcHR1cmU/OiBQb2ludGVyRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBVSSBFdmVudHMKICAgICAgICBvblNjcm9sbD86IFVJRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uU2Nyb2xsQ2FwdHVyZT86IFVJRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBXaGVlbCBFdmVudHMKICAgICAgICBvbldoZWVsPzogV2hlZWxFdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25XaGVlbENhcHR1cmU/OiBXaGVlbEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gQW5pbWF0aW9uIEV2ZW50cwogICAgICAgIG9uQW5pbWF0aW9uU3RhcnQ/OiBBbmltYXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25BbmltYXRpb25TdGFydENhcHR1cmU/OiBBbmltYXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25BbmltYXRpb25FbmQ/OiBBbmltYXRpb25FdmVudEhhbmRsZXI8VD4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25BbmltYXRpb25FbmRDYXB0dXJlPzogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQW5pbWF0aW9uSXRlcmF0aW9uPzogQW5pbWF0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uQW5pbWF0aW9uSXRlcmF0aW9uQ2FwdHVyZT86IEFuaW1hdGlvbkV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gVHJhbnNpdGlvbiBFdmVudHMKICAgICAgICBvblRyYW5zaXRpb25FbmQ/OiBUcmFuc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgICAgIG9uVHJhbnNpdGlvbkVuZENhcHR1cmU/OiBUcmFuc2l0aW9uRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGV4cG9ydCBpbnRlcmZhY2UgQ1NTUHJvcGVydGllcyBleHRlbmRzIENTUy5Qcm9wZXJ0aWVzPHN0cmluZyB8IG51bWJlcj4gewogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBpbmRleCBzaWduYXR1cmUgd2FzIHJlbW92ZWQgdG8gZW5hYmxlIGNsb3NlZCB0eXBpbmcgZm9yIHN0eWxlCiAgICAgICAgICogdXNpbmcgQ1NTVHlwZS4gWW91J3JlIGFibGUgdG8gdXNlIHR5cGUgYXNzZXJ0aW9uIG9yIG1vZHVsZSBhdWdtZW50YXRpb24KICAgICAgICAgKiB0byBhZGQgcHJvcGVydGllcyBvciBhbiBpbmRleCBzaWduYXR1cmUgb2YgeW91ciBvd24uCiAgICAgICAgICoKICAgICAgICAgKiBGb3IgZXhhbXBsZXMgYW5kIG1vcmUgaW5mb3JtYXRpb24sIHZpc2l0OgogICAgICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVuaWMvY3NzdHlwZSN3aGF0LXNob3VsZC1pLWRvLXdoZW4taS1nZXQtdHlwZS1lcnJvcnMKICAgICAgICAgKi8KICAgIH0KCiAgICAvLyBBbGwgdGhlIFdBSS1BUklBIDEuMSBhdHRyaWJ1dGVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8KICAgIGludGVyZmFjZSBBcmlhQXR0cmlidXRlcyB7CiAgICAgICAgLyoqIElkZW50aWZpZXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgZWxlbWVudCB3aGVuIERPTSBmb2N1cyBpcyBvbiBhIGNvbXBvc2l0ZSB3aWRnZXQsIHRleHRib3gsIGdyb3VwLCBvciBhcHBsaWNhdGlvbi4gKi8KICAgICAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyB3aWxsIHByZXNlbnQgYWxsLCBvciBvbmx5IHBhcnRzIG9mLCB0aGUgY2hhbmdlZCByZWdpb24gYmFzZWQgb24gdGhlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIGFyaWEtcmVsZXZhbnQgYXR0cmlidXRlLiAqLwogICAgICAgICdhcmlhLWF0b21pYyc/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGlucHV0dGluZyB0ZXh0IGNvdWxkIHRyaWdnZXIgZGlzcGxheSBvZiBvbmUgb3IgbW9yZSBwcmVkaWN0aW9ucyBvZiB0aGUgdXNlcidzIGludGVuZGVkIHZhbHVlIGZvciBhbiBpbnB1dCBhbmQgc3BlY2lmaWVzIGhvdyBwcmVkaWN0aW9ucyB3b3VsZCBiZQogICAgICAgICAqIHByZXNlbnRlZCBpZiB0aGV5IGFyZSBtYWRlLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc/OiAnbm9uZScgfCAnaW5saW5lJyB8ICdsaXN0JyB8ICdib3RoJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIGFuIGVsZW1lbnQgaXMgYmVpbmcgbW9kaWZpZWQgYW5kIHRoYXQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyBNQVkgd2FudCB0byB3YWl0IHVudGlsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb21wbGV0ZSBiZWZvcmUgZXhwb3NpbmcgdGhlbSB0byB0aGUgdXNlci4gKi8KICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHZhbHVlIHRoYXQgbGFiZWxzIHRoZSBjdXJyZW50IGVsZW1lbnQsIHdoaWNoIGlzIGludGVuZGVkIHRvIGJlIGNvbnZlcnRlZCBpbnRvIEJyYWlsbGUuCiAgICAgICAgICogQHNlZSBhcmlhLWxhYmVsLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWJyYWlsbGVsYWJlbCc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIGh1bWFuLXJlYWRhYmxlLCBhdXRob3ItbG9jYWxpemVkIGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIGZvciB0aGUgcm9sZSBvZiBhbiBlbGVtZW50LCB3aGljaCBpcyBpbnRlbmRlZCB0byBiZSBjb252ZXJ0ZWQgaW50byBCcmFpbGxlLgogICAgICAgICAqIEBzZWUgYXJpYS1yb2xlZGVzY3JpcHRpb24uCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtYnJhaWxsZXJvbGVkZXNjcmlwdGlvbic/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgJ2FyaWEtYnVzeSc/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIEluZGljYXRlcyB0aGUgY3VycmVudCAiY2hlY2tlZCIgc3RhdGUgb2YgY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywgYW5kIG90aGVyIHdpZGdldHMuCiAgICAgICAgICogQHNlZSBhcmlhLXByZXNzZWQgQHNlZSBhcmlhLXNlbGVjdGVkLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWNoZWNrZWQnPzogYm9vbGVhbiB8ICdmYWxzZScgfCAnbWl4ZWQnIHwgJ3RydWUnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIERlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1jb2xpbmRleC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb2xjb3VudCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhbiBlbGVtZW50J3MgY29sdW1uIGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1jb2xjb3VudCBAc2VlIGFyaWEtY29sc3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb2xpbmRleCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgYXJpYS1jb2xpbmRleC4KICAgICAgICAgKiBAc2VlIGFyaWEtcm93aW5kZXh0ZXh0LgogICAgICAgICAqLwogICAgICAgICdhcmlhLWNvbGluZGV4dGV4dCc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1jb2xpbmRleCBAc2VlIGFyaWEtcm93c3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb2xzcGFuJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJZGVudGlmaWVzIHRoZSBlbGVtZW50IChvciBlbGVtZW50cykgd2hvc2UgY29udGVudHMgb3IgcHJlc2VuY2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGN1cnJlbnQgZWxlbWVudC4KICAgICAgICAgKiBAc2VlIGFyaWEtb3ducy4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1jb250cm9scyc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB0aGUgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgaXRlbSB3aXRoaW4gYSBjb250YWluZXIgb3Igc2V0IG9mIHJlbGF0ZWQgZWxlbWVudHMuICovCiAgICAgICAgJ2FyaWEtY3VycmVudCc/OiBib29sZWFuIHwgJ2ZhbHNlJyB8ICd0cnVlJyB8ICdwYWdlJyB8ICdzdGVwJyB8ICdsb2NhdGlvbicgfCAnZGF0ZScgfCAndGltZScgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCAob3IgZWxlbWVudHMpIHRoYXQgZGVzY3JpYmVzIHRoZSBvYmplY3QuCiAgICAgICAgICogQHNlZSBhcmlhLWxhYmVsbGVkYnkKICAgICAgICAgKi8KICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGRlc2NyaWJlcyBvciBhbm5vdGF0ZXMgdGhlIGN1cnJlbnQgZWxlbWVudC4KICAgICAgICAgKiBAc2VlIHJlbGF0ZWQgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1kZXNjcmlwdGlvbic/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGEgZGV0YWlsZWQsIGV4dGVuZGVkIGRlc2NyaXB0aW9uIGZvciB0aGUgb2JqZWN0LgogICAgICAgICAqIEBzZWUgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1kZXRhaWxzJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBwZXJjZWl2YWJsZSBidXQgZGlzYWJsZWQsIHNvIGl0IGlzIG5vdCBlZGl0YWJsZSBvciBvdGhlcndpc2Ugb3BlcmFibGUuCiAgICAgICAgICogQHNlZSBhcmlhLWhpZGRlbiBAc2VlIGFyaWEtcmVhZG9ubHkuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtZGlzYWJsZWQnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgd2hhdCBmdW5jdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCB3aGVuIGEgZHJhZ2dlZCBvYmplY3QgaXMgcmVsZWFzZWQgb24gdGhlIGRyb3AgdGFyZ2V0LgogICAgICAgICAqIEBkZXByZWNhdGVkIGluIEFSSUEgMS4xCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtZHJvcGVmZmVjdCc/OiAnbm9uZScgfCAnY29weScgfCAnZXhlY3V0ZScgfCAnbGluaycgfCAnbW92ZScgfCAncG9wdXAnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIElkZW50aWZpZXMgdGhlIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGZvciB0aGUgb2JqZWN0LgogICAgICAgICAqIEBzZWUgYXJpYS1pbnZhbGlkIEBzZWUgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1lcnJvcm1lc3NhZ2UnPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCwgb3IgYW5vdGhlciBncm91cGluZyBlbGVtZW50IGl0IGNvbnRyb2xzLCBpcyBjdXJyZW50bHkgZXhwYW5kZWQgb3IgY29sbGFwc2VkLiAqLwogICAgICAgICdhcmlhLWV4cGFuZGVkJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSWRlbnRpZmllcyB0aGUgbmV4dCBlbGVtZW50IChvciBlbGVtZW50cykgaW4gYW4gYWx0ZXJuYXRlIHJlYWRpbmcgb3JkZXIgb2YgY29udGVudCB3aGljaCwgYXQgdGhlIHVzZXIncyBkaXNjcmV0aW9uLAogICAgICAgICAqIGFsbG93cyBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byBvdmVycmlkZSB0aGUgZ2VuZXJhbCBkZWZhdWx0IG9mIHJlYWRpbmcgaW4gZG9jdW1lbnQgc291cmNlIG9yZGVyLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWZsb3d0byc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSW5kaWNhdGVzIGFuIGVsZW1lbnQncyAiZ3JhYmJlZCIgc3RhdGUgaW4gYSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbi4KICAgICAgICAgKiBAZGVwcmVjYXRlZCBpbiBBUklBIDEuMQogICAgICAgICAqLwogICAgICAgICdhcmlhLWdyYWJiZWQnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHRoZSBhdmFpbGFiaWxpdHkgYW5kIHR5cGUgb2YgaW50ZXJhY3RpdmUgcG9wdXAgZWxlbWVudCwgc3VjaCBhcyBtZW51IG9yIGRpYWxvZywgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGFuIGVsZW1lbnQuICovCiAgICAgICAgJ2FyaWEtaGFzcG9wdXAnPzogYm9vbGVhbiB8ICdmYWxzZScgfCAndHJ1ZScgfCAnbWVudScgfCAnbGlzdGJveCcgfCAndHJlZScgfCAnZ3JpZCcgfCAnZGlhbG9nJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLgogICAgICAgICAqIEBzZWUgYXJpYS1kaXNhYmxlZC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1oaWRkZW4nPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhlIGVudGVyZWQgdmFsdWUgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KICAgICAgICAgKiBAc2VlIGFyaWEtZXJyb3JtZXNzYWdlLgogICAgICAgICAqLwogICAgICAgICdhcmlhLWludmFsaWQnPzogYm9vbGVhbiB8ICdmYWxzZScgfCAndHJ1ZScgfCAnZ3JhbW1hcicgfCAnc3BlbGxpbmcnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBJbmRpY2F0ZXMga2V5Ym9hcmQgc2hvcnRjdXRzIHRoYXQgYW4gYXV0aG9yIGhhcyBpbXBsZW1lbnRlZCB0byBhY3RpdmF0ZSBvciBnaXZlIGZvY3VzIHRvIGFuIGVsZW1lbnQuICovCiAgICAgICAgJ2FyaWEta2V5c2hvcnRjdXRzJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHZhbHVlIHRoYXQgbGFiZWxzIHRoZSBjdXJyZW50IGVsZW1lbnQuCiAgICAgICAgICogQHNlZSBhcmlhLWxhYmVsbGVkYnkuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtbGFiZWwnPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIElkZW50aWZpZXMgdGhlIGVsZW1lbnQgKG9yIGVsZW1lbnRzKSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LgogICAgICAgICAqIEBzZWUgYXJpYS1kZXNjcmliZWRieS4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5Jz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogRGVmaW5lcyB0aGUgaGllcmFyY2hpY2FsIGxldmVsIG9mIGFuIGVsZW1lbnQgd2l0aGluIGEgc3RydWN0dXJlLiAqLwogICAgICAgICdhcmlhLWxldmVsJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHRoYXQgYW4gZWxlbWVudCB3aWxsIGJlIHVwZGF0ZWQsIGFuZCBkZXNjcmliZXMgdGhlIHR5cGVzIG9mIHVwZGF0ZXMgdGhlIHVzZXIgYWdlbnRzLCBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLCBhbmQgdXNlciBjYW4gZXhwZWN0IGZyb20gdGhlIGxpdmUgcmVnaW9uLiAqLwogICAgICAgICdhcmlhLWxpdmUnPzogJ29mZicgfCAnYXNzZXJ0aXZlJyB8ICdwb2xpdGUnIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBlbGVtZW50IGlzIG1vZGFsIHdoZW4gZGlzcGxheWVkLiAqLwogICAgICAgICdhcmlhLW1vZGFsJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGEgdGV4dCBib3ggYWNjZXB0cyBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dCBvciBvbmx5IGEgc2luZ2xlIGxpbmUuICovCiAgICAgICAgJ2FyaWEtbXVsdGlsaW5lJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSB1c2VyIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0YWJsZSBkZXNjZW5kYW50cy4gKi8KICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGVsZW1lbnQncyBvcmllbnRhdGlvbiBpcyBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgb3IgdW5rbm93bi9hbWJpZ3VvdXMuICovCiAgICAgICAgJ2FyaWEtb3JpZW50YXRpb24nPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJZGVudGlmaWVzIGFuIGVsZW1lbnQgKG9yIGVsZW1lbnRzKSBpbiBvcmRlciB0byBkZWZpbmUgYSB2aXN1YWwsIGZ1bmN0aW9uYWwsIG9yIGNvbnRleHR1YWwgcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcAogICAgICAgICAqIGJldHdlZW4gRE9NIGVsZW1lbnRzIHdoZXJlIHRoZSBET00gaGllcmFyY2h5IGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcmVsYXRpb25zaGlwLgogICAgICAgICAqIEBzZWUgYXJpYS1jb250cm9scy4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1vd25zJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGEgc2hvcnQgaGludCAoYSB3b3JkIG9yIHNob3J0IHBocmFzZSkgaW50ZW5kZWQgdG8gYWlkIHRoZSB1c2VyIHdpdGggZGF0YSBlbnRyeSB3aGVuIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZS4KICAgICAgICAgKiBBIGhpbnQgY291bGQgYmUgYSBzYW1wbGUgdmFsdWUgb3IgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0LgogICAgICAgICAqLwogICAgICAgICdhcmlhLXBsYWNlaG9sZGVyJz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGFuIGVsZW1lbnQncyBudW1iZXIgb3IgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLgogICAgICAgICAqIEBzZWUgYXJpYS1zZXRzaXplLgogICAgICAgICAqLwogICAgICAgICdhcmlhLXBvc2luc2V0Jz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgInByZXNzZWQiIHN0YXRlIG9mIHRvZ2dsZSBidXR0b25zLgogICAgICAgICAqIEBzZWUgYXJpYS1jaGVja2VkIEBzZWUgYXJpYS1zZWxlY3RlZC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1wcmVzc2VkJz86IGJvb2xlYW4gfCAnZmFsc2UnIHwgJ21peGVkJyB8ICd0cnVlJyB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBub3QgZWRpdGFibGUsIGJ1dCBpcyBvdGhlcndpc2Ugb3BlcmFibGUuCiAgICAgICAgICogQHNlZSBhcmlhLWRpc2FibGVkLgogICAgICAgICAqLwogICAgICAgICdhcmlhLXJlYWRvbmx5Jz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogSW5kaWNhdGVzIHdoYXQgbm90aWZpY2F0aW9ucyB0aGUgdXNlciBhZ2VudCB3aWxsIHRyaWdnZXIgd2hlbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHdpdGhpbiBhIGxpdmUgcmVnaW9uIGlzIG1vZGlmaWVkLgogICAgICAgICAqIEBzZWUgYXJpYS1hdG9taWMuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtcmVsZXZhbnQnPzogJ2FkZGl0aW9ucycgfCAnYWRkaXRpb25zIHJlbW92YWxzJyB8ICdhZGRpdGlvbnMgdGV4dCcgfCAnYWxsJyB8ICdyZW1vdmFscycgfCAncmVtb3ZhbHMgYWRkaXRpb25zJyB8ICdyZW1vdmFscyB0ZXh0JyB8ICd0ZXh0JyB8ICd0ZXh0IGFkZGl0aW9ucycgfCAndGV4dCByZW1vdmFscycgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEluZGljYXRlcyB0aGF0IHVzZXIgaW5wdXQgaXMgcmVxdWlyZWQgb24gdGhlIGVsZW1lbnQgYmVmb3JlIGEgZm9ybSBtYXkgYmUgc3VibWl0dGVkLiAqLwogICAgICAgICdhcmlhLXJlcXVpcmVkJz86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIERlZmluZXMgYSBodW1hbi1yZWFkYWJsZSwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIHJvbGUgb2YgYW4gZWxlbWVudC4gKi8KICAgICAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKgogICAgICAgICAqIERlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1yb3dpbmRleC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1yb3djb3VudCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhbiBlbGVtZW50J3Mgcm93IGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3Mgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1yb3djb3VudCBAc2VlIGFyaWEtcm93c3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1yb3dpbmRleCc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgYXJpYS1yb3dpbmRleC4KICAgICAgICAgKiBAc2VlIGFyaWEtY29saW5kZXh0ZXh0LgogICAgICAgICAqLwogICAgICAgICdhcmlhLXJvd2luZGV4dGV4dCc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3Mgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgdGFibGUsIGdyaWQsIG9yIHRyZWVncmlkLgogICAgICAgICAqIEBzZWUgYXJpYS1yb3dpbmRleCBAc2VlIGFyaWEtY29sc3Bhbi4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1yb3dzcGFuJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgInNlbGVjdGVkIiBzdGF0ZSBvZiB2YXJpb3VzIHdpZGdldHMuCiAgICAgICAgICogQHNlZSBhcmlhLWNoZWNrZWQgQHNlZSBhcmlhLXByZXNzZWQuCiAgICAgICAgICovCiAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLgogICAgICAgICAqIEBzZWUgYXJpYS1wb3NpbnNldC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS1zZXRzaXplJz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogSW5kaWNhdGVzIGlmIGl0ZW1zIGluIGEgdGFibGUgb3IgZ3JpZCBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLiAqLwogICAgICAgICdhcmlhLXNvcnQnPzogJ25vbmUnIHwgJ2FzY2VuZGluZycgfCAnZGVzY2VuZGluZycgfCAnb3RoZXInIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBEZWZpbmVzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2Ugd2lkZ2V0LiAqLwogICAgICAgICdhcmlhLXZhbHVlbWF4Jz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogRGVmaW5lcyB0aGUgbWluaW11bSBhbGxvd2VkIHZhbHVlIGZvciBhIHJhbmdlIHdpZGdldC4gKi8KICAgICAgICAnYXJpYS12YWx1ZW1pbic/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSByYW5nZSB3aWRnZXQuCiAgICAgICAgICogQHNlZSBhcmlhLXZhbHVldGV4dC4KICAgICAgICAgKi8KICAgICAgICAnYXJpYS12YWx1ZW5vdyc/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIERlZmluZXMgdGhlIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgYXJpYS12YWx1ZW5vdyBmb3IgYSByYW5nZSB3aWRnZXQuICovCiAgICAgICAgJ2FyaWEtdmFsdWV0ZXh0Jz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvLyBBbGwgdGhlIFdBSS1BUklBIDEuMSByb2xlIGF0dHJpYnV0ZSB2YWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNyb2xlX2RlZmluaXRpb25zCiAgICB0eXBlIEFyaWFSb2xlID0KICAgICAgICB8ICdhbGVydCcKICAgICAgICB8ICdhbGVydGRpYWxvZycKICAgICAgICB8ICdhcHBsaWNhdGlvbicKICAgICAgICB8ICdhcnRpY2xlJwogICAgICAgIHwgJ2Jhbm5lcicKICAgICAgICB8ICdidXR0b24nCiAgICAgICAgfCAnY2VsbCcKICAgICAgICB8ICdjaGVja2JveCcKICAgICAgICB8ICdjb2x1bW5oZWFkZXInCiAgICAgICAgfCAnY29tYm9ib3gnCiAgICAgICAgfCAnY29tcGxlbWVudGFyeScKICAgICAgICB8ICdjb250ZW50aW5mbycKICAgICAgICB8ICdkZWZpbml0aW9uJwogICAgICAgIHwgJ2RpYWxvZycKICAgICAgICB8ICdkaXJlY3RvcnknCiAgICAgICAgfCAnZG9jdW1lbnQnCiAgICAgICAgfCAnZmVlZCcKICAgICAgICB8ICdmaWd1cmUnCiAgICAgICAgfCAnZm9ybScKICAgICAgICB8ICdncmlkJwogICAgICAgIHwgJ2dyaWRjZWxsJwogICAgICAgIHwgJ2dyb3VwJwogICAgICAgIHwgJ2hlYWRpbmcnCiAgICAgICAgfCAnaW1nJwogICAgICAgIHwgJ2xpbmsnCiAgICAgICAgfCAnbGlzdCcKICAgICAgICB8ICdsaXN0Ym94JwogICAgICAgIHwgJ2xpc3RpdGVtJwogICAgICAgIHwgJ2xvZycKICAgICAgICB8ICdtYWluJwogICAgICAgIHwgJ21hcnF1ZWUnCiAgICAgICAgfCAnbWF0aCcKICAgICAgICB8ICdtZW51JwogICAgICAgIHwgJ21lbnViYXInCiAgICAgICAgfCAnbWVudWl0ZW0nCiAgICAgICAgfCAnbWVudWl0ZW1jaGVja2JveCcKICAgICAgICB8ICdtZW51aXRlbXJhZGlvJwogICAgICAgIHwgJ25hdmlnYXRpb24nCiAgICAgICAgfCAnbm9uZScKICAgICAgICB8ICdub3RlJwogICAgICAgIHwgJ29wdGlvbicKICAgICAgICB8ICdwcmVzZW50YXRpb24nCiAgICAgICAgfCAncHJvZ3Jlc3NiYXInCiAgICAgICAgfCAncmFkaW8nCiAgICAgICAgfCAncmFkaW9ncm91cCcKICAgICAgICB8ICdyZWdpb24nCiAgICAgICAgfCAncm93JwogICAgICAgIHwgJ3Jvd2dyb3VwJwogICAgICAgIHwgJ3Jvd2hlYWRlcicKICAgICAgICB8ICdzY3JvbGxiYXInCiAgICAgICAgfCAnc2VhcmNoJwogICAgICAgIHwgJ3NlYXJjaGJveCcKICAgICAgICB8ICdzZXBhcmF0b3InCiAgICAgICAgfCAnc2xpZGVyJwogICAgICAgIHwgJ3NwaW5idXR0b24nCiAgICAgICAgfCAnc3RhdHVzJwogICAgICAgIHwgJ3N3aXRjaCcKICAgICAgICB8ICd0YWInCiAgICAgICAgfCAndGFibGUnCiAgICAgICAgfCAndGFibGlzdCcKICAgICAgICB8ICd0YWJwYW5lbCcKICAgICAgICB8ICd0ZXJtJwogICAgICAgIHwgJ3RleHRib3gnCiAgICAgICAgfCAndGltZXInCiAgICAgICAgfCAndG9vbGJhcicKICAgICAgICB8ICd0b29sdGlwJwogICAgICAgIHwgJ3RyZWUnCiAgICAgICAgfCAndHJlZWdyaWQnCiAgICAgICAgfCAndHJlZWl0ZW0nCiAgICAgICAgfCAoc3RyaW5nICYge30pOwoKICAgIGludGVyZmFjZSBIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEFyaWFBdHRyaWJ1dGVzLCBET01BdHRyaWJ1dGVzPFQ+IHsKICAgICAgICAvLyBSZWFjdC1zcGVjaWZpYyBBdHRyaWJ1dGVzCiAgICAgICAgZGVmYXVsdENoZWNrZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRlZmF1bHRWYWx1ZT86IHN0cmluZyB8IG51bWJlciB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZDsKICAgICAgICBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFN0YW5kYXJkIEhUTUwgQXR0cmlidXRlcwogICAgICAgIGFjY2Vzc0tleT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvRm9jdXM/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50RWRpdGFibGU/OiBCb29sZWFuaXNoIHwgImluaGVyaXQiIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHRNZW51Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRpcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkcmFnZ2FibGU/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIGhpZGRlbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgaWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGFuZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBub25jZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzbG90Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwZWxsQ2hlY2s/OiBCb29sZWFuaXNoIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0YWJJbmRleD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0cmFuc2xhdGU/OiAneWVzJyB8ICdubycgfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFVua25vd24KICAgICAgICByYWRpb0dyb3VwPzogc3RyaW5nIHwgdW5kZWZpbmVkOyAvLyA8Y29tbWFuZD4sIDxtZW51aXRlbT4KCiAgICAgICAgLy8gV0FJLUFSSUEKICAgICAgICByb2xlPzogQXJpYVJvbGUgfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIFJERmEgQXR0cmlidXRlcwogICAgICAgIGFib3V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRlbnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGF0YXR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW5saXN0PzogYW55OwogICAgICAgIHByZWZpeD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcm9wZXJ0eT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVzb3VyY2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmV2Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGVvZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2b2NhYj86IHN0cmluZyB8IHVuZGVmaW5lZDsKCiAgICAgICAgLy8gTm9uLXN0YW5kYXJkIEF0dHJpYnV0ZXMKICAgICAgICBhdXRvQ2FwaXRhbGl6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvQ29ycmVjdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvU2F2ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpdGVtUHJvcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpdGVtU2NvcGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGl0ZW1UeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGl0ZW1JRD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpdGVtUmVmPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlc3VsdHM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc2VjdXJpdHk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5zZWxlY3RhYmxlPzogJ29uJyB8ICdvZmYnIHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBMaXZpbmcgU3RhbmRhcmQKICAgICAgICAvKioKICAgICAgICAgKiBIaW50cyBhdCB0aGUgdHlwZSBvZiBkYXRhIHRoYXQgbWlnaHQgYmUgZW50ZXJlZCBieSB0aGUgdXNlciB3aGlsZSBlZGl0aW5nIHRoZSBlbGVtZW50IG9yIGl0cyBjb250ZW50cwogICAgICAgICAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW50ZXJhY3Rpb24uaHRtbCNpbnB1dC1tb2RhbGl0aWVzOi10aGUtaW5wdXRtb2RlLWF0dHJpYnV0ZQogICAgICAgICAqLwogICAgICAgIGlucHV0TW9kZT86ICdub25lJyB8ICd0ZXh0JyB8ICd0ZWwnIHwgJ3VybCcgfCAnZW1haWwnIHwgJ251bWVyaWMnIHwgJ2RlY2ltYWwnIHwgJ3NlYXJjaCcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogU3BlY2lmeSB0aGF0IGEgc3RhbmRhcmQgSFRNTCBlbGVtZW50IHNob3VsZCBiZWhhdmUgbGlrZSBhIGRlZmluZWQgY3VzdG9tIGJ1aWx0LWluIGVsZW1lbnQKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2N1c3RvbS1lbGVtZW50cy5odG1sI2F0dHItaXMKICAgICAgICAgKi8KICAgICAgICBpcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvKioKICAgICAqIEZvciBpbnRlcm5hbCB1c2FnZSBvbmx5LgogICAgICogRGlmZmVyZW50IHJlbGVhc2UgY2hhbm5lbHMgZGVjbGFyZSBhZGRpdGlvbmFsIHR5cGVzIG9mIFJlYWN0Tm9kZSB0aGlzIHBhcnRpY3VsYXIgcmVsZWFzZSBjaGFubmVsIGFjY2VwdHMuCiAgICAgKiBBcHAgb3IgbGlicmFyeSB0eXBlcyBzaG91bGQgbmV2ZXIgYXVnbWVudCB0aGlzIGludGVyZmFjZS4KICAgICAqLwogICAgaW50ZXJmYWNlIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OUyB7fQoKICAgIGludGVyZmFjZSBBbGxIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICAvLyBTdGFuZGFyZCBIVE1MIEF0dHJpYnV0ZXMKICAgICAgICBhY2NlcHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYWNjZXB0Q2hhcnNldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhY3Rpb24/OgogICAgICAgICAgICB8IHN0cmluZwogICAgICAgICAgICB8IHVuZGVmaW5lZAogICAgICAgICAgICB8IERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OU1trZXlvZiBET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX0VYUEVSSU1FTlRBTF9GT1JNX0FDVElPTlNdOwogICAgICAgIGFsbG93RnVsbFNjcmVlbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWxsb3dUcmFuc3BhcmVuY3k/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGFsdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhc3luYz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYXV0b0NvbXBsZXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGF1dG9QbGF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBjYXB0dXJlPzogYm9vbGVhbiB8ICd1c2VyJyB8ICdlbnZpcm9ubWVudCcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFBhZGRpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2hhclNldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjaGFsbGVuZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2hlY2tlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY2l0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjbGFzc0lEPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbHM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sU3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBjb250cm9scz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY29vcmRzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNyb3NzT3JpZ2luPzogImFub255bW91cyIgfCAidXNlLWNyZWRlbnRpYWxzIiB8ICIiIHwgdW5kZWZpbmVkOwogICAgICAgIGRhdGE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGF0ZVRpbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkb3dubG9hZD86IGFueTsKICAgICAgICBlbmNUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybUFjdGlvbj86CiAgICAgICAgICAgIHwgc3RyaW5nCiAgICAgICAgICAgIHwgdW5kZWZpbmVkCiAgICAgICAgICAgIHwgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TW2tleW9mIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OU107CiAgICAgICAgZm9ybUVuY1R5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybU1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtTm9WYWxpZGF0ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybVRhcmdldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmcmFtZUJvcmRlcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWFkZXJzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoaWdoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHJlZkxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHRtbEZvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBodHRwRXF1aXY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW50ZWdyaXR5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtleVBhcmFtcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrZXlUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtpbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlzdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsb29wPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsb3c/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFuaWZlc3Q/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFyZ2luSGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1hcmdpbldpZHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1heD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXhMZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWFHcm91cD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtZXRob2Q/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtdWx0aXBsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbXV0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbm9WYWxpZGF0ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgb3Blbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgb3B0aW11bT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYXlzSW5saW5lPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwb3N0ZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcHJlbG9hZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWFkT25seT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJldmVyc2VkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByb3dzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHJvd1NwYW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc2FuZGJveD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNjcm9sbGluZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzZWFtbGVzcz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc2VsZWN0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNoYXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNpemU/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc2l6ZXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjRG9jPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyY0xhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjU2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0YXJ0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHN0ZXA/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3VtbWFyeT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB1c2VNYXA/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd21vZGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd3JhcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEhUTUxBdHRyaWJ1dGVSZWZlcnJlclBvbGljeSA9CiAgICAgICAgfCAnJwogICAgICAgIHwgJ25vLXJlZmVycmVyJwogICAgICAgIHwgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJwogICAgICAgIHwgJ29yaWdpbicKICAgICAgICB8ICdvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nCiAgICAgICAgfCAnc2FtZS1vcmlnaW4nCiAgICAgICAgfCAnc3RyaWN0LW9yaWdpbicKICAgICAgICB8ICdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJwogICAgICAgIHwgJ3Vuc2FmZS11cmwnOwoKICAgIHR5cGUgSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldCA9CiAgICAgICAgfCAnX3NlbGYnCiAgICAgICAgfCAnX2JsYW5rJwogICAgICAgIHwgJ19wYXJlbnQnCiAgICAgICAgfCAnX3RvcCcKICAgICAgICB8IChzdHJpbmcgJiB7fSk7CgogICAgaW50ZXJmYWNlIEFuY2hvckhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGRvd25sb2FkPzogYW55OwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHJlZkxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGluZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBIVE1MQXR0cmlidXRlQW5jaG9yVGFyZ2V0IHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmZXJyZXJQb2xpY3k/OiBIVE1MQXR0cmlidXRlUmVmZXJyZXJQb2xpY3kgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEF1ZGlvSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBNZWRpYUhUTUxBdHRyaWJ1dGVzPFQ+IHt9CgogICAgaW50ZXJmYWNlIEFyZWFIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29vcmRzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRvd25sb2FkPzogYW55OwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHJlZkxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmZXJyZXJQb2xpY3k/OiBIVE1MQXR0cmlidXRlUmVmZXJyZXJQb2xpY3kgfCB1bmRlZmluZWQ7CiAgICAgICAgc2hhcGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBCYXNlSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgaHJlZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEJsb2NrcXVvdGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjaXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBCdXR0b25IVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtQWN0aW9uPzoKICAgICAgICAgICAgfCBzdHJpbmcKICAgICAgICAgICAgfCBET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX0VYUEVSSU1FTlRBTF9GT1JNX0FDVElPTlNba2V5b2YgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TXQogICAgICAgICAgICB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtRW5jVHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtTWV0aG9kPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm1Ob1ZhbGlkYXRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtVGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86ICdzdWJtaXQnIHwgJ3Jlc2V0JyB8ICdidXR0b24nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhbHVlPzogc3RyaW5nIHwgUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBDYW52YXNIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIHNwYW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIENvbGdyb3VwSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgc3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRGF0YUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIHZhbHVlPzogc3RyaW5nIHwgUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBEZXRhaWxzSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgb3Blbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgb25Ub2dnbGU/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRGVsSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgY2l0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkYXRlVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRGlhbG9nSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgb25DYW5jZWw/OiBSZWFjdEV2ZW50SGFuZGxlcjxUPiB8ICB1bmRlZmluZWQ7CiAgICAgICAgb25DbG9zZT86IFJlYWN0RXZlbnRIYW5kbGVyPFQ+IHwgIHVuZGVmaW5lZDsKICAgICAgICBvcGVuPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRW1iZWRIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEZpZWxkc2V0SFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgRm9ybUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGFjY2VwdENoYXJzZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYWN0aW9uPzoKICAgICAgICAgICAgfCBzdHJpbmcKICAgICAgICAgICAgfCB1bmRlZmluZWQKICAgICAgICAgICAgfCBET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX0VYUEVSSU1FTlRBTF9GT1JNX0FDVElPTlNba2V5b2YgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TXTsKICAgICAgICBhdXRvQ29tcGxldGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW5jVHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtZXRob2Q/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBub1ZhbGlkYXRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB0YXJnZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIEh0bWxIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBtYW5pZmVzdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgSWZyYW1lSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgYWxsb3c/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYWxsb3dGdWxsU2NyZWVuPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhbGxvd1RyYW5zcGFyZW5jeT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgZnJhbWVCb3JkZXI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxvYWRpbmc/OiAiZWFnZXIiIHwgImxhenkiIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBAZGVwcmVjYXRlZCAqLwogICAgICAgIG1hcmdpbkhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAvKiogQGRlcHJlY2F0ZWQgKi8KICAgICAgICBtYXJnaW5XaWR0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlZmVycmVyUG9saWN5PzogSFRNTEF0dHJpYnV0ZVJlZmVycmVyUG9saWN5IHwgdW5kZWZpbmVkOwogICAgICAgIHNhbmRib3g/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovCiAgICAgICAgc2Nyb2xsaW5nPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNlYW1sZXNzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjRG9jPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdpZHRoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBJbWdIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY3Jvc3NPcmlnaW4/OiAiYW5vbnltb3VzIiB8ICJ1c2UtY3JlZGVudGlhbHMiIHwgIiIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVjb2Rpbmc/OiAiYXN5bmMiIHwgImF1dG8iIHwgInN5bmMiIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsb2FkaW5nPzogImVhZ2VyIiB8ICJsYXp5IiB8IHVuZGVmaW5lZDsKICAgICAgICByZWZlcnJlclBvbGljeT86IEhUTUxBdHRyaWJ1dGVSZWZlcnJlclBvbGljeSB8IHVuZGVmaW5lZDsKICAgICAgICBzaXplcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjU2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZU1hcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgSW5zSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgY2l0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkYXRlVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICB0eXBlIEhUTUxJbnB1dFR5cGVBdHRyaWJ1dGUgPQogICAgICAgIHwgJ2J1dHRvbicKICAgICAgICB8ICdjaGVja2JveCcKICAgICAgICB8ICdjb2xvcicKICAgICAgICB8ICdkYXRlJwogICAgICAgIHwgJ2RhdGV0aW1lLWxvY2FsJwogICAgICAgIHwgJ2VtYWlsJwogICAgICAgIHwgJ2ZpbGUnCiAgICAgICAgfCAnaGlkZGVuJwogICAgICAgIHwgJ2ltYWdlJwogICAgICAgIHwgJ21vbnRoJwogICAgICAgIHwgJ251bWJlcicKICAgICAgICB8ICdwYXNzd29yZCcKICAgICAgICB8ICdyYWRpbycKICAgICAgICB8ICdyYW5nZScKICAgICAgICB8ICdyZXNldCcKICAgICAgICB8ICdzZWFyY2gnCiAgICAgICAgfCAnc3VibWl0JwogICAgICAgIHwgJ3RlbCcKICAgICAgICB8ICd0ZXh0JwogICAgICAgIHwgJ3RpbWUnCiAgICAgICAgfCAndXJsJwogICAgICAgIHwgJ3dlZWsnCiAgICAgICAgfCAoc3RyaW5nICYge30pOwoKICAgIGludGVyZmFjZSBJbnB1dEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGFjY2VwdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYXV0b0NvbXBsZXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNhcHR1cmU/OiBib29sZWFuIHwgJ3VzZXInIHwgJ2Vudmlyb25tZW50JyB8IHVuZGVmaW5lZDsgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwtbWVkaWEtY2FwdHVyZS8jdGhlLWNhcHR1cmUtYXR0cmlidXRlCiAgICAgICAgY2hlY2tlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY3Jvc3NPcmlnaW4/OiAiYW5vbnltb3VzIiB8ICJ1c2UtY3JlZGVudGlhbHMiIHwgIiIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGVyS2V5SGludD86ICdlbnRlcicgfCAnZG9uZScgfCAnZ28nIHwgJ25leHQnIHwgJ3ByZXZpb3VzJyB8ICdzZWFyY2gnIHwgJ3NlbmQnIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybUFjdGlvbj86CiAgICAgICAgICAgIHwgc3RyaW5nCiAgICAgICAgICAgIHwgRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9FWFBFUklNRU5UQUxfRk9STV9BQ1RJT05TW2tleW9mIERPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfRVhQRVJJTUVOVEFMX0ZPUk1fQUNUSU9OU10KICAgICAgICAgICAgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybUVuY1R5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybU1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtTm9WYWxpZGF0ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybVRhcmdldD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlzdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtaW5MZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbXVsdGlwbGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWFkT25seT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNpemU/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0ZXA/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86IEhUTUxJbnB1dFR5cGVBdHRyaWJ1dGUgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CgogICAgICAgIG9uQ2hhbmdlPzogQ2hhbmdlRXZlbnRIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBLZXlnZW5IVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjaGFsbGVuZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAga2V5VHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrZXlQYXJhbXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTGFiZWxIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBmb3JtPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGh0bWxGb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIExpSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIExpbmtIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjcm9zc09yaWdpbj86ICJhbm9ueW1vdXMiIHwgInVzZS1jcmVkZW50aWFscyIgfCAiIiB8IHVuZGVmaW5lZDsKICAgICAgICBmZXRjaHByaW9yaXR5PzogImhpZ2giIHwgImxvdyIgfCAiYXV0byI7CiAgICAgICAgaHJlZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBocmVmTGFuZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBpbnRlZ3JpdHk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VTcmNTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VTaXplcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZWZlcnJlclBvbGljeT86IEhUTUxBdHRyaWJ1dGVSZWZlcnJlclBvbGljeSB8IHVuZGVmaW5lZDsKICAgICAgICBzaXplcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNoYXJTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE1hcEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE1lbnVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICB0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBNZWRpYUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGF1dG9QbGF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250cm9scz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgY29udHJvbHNMaXN0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNyb3NzT3JpZ2luPzogImFub255bW91cyIgfCAidXNlLWNyZWRlbnRpYWxzIiB8ICIiIHwgdW5kZWZpbmVkOwogICAgICAgIGxvb3A/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG1lZGlhR3JvdXA/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbXV0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYXlzSW5saW5lPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVsb2FkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyYz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTWV0YUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGNoYXJTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHR0cEVxdWl2Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWVkaWE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29udGVudD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgTWV0ZXJIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBmb3JtPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhpZ2g/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbG93PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1heD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtaW4/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3B0aW11bT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB2YWx1ZT86IHN0cmluZyB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgUXVvdGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjaXRlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBPYmplY3RIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBjbGFzc0lEPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRhdGE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZU1hcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3bW9kZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgT2xIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICByZXZlcnNlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3RhcnQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86ICcxJyB8ICdhJyB8ICdBJyB8ICdpJyB8ICdJJyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgT3B0Z3JvdXBIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE9wdGlvbkhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzZWxlY3RlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIE91dHB1dEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaHRtbEZvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBQYXJhbUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBSZWFkb25seUFycmF5PHN0cmluZz4gfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFByb2dyZXNzSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgbWF4PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhbHVlPzogc3RyaW5nIHwgUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBTbG90SFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgU2NyaXB0SFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgYXN5bmM/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIC8qKiBAZGVwcmVjYXRlZCAqLwogICAgICAgIGNoYXJTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY3Jvc3NPcmlnaW4/OiAiYW5vbnltb3VzIiB8ICJ1c2UtY3JlZGVudGlhbHMiIHwgIiIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGludGVncml0eT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBub01vZHVsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmZXJyZXJQb2xpY3k/OiBIVE1MQXR0cmlidXRlUmVmZXJyZXJQb2xpY3kgfCB1bmRlZmluZWQ7CiAgICAgICAgc3JjPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFNlbGVjdEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGF1dG9Db21wbGV0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtdWx0aXBsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc2l6ZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB2YWx1ZT86IHN0cmluZyB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86IENoYW5nZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgU291cmNlSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lZGlhPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNpemVzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyYz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmNTZXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgU3R5bGVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBtZWRpYT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFRhYmxlSFRNTEF0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgYWxpZ24/OiAibGVmdCIgfCAiY2VudGVyIiB8ICJyaWdodCIgfCB1bmRlZmluZWQ7CiAgICAgICAgYmdjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBib3JkZXI/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFBhZGRpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2VsbFNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZnJhbWU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJ1bGVzPzogIm5vbmUiIHwgImdyb3VwcyIgfCAicm93cyIgfCAiY29sdW1ucyIgfCAiYWxsIiB8IHVuZGVmaW5lZDsKICAgICAgICBzdW1tYXJ5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdpZHRoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBUZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGF1dG9Db21wbGV0ZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGRpck5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlYWRPbmx5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcm93cz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB2YWx1ZT86IHN0cmluZyB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB3cmFwPzogc3RyaW5nIHwgdW5kZWZpbmVkOwoKICAgICAgICBvbkNoYW5nZT86IENoYW5nZUV2ZW50SGFuZGxlcjxUPiB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgVGRIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbGlnbj86ICJsZWZ0IiB8ICJjZW50ZXIiIHwgInJpZ2h0IiB8ICJqdXN0aWZ5IiB8ICJjaGFyIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xTcGFuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGhlYWRlcnM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcm93U3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzY29wZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhYmJyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3aWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YWxpZ24/OiAidG9wIiB8ICJtaWRkbGUiIHwgImJvdHRvbSIgfCAiYmFzZWxpbmUiIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBUaEhUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8VD4gewogICAgICAgIGFsaWduPzogImxlZnQiIHwgImNlbnRlciIgfCAicmlnaHQiIHwgImp1c3RpZnkiIHwgImNoYXIiIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbFNwYW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgaGVhZGVycz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByb3dTcGFuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHNjb3BlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGFiYnI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFRpbWVIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkYXRlVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0KCiAgICBpbnRlcmZhY2UgVHJhY2tIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBkZWZhdWx0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBraW5kPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNyYz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmNMYW5nPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIGludGVyZmFjZSBWaWRlb0hUTUxBdHRyaWJ1dGVzPFQ+IGV4dGVuZHMgTWVkaWFIVE1MQXR0cmlidXRlczxUPiB7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYXlzSW5saW5lPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwb3N0ZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVSZW1vdGVQbGF5YmFjaz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9CgogICAgLy8gdGhpcyBsaXN0IGlzICJjb21wbGV0ZSIgaW4gdGhhdCBpdCBjb250YWlucyBldmVyeSBTVkcgYXR0cmlidXRlCiAgICAvLyB0aGF0IFJlYWN0IHN1cHBvcnRzLCBidXQgdGhlIHR5cGVzIGNhbiBiZSBpbXByb3ZlZC4KICAgIC8vIEZ1bGwgbGlzdCBoZXJlOiBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2RvbS1lbGVtZW50cy5odG1sCiAgICAvLwogICAgLy8gVGhlIHRocmVlIGJyb2FkIHR5cGUgY2F0ZWdvcmllcyBhcmUgKGluIG9yZGVyIG9mIHJlc3RyaWN0aXZlbmVzcyk6CiAgICAvLyAgIC0gIm51bWJlciB8IHN0cmluZyIKICAgIC8vICAgLSAic3RyaW5nIgogICAgLy8gICAtIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFscwogICAgaW50ZXJmYWNlIFNWR0F0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBBcmlhQXR0cmlidXRlcywgRE9NQXR0cmlidXRlczxUPiB7CiAgICAgICAgLy8gUmVhY3Qtc3BlY2lmaWMgQXR0cmlidXRlcwogICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIEF0dHJpYnV0ZXMgd2hpY2ggYWxzbyBkZWZpbmVkIGluIEhUTUxBdHRyaWJ1dGVzCiAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gU1ZHRE9NUHJvcGVydHlDb25maWcuanMKICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lZGlhPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtaW4/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IENTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CgogICAgICAgIC8vIE90aGVyIEhUTUwgcHJvcGVydGllcyBzdXBwb3J0ZWQgYnkgU1ZHIGVsZW1lbnRzIGluIGJyb3dzZXJzCiAgICAgICAgcm9sZT86IEFyaWFSb2xlIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYkluZGV4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGNyb3NzT3JpZ2luPzogImFub255bW91cyIgfCAidXNlLWNyZWRlbnRpYWxzIiB8ICIiIHwgdW5kZWZpbmVkOwoKICAgICAgICAvLyBTVkcgU3BlY2lmaWMgYXR0cmlidXRlcwogICAgICAgIGFjY2VudEhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhY2N1bXVsYXRlPzogIm5vbmUiIHwgInN1bSIgfCB1bmRlZmluZWQ7CiAgICAgICAgYWRkaXRpdmU/OiAicmVwbGFjZSIgfCAic3VtIiB8IHVuZGVmaW5lZDsKICAgICAgICBhbGlnbm1lbnRCYXNlbGluZT86ICJhdXRvIiB8ICJiYXNlbGluZSIgfCAiYmVmb3JlLWVkZ2UiIHwgInRleHQtYmVmb3JlLWVkZ2UiIHwgIm1pZGRsZSIgfCAiY2VudHJhbCIgfCAiYWZ0ZXItZWRnZSIgfAogICAgICAgICJ0ZXh0LWFmdGVyLWVkZ2UiIHwgImlkZW9ncmFwaGljIiB8ICJhbHBoYWJldGljIiB8ICJoYW5naW5nIiB8ICJtYXRoZW1hdGljYWwiIHwgImluaGVyaXQiIHwgdW5kZWZpbmVkOwogICAgICAgIGFsbG93UmVvcmRlcj86ICJubyIgfCAieWVzIiB8IHVuZGVmaW5lZDsKICAgICAgICBhbHBoYWJldGljPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGFtcGxpdHVkZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhcmFiaWNGb3JtPzogImluaXRpYWwiIHwgIm1lZGlhbCIgfCAidGVybWluYWwiIHwgImlzb2xhdGVkIiB8IHVuZGVmaW5lZDsKICAgICAgICBhc2NlbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYXR0cmlidXRlTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhdHRyaWJ1dGVUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGF1dG9SZXZlcnNlPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICBhemltdXRoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGJhc2VGcmVxdWVuY3k/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYmFzZWxpbmVTaGlmdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBiYXNlUHJvZmlsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBiYm94PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGJlZ2luPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGJpYXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgYnk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2FsY01vZGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2FwSGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNsaXA/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2xpcFBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY2xpcFBhdGhVbml0cz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjbGlwUnVsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xvckludGVycG9sYXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycz86ICJhdXRvIiB8ICJzUkdCIiB8ICJsaW5lYXJSR0IiIHwgImluaGVyaXQiIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbG9yUHJvZmlsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb2xvclJlbmRlcmluZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50U2NyaXB0VHlwZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50U3R5bGVUeXBlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGN1cnNvcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRlY2VsZXJhdGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVzY2VudD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaWZmdXNlQ29uc3RhbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlyZWN0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc3BsYXk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGl2aXNvcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkb21pbmFudEJhc2VsaW5lPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGR1cj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlZGdlTW9kZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbGV2YXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW5hYmxlQmFja2dyb3VuZD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbmQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZXhwb25lbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD86IEJvb2xlYW5pc2ggfCB1bmRlZmluZWQ7CiAgICAgICAgZmlsbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmaWxsT3BhY2l0eT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmaWxsUnVsZT86ICJub256ZXJvIiB8ICJldmVub2RkIiB8ICJpbmhlcml0IiB8IHVuZGVmaW5lZDsKICAgICAgICBmaWx0ZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZmlsdGVyUmVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZpbHRlclVuaXRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZsb29kQ29sb3I/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZmxvb2RPcGFjaXR5PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvY3VzYWJsZT86IEJvb2xlYW5pc2ggfCAiYXV0byIgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9udEZhbWlseT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U2l6ZUFkanVzdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U3RyZXRjaD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb250U3R5bGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9udFZhcmlhbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9udFdlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmb3JtYXQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZnI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZnJvbT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBmeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnMT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnMj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnbHlwaE5hbWU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGdseXBoUmVmPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGdyYWRpZW50VW5pdHM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaGFuZ2luZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBob3JpekFkdlg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaG9yaXpPcmlnaW5YPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGhyZWY/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaWRlb2dyYXBoaWM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VSZW5kZXJpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW4yPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGluPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGludGVyY2VwdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrMT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrMj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrMz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrND86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtlcm5lbE1hdHJpeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBrZXJuZWxVbml0TGVuZ3RoPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtlcm5pbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAga2V5UG9pbnRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGtleVNwbGluZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAga2V5VGltZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGVuZ3RoQWRqdXN0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGxldHRlclNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlnaHRpbmdDb2xvcj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsaW1pdGluZ0NvbmVBbmdsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBsb2NhbD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJFbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFya2VySGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1hcmtlck1pZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJTdGFydD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJVbml0cz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXJrZXJXaWR0aD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtYXNrPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1hc2tDb250ZW50VW5pdHM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWFza1VuaXRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1hdGhlbWF0aWNhbD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG51bU9jdGF2ZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb2Zmc2V0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9wYWNpdHk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3BlcmF0b3I/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3JkZXI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3JpZW50PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9yaWVudGF0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9yaWdpbj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBvdmVyZmxvdz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBvdmVybGluZVBvc2l0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG92ZXJsaW5lVGhpY2tuZXNzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBhaW50T3JkZXI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGFub3NlMT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBhdGhMZW5ndGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0dGVybkNvbnRlbnRVbml0cz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBhdHRlcm5Vbml0cz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb2ludGVyRXZlbnRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBvaW50cz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb2ludHNBdFg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcG9pbnRzQXRZPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBvaW50c0F0Wj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVzZXJ2ZUFscGhhPzogQm9vbGVhbmlzaCB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHByaW1pdGl2ZVVuaXRzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmFkaXVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlZlg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVmWT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZW5kZXJpbmdJbnRlbnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVwZWF0Q291bnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVwZWF0RHVyPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZEZlYXR1cmVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlc3RhcnQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVzdWx0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJvdGF0ZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByeD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByeT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzY2FsZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzZWVkPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNoYXBlUmVuZGVyaW5nPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNsb3BlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwYWNpbmc/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3BlY3VsYXJDb25zdGFudD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcGVjdWxhckV4cG9uZW50PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwZWVkPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHNwcmVhZE1ldGhvZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdGFydE9mZnNldD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdGREZXZpYXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RlbWg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RlbXY/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RpdGNoVGlsZXM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3RvcENvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0b3BPcGFjaXR5PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cmlrZXRocm91Z2hQb3NpdGlvbj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cmluZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJva2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Ryb2tlRGFzaGFycmF5Pzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cm9rZURhc2hvZmZzZXQ/OiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Ryb2tlTGluZWNhcD86ICJidXR0IiB8ICJyb3VuZCIgfCAic3F1YXJlIiB8ICJpbmhlcml0IiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJva2VMaW5lam9pbj86ICJtaXRlciIgfCAicm91bmQiIHwgImJldmVsIiB8ICJpbmhlcml0IiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHJva2VNaXRlcmxpbWl0PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0cm9rZU9wYWNpdHk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Ryb2tlV2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3VyZmFjZVNjYWxlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN5c3RlbUxhbmd1YWdlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYmxlVmFsdWVzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRhcmdldFg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdGFyZ2V0WT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0ZXh0QW5jaG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRleHREZWNvcmF0aW9uPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRleHRMZW5ndGg/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdGV4dFJlbmRlcmluZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0bz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0cmFuc2Zvcm0/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdTE/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdTI/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5kZXJsaW5lUG9zaXRpb24/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5kZXJsaW5lVGhpY2tuZXNzPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVuaWNvZGU/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5pY29kZUJpZGk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5pY29kZVJhbmdlPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVuaXRzUGVyRW0/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdkFscGhhYmV0aWM/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsdWVzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlY3RvckVmZmVjdD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRBZHZZPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRPcmlnaW5YPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRPcmlnaW5ZPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZIYW5naW5nPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZJZGVvZ3JhcGhpYz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2aWV3Qm94Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZpZXdUYXJnZXQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmlzaWJpbGl0eT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2TWF0aGVtYXRpY2FsPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdpZHRocz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3b3JkU3BhY2luZz86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB3cml0aW5nTW9kZT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4MT86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4Mj86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhDaGFubmVsU2VsZWN0b3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeEhlaWdodD86IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bGlua0FjdHVhdGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeGxpbmtBcmNyb2xlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhsaW5rSHJlZj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bGlua1JvbGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeGxpbmtTaG93Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhsaW5rVGl0bGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeGxpbmtUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhtbEJhc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeG1sTGFuZz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bWxucz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB4bWxuc1hsaW5rPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHhtbFNwYWNlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHkxPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHkyPzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHk/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgeUNoYW5uZWxTZWxlY3Rvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB6PzogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHpvb21BbmRQYW4/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFdlYlZpZXdIVE1MQXR0cmlidXRlczxUPiBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPFQ+IHsKICAgICAgICBhbGxvd0Z1bGxTY3JlZW4/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGFsbG93cG9wdXBzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhdXRvc2l6ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYmxpbmtmZWF0dXJlcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlYmxpbmtmZWF0dXJlcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZ3Vlc3RyZXNpemU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGV3ZWJzZWN1cml0eT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZ3Vlc3RpbnN0YW5jZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBodHRwcmVmZXJyZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbm9kZWludGVncmF0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBwYXJ0aXRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGx1Z2lucz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcHJlbG9hZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcmM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdXNlcmFnZW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHdlYnByZWZlcmVuY2VzPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfQoKICAgIC8vCiAgICAvLyBSZWFjdC5ET00KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBpbnRlcmZhY2UgUmVhY3RIVE1MIHsKICAgICAgICBhOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEFuY2hvckhUTUxBdHRyaWJ1dGVzPEhUTUxBbmNob3JFbGVtZW50PiwgSFRNTEFuY2hvckVsZW1lbnQ+OwogICAgICAgIGFiYnI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYWRkcmVzczogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBhcmVhOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEFyZWFIVE1MQXR0cmlidXRlczxIVE1MQXJlYUVsZW1lbnQ+LCBIVE1MQXJlYUVsZW1lbnQ+OwogICAgICAgIGFydGljbGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYXNpZGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYXVkaW86IERldGFpbGVkSFRNTEZhY3Rvcnk8QXVkaW9IVE1MQXR0cmlidXRlczxIVE1MQXVkaW9FbGVtZW50PiwgSFRNTEF1ZGlvRWxlbWVudD47CiAgICAgICAgYjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBiYXNlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEJhc2VIVE1MQXR0cmlidXRlczxIVE1MQmFzZUVsZW1lbnQ+LCBIVE1MQmFzZUVsZW1lbnQ+OwogICAgICAgIGJkaTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBiZG86IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgYmlnOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGJsb2NrcXVvdGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8QmxvY2txdW90ZUhUTUxBdHRyaWJ1dGVzPEhUTUxRdW90ZUVsZW1lbnQ+LCBIVE1MUXVvdGVFbGVtZW50PjsKICAgICAgICBib2R5OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxCb2R5RWxlbWVudD4sIEhUTUxCb2R5RWxlbWVudD47CiAgICAgICAgYnI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEJSRWxlbWVudD4sIEhUTUxCUkVsZW1lbnQ+OwogICAgICAgIGJ1dHRvbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxCdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sIEhUTUxCdXR0b25FbGVtZW50PjsKICAgICAgICBjYW52YXM6IERldGFpbGVkSFRNTEZhY3Rvcnk8Q2FudmFzSFRNTEF0dHJpYnV0ZXM8SFRNTENhbnZhc0VsZW1lbnQ+LCBIVE1MQ2FudmFzRWxlbWVudD47CiAgICAgICAgY2FwdGlvbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBjZW50ZXI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgY2l0ZTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBjb2RlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGNvbDogRGV0YWlsZWRIVE1MRmFjdG9yeTxDb2xIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDb2xFbGVtZW50PiwgSFRNTFRhYmxlQ29sRWxlbWVudD47CiAgICAgICAgY29sZ3JvdXA6IERldGFpbGVkSFRNTEZhY3Rvcnk8Q29sZ3JvdXBIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDb2xFbGVtZW50PiwgSFRNTFRhYmxlQ29sRWxlbWVudD47CiAgICAgICAgZGF0YTogRGV0YWlsZWRIVE1MRmFjdG9yeTxEYXRhSFRNTEF0dHJpYnV0ZXM8SFRNTERhdGFFbGVtZW50PiwgSFRNTERhdGFFbGVtZW50PjsKICAgICAgICBkYXRhbGlzdDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRGF0YUxpc3RFbGVtZW50PiwgSFRNTERhdGFMaXN0RWxlbWVudD47CiAgICAgICAgZGQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgZGVsOiBEZXRhaWxlZEhUTUxGYWN0b3J5PERlbEhUTUxBdHRyaWJ1dGVzPEhUTUxNb2RFbGVtZW50PiwgSFRNTE1vZEVsZW1lbnQ+OwogICAgICAgIGRldGFpbHM6IERldGFpbGVkSFRNTEZhY3Rvcnk8RGV0YWlsc0hUTUxBdHRyaWJ1dGVzPEhUTUxEZXRhaWxzRWxlbWVudD4sIEhUTUxEZXRhaWxzRWxlbWVudD47CiAgICAgICAgZGZuOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGRpYWxvZzogRGV0YWlsZWRIVE1MRmFjdG9yeTxEaWFsb2dIVE1MQXR0cmlidXRlczxIVE1MRGlhbG9nRWxlbWVudD4sIEhUTUxEaWFsb2dFbGVtZW50PjsKICAgICAgICBkaXY6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBIVE1MRGl2RWxlbWVudD47CiAgICAgICAgZGw6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTERMaXN0RWxlbWVudD4sIEhUTUxETGlzdEVsZW1lbnQ+OwogICAgICAgIGR0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGVtOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGVtYmVkOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEVtYmVkSFRNTEF0dHJpYnV0ZXM8SFRNTEVtYmVkRWxlbWVudD4sIEhUTUxFbWJlZEVsZW1lbnQ+OwogICAgICAgIGZpZWxkc2V0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEZpZWxkc2V0SFRNTEF0dHJpYnV0ZXM8SFRNTEZpZWxkU2V0RWxlbWVudD4sIEhUTUxGaWVsZFNldEVsZW1lbnQ+OwogICAgICAgIGZpZ2NhcHRpb246IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgZmlndXJlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGZvb3RlcjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBmb3JtOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEZvcm1IVE1MQXR0cmlidXRlczxIVE1MRm9ybUVsZW1lbnQ+LCBIVE1MRm9ybUVsZW1lbnQ+OwogICAgICAgIGgxOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgaDI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICBoMzogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgIGg0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgaDU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICBoNjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgIGhlYWQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MSGVhZEVsZW1lbnQ+OwogICAgICAgIGhlYWRlcjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBoZ3JvdXA6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgaHI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEhSRWxlbWVudD4sIEhUTUxIUkVsZW1lbnQ+OwogICAgICAgIGh0bWw6IERldGFpbGVkSFRNTEZhY3Rvcnk8SHRtbEhUTUxBdHRyaWJ1dGVzPEhUTUxIdG1sRWxlbWVudD4sIEhUTUxIdG1sRWxlbWVudD47CiAgICAgICAgaTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBpZnJhbWU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SWZyYW1lSFRNTEF0dHJpYnV0ZXM8SFRNTElGcmFtZUVsZW1lbnQ+LCBIVE1MSUZyYW1lRWxlbWVudD47CiAgICAgICAgaW1nOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEltZ0hUTUxBdHRyaWJ1dGVzPEhUTUxJbWFnZUVsZW1lbnQ+LCBIVE1MSW1hZ2VFbGVtZW50PjsKICAgICAgICBpbnB1dDogRGV0YWlsZWRIVE1MRmFjdG9yeTxJbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LCBIVE1MSW5wdXRFbGVtZW50PjsKICAgICAgICBpbnM6IERldGFpbGVkSFRNTEZhY3Rvcnk8SW5zSFRNTEF0dHJpYnV0ZXM8SFRNTE1vZEVsZW1lbnQ+LCBIVE1MTW9kRWxlbWVudD47CiAgICAgICAga2JkOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIGtleWdlbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxLZXlnZW5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBsYWJlbDogRGV0YWlsZWRIVE1MRmFjdG9yeTxMYWJlbEhUTUxBdHRyaWJ1dGVzPEhUTUxMYWJlbEVsZW1lbnQ+LCBIVE1MTGFiZWxFbGVtZW50PjsKICAgICAgICBsZWdlbmQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTExlZ2VuZEVsZW1lbnQ+LCBIVE1MTGVnZW5kRWxlbWVudD47CiAgICAgICAgbGk6IERldGFpbGVkSFRNTEZhY3Rvcnk8TGlIVE1MQXR0cmlidXRlczxIVE1MTElFbGVtZW50PiwgSFRNTExJRWxlbWVudD47CiAgICAgICAgbGluazogRGV0YWlsZWRIVE1MRmFjdG9yeTxMaW5rSFRNTEF0dHJpYnV0ZXM8SFRNTExpbmtFbGVtZW50PiwgSFRNTExpbmtFbGVtZW50PjsKICAgICAgICBtYWluOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1hcDogRGV0YWlsZWRIVE1MRmFjdG9yeTxNYXBIVE1MQXR0cmlidXRlczxIVE1MTWFwRWxlbWVudD4sIEhUTUxNYXBFbGVtZW50PjsKICAgICAgICBtYXJrOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1lbnU6IERldGFpbGVkSFRNTEZhY3Rvcnk8TWVudUhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1lbnVpdGVtOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG1ldGE6IERldGFpbGVkSFRNTEZhY3Rvcnk8TWV0YUhUTUxBdHRyaWJ1dGVzPEhUTUxNZXRhRWxlbWVudD4sIEhUTUxNZXRhRWxlbWVudD47CiAgICAgICAgbWV0ZXI6IERldGFpbGVkSFRNTEZhY3Rvcnk8TWV0ZXJIVE1MQXR0cmlidXRlczxIVE1MTWV0ZXJFbGVtZW50PiwgSFRNTE1ldGVyRWxlbWVudD47CiAgICAgICAgbmF2OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG5vc2NyaXB0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIG9iamVjdDogRGV0YWlsZWRIVE1MRmFjdG9yeTxPYmplY3RIVE1MQXR0cmlidXRlczxIVE1MT2JqZWN0RWxlbWVudD4sIEhUTUxPYmplY3RFbGVtZW50PjsKICAgICAgICBvbDogRGV0YWlsZWRIVE1MRmFjdG9yeTxPbEhUTUxBdHRyaWJ1dGVzPEhUTUxPTGlzdEVsZW1lbnQ+LCBIVE1MT0xpc3RFbGVtZW50PjsKICAgICAgICBvcHRncm91cDogRGV0YWlsZWRIVE1MRmFjdG9yeTxPcHRncm91cEhUTUxBdHRyaWJ1dGVzPEhUTUxPcHRHcm91cEVsZW1lbnQ+LCBIVE1MT3B0R3JvdXBFbGVtZW50PjsKICAgICAgICBvcHRpb246IERldGFpbGVkSFRNTEZhY3Rvcnk8T3B0aW9uSFRNTEF0dHJpYnV0ZXM8SFRNTE9wdGlvbkVsZW1lbnQ+LCBIVE1MT3B0aW9uRWxlbWVudD47CiAgICAgICAgb3V0cHV0OiBEZXRhaWxlZEhUTUxGYWN0b3J5PE91dHB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxPdXRwdXRFbGVtZW50PiwgSFRNTE91dHB1dEVsZW1lbnQ+OwogICAgICAgIHA6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+LCBIVE1MUGFyYWdyYXBoRWxlbWVudD47CiAgICAgICAgcGFyYW06IERldGFpbGVkSFRNTEZhY3Rvcnk8UGFyYW1IVE1MQXR0cmlidXRlczxIVE1MUGFyYW1FbGVtZW50PiwgSFRNTFBhcmFtRWxlbWVudD47CiAgICAgICAgcGljdHVyZTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBwcmU6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFByZUVsZW1lbnQ+LCBIVE1MUHJlRWxlbWVudD47CiAgICAgICAgcHJvZ3Jlc3M6IERldGFpbGVkSFRNTEZhY3Rvcnk8UHJvZ3Jlc3NIVE1MQXR0cmlidXRlczxIVE1MUHJvZ3Jlc3NFbGVtZW50PiwgSFRNTFByb2dyZXNzRWxlbWVudD47CiAgICAgICAgcTogRGV0YWlsZWRIVE1MRmFjdG9yeTxRdW90ZUhUTUxBdHRyaWJ1dGVzPEhUTUxRdW90ZUVsZW1lbnQ+LCBIVE1MUXVvdGVFbGVtZW50PjsKICAgICAgICBycDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBydDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBydWJ5OiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHM6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc2FtcDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBzZWFyY2g6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc2xvdDogRGV0YWlsZWRIVE1MRmFjdG9yeTxTbG90SFRNTEF0dHJpYnV0ZXM8SFRNTFNsb3RFbGVtZW50PiwgSFRNTFNsb3RFbGVtZW50PjsKICAgICAgICBzY3JpcHQ6IERldGFpbGVkSFRNTEZhY3Rvcnk8U2NyaXB0SFRNTEF0dHJpYnV0ZXM8SFRNTFNjcmlwdEVsZW1lbnQ+LCBIVE1MU2NyaXB0RWxlbWVudD47CiAgICAgICAgc2VjdGlvbjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICBzZWxlY3Q6IERldGFpbGVkSFRNTEZhY3Rvcnk8U2VsZWN0SFRNTEF0dHJpYnV0ZXM8SFRNTFNlbGVjdEVsZW1lbnQ+LCBIVE1MU2VsZWN0RWxlbWVudD47CiAgICAgICAgc21hbGw6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc291cmNlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PFNvdXJjZUhUTUxBdHRyaWJ1dGVzPEhUTUxTb3VyY2VFbGVtZW50PiwgSFRNTFNvdXJjZUVsZW1lbnQ+OwogICAgICAgIHNwYW46IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PiwgSFRNTFNwYW5FbGVtZW50PjsKICAgICAgICBzdHJvbmc6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc3R5bGU6IERldGFpbGVkSFRNTEZhY3Rvcnk8U3R5bGVIVE1MQXR0cmlidXRlczxIVE1MU3R5bGVFbGVtZW50PiwgSFRNTFN0eWxlRWxlbWVudD47CiAgICAgICAgc3ViOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHN1bW1hcnk6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgc3VwOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHRhYmxlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PFRhYmxlSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4sIEhUTUxUYWJsZUVsZW1lbnQ+OwogICAgICAgIHRlbXBsYXRlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+LCBIVE1MVGVtcGxhdGVFbGVtZW50PjsKICAgICAgICB0Ym9keTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4sIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PjsKICAgICAgICB0ZDogRGV0YWlsZWRIVE1MRmFjdG9yeTxUZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD4sIEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD47CiAgICAgICAgdGV4dGFyZWE6IERldGFpbGVkSFRNTEZhY3Rvcnk8VGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50PiwgSFRNTFRleHRBcmVhRWxlbWVudD47CiAgICAgICAgdGZvb3Q6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+LCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudD47CiAgICAgICAgdGg6IERldGFpbGVkSFRNTEZhY3Rvcnk8VGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudD4sIEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50PjsKICAgICAgICB0aGVhZDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4sIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PjsKICAgICAgICB0aW1lOiBEZXRhaWxlZEhUTUxGYWN0b3J5PFRpbWVIVE1MQXR0cmlidXRlczxIVE1MVGltZUVsZW1lbnQ+LCBIVE1MVGltZUVsZW1lbnQ+OwogICAgICAgIHRpdGxlOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxUaXRsZUVsZW1lbnQ+LCBIVE1MVGl0bGVFbGVtZW50PjsKICAgICAgICB0cjogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50PiwgSFRNTFRhYmxlUm93RWxlbWVudD47CiAgICAgICAgdHJhY2s6IERldGFpbGVkSFRNTEZhY3Rvcnk8VHJhY2tIVE1MQXR0cmlidXRlczxIVE1MVHJhY2tFbGVtZW50PiwgSFRNTFRyYWNrRWxlbWVudD47CiAgICAgICAgdTogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICB1bDogRGV0YWlsZWRIVE1MRmFjdG9yeTxIVE1MQXR0cmlidXRlczxIVE1MVUxpc3RFbGVtZW50PiwgSFRNTFVMaXN0RWxlbWVudD47CiAgICAgICAgInZhciI6IERldGFpbGVkSFRNTEZhY3Rvcnk8SFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgdmlkZW86IERldGFpbGVkSFRNTEZhY3Rvcnk8VmlkZW9IVE1MQXR0cmlidXRlczxIVE1MVmlkZW9FbGVtZW50PiwgSFRNTFZpZGVvRWxlbWVudD47CiAgICAgICAgd2JyOiBEZXRhaWxlZEhUTUxGYWN0b3J5PEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgIHdlYnZpZXc6IERldGFpbGVkSFRNTEZhY3Rvcnk8V2ViVmlld0hUTUxBdHRyaWJ1dGVzPEhUTUxXZWJWaWV3RWxlbWVudD4sIEhUTUxXZWJWaWV3RWxlbWVudD47CiAgICB9CgogICAgaW50ZXJmYWNlIFJlYWN0U1ZHIHsKICAgICAgICBhbmltYXRlOiBTVkdGYWN0b3J5OwogICAgICAgIGNpcmNsZTogU1ZHRmFjdG9yeTsKICAgICAgICBjbGlwUGF0aDogU1ZHRmFjdG9yeTsKICAgICAgICBkZWZzOiBTVkdGYWN0b3J5OwogICAgICAgIGRlc2M6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZWxsaXBzZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZUJsZW5kOiBTVkdGYWN0b3J5OwogICAgICAgIGZlQ29sb3JNYXRyaXg6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVDb21wb25lbnRUcmFuc2ZlcjogU1ZHRmFjdG9yeTsKICAgICAgICBmZUNvbXBvc2l0ZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZUNvbnZvbHZlTWF0cml4OiBTVkdGYWN0b3J5OwogICAgICAgIGZlRGlmZnVzZUxpZ2h0aW5nOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRGlzcGxhY2VtZW50TWFwOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRGlzdGFudExpZ2h0OiBTVkdGYWN0b3J5OwogICAgICAgIGZlRHJvcFNoYWRvdzogU1ZHRmFjdG9yeTsKICAgICAgICBmZUZsb29kOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRnVuY0E6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVGdW5jQjogU1ZHRmFjdG9yeTsKICAgICAgICBmZUZ1bmNHOiBTVkdGYWN0b3J5OwogICAgICAgIGZlRnVuY1I6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVHYXVzc2lhbkJsdXI6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVJbWFnZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZU1lcmdlOiBTVkdGYWN0b3J5OwogICAgICAgIGZlTWVyZ2VOb2RlOiBTVkdGYWN0b3J5OwogICAgICAgIGZlTW9ycGhvbG9neTogU1ZHRmFjdG9yeTsKICAgICAgICBmZU9mZnNldDogU1ZHRmFjdG9yeTsKICAgICAgICBmZVBvaW50TGlnaHQ6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmVTcGVjdWxhckxpZ2h0aW5nOiBTVkdGYWN0b3J5OwogICAgICAgIGZlU3BvdExpZ2h0OiBTVkdGYWN0b3J5OwogICAgICAgIGZlVGlsZTogU1ZHRmFjdG9yeTsKICAgICAgICBmZVR1cmJ1bGVuY2U6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZmlsdGVyOiBTVkdGYWN0b3J5OwogICAgICAgIGZvcmVpZ25PYmplY3Q6IFNWR0ZhY3Rvcnk7CiAgICAgICAgZzogU1ZHRmFjdG9yeTsKICAgICAgICBpbWFnZTogU1ZHRmFjdG9yeTsKICAgICAgICBsaW5lOiBTVkdGYWN0b3J5OwogICAgICAgIGxpbmVhckdyYWRpZW50OiBTVkdGYWN0b3J5OwogICAgICAgIG1hcmtlcjogU1ZHRmFjdG9yeTsKICAgICAgICBtYXNrOiBTVkdGYWN0b3J5OwogICAgICAgIG1ldGFkYXRhOiBTVkdGYWN0b3J5OwogICAgICAgIHBhdGg6IFNWR0ZhY3Rvcnk7CiAgICAgICAgcGF0dGVybjogU1ZHRmFjdG9yeTsKICAgICAgICBwb2x5Z29uOiBTVkdGYWN0b3J5OwogICAgICAgIHBvbHlsaW5lOiBTVkdGYWN0b3J5OwogICAgICAgIHJhZGlhbEdyYWRpZW50OiBTVkdGYWN0b3J5OwogICAgICAgIHJlY3Q6IFNWR0ZhY3Rvcnk7CiAgICAgICAgc3RvcDogU1ZHRmFjdG9yeTsKICAgICAgICBzdmc6IFNWR0ZhY3Rvcnk7CiAgICAgICAgc3dpdGNoOiBTVkdGYWN0b3J5OwogICAgICAgIHN5bWJvbDogU1ZHRmFjdG9yeTsKICAgICAgICB0ZXh0OiBTVkdGYWN0b3J5OwogICAgICAgIHRleHRQYXRoOiBTVkdGYWN0b3J5OwogICAgICAgIHRzcGFuOiBTVkdGYWN0b3J5OwogICAgICAgIHVzZTogU1ZHRmFjdG9yeTsKICAgICAgICB2aWV3OiBTVkdGYWN0b3J5OwogICAgfQoKICAgIGludGVyZmFjZSBSZWFjdERPTSBleHRlbmRzIFJlYWN0SFRNTCwgUmVhY3RTVkcgeyB9CgogICAgLy8KICAgIC8vIFJlYWN0LlByb3BUeXBlcwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIHR5cGUgVmFsaWRhdG9yPFQ+ID0gUHJvcFR5cGVzLlZhbGlkYXRvcjxUPjsKCiAgICB0eXBlIFJlcXVpcmVhYmxlPFQ+ID0gUHJvcFR5cGVzLlJlcXVpcmVhYmxlPFQ+OwoKICAgIHR5cGUgVmFsaWRhdGlvbk1hcDxUPiA9IFByb3BUeXBlcy5WYWxpZGF0aW9uTWFwPFQ+OwoKICAgIHR5cGUgV2Vha1ZhbGlkYXRpb25NYXA8VD4gPSB7CiAgICAgICAgW0sgaW4ga2V5b2YgVF0/OiBudWxsIGV4dGVuZHMgVFtLXQogICAgICAgICAgICA/IFZhbGlkYXRvcjxUW0tdIHwgbnVsbCB8IHVuZGVmaW5lZD4KICAgICAgICAgICAgOiB1bmRlZmluZWQgZXh0ZW5kcyBUW0tdCiAgICAgICAgICAgID8gVmFsaWRhdG9yPFRbS10gfCBudWxsIHwgdW5kZWZpbmVkPgogICAgICAgICAgICA6IFZhbGlkYXRvcjxUW0tdPgogICAgfTsKCiAgICBpbnRlcmZhY2UgUmVhY3RQcm9wVHlwZXMgewogICAgICAgIGFueTogdHlwZW9mIFByb3BUeXBlcy5hbnk7CiAgICAgICAgYXJyYXk6IHR5cGVvZiBQcm9wVHlwZXMuYXJyYXk7CiAgICAgICAgYm9vbDogdHlwZW9mIFByb3BUeXBlcy5ib29sOwogICAgICAgIGZ1bmM6IHR5cGVvZiBQcm9wVHlwZXMuZnVuYzsKICAgICAgICBudW1iZXI6IHR5cGVvZiBQcm9wVHlwZXMubnVtYmVyOwogICAgICAgIG9iamVjdDogdHlwZW9mIFByb3BUeXBlcy5vYmplY3Q7CiAgICAgICAgc3RyaW5nOiB0eXBlb2YgUHJvcFR5cGVzLnN0cmluZzsKICAgICAgICBub2RlOiB0eXBlb2YgUHJvcFR5cGVzLm5vZGU7CiAgICAgICAgZWxlbWVudDogdHlwZW9mIFByb3BUeXBlcy5lbGVtZW50OwogICAgICAgIGluc3RhbmNlT2Y6IHR5cGVvZiBQcm9wVHlwZXMuaW5zdGFuY2VPZjsKICAgICAgICBvbmVPZjogdHlwZW9mIFByb3BUeXBlcy5vbmVPZjsKICAgICAgICBvbmVPZlR5cGU6IHR5cGVvZiBQcm9wVHlwZXMub25lT2ZUeXBlOwogICAgICAgIGFycmF5T2Y6IHR5cGVvZiBQcm9wVHlwZXMuYXJyYXlPZjsKICAgICAgICBvYmplY3RPZjogdHlwZW9mIFByb3BUeXBlcy5vYmplY3RPZjsKICAgICAgICBzaGFwZTogdHlwZW9mIFByb3BUeXBlcy5zaGFwZTsKICAgICAgICBleGFjdDogdHlwZW9mIFByb3BUeXBlcy5leGFjdDsKICAgIH0KCiAgICAvLwogICAgLy8gUmVhY3QuQ2hpbGRyZW4KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIC0gVXNlIGB0eXBlb2YgUmVhY3QuQ2hpbGRyZW5gIGluc3RlYWQuCiAgICAgKi8KICAgIC8vIFN5bmMgd2l0aCB0eXBlIG9mIGBjb25zdCBDaGlsZHJlbmAuCiAgICBpbnRlcmZhY2UgUmVhY3RDaGlsZHJlbiB7CiAgICAgICAgbWFwPFQsIEM+KGNoaWxkcmVuOiBDIHwgUmVhZG9ubHlBcnJheTxDPiwgZm46IChjaGlsZDogQywgaW5kZXg6IG51bWJlcikgPT4gVCk6CiAgICAgICAgICAgIEMgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkID8gQyA6IEFycmF5PEV4Y2x1ZGU8VCwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQ+PjsKICAgICAgICBmb3JFYWNoPEM+KGNoaWxkcmVuOiBDIHwgUmVhZG9ubHlBcnJheTxDPiwgZm46IChjaGlsZDogQywgaW5kZXg6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQ7CiAgICAgICAgY291bnQoY2hpbGRyZW46IGFueSk6IG51bWJlcjsKICAgICAgICBvbmx5PEM+KGNoaWxkcmVuOiBDKTogQyBleHRlbmRzIGFueVtdID8gbmV2ZXIgOiBDOwogICAgICAgIHRvQXJyYXkoY2hpbGRyZW46IFJlYWN0Tm9kZSB8IFJlYWN0Tm9kZVtdKTogQXJyYXk8RXhjbHVkZTxSZWFjdE5vZGUsIGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkPj47CiAgICB9CgogICAgLy8KICAgIC8vIEJyb3dzZXIgSW50ZXJmYWNlcwogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25pa2VlZS8yMDQ4LXR5cGVzY3JpcHQvYmxvYi9tYXN0ZXIvMjA0OC9qcy90b3VjaC5kLnRzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgaW50ZXJmYWNlIEFic3RyYWN0VmlldyB7CiAgICAgICAgc3R5bGVNZWRpYTogU3R5bGVNZWRpYTsKICAgICAgICBkb2N1bWVudDogRG9jdW1lbnQ7CiAgICB9CgogICAgaW50ZXJmYWNlIFRvdWNoIHsKICAgICAgICBpZGVudGlmaWVyOiBudW1iZXI7CiAgICAgICAgdGFyZ2V0OiBFdmVudFRhcmdldDsKICAgICAgICBzY3JlZW5YOiBudW1iZXI7CiAgICAgICAgc2NyZWVuWTogbnVtYmVyOwogICAgICAgIGNsaWVudFg6IG51bWJlcjsKICAgICAgICBjbGllbnRZOiBudW1iZXI7CiAgICAgICAgcGFnZVg6IG51bWJlcjsKICAgICAgICBwYWdlWTogbnVtYmVyOwogICAgfQoKICAgIGludGVyZmFjZSBUb3VjaExpc3QgewogICAgICAgIFtpbmRleDogbnVtYmVyXTogVG91Y2g7CiAgICAgICAgbGVuZ3RoOiBudW1iZXI7CiAgICAgICAgaXRlbShpbmRleDogbnVtYmVyKTogVG91Y2g7CiAgICAgICAgaWRlbnRpZmllZFRvdWNoKGlkZW50aWZpZXI6IG51bWJlcik6IFRvdWNoOwogICAgfQoKICAgIC8vCiAgICAvLyBFcnJvciBJbnRlcmZhY2VzCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpbnRlcmZhY2UgRXJyb3JJbmZvIHsKICAgICAgICAvKioKICAgICAgICAgKiBDYXB0dXJlcyB3aGljaCBjb21wb25lbnQgY29udGFpbmVkIHRoZSBleGNlcHRpb24sIGFuZCBpdHMgYW5jZXN0b3JzLgogICAgICAgICAqLwogICAgICAgIGNvbXBvbmVudFN0YWNrOiBzdHJpbmc7CiAgICB9CgogICAgLy8gS2VlcCBpbiBzeW5jIHdpdGggSlNYIG5hbWVzcGFjZSBpbiAuL2pzeC1ydW50aW1lLmQudHMgYW5kIC4vanN4LWRldi1ydW50aW1lLmQudHMKICAgIG5hbWVzcGFjZSBKU1ggewogICAgICAgIHR5cGUgRWxlbWVudFR5cGUgPSBHbG9iYWxKU1hFbGVtZW50VHlwZTsKICAgICAgICBpbnRlcmZhY2UgRWxlbWVudCBleHRlbmRzIEdsb2JhbEpTWEVsZW1lbnQge30KICAgICAgICBpbnRlcmZhY2UgRWxlbWVudENsYXNzIGV4dGVuZHMgR2xvYmFsSlNYRWxlbWVudENsYXNzIHt9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRBdHRyaWJ1dGVzUHJvcGVydHkgZXh0ZW5kcyBHbG9iYWxKU1hFbGVtZW50QXR0cmlidXRlc1Byb3BlcnR5IHt9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRDaGlsZHJlbkF0dHJpYnV0ZSBleHRlbmRzIEdsb2JhbEpTWEVsZW1lbnRDaGlsZHJlbkF0dHJpYnV0ZSB7fQoKICAgICAgICB0eXBlIExpYnJhcnlNYW5hZ2VkQXR0cmlidXRlczxDLCBQPiA9IEdsb2JhbEpTWExpYnJhcnlNYW5hZ2VkQXR0cmlidXRlczxDLCBQPjsKCiAgICAgICAgaW50ZXJmYWNlIEludHJpbnNpY0F0dHJpYnV0ZXMgZXh0ZW5kcyBHbG9iYWxKU1hJbnRyaW5zaWNBdHRyaWJ1dGVzIHt9CiAgICAgICAgaW50ZXJmYWNlIEludHJpbnNpY0NsYXNzQXR0cmlidXRlczxUPiBleHRlbmRzIEdsb2JhbEpTWEludHJpbnNpY0NsYXNzQXR0cmlidXRlczxUPiB7fQogICAgICAgIGludGVyZmFjZSBJbnRyaW5zaWNFbGVtZW50cyBleHRlbmRzIEdsb2JhbEpTWEludHJpbnNpY0VsZW1lbnRzIHt9CiAgICB9Cn0KCi8vIG5ha2VkICdhbnknIHR5cGUgaW4gYSBjb25kaXRpb25hbCB0eXBlIHdpbGwgc2hvcnQgY2lyY3VpdCBhbmQgdW5pb24gYm90aCB0aGUgdGhlbi9lbHNlIGJyYW5jaGVzCi8vIHNvIGJvb2xlYW4gaXMgb25seSByZXNvbHZlZCBmb3IgVCA9IGFueQp0eXBlIElzRXhhY3RseUFueTxUPiA9IGJvb2xlYW4gZXh0ZW5kcyAoVCBleHRlbmRzIG5ldmVyID8gdHJ1ZSA6IGZhbHNlKSA/IHRydWUgOiBmYWxzZTsKCnR5cGUgRXhhY3RseUFueVByb3BlcnR5S2V5czxUPiA9IHsgW0sgaW4ga2V5b2YgVF06IElzRXhhY3RseUFueTxUW0tdPiBleHRlbmRzIHRydWUgPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTsKdHlwZSBOb3RFeGFjdGx5QW55UHJvcGVydHlLZXlzPFQ+ID0gRXhjbHVkZTxrZXlvZiBULCBFeGFjdGx5QW55UHJvcGVydHlLZXlzPFQ+PjsKCi8vIFRyeSB0byByZXNvbHZlIGlsbC1kZWZpbmVkIHByb3BzIGxpa2UgZm9yIEpTIHVzZXJzOiBwcm9wcyBjYW4gYmUgYW55LCBvciBzb21ldGltZXMgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgb2YgdHlwZSBhbnkKdHlwZSBNZXJnZVByb3BUeXBlczxQLCBUPiA9CiAgICAvLyBEaXN0cmlidXRlIG92ZXIgUCBpbiBjYXNlIGl0IGlzIGEgdW5pb24gdHlwZQogICAgUCBleHRlbmRzIGFueQogICAgICAgIC8vIElmIHByb3BzIGlzIHR5cGUgYW55LCB1c2UgcHJvcFR5cGVzIGRlZmluaXRpb25zCiAgICAgICAgPyBJc0V4YWN0bHlBbnk8UD4gZXh0ZW5kcyB0cnVlID8gVCA6CiAgICAgICAgICAgIC8vIElmIGRlY2xhcmVkIHByb3BzIGhhdmUgaW5kZXhlZCBwcm9wZXJ0aWVzLCBpZ25vcmUgaW5mZXJyZWQgcHJvcHMgZW50aXJlbHkgYXMga2V5b2YgZ2V0cyB3aWRlbmVkCiAgICAgICAgICAgIHN0cmluZyBleHRlbmRzIGtleW9mIFAgPyBQIDoKICAgICAgICAgICAgICAgIC8vIFByZWZlciBkZWNsYXJlZCB0eXBlcyB3aGljaCBhcmUgbm90IGV4YWN0bHkgYW55CiAgICAgICAgICAgICAgICAmIFBpY2s8UCwgTm90RXhhY3RseUFueVByb3BlcnR5S2V5czxQPj4KICAgICAgICAgICAgICAgIC8vIEZvciBwcm9wcyB3aGljaCBhcmUgZXhhY3RseSBhbnksIHVzZSB0aGUgdHlwZSBpbmZlcnJlZCBmcm9tIHByb3BUeXBlcyBpZiBwcmVzZW50CiAgICAgICAgICAgICAgICAmIFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBOb3RFeGFjdGx5QW55UHJvcGVydHlLZXlzPFA+Pj4KICAgICAgICAgICAgICAgIC8vIEtlZXAgbGVmdG92ZXIgcHJvcHMgbm90IHNwZWNpZmllZCBpbiBwcm9wVHlwZXMKICAgICAgICAgICAgICAgICYgUGljazxQLCBFeGNsdWRlPGtleW9mIFAsIGtleW9mIFQ+PgogICAgICAgIDogbmV2ZXI7Cgp0eXBlIEluZXhhY3RQYXJ0aWFsPFQ+ID0geyBbSyBpbiBrZXlvZiBUXT86IFRbS10gfCB1bmRlZmluZWQgfTsKCi8vIEFueSBwcm9wIHRoYXQgaGFzIGEgZGVmYXVsdCBwcm9wIGJlY29tZXMgb3B0aW9uYWwsIGJ1dCBpdHMgdHlwZSBpcyB1bmNoYW5nZWQKLy8gVW5kZWNsYXJlZCBkZWZhdWx0IHByb3BzIGFyZSBhdWdtZW50ZWQgaW50byB0aGUgcmVzdWx0aW5nIGFsbG93YWJsZSBhdHRyaWJ1dGVzCi8vIElmIGRlY2xhcmVkIHByb3BzIGhhdmUgaW5kZXhlZCBwcm9wZXJ0aWVzLCBpZ25vcmUgZGVmYXVsdCBwcm9wcyBlbnRpcmVseSBhcyBrZXlvZiBnZXRzIHdpZGVuZWQKLy8gV3JhcCBpbiBhbiBvdXRlci1sZXZlbCBjb25kaXRpb25hbCB0eXBlIHRvIGFsbG93IGRpc3RyaWJ1dGlvbiBvdmVyIHByb3BzIHRoYXQgYXJlIHVuaW9ucwp0eXBlIERlZmF1bHRpemU8UCwgRD4gPSBQIGV4dGVuZHMgYW55CiAgICA/IHN0cmluZyBleHRlbmRzIGtleW9mIFAgPyBQIDoKICAgICAgICAmIFBpY2s8UCwgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBEPj4KICAgICAgICAmIEluZXhhY3RQYXJ0aWFsPFBpY2s8UCwgRXh0cmFjdDxrZXlvZiBQLCBrZXlvZiBEPj4+CiAgICAgICAgJiBJbmV4YWN0UGFydGlhbDxQaWNrPEQsIEV4Y2x1ZGU8a2V5b2YgRCwga2V5b2YgUD4+PgogICAgOiBuZXZlcjsKCnR5cGUgUmVhY3RNYW5hZ2VkQXR0cmlidXRlczxDLCBQPiA9IEMgZXh0ZW5kcyB7IHByb3BUeXBlczogaW5mZXIgVDsgZGVmYXVsdFByb3BzOiBpbmZlciBEOyB9CiAgICA/IERlZmF1bHRpemU8TWVyZ2VQcm9wVHlwZXM8UCwgUHJvcFR5cGVzLkluZmVyUHJvcHM8VD4+LCBEPgogICAgOiBDIGV4dGVuZHMgeyBwcm9wVHlwZXM6IGluZmVyIFQ7IH0KICAgICAgICA/IE1lcmdlUHJvcFR5cGVzPFAsIFByb3BUeXBlcy5JbmZlclByb3BzPFQ+PgogICAgICAgIDogQyBleHRlbmRzIHsgZGVmYXVsdFByb3BzOiBpbmZlciBEOyB9CiAgICAgICAgICAgID8gRGVmYXVsdGl6ZTxQLCBEPgogICAgICAgICAgICA6IFA7CgpkZWNsYXJlIGdsb2JhbCB7CiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIFVzZSBgUmVhY3QuSlNYYCBpbnN0ZWFkIG9mIHRoZSBnbG9iYWwgYEpTWGAgbmFtZXNwYWNlLgogICAgICovCiAgICBuYW1lc3BhY2UgSlNYIHsKICAgICAgICAvLyBXZSBkb24ndCBqdXN0IGFsaWFzIFJlYWN0LkVsZW1lbnRUeXBlIGJlY2F1c2UgUmVhY3QuRWxlbWVudFR5cGUKICAgICAgICAvLyBoaXN0b3JpY2FsbHkgZG9lcyBtb3JlIHRoYW4gd2UgbmVlZCBpdCB0by4KICAgICAgICAvLyBFLmcuIGl0IGFsc28gY29udGFpbnMgLnByb3BUeXBlcyBhbmQgc28gVFMgYWxzbyB2ZXJpZmllcyB0aGUgZGVjbGFyZWQKICAgICAgICAvLyBwcm9wcyB0eXBlIGRvZXMgbWF0Y2ggdGhlIGRlY2xhcmVkIC5wcm9wVHlwZXMuCiAgICAgICAgLy8gQnV0IGlmIGxpYnJhcmllcyBkZWNsYXJlZCB0aGVpciAucHJvcFR5cGVzIGJ1dCBub3QgcHJvcHMgdHlwZSwKICAgICAgICAvLyBvciB0aGV5IG1pc21hdGNoLCB5b3Ugd29uJ3QgYmUgYWJsZSB0byB1c2UgdGhlIGNsYXNzIGNvbXBvbmVudAogICAgICAgIC8vIGFzIGEgSlNYLkVsZW1lbnRUeXBlLgogICAgICAgIC8vIFdlIGNvdWxkIGZpeCB0aGlzIGV2ZXJ5d2hlcmUgYnV0IHdlJ3JlIHVsdGltYXRlbHkgbm90IGludGVyZXN0ZWQgaW4KICAgICAgICAvLyAucHJvcFR5cGVzIGFzc2lnbmFiaWxpdHkgc28gd2UgbWlnaHQgYXMgd2VsbCBkcm9wIGl0IGVudGlyZWx5IGhlcmUgdG8KICAgICAgICAvLyAgcmVkdWNlIHRoZSB3b3JrIG9mIHRoZSB0eXBlLWNoZWNrZXIuCiAgICAgICAgLy8gVE9ETzogQ2hlY2sgaW1wYWN0IG9mIG1ha2luZyBSZWFjdC5FbGVtZW50VHlwZTxQID0gYW55PiA9IFJlYWN0LkpTWEVsZW1lbnRDb25zdHJ1Y3RvcjxQPgogICAgICAgIHR5cGUgRWxlbWVudFR5cGUgPSBzdHJpbmcgfCBSZWFjdC5KU1hFbGVtZW50Q29uc3RydWN0b3I8YW55PjsKICAgICAgICBpbnRlcmZhY2UgRWxlbWVudCBleHRlbmRzIFJlYWN0LlJlYWN0RWxlbWVudDxhbnksIGFueT4geyB9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRDbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxhbnk+IHsKICAgICAgICAgICAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICB9CiAgICAgICAgaW50ZXJmYWNlIEVsZW1lbnRBdHRyaWJ1dGVzUHJvcGVydHkgeyBwcm9wczoge307IH0KICAgICAgICBpbnRlcmZhY2UgRWxlbWVudENoaWxkcmVuQXR0cmlidXRlIHsgY2hpbGRyZW46IHt9OyB9CgogICAgICAgIC8vIFdlIGNhbid0IHJlY3Vyc2UgZm9yZXZlciBiZWNhdXNlIGB0eXBlYCBjYW4ndCBiZSBzZWxmLXJlZmVyZW50aWFsOwogICAgICAgIC8vIGxldCdzIGFzc3VtZSBpdCdzIHJlYXNvbmFibGUgdG8gZG8gYSBzaW5nbGUgUmVhY3QubGF6eSgpIGFyb3VuZCBhIHNpbmdsZSBSZWFjdC5tZW1vKCkgLyB2aWNlLXZlcnNhCiAgICAgICAgdHlwZSBMaWJyYXJ5TWFuYWdlZEF0dHJpYnV0ZXM8QywgUD4gPSBDIGV4dGVuZHMgUmVhY3QuTWVtb0V4b3RpY0NvbXBvbmVudDxpbmZlciBUPiB8IFJlYWN0LkxhenlFeG90aWNDb21wb25lbnQ8aW5mZXIgVD4KICAgICAgICAgICAgPyBUIGV4dGVuZHMgUmVhY3QuTWVtb0V4b3RpY0NvbXBvbmVudDxpbmZlciBVPiB8IFJlYWN0LkxhenlFeG90aWNDb21wb25lbnQ8aW5mZXIgVT4KICAgICAgICAgICAgICAgID8gUmVhY3RNYW5hZ2VkQXR0cmlidXRlczxVLCBQPgogICAgICAgICAgICAgICAgOiBSZWFjdE1hbmFnZWRBdHRyaWJ1dGVzPFQsIFA+CiAgICAgICAgICAgIDogUmVhY3RNYW5hZ2VkQXR0cmlidXRlczxDLCBQPjsKCiAgICAgICAgaW50ZXJmYWNlIEludHJpbnNpY0F0dHJpYnV0ZXMgZXh0ZW5kcyBSZWFjdC5BdHRyaWJ1dGVzIHsgfQogICAgICAgIGludGVyZmFjZSBJbnRyaW5zaWNDbGFzc0F0dHJpYnV0ZXM8VD4gZXh0ZW5kcyBSZWFjdC5DbGFzc0F0dHJpYnV0ZXM8VD4geyB9CgogICAgICAgIGludGVyZmFjZSBJbnRyaW5zaWNFbGVtZW50cyB7CiAgICAgICAgICAgIC8vIEhUTUwKICAgICAgICAgICAgYTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuQW5jaG9ySFRNTEF0dHJpYnV0ZXM8SFRNTEFuY2hvckVsZW1lbnQ+LCBIVE1MQW5jaG9yRWxlbWVudD47CiAgICAgICAgICAgIGFiYnI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBhZGRyZXNzOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgYXJlYTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuQXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxBcmVhRWxlbWVudD4sIEhUTUxBcmVhRWxlbWVudD47CiAgICAgICAgICAgIGFydGljbGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBhc2lkZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGF1ZGlvOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5BdWRpb0hUTUxBdHRyaWJ1dGVzPEhUTUxBdWRpb0VsZW1lbnQ+LCBIVE1MQXVkaW9FbGVtZW50PjsKICAgICAgICAgICAgYjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGJhc2U6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkJhc2VIVE1MQXR0cmlidXRlczxIVE1MQmFzZUVsZW1lbnQ+LCBIVE1MQmFzZUVsZW1lbnQ+OwogICAgICAgICAgICBiZGk6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBiZG86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBiaWc6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBibG9ja3F1b3RlOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5CbG9ja3F1b3RlSFRNTEF0dHJpYnV0ZXM8SFRNTFF1b3RlRWxlbWVudD4sIEhUTUxRdW90ZUVsZW1lbnQ+OwogICAgICAgICAgICBib2R5OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MQm9keUVsZW1lbnQ+LCBIVE1MQm9keUVsZW1lbnQ+OwogICAgICAgICAgICBicjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEJSRWxlbWVudD4sIEhUTUxCUkVsZW1lbnQ+OwogICAgICAgICAgICBidXR0b246IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PiwgSFRNTEJ1dHRvbkVsZW1lbnQ+OwogICAgICAgICAgICBjYW52YXM6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkNhbnZhc0hUTUxBdHRyaWJ1dGVzPEhUTUxDYW52YXNFbGVtZW50PiwgSFRNTENhbnZhc0VsZW1lbnQ+OwogICAgICAgICAgICBjYXB0aW9uOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgY2VudGVyOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgY2l0ZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGNvZGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBjb2w6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkNvbEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNvbEVsZW1lbnQ+LCBIVE1MVGFibGVDb2xFbGVtZW50PjsKICAgICAgICAgICAgY29sZ3JvdXA6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkNvbGdyb3VwSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ29sRWxlbWVudD4sIEhUTUxUYWJsZUNvbEVsZW1lbnQ+OwogICAgICAgICAgICBkYXRhOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5EYXRhSFRNTEF0dHJpYnV0ZXM8SFRNTERhdGFFbGVtZW50PiwgSFRNTERhdGFFbGVtZW50PjsKICAgICAgICAgICAgZGF0YWxpc3Q6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEYXRhTGlzdEVsZW1lbnQ+LCBIVE1MRGF0YUxpc3RFbGVtZW50PjsKICAgICAgICAgICAgZGQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBkZWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkRlbEhUTUxBdHRyaWJ1dGVzPEhUTUxNb2RFbGVtZW50PiwgSFRNTE1vZEVsZW1lbnQ+OwogICAgICAgICAgICBkZXRhaWxzOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5EZXRhaWxzSFRNTEF0dHJpYnV0ZXM8SFRNTERldGFpbHNFbGVtZW50PiwgSFRNTERldGFpbHNFbGVtZW50PjsKICAgICAgICAgICAgZGZuOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZGlhbG9nOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5EaWFsb2dIVE1MQXR0cmlidXRlczxIVE1MRGlhbG9nRWxlbWVudD4sIEhUTUxEaWFsb2dFbGVtZW50PjsKICAgICAgICAgICAgZGl2OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIEhUTUxEaXZFbGVtZW50PjsKICAgICAgICAgICAgZGw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxETGlzdEVsZW1lbnQ+LCBIVE1MRExpc3RFbGVtZW50PjsKICAgICAgICAgICAgZHQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBlbTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGVtYmVkOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5FbWJlZEhUTUxBdHRyaWJ1dGVzPEhUTUxFbWJlZEVsZW1lbnQ+LCBIVE1MRW1iZWRFbGVtZW50PjsKICAgICAgICAgICAgZmllbGRzZXQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkZpZWxkc2V0SFRNTEF0dHJpYnV0ZXM8SFRNTEZpZWxkU2V0RWxlbWVudD4sIEhUTUxGaWVsZFNldEVsZW1lbnQ+OwogICAgICAgICAgICBmaWdjYXB0aW9uOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZmlndXJlOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZm9vdGVyOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgZm9ybTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuRm9ybUhUTUxBdHRyaWJ1dGVzPEhUTUxGb3JtRWxlbWVudD4sIEhUTUxGb3JtRWxlbWVudD47CiAgICAgICAgICAgIGgxOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgICAgICBoMjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICAgICAgaDM6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgICAgIGg0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+LCBIVE1MSGVhZGluZ0VsZW1lbnQ+OwogICAgICAgICAgICBoNTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEhlYWRpbmdFbGVtZW50PiwgSFRNTEhlYWRpbmdFbGVtZW50PjsKICAgICAgICAgICAgaDY6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD4sIEhUTUxIZWFkaW5nRWxlbWVudD47CiAgICAgICAgICAgIGhlYWQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkRWxlbWVudD4sIEhUTUxIZWFkRWxlbWVudD47CiAgICAgICAgICAgIGhlYWRlcjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGhncm91cDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIGhyOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSFJFbGVtZW50PiwgSFRNTEhSRWxlbWVudD47CiAgICAgICAgICAgIGh0bWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lkh0bWxIVE1MQXR0cmlidXRlczxIVE1MSHRtbEVsZW1lbnQ+LCBIVE1MSHRtbEVsZW1lbnQ+OwogICAgICAgICAgICBpOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgaWZyYW1lOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JZnJhbWVIVE1MQXR0cmlidXRlczxIVE1MSUZyYW1lRWxlbWVudD4sIEhUTUxJRnJhbWVFbGVtZW50PjsKICAgICAgICAgICAgaW1nOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JbWdIVE1MQXR0cmlidXRlczxIVE1MSW1hZ2VFbGVtZW50PiwgSFRNTEltYWdlRWxlbWVudD47CiAgICAgICAgICAgIGlucHV0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQ+LCBIVE1MSW5wdXRFbGVtZW50PjsKICAgICAgICAgICAgaW5zOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5JbnNIVE1MQXR0cmlidXRlczxIVE1MTW9kRWxlbWVudD4sIEhUTUxNb2RFbGVtZW50PjsKICAgICAgICAgICAga2JkOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAga2V5Z2VuOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5LZXlnZW5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbGFiZWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkxhYmVsSFRNTEF0dHJpYnV0ZXM8SFRNTExhYmVsRWxlbWVudD4sIEhUTUxMYWJlbEVsZW1lbnQ+OwogICAgICAgICAgICBsZWdlbmQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxMZWdlbmRFbGVtZW50PiwgSFRNTExlZ2VuZEVsZW1lbnQ+OwogICAgICAgICAgICBsaTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuTGlIVE1MQXR0cmlidXRlczxIVE1MTElFbGVtZW50PiwgSFRNTExJRWxlbWVudD47CiAgICAgICAgICAgIGxpbms6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkxpbmtIVE1MQXR0cmlidXRlczxIVE1MTGlua0VsZW1lbnQ+LCBIVE1MTGlua0VsZW1lbnQ+OwogICAgICAgICAgICBtYWluOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbWFwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5NYXBIVE1MQXR0cmlidXRlczxIVE1MTWFwRWxlbWVudD4sIEhUTUxNYXBFbGVtZW50PjsKICAgICAgICAgICAgbWFyazogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIG1lbnU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lk1lbnVIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbWVudWl0ZW06IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBtZXRhOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5NZXRhSFRNTEF0dHJpYnV0ZXM8SFRNTE1ldGFFbGVtZW50PiwgSFRNTE1ldGFFbGVtZW50PjsKICAgICAgICAgICAgbWV0ZXI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lk1ldGVySFRNTEF0dHJpYnV0ZXM8SFRNTE1ldGVyRWxlbWVudD4sIEhUTUxNZXRlckVsZW1lbnQ+OwogICAgICAgICAgICBuYXY6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBub2luZGV4OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgbm9zY3JpcHQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBvYmplY3Q6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0Lk9iamVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxPYmplY3RFbGVtZW50PiwgSFRNTE9iamVjdEVsZW1lbnQ+OwogICAgICAgICAgICBvbDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuT2xIVE1MQXR0cmlidXRlczxIVE1MT0xpc3RFbGVtZW50PiwgSFRNTE9MaXN0RWxlbWVudD47CiAgICAgICAgICAgIG9wdGdyb3VwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5PcHRncm91cEhUTUxBdHRyaWJ1dGVzPEhUTUxPcHRHcm91cEVsZW1lbnQ+LCBIVE1MT3B0R3JvdXBFbGVtZW50PjsKICAgICAgICAgICAgb3B0aW9uOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5PcHRpb25IVE1MQXR0cmlidXRlczxIVE1MT3B0aW9uRWxlbWVudD4sIEhUTUxPcHRpb25FbGVtZW50PjsKICAgICAgICAgICAgb3V0cHV0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5PdXRwdXRIVE1MQXR0cmlidXRlczxIVE1MT3V0cHV0RWxlbWVudD4sIEhUTUxPdXRwdXRFbGVtZW50PjsKICAgICAgICAgICAgcDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+LCBIVE1MUGFyYWdyYXBoRWxlbWVudD47CiAgICAgICAgICAgIHBhcmFtOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5QYXJhbUhUTUxBdHRyaWJ1dGVzPEhUTUxQYXJhbUVsZW1lbnQ+LCBIVE1MUGFyYW1FbGVtZW50PjsKICAgICAgICAgICAgcGljdHVyZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHByZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFByZUVsZW1lbnQ+LCBIVE1MUHJlRWxlbWVudD47CiAgICAgICAgICAgIHByb2dyZXNzOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5Qcm9ncmVzc0hUTUxBdHRyaWJ1dGVzPEhUTUxQcm9ncmVzc0VsZW1lbnQ+LCBIVE1MUHJvZ3Jlc3NFbGVtZW50PjsKICAgICAgICAgICAgcTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuUXVvdGVIVE1MQXR0cmlidXRlczxIVE1MUXVvdGVFbGVtZW50PiwgSFRNTFF1b3RlRWxlbWVudD47CiAgICAgICAgICAgIHJwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgcnQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBydWJ5OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgczogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHNhbXA6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBzZWFyY2g6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBzbG90OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5TbG90SFRNTEF0dHJpYnV0ZXM8SFRNTFNsb3RFbGVtZW50PiwgSFRNTFNsb3RFbGVtZW50PjsKICAgICAgICAgICAgc2NyaXB0OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5TY3JpcHRIVE1MQXR0cmlidXRlczxIVE1MU2NyaXB0RWxlbWVudD4sIEhUTUxTY3JpcHRFbGVtZW50PjsKICAgICAgICAgICAgc2VjdGlvbjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHNlbGVjdDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuU2VsZWN0SFRNTEF0dHJpYnV0ZXM8SFRNTFNlbGVjdEVsZW1lbnQ+LCBIVE1MU2VsZWN0RWxlbWVudD47CiAgICAgICAgICAgIHNtYWxsOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgc291cmNlOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5Tb3VyY2VIVE1MQXR0cmlidXRlczxIVE1MU291cmNlRWxlbWVudD4sIEhUTUxTb3VyY2VFbGVtZW50PjsKICAgICAgICAgICAgc3BhbjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PiwgSFRNTFNwYW5FbGVtZW50PjsKICAgICAgICAgICAgc3Ryb25nOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgc3R5bGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LlN0eWxlSFRNTEF0dHJpYnV0ZXM8SFRNTFN0eWxlRWxlbWVudD4sIEhUTUxTdHlsZUVsZW1lbnQ+OwogICAgICAgICAgICBzdWI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICBzdW1tYXJ5OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgc3VwOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgdGFibGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LlRhYmxlSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4sIEhUTUxUYWJsZUVsZW1lbnQ+OwogICAgICAgICAgICB0ZW1wbGF0ZTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRlbXBsYXRlRWxlbWVudD4sIEhUTUxUZW1wbGF0ZUVsZW1lbnQ+OwogICAgICAgICAgICB0Ym9keTogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+LCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudD47CiAgICAgICAgICAgIHRkOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5UZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD4sIEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD47CiAgICAgICAgICAgIHRleHRhcmVhOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5UZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LCBIVE1MVGV4dEFyZWFFbGVtZW50PjsKICAgICAgICAgICAgdGZvb3Q6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiwgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OwogICAgICAgICAgICB0aDogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudD4sIEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50PjsKICAgICAgICAgICAgdGhlYWQ6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiwgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OwogICAgICAgICAgICB0aW1lOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5UaW1lSFRNTEF0dHJpYnV0ZXM8SFRNTFRpbWVFbGVtZW50PiwgSFRNTFRpbWVFbGVtZW50PjsKICAgICAgICAgICAgdGl0bGU6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUaXRsZUVsZW1lbnQ+LCBIVE1MVGl0bGVFbGVtZW50PjsKICAgICAgICAgICAgdHI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+LCBIVE1MVGFibGVSb3dFbGVtZW50PjsKICAgICAgICAgICAgdHJhY2s6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LlRyYWNrSFRNTEF0dHJpYnV0ZXM8SFRNTFRyYWNrRWxlbWVudD4sIEhUTUxUcmFja0VsZW1lbnQ+OwogICAgICAgICAgICB1OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4sIEhUTUxFbGVtZW50PjsKICAgICAgICAgICAgdWw6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxVTGlzdEVsZW1lbnQ+LCBIVE1MVUxpc3RFbGVtZW50PjsKICAgICAgICAgICAgInZhciI6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiwgSFRNTEVsZW1lbnQ+OwogICAgICAgICAgICB2aWRlbzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuVmlkZW9IVE1MQXR0cmlidXRlczxIVE1MVmlkZW9FbGVtZW50PiwgSFRNTFZpZGVvRWxlbWVudD47CiAgICAgICAgICAgIHdicjogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+LCBIVE1MRWxlbWVudD47CiAgICAgICAgICAgIHdlYnZpZXc6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LldlYlZpZXdIVE1MQXR0cmlidXRlczxIVE1MV2ViVmlld0VsZW1lbnQ+LCBIVE1MV2ViVmlld0VsZW1lbnQ+OwoKICAgICAgICAgICAgLy8gU1ZHCiAgICAgICAgICAgIHN2ZzogUmVhY3QuU1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD47CgogICAgICAgICAgICBhbmltYXRlOiBSZWFjdC5TVkdQcm9wczxTVkdFbGVtZW50PjsgLy8gVE9ETzogSXQgaXMgU1ZHQW5pbWF0ZUVsZW1lbnQgYnV0IGlzIG5vdCBpbiBUeXBlU2NyaXB0J3MgbGliLmRvbS5kLnRzIGZvciBub3cuCiAgICAgICAgICAgIGFuaW1hdGVNb3Rpb246IFJlYWN0LlNWR1Byb3BzPFNWR0VsZW1lbnQ+OwogICAgICAgICAgICBhbmltYXRlVHJhbnNmb3JtOiBSZWFjdC5TVkdQcm9wczxTVkdFbGVtZW50PjsgLy8gVE9ETzogSXQgaXMgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgYnV0IGlzIG5vdCBpbiBUeXBlU2NyaXB0J3MgbGliLmRvbS5kLnRzIGZvciBub3cuCiAgICAgICAgICAgIGNpcmNsZTogUmVhY3QuU1ZHUHJvcHM8U1ZHQ2lyY2xlRWxlbWVudD47CiAgICAgICAgICAgIGNsaXBQYXRoOiBSZWFjdC5TVkdQcm9wczxTVkdDbGlwUGF0aEVsZW1lbnQ+OwogICAgICAgICAgICBkZWZzOiBSZWFjdC5TVkdQcm9wczxTVkdEZWZzRWxlbWVudD47CiAgICAgICAgICAgIGRlc2M6IFJlYWN0LlNWR1Byb3BzPFNWR0Rlc2NFbGVtZW50PjsKICAgICAgICAgICAgZWxsaXBzZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRWxsaXBzZUVsZW1lbnQ+OwogICAgICAgICAgICBmZUJsZW5kOiBSZWFjdC5TVkdQcm9wczxTVkdGRUJsZW5kRWxlbWVudD47CiAgICAgICAgICAgIGZlQ29sb3JNYXRyaXg6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50PjsKICAgICAgICAgICAgZmVDb21wb25lbnRUcmFuc2ZlcjogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ+OwogICAgICAgICAgICBmZUNvbXBvc2l0ZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVDb21wb3NpdGVFbGVtZW50PjsKICAgICAgICAgICAgZmVDb252b2x2ZU1hdHJpeDogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+OwogICAgICAgICAgICBmZURpZmZ1c2VMaWdodGluZzogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PjsKICAgICAgICAgICAgZmVEaXNwbGFjZW1lbnRNYXA6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudD47CiAgICAgICAgICAgIGZlRGlzdGFudExpZ2h0OiBSZWFjdC5TVkdQcm9wczxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ+OwogICAgICAgICAgICBmZURyb3BTaGFkb3c6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ+OwogICAgICAgICAgICBmZUZsb29kOiBSZWFjdC5TVkdQcm9wczxTVkdGRUZsb29kRWxlbWVudD47CiAgICAgICAgICAgIGZlRnVuY0E6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRnVuY0FFbGVtZW50PjsKICAgICAgICAgICAgZmVGdW5jQjogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVGdW5jQkVsZW1lbnQ+OwogICAgICAgICAgICBmZUZ1bmNHOiBSZWFjdC5TVkdQcm9wczxTVkdGRUZ1bmNHRWxlbWVudD47CiAgICAgICAgICAgIGZlRnVuY1I6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFRnVuY1JFbGVtZW50PjsKICAgICAgICAgICAgZmVHYXVzc2lhbkJsdXI6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudD47CiAgICAgICAgICAgIGZlSW1hZ2U6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFSW1hZ2VFbGVtZW50PjsKICAgICAgICAgICAgZmVNZXJnZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVNZXJnZUVsZW1lbnQ+OwogICAgICAgICAgICBmZU1lcmdlTm9kZTogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PjsKICAgICAgICAgICAgZmVNb3JwaG9sb2d5OiBSZWFjdC5TVkdQcm9wczxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PjsKICAgICAgICAgICAgZmVPZmZzZXQ6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFT2Zmc2V0RWxlbWVudD47CiAgICAgICAgICAgIGZlUG9pbnRMaWdodDogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVQb2ludExpZ2h0RWxlbWVudD47CiAgICAgICAgICAgIGZlU3BlY3VsYXJMaWdodGluZzogUmVhY3QuU1ZHUHJvcHM8U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudD47CiAgICAgICAgICAgIGZlU3BvdExpZ2h0OiBSZWFjdC5TVkdQcm9wczxTVkdGRVNwb3RMaWdodEVsZW1lbnQ+OwogICAgICAgICAgICBmZVRpbGU6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFVGlsZUVsZW1lbnQ+OwogICAgICAgICAgICBmZVR1cmJ1bGVuY2U6IFJlYWN0LlNWR1Byb3BzPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+OwogICAgICAgICAgICBmaWx0ZXI6IFJlYWN0LlNWR1Byb3BzPFNWR0ZpbHRlckVsZW1lbnQ+OwogICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBSZWFjdC5TVkdQcm9wczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD47CiAgICAgICAgICAgIGc6IFJlYWN0LlNWR1Byb3BzPFNWR0dFbGVtZW50PjsKICAgICAgICAgICAgaW1hZ2U6IFJlYWN0LlNWR1Byb3BzPFNWR0ltYWdlRWxlbWVudD47CiAgICAgICAgICAgIGxpbmU6IFJlYWN0LlNWR0xpbmVFbGVtZW50QXR0cmlidXRlczxTVkdMaW5lRWxlbWVudD47CiAgICAgICAgICAgIGxpbmVhckdyYWRpZW50OiBSZWFjdC5TVkdQcm9wczxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+OwogICAgICAgICAgICBtYXJrZXI6IFJlYWN0LlNWR1Byb3BzPFNWR01hcmtlckVsZW1lbnQ+OwogICAgICAgICAgICBtYXNrOiBSZWFjdC5TVkdQcm9wczxTVkdNYXNrRWxlbWVudD47CiAgICAgICAgICAgIG1ldGFkYXRhOiBSZWFjdC5TVkdQcm9wczxTVkdNZXRhZGF0YUVsZW1lbnQ+OwogICAgICAgICAgICBtcGF0aDogUmVhY3QuU1ZHUHJvcHM8U1ZHRWxlbWVudD47CiAgICAgICAgICAgIHBhdGg6IFJlYWN0LlNWR1Byb3BzPFNWR1BhdGhFbGVtZW50PjsKICAgICAgICAgICAgcGF0dGVybjogUmVhY3QuU1ZHUHJvcHM8U1ZHUGF0dGVybkVsZW1lbnQ+OwogICAgICAgICAgICBwb2x5Z29uOiBSZWFjdC5TVkdQcm9wczxTVkdQb2x5Z29uRWxlbWVudD47CiAgICAgICAgICAgIHBvbHlsaW5lOiBSZWFjdC5TVkdQcm9wczxTVkdQb2x5bGluZUVsZW1lbnQ+OwogICAgICAgICAgICByYWRpYWxHcmFkaWVudDogUmVhY3QuU1ZHUHJvcHM8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50PjsKICAgICAgICAgICAgcmVjdDogUmVhY3QuU1ZHUHJvcHM8U1ZHUmVjdEVsZW1lbnQ+OwogICAgICAgICAgICBzdG9wOiBSZWFjdC5TVkdQcm9wczxTVkdTdG9wRWxlbWVudD47CiAgICAgICAgICAgIHN3aXRjaDogUmVhY3QuU1ZHUHJvcHM8U1ZHU3dpdGNoRWxlbWVudD47CiAgICAgICAgICAgIHN5bWJvbDogUmVhY3QuU1ZHUHJvcHM8U1ZHU3ltYm9sRWxlbWVudD47CiAgICAgICAgICAgIHRleHQ6IFJlYWN0LlNWR1RleHRFbGVtZW50QXR0cmlidXRlczxTVkdUZXh0RWxlbWVudD47CiAgICAgICAgICAgIHRleHRQYXRoOiBSZWFjdC5TVkdQcm9wczxTVkdUZXh0UGF0aEVsZW1lbnQ+OwogICAgICAgICAgICB0c3BhbjogUmVhY3QuU1ZHUHJvcHM8U1ZHVFNwYW5FbGVtZW50PjsKICAgICAgICAgICAgdXNlOiBSZWFjdC5TVkdQcm9wczxTVkdVc2VFbGVtZW50PjsKICAgICAgICAgICAgdmlldzogUmVhY3QuU1ZHUHJvcHM8U1ZHVmlld0VsZW1lbnQ+OwogICAgICAgIH0KICAgIH0KfQoKLy8gUmVhY3QuSlNYIG5lZWRzIHRvIHBvaW50IHRvIGdsb2JhbC5KU1ggdG8ga2VlcCBnbG9iYWwgbW9kdWxlIGF1Z21lbnRhdGlvbnMgaW50YWN0LgovLyBCdXQgd2UgY2FuJ3QgYWNjZXNzIGdsb2JhbC5KU1ggc28gd2UgbmVlZCB0byBjcmVhdGUgdGhlc2UgYWxpYXNlcyBpbnN0ZWFkLgovLyBPbmNlIHRoZSBnbG9iYWwgSlNYIG5hbWVzcGFjZSB3aWxsIGJlIHJlbW92ZWQgd2UgcmVwbGFjZSBSZWFjdC5KU1ggd2l0aCB0aGUgY29udGVudHMgb2YgZ2xvYmFsLkpTWAp0eXBlIEdsb2JhbEpTWEVsZW1lbnRUeXBlID0gSlNYLkVsZW1lbnRUeXBlOwppbnRlcmZhY2UgR2xvYmFsSlNYRWxlbWVudCBleHRlbmRzIEpTWC5FbGVtZW50IHt9CmludGVyZmFjZSBHbG9iYWxKU1hFbGVtZW50Q2xhc3MgZXh0ZW5kcyBKU1guRWxlbWVudENsYXNzIHt9CmludGVyZmFjZSBHbG9iYWxKU1hFbGVtZW50QXR0cmlidXRlc1Byb3BlcnR5IGV4dGVuZHMgSlNYLkVsZW1lbnRBdHRyaWJ1dGVzUHJvcGVydHkge30KaW50ZXJmYWNlIEdsb2JhbEpTWEVsZW1lbnRDaGlsZHJlbkF0dHJpYnV0ZSBleHRlbmRzIEpTWC5FbGVtZW50Q2hpbGRyZW5BdHRyaWJ1dGUge30KCnR5cGUgR2xvYmFsSlNYTGlicmFyeU1hbmFnZWRBdHRyaWJ1dGVzPEMsIFA+ID0gSlNYLkxpYnJhcnlNYW5hZ2VkQXR0cmlidXRlczxDLCBQPjsKCmludGVyZmFjZSBHbG9iYWxKU1hJbnRyaW5zaWNBdHRyaWJ1dGVzIGV4dGVuZHMgSlNYLkludHJpbnNpY0F0dHJpYnV0ZXMge30KaW50ZXJmYWNlIEdsb2JhbEpTWEludHJpbnNpY0NsYXNzQXR0cmlidXRlczxUPiBleHRlbmRzIEpTWC5JbnRyaW5zaWNDbGFzc0F0dHJpYnV0ZXM8VD4ge30KCmludGVyZmFjZSBHbG9iYWxKU1hJbnRyaW5zaWNFbGVtZW50cyBleHRlbmRzIEpTWC5JbnRyaW5zaWNFbGVtZW50cyB7fQo=","base64").toString("utf8")},elements:{url:"https://tlkfrontprodpublic.blob.core.windows.net/template-builder-production/tb-jsx.editor/elements.d.ts",sha256:"e3981b97a14159fcb236b232a765795765872a18ebdf2c7708c7fe9606a94e4b",source:Buffer.from("Cgp0eXBlIFByaW1pdGl2ZSA9IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCB8IGJpZ2ludCB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkOwoKZGVjbGFyZSBuYW1lc3BhY2UgdXRpbCB7CiAgICB0eXBlIEFzc2VydEVxdWFsPFQsIFU+ID0gKDxWPigpID0+IFYgZXh0ZW5kcyBUID8gMSA6IDIpIGV4dGVuZHMgPFY+KCkgPT4gViBleHRlbmRzIFUgPyAxIDogMiA/IHRydWUgOiBmYWxzZTsKICAgIGV4cG9ydCB0eXBlIGlzQW55PFQ+ID0gMCBleHRlbmRzIDEgJiBUID8gdHJ1ZSA6IGZhbHNlOwogICAgZXhwb3J0IGNvbnN0IGFzc2VydEVxdWFsOiA8QSwgQj4odmFsOiBBc3NlcnRFcXVhbDxBLCBCPikgPT4gQXNzZXJ0RXF1YWw8QSwgQj47CiAgICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4oX2FyZzogVCk6IHZvaWQ7CiAgICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoX3g6IG5ldmVyKTogbmV2ZXI7CiAgICBleHBvcnQgdHlwZSBPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj47CiAgICBleHBvcnQgdHlwZSBPbWl0S2V5czxULCBLIGV4dGVuZHMgc3RyaW5nPiA9IFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj47CiAgICBleHBvcnQgdHlwZSBNYWtlUGFydGlhbDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGFydGlhbDxQaWNrPFQsIEs+PjsKICAgIGV4cG9ydCB0eXBlIEV4YWN0bHk8VCwgWD4gPSBUICYgUmVjb3JkPEV4Y2x1ZGU8a2V5b2YgWCwga2V5b2YgVD4sIG5ldmVyPjsKICAgIGV4cG9ydCBjb25zdCBhcnJheVRvRW51bTogPFQgZXh0ZW5kcyBzdHJpbmcsIFUgZXh0ZW5kcyBbVCwgLi4uVFtdXT4oaXRlbXM6IFUpID0+IHsgW2sgaW4gVVtudW1iZXJdXTogazsgfTsKICAgIGV4cG9ydCBjb25zdCBnZXRWYWxpZEVudW1WYWx1ZXM6IChvYmo6IGFueSkgPT4gYW55W107CiAgICBleHBvcnQgY29uc3Qgb2JqZWN0VmFsdWVzOiAob2JqOiBhbnkpID0+IGFueVtdOwogICAgZXhwb3J0IGNvbnN0IG9iamVjdEtleXM6IE9iamVjdENvbnN0cnVjdG9yWyJrZXlzIl07CiAgICBleHBvcnQgY29uc3QgZmluZDogPFQ+KGFycjogVFtdLCBjaGVja2VyOiAoYXJnOiBUKSA9PiBhbnkpID0+IFQgfCB1bmRlZmluZWQ7CiAgICBleHBvcnQgdHlwZSBpZGVudGl0eTxUPiA9IG9iamVjdFV0aWwuaWRlbnRpdHk8VD47CiAgICBleHBvcnQgdHlwZSBmbGF0dGVuPFQ+ID0gb2JqZWN0VXRpbC5mbGF0dGVuPFQ+OwogICAgZXhwb3J0IHR5cGUgbm9VbmRlZmluZWQ8VD4gPSBUIGV4dGVuZHMgdW5kZWZpbmVkID8gbmV2ZXIgOiBUOwogICAgZXhwb3J0IGNvbnN0IGlzSW50ZWdlcjogTnVtYmVyQ29uc3RydWN0b3JbImlzSW50ZWdlciJdOwogICAgZXhwb3J0IGZ1bmN0aW9uIGpvaW5WYWx1ZXM8VCBleHRlbmRzIGFueVtdPihhcnJheTogVCwgc2VwYXJhdG9yPzogc3RyaW5nKTogc3RyaW5nOwogICAgZXhwb3J0IGNvbnN0IGpzb25TdHJpbmdpZnlSZXBsYWNlcjogKF86IHN0cmluZywgdmFsdWU6IGFueSkgPT4gYW55OwogICAgZXhwb3J0IHt9Owp9CmRlY2xhcmUgbmFtZXNwYWNlIG9iamVjdFV0aWwgewogICAgZXhwb3J0IHR5cGUgTWVyZ2VTaGFwZXM8VSwgVj4gPSB7CiAgICAgICAgW2sgaW4gRXhjbHVkZTxrZXlvZiBVLCBrZXlvZiBWPl06IFVba107CiAgICB9ICYgVjsKICAgIHR5cGUgb3B0aW9uYWxLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gewogICAgICAgIFtrIGluIGtleW9mIFRdOiB1bmRlZmluZWQgZXh0ZW5kcyBUW2tdID8gayA6IG5ldmVyOwogICAgfVtrZXlvZiBUXTsKICAgIHR5cGUgcmVxdWlyZWRLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gewogICAgICAgIFtrIGluIGtleW9mIFRdOiB1bmRlZmluZWQgZXh0ZW5kcyBUW2tdID8gbmV2ZXIgOiBrOwogICAgfVtrZXlvZiBUXTsKICAgIGV4cG9ydCB0eXBlIGFkZFF1ZXN0aW9uTWFya3M8VCBleHRlbmRzIG9iamVjdCwgX08gPSBhbnk+ID0gewogICAgICAgIFtLIGluIHJlcXVpcmVkS2V5czxUPl06IFRbS107CiAgICB9ICYgewogICAgICAgIFtLIGluIG9wdGlvbmFsS2V5czxUPl0/OiBUW0tdOwogICAgfSAmIHsKICAgICAgICBbayBpbiBrZXlvZiBUXT86IHVua25vd247CiAgICB9OwogICAgZXhwb3J0IHR5cGUgaWRlbnRpdHk8VD4gPSBUOwogICAgZXhwb3J0IHR5cGUgZmxhdHRlbjxUPiA9IGlkZW50aXR5PHsKICAgICAgICBbayBpbiBrZXlvZiBUXTogVFtrXTsKICAgIH0+OwogICAgZXhwb3J0IHR5cGUgbm9OZXZlcktleXM8VD4gPSB7CiAgICAgICAgW2sgaW4ga2V5b2YgVF06IFtUW2tdXSBleHRlbmRzIFtuZXZlcl0gPyBuZXZlciA6IGs7CiAgICB9W2tleW9mIFRdOwogICAgZXhwb3J0IHR5cGUgbm9OZXZlcjxUPiA9IGlkZW50aXR5PHsKICAgICAgICBbayBpbiBub05ldmVyS2V5czxUPl06IGsgZXh0ZW5kcyBrZXlvZiBUID8gVFtrXSA6IG5ldmVyOwogICAgfT47CiAgICBleHBvcnQgY29uc3QgbWVyZ2VTaGFwZXM6IDxVLCBUPihmaXJzdDogVSwgc2Vjb25kOiBUKSA9PiBUICYgVTsKICAgIGV4cG9ydCB0eXBlIGV4dGVuZFNoYXBlPEEgZXh0ZW5kcyBvYmplY3QsIEIgZXh0ZW5kcyBvYmplY3Q+ID0gewogICAgICAgIFtLIGluIGtleW9mIEEgYXMgSyBleHRlbmRzIGtleW9mIEIgPyBuZXZlciA6IEtdOiBBW0tdOwogICAgfSAmIHsKICAgICAgICBbSyBpbiBrZXlvZiBCXTogQltLXTsKICAgIH07CiAgICBleHBvcnQge307Cn0KZGVjbGFyZSBjb25zdCBab2RQYXJzZWRUeXBlOiB7CiAgICBzdHJpbmc6ICJzdHJpbmciOwogICAgbnVtYmVyOiAibnVtYmVyIjsKICAgIGJpZ2ludDogImJpZ2ludCI7CiAgICBib29sZWFuOiAiYm9vbGVhbiI7CiAgICBzeW1ib2w6ICJzeW1ib2wiOwogICAgdW5kZWZpbmVkOiAidW5kZWZpbmVkIjsKICAgIG9iamVjdDogIm9iamVjdCI7CiAgICBmdW5jdGlvbjogImZ1bmN0aW9uIjsKICAgIG1hcDogIm1hcCI7CiAgICBuYW46ICJuYW4iOwogICAgaW50ZWdlcjogImludGVnZXIiOwogICAgZmxvYXQ6ICJmbG9hdCI7CiAgICBkYXRlOiAiZGF0ZSI7CiAgICBudWxsOiAibnVsbCI7CiAgICBhcnJheTogImFycmF5IjsKICAgIHVua25vd246ICJ1bmtub3duIjsKICAgIHByb21pc2U6ICJwcm9taXNlIjsKICAgIHZvaWQ6ICJ2b2lkIjsKICAgIG5ldmVyOiAibmV2ZXIiOwogICAgc2V0OiAic2V0IjsKfTsKdHlwZSBab2RQYXJzZWRUeXBlID0ga2V5b2YgdHlwZW9mIFpvZFBhcnNlZFR5cGU7Cgp0eXBlIGFsbEtleXM8VD4gPSBUIGV4dGVuZHMgYW55ID8ga2V5b2YgVCA6IG5ldmVyOwp0eXBlIHR5cGVUb0ZsYXR0ZW5lZEVycm9yPFQsIFUgPSBzdHJpbmc+ID0gewogICAgZm9ybUVycm9yczogVVtdOwogICAgZmllbGRFcnJvcnM6IHsKICAgICAgICBbUCBpbiBhbGxLZXlzPFQ+XT86IFVbXTsKICAgIH07Cn07CmRlY2xhcmUgY29uc3QgWm9kSXNzdWVDb2RlOiB7CiAgICBpbnZhbGlkX3R5cGU6ICJpbnZhbGlkX3R5cGUiOwogICAgaW52YWxpZF9saXRlcmFsOiAiaW52YWxpZF9saXRlcmFsIjsKICAgIGN1c3RvbTogImN1c3RvbSI7CiAgICBpbnZhbGlkX3VuaW9uOiAiaW52YWxpZF91bmlvbiI7CiAgICBpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6ICJpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3IiOwogICAgaW52YWxpZF9lbnVtX3ZhbHVlOiAiaW52YWxpZF9lbnVtX3ZhbHVlIjsKICAgIHVucmVjb2duaXplZF9rZXlzOiAidW5yZWNvZ25pemVkX2tleXMiOwogICAgaW52YWxpZF9hcmd1bWVudHM6ICJpbnZhbGlkX2FyZ3VtZW50cyI7CiAgICBpbnZhbGlkX3JldHVybl90eXBlOiAiaW52YWxpZF9yZXR1cm5fdHlwZSI7CiAgICBpbnZhbGlkX2RhdGU6ICJpbnZhbGlkX2RhdGUiOwogICAgaW52YWxpZF9zdHJpbmc6ICJpbnZhbGlkX3N0cmluZyI7CiAgICB0b29fc21hbGw6ICJ0b29fc21hbGwiOwogICAgdG9vX2JpZzogInRvb19iaWciOwogICAgaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM6ICJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcyI7CiAgICBub3RfbXVsdGlwbGVfb2Y6ICJub3RfbXVsdGlwbGVfb2YiOwogICAgbm90X2Zpbml0ZTogIm5vdF9maW5pdGUiOwp9Owp0eXBlIFpvZElzc3VlQ29kZSA9IGtleW9mIHR5cGVvZiBab2RJc3N1ZUNvZGU7CnR5cGUgWm9kSXNzdWVCYXNlID0gewogICAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn07CmludGVyZmFjZSBab2RJbnZhbGlkVHlwZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlOwogICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGU7CiAgICByZWNlaXZlZDogWm9kUGFyc2VkVHlwZTsKfQppbnRlcmZhY2UgWm9kSW52YWxpZExpdGVyYWxJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfbGl0ZXJhbDsKICAgIGV4cGVjdGVkOiB1bmtub3duOwogICAgcmVjZWl2ZWQ6IHVua25vd247Cn0KaW50ZXJmYWNlIFpvZFVucmVjb2duaXplZEtleXNJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzOwogICAga2V5czogc3RyaW5nW107Cn0KaW50ZXJmYWNlIFpvZEludmFsaWRVbmlvbklzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbjsKICAgIHVuaW9uRXJyb3JzOiBab2RFcnJvcltdOwp9CmludGVyZmFjZSBab2RJbnZhbGlkVW5pb25EaXNjcmltaW5hdG9ySXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2UgewogICAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I7CiAgICBvcHRpb25zOiBQcmltaXRpdmVbXTsKfQppbnRlcmZhY2UgWm9kSW52YWxpZEVudW1WYWx1ZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIHJlY2VpdmVkOiBzdHJpbmcgfCBudW1iZXI7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZTsKICAgIG9wdGlvbnM6IChzdHJpbmcgfCBudW1iZXIpW107Cn0KaW50ZXJmYWNlIFpvZEludmFsaWRBcmd1bWVudHNJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzOwogICAgYXJndW1lbnRzRXJyb3I6IFpvZEVycm9yOwp9CmludGVyZmFjZSBab2RJbnZhbGlkUmV0dXJuVHlwZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZTsKICAgIHJldHVyblR5cGVFcnJvcjogWm9kRXJyb3I7Cn0KaW50ZXJmYWNlIFpvZEludmFsaWREYXRlSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2UgewogICAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGU7Cn0KdHlwZSBTdHJpbmdWYWxpZGF0aW9uID0gImVtYWlsIiB8ICJ1cmwiIHwgImVtb2ppIiB8ICJ1dWlkIiB8ICJuYW5vaWQiIHwgInJlZ2V4IiB8ICJjdWlkIiB8ICJjdWlkMiIgfCAidWxpZCIgfCAiZGF0ZXRpbWUiIHwgImRhdGUiIHwgInRpbWUiIHwgImR1cmF0aW9uIiB8ICJpcCIgfCAiY2lkciIgfCAiYmFzZTY0IiB8ICJqd3QiIHwgImJhc2U2NHVybCIgfCB7CiAgICBpbmNsdWRlczogc3RyaW5nOwogICAgcG9zaXRpb24/OiBudW1iZXI7Cn0gfCB7CiAgICBzdGFydHNXaXRoOiBzdHJpbmc7Cn0gfCB7CiAgICBlbmRzV2l0aDogc3RyaW5nOwp9OwppbnRlcmZhY2UgWm9kSW52YWxpZFN0cmluZ0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmc7CiAgICB2YWxpZGF0aW9uOiBTdHJpbmdWYWxpZGF0aW9uOwp9CmludGVyZmFjZSBab2RUb29TbWFsbElzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsOwogICAgbWluaW11bTogbnVtYmVyIHwgYmlnaW50OwogICAgaW5jbHVzaXZlOiBib29sZWFuOwogICAgZXhhY3Q/OiBib29sZWFuOwogICAgdHlwZTogImFycmF5IiB8ICJzdHJpbmciIHwgIm51bWJlciIgfCAic2V0IiB8ICJkYXRlIiB8ICJiaWdpbnQiOwp9CmludGVyZmFjZSBab2RUb29CaWdJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLnRvb19iaWc7CiAgICBtYXhpbXVtOiBudW1iZXIgfCBiaWdpbnQ7CiAgICBpbmNsdXNpdmU6IGJvb2xlYW47CiAgICBleGFjdD86IGJvb2xlYW47CiAgICB0eXBlOiAiYXJyYXkiIHwgInN0cmluZyIgfCAibnVtYmVyIiB8ICJzZXQiIHwgImRhdGUiIHwgImJpZ2ludCI7Cn0KaW50ZXJmYWNlIFpvZEludmFsaWRJbnRlcnNlY3Rpb25UeXBlc0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHsKICAgIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM7Cn0KaW50ZXJmYWNlIFpvZE5vdE11bHRpcGxlT2ZJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjsKICAgIG11bHRpcGxlT2Y6IG51bWJlciB8IGJpZ2ludDsKfQppbnRlcmZhY2UgWm9kTm90RmluaXRlSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2UgewogICAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5ub3RfZmluaXRlOwp9CmludGVyZmFjZSBab2RDdXN0b21Jc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7CiAgICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmN1c3RvbTsKICAgIHBhcmFtcz86IHsKICAgICAgICBbazogc3RyaW5nXTogYW55OwogICAgfTsKfQp0eXBlIFpvZElzc3VlT3B0aW9uYWxNZXNzYWdlID0gWm9kSW52YWxpZFR5cGVJc3N1ZSB8IFpvZEludmFsaWRMaXRlcmFsSXNzdWUgfCBab2RVbnJlY29nbml6ZWRLZXlzSXNzdWUgfCBab2RJbnZhbGlkVW5pb25Jc3N1ZSB8IFpvZEludmFsaWRVbmlvbkRpc2NyaW1pbmF0b3JJc3N1ZSB8IFpvZEludmFsaWRFbnVtVmFsdWVJc3N1ZSB8IFpvZEludmFsaWRBcmd1bWVudHNJc3N1ZSB8IFpvZEludmFsaWRSZXR1cm5UeXBlSXNzdWUgfCBab2RJbnZhbGlkRGF0ZUlzc3VlIHwgWm9kSW52YWxpZFN0cmluZ0lzc3VlIHwgWm9kVG9vU21hbGxJc3N1ZSB8IFpvZFRvb0JpZ0lzc3VlIHwgWm9kSW52YWxpZEludGVyc2VjdGlvblR5cGVzSXNzdWUgfCBab2ROb3RNdWx0aXBsZU9mSXNzdWUgfCBab2ROb3RGaW5pdGVJc3N1ZSB8IFpvZEN1c3RvbUlzc3VlOwp0eXBlIFpvZElzc3VlID0gWm9kSXNzdWVPcHRpb25hbE1lc3NhZ2UgJiB7CiAgICBmYXRhbD86IGJvb2xlYW47CiAgICBtZXNzYWdlOiBzdHJpbmc7Cn07CnR5cGUgcmVjdXJzaXZlWm9kRm9ybWF0dGVkRXJyb3I8VD4gPSBUIGV4dGVuZHMgW2FueSwgLi4uYW55W11dID8gewogICAgW0sgaW4ga2V5b2YgVF0/OiBab2RGb3JtYXR0ZWRFcnJvcjxUW0tdPjsKfSA6IFQgZXh0ZW5kcyBhbnlbXSA/IHsKICAgIFtrOiBudW1iZXJdOiBab2RGb3JtYXR0ZWRFcnJvcjxUW251bWJlcl0+Owp9IDogVCBleHRlbmRzIG9iamVjdCA/IHsKICAgIFtLIGluIGtleW9mIFRdPzogWm9kRm9ybWF0dGVkRXJyb3I8VFtLXT47Cn0gOiB1bmtub3duOwp0eXBlIFpvZEZvcm1hdHRlZEVycm9yPFQsIFUgPSBzdHJpbmc+ID0gewogICAgX2Vycm9yczogVVtdOwp9ICYgcmVjdXJzaXZlWm9kRm9ybWF0dGVkRXJyb3I8Tm9uTnVsbGFibGU8VD4+OwpkZWNsYXJlIGNsYXNzIFpvZEVycm9yPFQgPSBhbnk+IGV4dGVuZHMgRXJyb3IgewogICAgaXNzdWVzOiBab2RJc3N1ZVtdOwogICAgZ2V0IGVycm9ycygpOiBab2RJc3N1ZVtdOwogICAgY29uc3RydWN0b3IoaXNzdWVzOiBab2RJc3N1ZVtdKTsKICAgIGZvcm1hdCgpOiBab2RGb3JtYXR0ZWRFcnJvcjxUPjsKICAgIGZvcm1hdDxVPihtYXBwZXI6IChpc3N1ZTogWm9kSXNzdWUpID0+IFUpOiBab2RGb3JtYXR0ZWRFcnJvcjxULCBVPjsKICAgIHN0YXRpYyBjcmVhdGU6IChpc3N1ZXM6IFpvZElzc3VlW10pID0+IFpvZEVycm9yPGFueT47CiAgICBzdGF0aWMgYXNzZXJ0KHZhbHVlOiB1bmtub3duKTogYXNzZXJ0cyB2YWx1ZSBpcyBab2RFcnJvcjsKICAgIHRvU3RyaW5nKCk6IHN0cmluZzsKICAgIGdldCBtZXNzYWdlKCk6IHN0cmluZzsKICAgIGdldCBpc0VtcHR5KCk6IGJvb2xlYW47CiAgICBhZGRJc3N1ZTogKHN1YjogWm9kSXNzdWUpID0+IHZvaWQ7CiAgICBhZGRJc3N1ZXM6IChzdWJzPzogWm9kSXNzdWVbXSkgPT4gdm9pZDsKICAgIGZsYXR0ZW4oKTogdHlwZVRvRmxhdHRlbmVkRXJyb3I8VD47CiAgICBmbGF0dGVuPFU+KG1hcHBlcj86IChpc3N1ZTogWm9kSXNzdWUpID0+IFUpOiB0eXBlVG9GbGF0dGVuZWRFcnJvcjxULCBVPjsKICAgIGdldCBmb3JtRXJyb3JzKCk6IHR5cGVUb0ZsYXR0ZW5lZEVycm9yPFQsIHN0cmluZz47Cn0KdHlwZSBzdHJpcFBhdGg8VCBleHRlbmRzIG9iamVjdD4gPSBUIGV4dGVuZHMgYW55ID8gdXRpbC5PbWl0S2V5czxULCAicGF0aCI+IDogbmV2ZXI7CnR5cGUgSXNzdWVEYXRhID0gc3RyaXBQYXRoPFpvZElzc3VlT3B0aW9uYWxNZXNzYWdlPiAmIHsKICAgIHBhdGg/OiAoc3RyaW5nIHwgbnVtYmVyKVtdOwogICAgZmF0YWw/OiBib29sZWFuOwp9Owp0eXBlIEVycm9yTWFwQ3R4ID0gewogICAgZGVmYXVsdEVycm9yOiBzdHJpbmc7CiAgICBkYXRhOiBhbnk7Cn07CnR5cGUgWm9kRXJyb3JNYXAgPSAoaXNzdWU6IFpvZElzc3VlT3B0aW9uYWxNZXNzYWdlLCBfY3R4OiBFcnJvck1hcEN0eCkgPT4gewogICAgbWVzc2FnZTogc3RyaW5nOwp9OwoKdHlwZSBQYXJzZVBhcmFtcyA9IHsKICAgIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW107CiAgICBlcnJvck1hcDogWm9kRXJyb3JNYXA7CiAgICBhc3luYzogYm9vbGVhbjsKfTsKdHlwZSBQYXJzZVBhdGhDb21wb25lbnQgPSBzdHJpbmcgfCBudW1iZXI7CnR5cGUgUGFyc2VQYXRoID0gUGFyc2VQYXRoQ29tcG9uZW50W107CmludGVyZmFjZSBQYXJzZUNvbnRleHQgewogICAgcmVhZG9ubHkgY29tbW9uOiB7CiAgICAgICAgcmVhZG9ubHkgaXNzdWVzOiBab2RJc3N1ZVtdOwogICAgICAgIHJlYWRvbmx5IGNvbnRleHR1YWxFcnJvck1hcD86IFpvZEVycm9yTWFwOwogICAgICAgIHJlYWRvbmx5IGFzeW5jOiBib29sZWFuOwogICAgfTsKICAgIHJlYWRvbmx5IHBhdGg6IFBhcnNlUGF0aDsKICAgIHJlYWRvbmx5IHNjaGVtYUVycm9yTWFwPzogWm9kRXJyb3JNYXA7CiAgICByZWFkb25seSBwYXJlbnQ6IFBhcnNlQ29udGV4dCB8IG51bGw7CiAgICByZWFkb25seSBkYXRhOiBhbnk7CiAgICByZWFkb25seSBwYXJzZWRUeXBlOiBab2RQYXJzZWRUeXBlOwp9CnR5cGUgUGFyc2VJbnB1dCA9IHsKICAgIGRhdGE6IGFueTsKICAgIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW107CiAgICBwYXJlbnQ6IFBhcnNlQ29udGV4dDsKfTsKZGVjbGFyZSBjbGFzcyBQYXJzZVN0YXR1cyB7CiAgICB2YWx1ZTogImFib3J0ZWQiIHwgImRpcnR5IiB8ICJ2YWxpZCI7CiAgICBkaXJ0eSgpOiB2b2lkOwogICAgYWJvcnQoKTogdm9pZDsKICAgIHN0YXRpYyBtZXJnZUFycmF5KHN0YXR1czogUGFyc2VTdGF0dXMsIHJlc3VsdHM6IFN5bmNQYXJzZVJldHVyblR5cGU8YW55PltdKTogU3luY1BhcnNlUmV0dXJuVHlwZTsKICAgIHN0YXRpYyBtZXJnZU9iamVjdEFzeW5jKHN0YXR1czogUGFyc2VTdGF0dXMsIHBhaXJzOiB7CiAgICAgICAga2V5OiBQYXJzZVJldHVyblR5cGU8YW55PjsKICAgICAgICB2YWx1ZTogUGFyc2VSZXR1cm5UeXBlPGFueT47CiAgICB9W10pOiBQcm9taXNlPFN5bmNQYXJzZVJldHVyblR5cGU8YW55Pj47CiAgICBzdGF0aWMgbWVyZ2VPYmplY3RTeW5jKHN0YXR1czogUGFyc2VTdGF0dXMsIHBhaXJzOiB7CiAgICAgICAga2V5OiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47CiAgICAgICAgdmFsdWU6IFN5bmNQYXJzZVJldHVyblR5cGU8YW55PjsKICAgICAgICBhbHdheXNTZXQ/OiBib29sZWFuOwogICAgfVtdKTogU3luY1BhcnNlUmV0dXJuVHlwZTsKfQp0eXBlIElOVkFMSUQgPSB7CiAgICBzdGF0dXM6ICJhYm9ydGVkIjsKfTsKZGVjbGFyZSBjb25zdCBJTlZBTElEOiBJTlZBTElEOwp0eXBlIERJUlRZPFQ+ID0gewogICAgc3RhdHVzOiAiZGlydHkiOwogICAgdmFsdWU6IFQ7Cn07CmRlY2xhcmUgY29uc3QgRElSVFk6IDxUPih2YWx1ZTogVCkgPT4gRElSVFk8VD47CnR5cGUgT0s8VD4gPSB7CiAgICBzdGF0dXM6ICJ2YWxpZCI7CiAgICB2YWx1ZTogVDsKfTsKZGVjbGFyZSBjb25zdCBPSzogPFQ+KHZhbHVlOiBUKSA9PiBPSzxUPjsKdHlwZSBTeW5jUGFyc2VSZXR1cm5UeXBlPFQgPSBhbnk+ID0gT0s8VD4gfCBESVJUWTxUPiB8IElOVkFMSUQ7CnR5cGUgQXN5bmNQYXJzZVJldHVyblR5cGU8VD4gPSBQcm9taXNlPFN5bmNQYXJzZVJldHVyblR5cGU8VD4+Owp0eXBlIFBhcnNlUmV0dXJuVHlwZTxUPiA9IFN5bmNQYXJzZVJldHVyblR5cGU8VD4gfCBBc3luY1BhcnNlUmV0dXJuVHlwZTxUPjsKCmRlY2xhcmUgbmFtZXNwYWNlIGVycm9yVXRpbCB7CiAgICB0eXBlIEVyck1lc3NhZ2UgPSBzdHJpbmcgfCB7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH07CiAgICBjb25zdCBlcnJUb09iajogKG1lc3NhZ2U/OiBFcnJNZXNzYWdlKSA9PiB7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH07CiAgICBjb25zdCB0b1N0cmluZzogKG1lc3NhZ2U/OiBFcnJNZXNzYWdlKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7Cn0KCi8qKgogKiBUaGUgU3RhbmRhcmQgU2NoZW1hIGludGVyZmFjZS4KICovCnR5cGUgU3RhbmRhcmRTY2hlbWFWMTxJbnB1dCA9IHVua25vd24sIE91dHB1dCA9IElucHV0PiA9IHsKICAgIC8qKgogICAgICogVGhlIFN0YW5kYXJkIFNjaGVtYSBwcm9wZXJ0aWVzLgogICAgICovCiAgICByZWFkb25seSAifnN0YW5kYXJkIjogU3RhbmRhcmRTY2hlbWFWMS5Qcm9wczxJbnB1dCwgT3V0cHV0PjsKfTsKZGVjbGFyZSBuYW1lc3BhY2UgU3RhbmRhcmRTY2hlbWFWMSB7CiAgICAvKioKICAgICAqIFRoZSBTdGFuZGFyZCBTY2hlbWEgcHJvcGVydGllcyBpbnRlcmZhY2UuCiAgICAgKi8KICAgIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8SW5wdXQgPSB1bmtub3duLCBPdXRwdXQgPSBJbnB1dD4gewogICAgICAgIC8qKgogICAgICAgICAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgc3RhbmRhcmQuCiAgICAgICAgICovCiAgICAgICAgcmVhZG9ubHkgdmVyc2lvbjogMTsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgdmVuZG9yIG5hbWUgb2YgdGhlIHNjaGVtYSBsaWJyYXJ5LgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IHZlbmRvcjogc3RyaW5nOwogICAgICAgIC8qKgogICAgICAgICAqIFZhbGlkYXRlcyB1bmtub3duIGlucHV0IHZhbHVlcy4KICAgICAgICAgKi8KICAgICAgICByZWFkb25seSB2YWxpZGF0ZTogKHZhbHVlOiB1bmtub3duKSA9PiBSZXN1bHQ8T3V0cHV0PiB8IFByb21pc2U8UmVzdWx0PE91dHB1dD4+OwogICAgICAgIC8qKgogICAgICAgICAqIEluZmVycmVkIHR5cGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NoZW1hLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IHR5cGVzPzogVHlwZXM8SW5wdXQsIE91dHB1dD4gfCB1bmRlZmluZWQ7CiAgICB9CiAgICAvKioKICAgICAqIFRoZSByZXN1bHQgaW50ZXJmYWNlIG9mIHRoZSB2YWxpZGF0ZSBmdW5jdGlvbi4KICAgICAqLwogICAgZXhwb3J0IHR5cGUgUmVzdWx0PE91dHB1dD4gPSBTdWNjZXNzUmVzdWx0PE91dHB1dD4gfCBGYWlsdXJlUmVzdWx0OwogICAgLyoqCiAgICAgKiBUaGUgcmVzdWx0IGludGVyZmFjZSBpZiB2YWxpZGF0aW9uIHN1Y2NlZWRzLgogICAgICovCiAgICBleHBvcnQgaW50ZXJmYWNlIFN1Y2Nlc3NSZXN1bHQ8T3V0cHV0PiB7CiAgICAgICAgLyoqCiAgICAgICAgICogVGhlIHR5cGVkIG91dHB1dCB2YWx1ZS4KICAgICAgICAgKi8KICAgICAgICByZWFkb25seSB2YWx1ZTogT3V0cHV0OwogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBub24tZXhpc3RlbnQgaXNzdWVzLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGlzc3Vlcz86IHVuZGVmaW5lZDsKICAgIH0KICAgIC8qKgogICAgICogVGhlIHJlc3VsdCBpbnRlcmZhY2UgaWYgdmFsaWRhdGlvbiBmYWlscy4KICAgICAqLwogICAgZXhwb3J0IGludGVyZmFjZSBGYWlsdXJlUmVzdWx0IHsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgaXNzdWVzIG9mIGZhaWxlZCB2YWxpZGF0aW9uLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGlzc3VlczogUmVhZG9ubHlBcnJheTxJc3N1ZT47CiAgICB9CiAgICAvKioKICAgICAqIFRoZSBpc3N1ZSBpbnRlcmZhY2Ugb2YgdGhlIGZhaWx1cmUgb3V0cHV0LgogICAgICovCiAgICBleHBvcnQgaW50ZXJmYWNlIElzc3VlIHsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgZXJyb3IgbWVzc2FnZSBvZiB0aGUgaXNzdWUuCiAgICAgICAgICovCiAgICAgICAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nOwogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBwYXRoIG9mIHRoZSBpc3N1ZSwgaWYgYW55LgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IHBhdGg/OiBSZWFkb25seUFycmF5PFByb3BlcnR5S2V5IHwgUGF0aFNlZ21lbnQ+IHwgdW5kZWZpbmVkOwogICAgfQogICAgLyoqCiAgICAgKiBUaGUgcGF0aCBzZWdtZW50IGludGVyZmFjZSBvZiB0aGUgaXNzdWUuCiAgICAgKi8KICAgIGV4cG9ydCBpbnRlcmZhY2UgUGF0aFNlZ21lbnQgewogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBrZXkgcmVwcmVzZW50aW5nIGEgcGF0aCBzZWdtZW50LgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGtleTogUHJvcGVydHlLZXk7CiAgICB9CiAgICAvKioKICAgICAqIFRoZSBTdGFuZGFyZCBTY2hlbWEgdHlwZXMgaW50ZXJmYWNlLgogICAgICovCiAgICBleHBvcnQgaW50ZXJmYWNlIFR5cGVzPElucHV0ID0gdW5rbm93biwgT3V0cHV0ID0gSW5wdXQ+IHsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgaW5wdXQgdHlwZSBvZiB0aGUgc2NoZW1hLgogICAgICAgICAqLwogICAgICAgIHJlYWRvbmx5IGlucHV0OiBJbnB1dDsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgb3V0cHV0IHR5cGUgb2YgdGhlIHNjaGVtYS4KICAgICAgICAgKi8KICAgICAgICByZWFkb25seSBvdXRwdXQ6IE91dHB1dDsKICAgIH0KICAgIC8qKgogICAgICogSW5mZXJzIHRoZSBpbnB1dCB0eXBlIG9mIGEgU3RhbmRhcmQgU2NoZW1hLgogICAgICovCiAgICBleHBvcnQgdHlwZSBJbmZlcklucHV0PFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjE+ID0gTm9uTnVsbGFibGU8U2NoZW1hWyJ+c3RhbmRhcmQiXVsidHlwZXMiXT5bImlucHV0Il07CiAgICAvKioKICAgICAqIEluZmVycyB0aGUgb3V0cHV0IHR5cGUgb2YgYSBTdGFuZGFyZCBTY2hlbWEuCiAgICAgKi8KICAgIGV4cG9ydCB0eXBlIEluZmVyT3V0cHV0PFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjE+ID0gTm9uTnVsbGFibGU8U2NoZW1hWyJ+c3RhbmRhcmQiXVsidHlwZXMiXT5bIm91dHB1dCJdOwogICAgZXhwb3J0IHt9Owp9CgppbnRlcmZhY2UgUmVmaW5lbWVudEN0eCB7CiAgICBhZGRJc3N1ZTogKGFyZzogSXNzdWVEYXRhKSA9PiB2b2lkOwogICAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTsKfQp0eXBlIFpvZFJhd1NoYXBlID0gewogICAgW2s6IHN0cmluZ106IFpvZFR5cGVBbnk7Cn07CnR5cGUgWm9kVHlwZUFueSA9IFpvZFR5cGU8YW55LCBhbnksIGFueT47CnR5cGUgaW5wdXQ8VCBleHRlbmRzIFpvZFR5cGU8YW55LCBhbnksIGFueT4+ID0gVFsiX2lucHV0Il07CnR5cGUgb3V0cHV0PFQgZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55LCBhbnk+PiA9IFRbIl9vdXRwdXQiXTsKCnR5cGUgQ3VzdG9tRXJyb3JQYXJhbXMgPSBQYXJ0aWFsPHV0aWwuT21pdDxab2RDdXN0b21Jc3N1ZSwgImNvZGUiPj47CmludGVyZmFjZSBab2RUeXBlRGVmIHsKICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXA7CiAgICBkZXNjcmlwdGlvbj86IHN0cmluZzsKfQp0eXBlIFJhd0NyZWF0ZVBhcmFtcyA9IHsKICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXA7CiAgICBpbnZhbGlkX3R5cGVfZXJyb3I/OiBzdHJpbmc7CiAgICByZXF1aXJlZF9lcnJvcj86IHN0cmluZzsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7CiAgICBkZXNjcmlwdGlvbj86IHN0cmluZzsKfSB8IHVuZGVmaW5lZDsKdHlwZSBTYWZlUGFyc2VTdWNjZXNzPE91dHB1dD4gPSB7CiAgICBzdWNjZXNzOiB0cnVlOwogICAgZGF0YTogT3V0cHV0OwogICAgZXJyb3I/OiBuZXZlcjsKfTsKdHlwZSBTYWZlUGFyc2VFcnJvcjxJbnB1dD4gPSB7CiAgICBzdWNjZXNzOiBmYWxzZTsKICAgIGVycm9yOiBab2RFcnJvcjxJbnB1dD47CiAgICBkYXRhPzogbmV2ZXI7Cn07CnR5cGUgU2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0PiA9IFNhZmVQYXJzZVN1Y2Nlc3M8T3V0cHV0PiB8IFNhZmVQYXJzZUVycm9yPElucHV0PjsKZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBab2RUeXBlPE91dHB1dCA9IGFueSwgRGVmIGV4dGVuZHMgWm9kVHlwZURlZiA9IFpvZFR5cGVEZWYsIElucHV0ID0gT3V0cHV0PiB7CiAgICByZWFkb25seSBfdHlwZTogT3V0cHV0OwogICAgcmVhZG9ubHkgX291dHB1dDogT3V0cHV0OwogICAgcmVhZG9ubHkgX2lucHV0OiBJbnB1dDsKICAgIHJlYWRvbmx5IF9kZWY6IERlZjsKICAgIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAifnN0YW5kYXJkIjogU3RhbmRhcmRTY2hlbWFWMS5Qcm9wczxJbnB1dCwgT3V0cHV0PjsKICAgIGFic3RyYWN0IF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTxPdXRwdXQ+OwogICAgX2dldFR5cGUoaW5wdXQ6IFBhcnNlSW5wdXQpOiBzdHJpbmc7CiAgICBfZ2V0T3JSZXR1cm5DdHgoaW5wdXQ6IFBhcnNlSW5wdXQsIGN0eD86IFBhcnNlQ29udGV4dCB8IHVuZGVmaW5lZCk6IFBhcnNlQ29udGV4dDsKICAgIF9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQ6IFBhcnNlSW5wdXQpOiB7CiAgICAgICAgc3RhdHVzOiBQYXJzZVN0YXR1czsKICAgICAgICBjdHg6IFBhcnNlQ29udGV4dDsKICAgIH07CiAgICBfcGFyc2VTeW5jKGlucHV0OiBQYXJzZUlucHV0KTogU3luY1BhcnNlUmV0dXJuVHlwZTxPdXRwdXQ+OwogICAgX3BhcnNlQXN5bmMoaW5wdXQ6IFBhcnNlSW5wdXQpOiBBc3luY1BhcnNlUmV0dXJuVHlwZTxPdXRwdXQ+OwogICAgcGFyc2UoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pOiBPdXRwdXQ7CiAgICBzYWZlUGFyc2UoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pOiBTYWZlUGFyc2VSZXR1cm5UeXBlPElucHV0LCBPdXRwdXQ+OwogICAgIn52YWxpZGF0ZSIoZGF0YTogdW5rbm93bik6IFN0YW5kYXJkU2NoZW1hVjEuUmVzdWx0PE91dHB1dD4gfCBQcm9taXNlPFN0YW5kYXJkU2NoZW1hVjEuUmVzdWx0PE91dHB1dD4+OwogICAgcGFyc2VBc3luYyhkYXRhOiB1bmtub3duLCBwYXJhbXM/OiBQYXJ0aWFsPFBhcnNlUGFyYW1zPik6IFByb21pc2U8T3V0cHV0PjsKICAgIHNhZmVQYXJzZUFzeW5jKGRhdGE6IHVua25vd24sIHBhcmFtcz86IFBhcnRpYWw8UGFyc2VQYXJhbXM+KTogUHJvbWlzZTxTYWZlUGFyc2VSZXR1cm5UeXBlPElucHV0LCBPdXRwdXQ+PjsKICAgIC8qKiBBbGlhcyBvZiBzYWZlUGFyc2VBc3luYyAqLwogICAgc3BhOiAoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pID0+IFByb21pc2U8U2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0Pj47CiAgICByZWZpbmU8UmVmaW5lZE91dHB1dCBleHRlbmRzIE91dHB1dD4oY2hlY2s6IChhcmc6IE91dHB1dCkgPT4gYXJnIGlzIFJlZmluZWRPdXRwdXQsIG1lc3NhZ2U/OiBzdHJpbmcgfCBDdXN0b21FcnJvclBhcmFtcyB8ICgoYXJnOiBPdXRwdXQpID0+IEN1c3RvbUVycm9yUGFyYW1zKSk6IFpvZEVmZmVjdHM8dGhpcywgUmVmaW5lZE91dHB1dCwgSW5wdXQ+OwogICAgcmVmaW5lKGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+LCBtZXNzYWdlPzogc3RyaW5nIHwgQ3VzdG9tRXJyb3JQYXJhbXMgfCAoKGFyZzogT3V0cHV0KSA9PiBDdXN0b21FcnJvclBhcmFtcykpOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+OwogICAgcmVmaW5lbWVudDxSZWZpbmVkT3V0cHV0IGV4dGVuZHMgT3V0cHV0PihjaGVjazogKGFyZzogT3V0cHV0KSA9PiBhcmcgaXMgUmVmaW5lZE91dHB1dCwgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKSk6IFpvZEVmZmVjdHM8dGhpcywgUmVmaW5lZE91dHB1dCwgSW5wdXQ+OwogICAgcmVmaW5lbWVudChjaGVjazogKGFyZzogT3V0cHV0KSA9PiBib29sZWFuLCByZWZpbmVtZW50RGF0YTogSXNzdWVEYXRhIHwgKChhcmc6IE91dHB1dCwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiBJc3N1ZURhdGEpKTogWm9kRWZmZWN0czx0aGlzLCBPdXRwdXQsIElucHV0PjsKICAgIF9yZWZpbmVtZW50KHJlZmluZW1lbnQ6IFJlZmluZW1lbnRFZmZlY3Q8T3V0cHV0PlsicmVmaW5lbWVudCJdKTogWm9kRWZmZWN0czx0aGlzLCBPdXRwdXQsIElucHV0PjsKICAgIHN1cGVyUmVmaW5lPFJlZmluZWRPdXRwdXQgZXh0ZW5kcyBPdXRwdXQ+KHJlZmluZW1lbnQ6IChhcmc6IE91dHB1dCwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiBhcmcgaXMgUmVmaW5lZE91dHB1dCk6IFpvZEVmZmVjdHM8dGhpcywgUmVmaW5lZE91dHB1dCwgSW5wdXQ+OwogICAgc3VwZXJSZWZpbmUocmVmaW5lbWVudDogKGFyZzogT3V0cHV0LCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IHZvaWQpOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+OwogICAgc3VwZXJSZWZpbmUocmVmaW5lbWVudDogKGFyZzogT3V0cHV0LCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IFByb21pc2U8dm9pZD4pOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+OwogICAgY29uc3RydWN0b3IoZGVmOiBEZWYpOwogICAgb3B0aW9uYWwoKTogWm9kT3B0aW9uYWw8dGhpcz47CiAgICBudWxsYWJsZSgpOiBab2ROdWxsYWJsZTx0aGlzPjsKICAgIG51bGxpc2goKTogWm9kT3B0aW9uYWw8Wm9kTnVsbGFibGU8dGhpcz4+OwogICAgYXJyYXkoKTogWm9kQXJyYXk8dGhpcz47CiAgICBwcm9taXNlKCk6IFpvZFByb21pc2U8dGhpcz47CiAgICBvcjxUIGV4dGVuZHMgWm9kVHlwZUFueT4ob3B0aW9uOiBUKTogWm9kVW5pb248W3RoaXMsIFRdPjsKICAgIGFuZDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oaW5jb21pbmc6IFQpOiBab2RJbnRlcnNlY3Rpb248dGhpcywgVD47CiAgICB0cmFuc2Zvcm08TmV3T3V0Pih0cmFuc2Zvcm06IChhcmc6IE91dHB1dCwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiBOZXdPdXQgfCBQcm9taXNlPE5ld091dD4pOiBab2RFZmZlY3RzPHRoaXMsIE5ld091dD47CiAgICBkZWZhdWx0KGRlZjogdXRpbC5ub1VuZGVmaW5lZDxJbnB1dD4pOiBab2REZWZhdWx0PHRoaXM+OwogICAgZGVmYXVsdChkZWY6ICgpID0+IHV0aWwubm9VbmRlZmluZWQ8SW5wdXQ+KTogWm9kRGVmYXVsdDx0aGlzPjsKICAgIGJyYW5kPEIgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+KGJyYW5kPzogQik6IFpvZEJyYW5kZWQ8dGhpcywgQj47CiAgICBjYXRjaChkZWY6IE91dHB1dCk6IFpvZENhdGNoPHRoaXM+OwogICAgY2F0Y2goZGVmOiAoY3R4OiB7CiAgICAgICAgZXJyb3I6IFpvZEVycm9yOwogICAgICAgIGlucHV0OiBJbnB1dDsKICAgIH0pID0+IE91dHB1dCk6IFpvZENhdGNoPHRoaXM+OwogICAgZGVzY3JpYmUoZGVzY3JpcHRpb246IHN0cmluZyk6IHRoaXM7CiAgICBwaXBlPFQgZXh0ZW5kcyBab2RUeXBlQW55Pih0YXJnZXQ6IFQpOiBab2RQaXBlbGluZTx0aGlzLCBUPjsKICAgIHJlYWRvbmx5KCk6IFpvZFJlYWRvbmx5PHRoaXM+OwogICAgaXNPcHRpb25hbCgpOiBib29sZWFuOwogICAgaXNOdWxsYWJsZSgpOiBib29sZWFuOwp9CnR5cGUgSXBWZXJzaW9uID0gInY0IiB8ICJ2NiI7CnR5cGUgWm9kU3RyaW5nQ2hlY2sgPSB7CiAgICBraW5kOiAibWluIjsKICAgIHZhbHVlOiBudW1iZXI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogIm1heCI7CiAgICB2YWx1ZTogbnVtYmVyOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJsZW5ndGgiOwogICAgdmFsdWU6IG51bWJlcjsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiZW1haWwiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJ1cmwiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJlbW9qaSI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInV1aWQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJuYW5vaWQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJjdWlkIjsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiaW5jbHVkZXMiOwogICAgdmFsdWU6IHN0cmluZzsKICAgIHBvc2l0aW9uPzogbnVtYmVyOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJjdWlkMiI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInVsaWQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJzdGFydHNXaXRoIjsKICAgIHZhbHVlOiBzdHJpbmc7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImVuZHNXaXRoIjsKICAgIHZhbHVlOiBzdHJpbmc7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInJlZ2V4IjsKICAgIHJlZ2V4OiBSZWdFeHA7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInRyaW0iOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJ0b0xvd2VyQ2FzZSI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogInRvVXBwZXJDYXNlIjsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiand0IjsKICAgIGFsZz86IHN0cmluZzsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiZGF0ZXRpbWUiOwogICAgb2Zmc2V0OiBib29sZWFuOwogICAgbG9jYWw6IGJvb2xlYW47CiAgICBwcmVjaXNpb246IG51bWJlciB8IG51bGw7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImRhdGUiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJ0aW1lIjsKICAgIHByZWNpc2lvbjogbnVtYmVyIHwgbnVsbDsKICAgIG1lc3NhZ2U/OiBzdHJpbmc7Cn0gfCB7CiAgICBraW5kOiAiZHVyYXRpb24iOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJpcCI7CiAgICB2ZXJzaW9uPzogSXBWZXJzaW9uOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJjaWRyIjsKICAgIHZlcnNpb24/OiBJcFZlcnNpb247CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImJhc2U2NCI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImJhc2U2NHVybCI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9OwppbnRlcmZhY2UgWm9kU3RyaW5nRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICBjaGVja3M6IFpvZFN0cmluZ0NoZWNrW107CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN0cmluZzsKICAgIGNvZXJjZTogYm9vbGVhbjsKfQpkZWNsYXJlIGNsYXNzIFpvZFN0cmluZyBleHRlbmRzIFpvZFR5cGU8c3RyaW5nLCBab2RTdHJpbmdEZWYsIHN0cmluZz4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHN0cmluZz47CiAgICBwcm90ZWN0ZWQgX3JlZ2V4KHJlZ2V4OiBSZWdFeHAsIHZhbGlkYXRpb246IFN0cmluZ1ZhbGlkYXRpb24sIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZEVmZmVjdHM8dGhpcywgc3RyaW5nLCBzdHJpbmc+OwogICAgX2FkZENoZWNrKGNoZWNrOiBab2RTdHJpbmdDaGVjayk6IFpvZFN0cmluZzsKICAgIGVtYWlsKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIHVybChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBlbW9qaShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICB1dWlkKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIG5hbm9pZChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBjdWlkKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIGN1aWQyKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIHVsaWQobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgYmFzZTY0KG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIGJhc2U2NHVybChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBqd3Qob3B0aW9ucz86IHsKICAgICAgICBhbGc/OiBzdHJpbmc7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH0pOiBab2RTdHJpbmc7CiAgICBpcChvcHRpb25zPzogc3RyaW5nIHwgewogICAgICAgIHZlcnNpb24/OiBJcFZlcnNpb247CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH0pOiBab2RTdHJpbmc7CiAgICBjaWRyKG9wdGlvbnM/OiBzdHJpbmcgfCB7CiAgICAgICAgdmVyc2lvbj86IElwVmVyc2lvbjsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nOwogICAgfSk6IFpvZFN0cmluZzsKICAgIGRhdGV0aW1lKG9wdGlvbnM/OiBzdHJpbmcgfCB7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVjaXNpb24/OiBudW1iZXIgfCBudWxsOwogICAgICAgIG9mZnNldD86IGJvb2xlYW47CiAgICAgICAgbG9jYWw/OiBib29sZWFuOwogICAgfSk6IFpvZFN0cmluZzsKICAgIGRhdGUobWVzc2FnZT86IHN0cmluZyk6IFpvZFN0cmluZzsKICAgIHRpbWUob3B0aW9ucz86IHN0cmluZyB8IHsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHByZWNpc2lvbj86IG51bWJlciB8IG51bGw7CiAgICB9KTogWm9kU3RyaW5nOwogICAgZHVyYXRpb24obWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgcmVnZXgocmVnZXg6IFJlZ0V4cCwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgaW5jbHVkZXModmFsdWU6IHN0cmluZywgb3B0aW9ucz86IHsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nOwogICAgICAgIHBvc2l0aW9uPzogbnVtYmVyOwogICAgfSk6IFpvZFN0cmluZzsKICAgIHN0YXJ0c1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgZW5kc1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgbWluKG1pbkxlbmd0aDogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICBtYXgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZFN0cmluZzsKICAgIGxlbmd0aChsZW46IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kU3RyaW5nOwogICAgLyoqCiAgICAgKiBFcXVpdmFsZW50IHRvIGAubWluKDEpYAogICAgICovCiAgICBub25lbXB0eShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTdHJpbmc7CiAgICB0cmltKCk6IFpvZFN0cmluZzsKICAgIHRvTG93ZXJDYXNlKCk6IFpvZFN0cmluZzsKICAgIHRvVXBwZXJDYXNlKCk6IFpvZFN0cmluZzsKICAgIGdldCBpc0RhdGV0aW1lKCk6IGJvb2xlYW47CiAgICBnZXQgaXNEYXRlKCk6IGJvb2xlYW47CiAgICBnZXQgaXNUaW1lKCk6IGJvb2xlYW47CiAgICBnZXQgaXNEdXJhdGlvbigpOiBib29sZWFuOwogICAgZ2V0IGlzRW1haWwoKTogYm9vbGVhbjsKICAgIGdldCBpc1VSTCgpOiBib29sZWFuOwogICAgZ2V0IGlzRW1vamkoKTogYm9vbGVhbjsKICAgIGdldCBpc1VVSUQoKTogYm9vbGVhbjsKICAgIGdldCBpc05BTk9JRCgpOiBib29sZWFuOwogICAgZ2V0IGlzQ1VJRCgpOiBib29sZWFuOwogICAgZ2V0IGlzQ1VJRDIoKTogYm9vbGVhbjsKICAgIGdldCBpc1VMSUQoKTogYm9vbGVhbjsKICAgIGdldCBpc0lQKCk6IGJvb2xlYW47CiAgICBnZXQgaXNDSURSKCk6IGJvb2xlYW47CiAgICBnZXQgaXNCYXNlNjQoKTogYm9vbGVhbjsKICAgIGdldCBpc0Jhc2U2NHVybCgpOiBib29sZWFuOwogICAgZ2V0IG1pbkxlbmd0aCgpOiBudW1iZXIgfCBudWxsOwogICAgZ2V0IG1heExlbmd0aCgpOiBudW1iZXIgfCBudWxsOwogICAgc3RhdGljIGNyZWF0ZTogKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyAmIHsKICAgICAgICBjb2VyY2U/OiB0cnVlOwogICAgfSkgPT4gWm9kU3RyaW5nOwp9CnR5cGUgWm9kTnVtYmVyQ2hlY2sgPSB7CiAgICBraW5kOiAibWluIjsKICAgIHZhbHVlOiBudW1iZXI7CiAgICBpbmNsdXNpdmU6IGJvb2xlYW47CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogIm1heCI7CiAgICB2YWx1ZTogbnVtYmVyOwogICAgaW5jbHVzaXZlOiBib29sZWFuOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJpbnQiOwogICAgbWVzc2FnZT86IHN0cmluZzsKfSB8IHsKICAgIGtpbmQ6ICJtdWx0aXBsZU9mIjsKICAgIHZhbHVlOiBudW1iZXI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9IHwgewogICAga2luZDogImZpbml0ZSI7CiAgICBtZXNzYWdlPzogc3RyaW5nOwp9OwppbnRlcmZhY2UgWm9kTnVtYmVyRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICBjaGVja3M6IFpvZE51bWJlckNoZWNrW107CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcjsKICAgIGNvZXJjZTogYm9vbGVhbjsKfQpkZWNsYXJlIGNsYXNzIFpvZE51bWJlciBleHRlbmRzIFpvZFR5cGU8bnVtYmVyLCBab2ROdW1iZXJEZWYsIG51bWJlcj4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPG51bWJlcj47CiAgICBzdGF0aWMgY3JlYXRlOiAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zICYgewogICAgICAgIGNvZXJjZT86IGJvb2xlYW47CiAgICB9KSA9PiBab2ROdW1iZXI7CiAgICBndGUodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kTnVtYmVyOwogICAgbWluOiAodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSA9PiBab2ROdW1iZXI7CiAgICBndCh2YWx1ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBsdGUodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kTnVtYmVyOwogICAgbWF4OiAodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSA9PiBab2ROdW1iZXI7CiAgICBsdCh2YWx1ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBwcm90ZWN0ZWQgc2V0TGltaXQoa2luZDogIm1pbiIgfCAibWF4IiwgdmFsdWU6IG51bWJlciwgaW5jbHVzaXZlOiBib29sZWFuLCBtZXNzYWdlPzogc3RyaW5nKTogWm9kTnVtYmVyOwogICAgX2FkZENoZWNrKGNoZWNrOiBab2ROdW1iZXJDaGVjayk6IFpvZE51bWJlcjsKICAgIGludChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBwb3NpdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBuZWdhdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBub25wb3NpdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBub25uZWdhdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBtdWx0aXBsZU9mKHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZE51bWJlcjsKICAgIHN0ZXA6ICh2YWx1ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpID0+IFpvZE51bWJlcjsKICAgIGZpbml0ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2ROdW1iZXI7CiAgICBzYWZlKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZE51bWJlcjsKICAgIGdldCBtaW5WYWx1ZSgpOiBudW1iZXIgfCBudWxsOwogICAgZ2V0IG1heFZhbHVlKCk6IG51bWJlciB8IG51bGw7CiAgICBnZXQgaXNJbnQoKTogYm9vbGVhbjsKICAgIGdldCBpc0Zpbml0ZSgpOiBib29sZWFuOwp9CmludGVyZmFjZSBab2RVbmtub3duRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVua25vd247Cn0KZGVjbGFyZSBjbGFzcyBab2RVbmtub3duIGV4dGVuZHMgWm9kVHlwZTx1bmtub3duLCBab2RVbmtub3duRGVmLCB1bmtub3duPiB7CiAgICBfdW5rbm93bjogdHJ1ZTsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgc3RhdGljIGNyZWF0ZTogKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kVW5rbm93bjsKfQppbnRlcmZhY2UgWm9kQXJyYXlEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgdHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQXJyYXk7CiAgICBleGFjdExlbmd0aDogewogICAgICAgIHZhbHVlOiBudW1iZXI7CiAgICAgICAgbWVzc2FnZT86IHN0cmluZzsKICAgIH0gfCBudWxsOwogICAgbWluTGVuZ3RoOiB7CiAgICAgICAgdmFsdWU6IG51bWJlcjsKICAgICAgICBtZXNzYWdlPzogc3RyaW5nOwogICAgfSB8IG51bGw7CiAgICBtYXhMZW5ndGg6IHsKICAgICAgICB2YWx1ZTogbnVtYmVyOwogICAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7CiAgICB9IHwgbnVsbDsKfQp0eXBlIEFycmF5Q2FyZGluYWxpdHkgPSAibWFueSIgfCAiYXRsZWFzdG9uZSI7CnR5cGUgYXJyYXlPdXRwdXRUeXBlPFQgZXh0ZW5kcyBab2RUeXBlQW55LCBDYXJkaW5hbGl0eSBleHRlbmRzIEFycmF5Q2FyZGluYWxpdHkgPSAibWFueSI+ID0gQ2FyZGluYWxpdHkgZXh0ZW5kcyAiYXRsZWFzdG9uZSIgPyBbVFsiX291dHB1dCJdLCAuLi5UWyJfb3V0cHV0Il1bXV0gOiBUWyJfb3V0cHV0Il1bXTsKZGVjbGFyZSBjbGFzcyBab2RBcnJheTxUIGV4dGVuZHMgWm9kVHlwZUFueSwgQ2FyZGluYWxpdHkgZXh0ZW5kcyBBcnJheUNhcmRpbmFsaXR5ID0gIm1hbnkiPiBleHRlbmRzIFpvZFR5cGU8YXJyYXlPdXRwdXRUeXBlPFQsIENhcmRpbmFsaXR5PiwgWm9kQXJyYXlEZWY8VD4sIENhcmRpbmFsaXR5IGV4dGVuZHMgImF0bGVhc3RvbmUiID8gW1RbIl9pbnB1dCJdLCAuLi5UWyJfaW5wdXQiXVtdXSA6IFRbIl9pbnB1dCJdW10+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgZ2V0IGVsZW1lbnQoKTogVDsKICAgIG1pbihtaW5MZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpczsKICAgIG1heChtYXhMZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpczsKICAgIGxlbmd0aChsZW46IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpczsKICAgIG5vbmVtcHR5KG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IFpvZEFycmF5PFQsICJhdGxlYXN0b25lIj47CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4oc2NoZW1hOiBUXzEsIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kQXJyYXk8VF8xLCAibWFueSI+Owp9CnR5cGUgVW5rbm93bktleXNQYXJhbSA9ICJwYXNzdGhyb3VnaCIgfCAic3RyaWN0IiB8ICJzdHJpcCI7CnR5cGUgb2JqZWN0T3V0cHV0VHlwZTxTaGFwZSBleHRlbmRzIFpvZFJhd1NoYXBlLCBDYXRjaGFsbCBleHRlbmRzIFpvZFR5cGVBbnksIFVua25vd25LZXlzIGV4dGVuZHMgVW5rbm93bktleXNQYXJhbSA9IFVua25vd25LZXlzUGFyYW0+ID0gb2JqZWN0VXRpbC5mbGF0dGVuPG9iamVjdFV0aWwuYWRkUXVlc3Rpb25NYXJrczxiYXNlT2JqZWN0T3V0cHV0VHlwZTxTaGFwZT4+PiAmIENhdGNoYWxsT3V0cHV0PENhdGNoYWxsPiAmIFBhc3N0aHJvdWdoVHlwZTxVbmtub3duS2V5cz47CnR5cGUgYmFzZU9iamVjdE91dHB1dFR5cGU8U2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSB7CiAgICBbayBpbiBrZXlvZiBTaGFwZV06IFNoYXBlW2tdWyJfb3V0cHV0Il07Cn07CnR5cGUgb2JqZWN0SW5wdXRUeXBlPFNoYXBlIGV4dGVuZHMgWm9kUmF3U2hhcGUsIENhdGNoYWxsIGV4dGVuZHMgWm9kVHlwZUFueSwgVW5rbm93bktleXMgZXh0ZW5kcyBVbmtub3duS2V5c1BhcmFtID0gVW5rbm93bktleXNQYXJhbT4gPSBvYmplY3RVdGlsLmZsYXR0ZW48YmFzZU9iamVjdElucHV0VHlwZTxTaGFwZT4+ICYgQ2F0Y2hhbGxJbnB1dDxDYXRjaGFsbD4gJiBQYXNzdGhyb3VnaFR5cGU8VW5rbm93bktleXM+Owp0eXBlIGJhc2VPYmplY3RJbnB1dFR5cGU8U2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSBvYmplY3RVdGlsLmFkZFF1ZXN0aW9uTWFya3M8ewogICAgW2sgaW4ga2V5b2YgU2hhcGVdOiBTaGFwZVtrXVsiX2lucHV0Il07Cn0+Owp0eXBlIENhdGNoYWxsT3V0cHV0PFQgZXh0ZW5kcyBab2RUeXBlPiA9IFpvZFR5cGUgZXh0ZW5kcyBUID8gdW5rbm93biA6IHsKICAgIFtrOiBzdHJpbmddOiBUWyJfb3V0cHV0Il07Cn07CnR5cGUgQ2F0Y2hhbGxJbnB1dDxUIGV4dGVuZHMgWm9kVHlwZT4gPSBab2RUeXBlIGV4dGVuZHMgVCA/IHVua25vd24gOiB7CiAgICBbazogc3RyaW5nXTogVFsiX2lucHV0Il07Cn07CnR5cGUgUGFzc3Rocm91Z2hUeXBlPFQgZXh0ZW5kcyBVbmtub3duS2V5c1BhcmFtPiA9IFQgZXh0ZW5kcyAicGFzc3Rocm91Z2giID8gewogICAgW2s6IHN0cmluZ106IHVua25vd247Cn0gOiB1bmtub3duOwp0eXBlIFpvZFVuaW9uT3B0aW9ucyA9IFJlYWRvbmx5PFtab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPjsKaW50ZXJmYWNlIFpvZFVuaW9uRGVmPFQgZXh0ZW5kcyBab2RVbmlvbk9wdGlvbnMgPSBSZWFkb25seTxbCiAgICBab2RUeXBlQW55LAogICAgWm9kVHlwZUFueSwKICAgIC4uLlpvZFR5cGVBbnlbXQpdPj4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIG9wdGlvbnM6IFQ7CiAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuaW9uOwp9CmRlY2xhcmUgY2xhc3MgWm9kVW5pb248VCBleHRlbmRzIFpvZFVuaW9uT3B0aW9ucz4gZXh0ZW5kcyBab2RUeXBlPFRbbnVtYmVyXVsiX291dHB1dCJdLCBab2RVbmlvbkRlZjxUPiwgVFtudW1iZXJdWyJfaW5wdXQiXT4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBnZXQgb3B0aW9ucygpOiBUOwogICAgc3RhdGljIGNyZWF0ZTogPFRfMSBleHRlbmRzIHJlYWRvbmx5IFtab2RUeXBlQW55LCBab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPih0eXBlczogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZFVuaW9uPFRfMT47Cn0KaW50ZXJmYWNlIFpvZEludGVyc2VjdGlvbkRlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksIFUgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGxlZnQ6IFQ7CiAgICByaWdodDogVTsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kSW50ZXJzZWN0aW9uOwp9CmRlY2xhcmUgY2xhc3MgWm9kSW50ZXJzZWN0aW9uPFQgZXh0ZW5kcyBab2RUeXBlQW55LCBVIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFRbIl9vdXRwdXQiXSAmIFVbIl9vdXRwdXQiXSwgWm9kSW50ZXJzZWN0aW9uRGVmPFQsIFU+LCBUWyJfaW5wdXQiXSAmIFVbIl9pbnB1dCJdPiB7CiAgICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1siX291dHB1dCJdPjsKICAgIHN0YXRpYyBjcmVhdGU6IDxUXzEgZXh0ZW5kcyBab2RUeXBlQW55LCBVXzEgZXh0ZW5kcyBab2RUeXBlQW55PihsZWZ0OiBUXzEsIHJpZ2h0OiBVXzEsIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kSW50ZXJzZWN0aW9uPFRfMSwgVV8xPjsKfQppbnRlcmZhY2UgWm9kUHJvbWlzZURlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICB0eXBlOiBUOwogICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlOwp9CmRlY2xhcmUgY2xhc3MgWm9kUHJvbWlzZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFByb21pc2U8VFsiX291dHB1dCJdPiwgWm9kUHJvbWlzZURlZjxUPiwgUHJvbWlzZTxUWyJfaW5wdXQiXT4+IHsKICAgIHVud3JhcCgpOiBUOwogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4oc2NoZW1hOiBUXzEsIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kUHJvbWlzZTxUXzE+Owp9CnR5cGUgUmVmaW5lbWVudEVmZmVjdDxUPiA9IHsKICAgIHR5cGU6ICJyZWZpbmVtZW50IjsKICAgIHJlZmluZW1lbnQ6IChhcmc6IFQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gYW55Owp9Owp0eXBlIFRyYW5zZm9ybUVmZmVjdDxUPiA9IHsKICAgIHR5cGU6ICJ0cmFuc2Zvcm0iOwogICAgdHJhbnNmb3JtOiAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTsKfTsKdHlwZSBQcmVwcm9jZXNzRWZmZWN0PFQ+ID0gewogICAgdHlwZTogInByZXByb2Nlc3MiOwogICAgdHJhbnNmb3JtOiAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTsKfTsKdHlwZSBFZmZlY3Q8VD4gPSBSZWZpbmVtZW50RWZmZWN0PFQ+IHwgVHJhbnNmb3JtRWZmZWN0PFQ+IHwgUHJlcHJvY2Vzc0VmZmVjdDxUPjsKaW50ZXJmYWNlIFpvZEVmZmVjdHNEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgc2NoZW1hOiBUOwogICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzOwogICAgZWZmZWN0OiBFZmZlY3Q8YW55PjsKfQpkZWNsYXJlIGNsYXNzIFpvZEVmZmVjdHM8VCBleHRlbmRzIFpvZFR5cGVBbnksIE91dHB1dCA9IG91dHB1dDxUPiwgSW5wdXQgPSBpbnB1dDxUPj4gZXh0ZW5kcyBab2RUeXBlPE91dHB1dCwgWm9kRWZmZWN0c0RlZjxUPiwgSW5wdXQ+IHsKICAgIGlubmVyVHlwZSgpOiBUOwogICAgc291cmNlVHlwZSgpOiBUOwogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlOiA8SSBleHRlbmRzIFpvZFR5cGVBbnk+KHNjaGVtYTogSSwgZWZmZWN0OiBFZmZlY3Q8SVsiX291dHB1dCJdPiwgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKSA9PiBab2RFZmZlY3RzPEksIElbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlV2l0aFByZXByb2Nlc3M6IDxJIGV4dGVuZHMgWm9kVHlwZUFueT4ocHJlcHJvY2VzczogKGFyZzogdW5rbm93biwgY3R4OiBSZWZpbmVtZW50Q3R4KSA9PiB1bmtub3duLCBzY2hlbWE6IEksIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcykgPT4gWm9kRWZmZWN0czxJLCBJWyJfb3V0cHV0Il0sIHVua25vd24+Owp9CgppbnRlcmZhY2UgWm9kT3B0aW9uYWxEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgaW5uZXJUeXBlOiBUOwogICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbDsKfQpkZWNsYXJlIGNsYXNzIFpvZE9wdGlvbmFsPFQgZXh0ZW5kcyBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGU8VFsiX291dHB1dCJdIHwgdW5kZWZpbmVkLCBab2RPcHRpb25hbERlZjxUPiwgVFsiX2lucHV0Il0gfCB1bmRlZmluZWQ+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgdW53cmFwKCk6IFQ7CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4odHlwZTogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZE9wdGlvbmFsPFRfMT47Cn0KaW50ZXJmYWNlIFpvZE51bGxhYmxlRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGlubmVyVHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbGFibGU7Cn0KZGVjbGFyZSBjbGFzcyBab2ROdWxsYWJsZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFRbIl9vdXRwdXQiXSB8IG51bGwsIFpvZE51bGxhYmxlRGVmPFQ+LCBUWyJfaW5wdXQiXSB8IG51bGw+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgdW53cmFwKCk6IFQ7CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4odHlwZTogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZE51bGxhYmxlPFRfMT47Cn0KaW50ZXJmYWNlIFpvZERlZmF1bHREZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgaW5uZXJUeXBlOiBUOwogICAgZGVmYXVsdFZhbHVlOiAoKSA9PiB1dGlsLm5vVW5kZWZpbmVkPFRbIl9pbnB1dCJdPjsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGVmYXVsdDsKfQpkZWNsYXJlIGNsYXNzIFpvZERlZmF1bHQ8VCBleHRlbmRzIFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZTx1dGlsLm5vVW5kZWZpbmVkPFRbIl9vdXRwdXQiXT4sIFpvZERlZmF1bHREZWY8VD4sIFRbIl9pbnB1dCJdIHwgdW5kZWZpbmVkPiB7CiAgICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1siX291dHB1dCJdPjsKICAgIHJlbW92ZURlZmF1bHQoKTogVDsKICAgIHN0YXRpYyBjcmVhdGU6IDxUXzEgZXh0ZW5kcyBab2RUeXBlQW55Pih0eXBlOiBUXzEsIHBhcmFtczogewogICAgICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXAgfCB1bmRlZmluZWQ7CiAgICAgICAgaW52YWxpZF90eXBlX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlcXVpcmVkX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGRlZmF1bHQ6IFRfMVsiX2lucHV0Il0gfCAoKCkgPT4gdXRpbC5ub1VuZGVmaW5lZDxUXzFbIl9pbnB1dCJdPik7CiAgICB9KSA9PiBab2REZWZhdWx0PFRfMT47Cn0KaW50ZXJmYWNlIFpvZENhdGNoRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGlubmVyVHlwZTogVDsKICAgIGNhdGNoVmFsdWU6IChjdHg6IHsKICAgICAgICBlcnJvcjogWm9kRXJyb3I7CiAgICAgICAgaW5wdXQ6IHVua25vd247CiAgICB9KSA9PiBUWyJfaW5wdXQiXTsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2g7Cn0KZGVjbGFyZSBjbGFzcyBab2RDYXRjaDxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFRbIl9vdXRwdXQiXSwgWm9kQ2F0Y2hEZWY8VD4sIHVua25vd24+IHsKICAgIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzWyJfb3V0cHV0Il0+OwogICAgcmVtb3ZlQ2F0Y2goKTogVDsKICAgIHN0YXRpYyBjcmVhdGU6IDxUXzEgZXh0ZW5kcyBab2RUeXBlQW55Pih0eXBlOiBUXzEsIHBhcmFtczogewogICAgICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXAgfCB1bmRlZmluZWQ7CiAgICAgICAgaW52YWxpZF90eXBlX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlcXVpcmVkX2Vycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNhdGNoOiBUXzFbIl9vdXRwdXQiXSB8ICgoKSA9PiBUXzFbIl9vdXRwdXQiXSk7CiAgICB9KSA9PiBab2RDYXRjaDxUXzE+Owp9CmludGVyZmFjZSBab2RCcmFuZGVkRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGVEZWYgewogICAgdHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQnJhbmRlZDsKfQpkZWNsYXJlIGNvbnN0IEJSQU5EOiB1bmlxdWUgc3ltYm9sOwp0eXBlIEJSQU5EPFQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gewogICAgW0JSQU5EXTogewogICAgICAgIFtrIGluIFRdOiB0cnVlOwogICAgfTsKfTsKZGVjbGFyZSBjbGFzcyBab2RCcmFuZGVkPFQgZXh0ZW5kcyBab2RUeXBlQW55LCBCIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPiBleHRlbmRzIFpvZFR5cGU8VFsiX291dHB1dCJdICYgQlJBTkQ8Qj4sIFpvZEJyYW5kZWREZWY8VD4sIFRbIl9pbnB1dCJdPiB7CiAgICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8YW55PjsKICAgIHVud3JhcCgpOiBUOwp9CmludGVyZmFjZSBab2RQaXBlbGluZURlZjxBIGV4dGVuZHMgWm9kVHlwZUFueSwgQiBleHRlbmRzIFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZURlZiB7CiAgICBpbjogQTsKICAgIG91dDogQjsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUGlwZWxpbmU7Cn0KZGVjbGFyZSBjbGFzcyBab2RQaXBlbGluZTxBIGV4dGVuZHMgWm9kVHlwZUFueSwgQiBleHRlbmRzIFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZTxCWyJfb3V0cHV0Il0sIFpvZFBpcGVsaW5lRGVmPEEsIEI+LCBBWyJfaW5wdXQiXT4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPGFueT47CiAgICBzdGF0aWMgY3JlYXRlPEEgZXh0ZW5kcyBab2RUeXBlQW55LCBCIGV4dGVuZHMgWm9kVHlwZUFueT4oYTogQSwgYjogQik6IFpvZFBpcGVsaW5lPEEsIEI+Owp9CnR5cGUgQnVpbHRJbiA9ICgoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHwgKG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueSkpIHwgewogICAgcmVhZG9ubHkgW1N5bWJvbC50b1N0cmluZ1RhZ106IHN0cmluZzsKfSB8IERhdGUgfCBFcnJvciB8IEdlbmVyYXRvciB8IFByb21pc2U8dW5rbm93bj4gfCBSZWdFeHA7CnR5cGUgTWFrZVJlYWRvbmx5PFQ+ID0gVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPiA/IFJlYWRvbmx5TWFwPEssIFY+IDogVCBleHRlbmRzIFNldDxpbmZlciBWPiA/IFJlYWRvbmx5U2V0PFY+IDogVCBleHRlbmRzIFtpbmZlciBIZWFkLCAuLi5pbmZlciBUYWlsXSA/IHJlYWRvbmx5IFtIZWFkLCAuLi5UYWlsXSA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBWPiA/IFJlYWRvbmx5QXJyYXk8Vj4gOiBUIGV4dGVuZHMgQnVpbHRJbiA/IFQgOiBSZWFkb25seTxUPjsKaW50ZXJmYWNlIFpvZFJlYWRvbmx5RGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlRGVmIHsKICAgIGlubmVyVHlwZTogVDsKICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVhZG9ubHk7Cn0KZGVjbGFyZSBjbGFzcyBab2RSZWFkb25seTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPE1ha2VSZWFkb25seTxUWyJfb3V0cHV0Il0+LCBab2RSZWFkb25seURlZjxUPiwgTWFrZVJlYWRvbmx5PFRbIl9pbnB1dCJdPj4gewogICAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbIl9vdXRwdXQiXT47CiAgICBzdGF0aWMgY3JlYXRlOiA8VF8xIGV4dGVuZHMgWm9kVHlwZUFueT4odHlwZTogVF8xLCBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpID0+IFpvZFJlYWRvbmx5PFRfMT47CiAgICB1bndyYXAoKTogVDsKfQpkZWNsYXJlIGVudW0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kIHsKICAgIFpvZFN0cmluZyA9ICJab2RTdHJpbmciLAogICAgWm9kTnVtYmVyID0gIlpvZE51bWJlciIsCiAgICBab2ROYU4gPSAiWm9kTmFOIiwKICAgIFpvZEJpZ0ludCA9ICJab2RCaWdJbnQiLAogICAgWm9kQm9vbGVhbiA9ICJab2RCb29sZWFuIiwKICAgIFpvZERhdGUgPSAiWm9kRGF0ZSIsCiAgICBab2RTeW1ib2wgPSAiWm9kU3ltYm9sIiwKICAgIFpvZFVuZGVmaW5lZCA9ICJab2RVbmRlZmluZWQiLAogICAgWm9kTnVsbCA9ICJab2ROdWxsIiwKICAgIFpvZEFueSA9ICJab2RBbnkiLAogICAgWm9kVW5rbm93biA9ICJab2RVbmtub3duIiwKICAgIFpvZE5ldmVyID0gIlpvZE5ldmVyIiwKICAgIFpvZFZvaWQgPSAiWm9kVm9pZCIsCiAgICBab2RBcnJheSA9ICJab2RBcnJheSIsCiAgICBab2RPYmplY3QgPSAiWm9kT2JqZWN0IiwKICAgIFpvZFVuaW9uID0gIlpvZFVuaW9uIiwKICAgIFpvZERpc2NyaW1pbmF0ZWRVbmlvbiA9ICJab2REaXNjcmltaW5hdGVkVW5pb24iLAogICAgWm9kSW50ZXJzZWN0aW9uID0gIlpvZEludGVyc2VjdGlvbiIsCiAgICBab2RUdXBsZSA9ICJab2RUdXBsZSIsCiAgICBab2RSZWNvcmQgPSAiWm9kUmVjb3JkIiwKICAgIFpvZE1hcCA9ICJab2RNYXAiLAogICAgWm9kU2V0ID0gIlpvZFNldCIsCiAgICBab2RGdW5jdGlvbiA9ICJab2RGdW5jdGlvbiIsCiAgICBab2RMYXp5ID0gIlpvZExhenkiLAogICAgWm9kTGl0ZXJhbCA9ICJab2RMaXRlcmFsIiwKICAgIFpvZEVudW0gPSAiWm9kRW51bSIsCiAgICBab2RFZmZlY3RzID0gIlpvZEVmZmVjdHMiLAogICAgWm9kTmF0aXZlRW51bSA9ICJab2ROYXRpdmVFbnVtIiwKICAgIFpvZE9wdGlvbmFsID0gIlpvZE9wdGlvbmFsIiwKICAgIFpvZE51bGxhYmxlID0gIlpvZE51bGxhYmxlIiwKICAgIFpvZERlZmF1bHQgPSAiWm9kRGVmYXVsdCIsCiAgICBab2RDYXRjaCA9ICJab2RDYXRjaCIsCiAgICBab2RQcm9taXNlID0gIlpvZFByb21pc2UiLAogICAgWm9kQnJhbmRlZCA9ICJab2RCcmFuZGVkIiwKICAgIFpvZFBpcGVsaW5lID0gIlpvZFBpcGVsaW5lIiwKICAgIFpvZFJlYWRvbmx5ID0gIlpvZFJlYWRvbmx5Igp9Cgp0eXBlIExvZ1ZhbHVlT2JqZWN0ID0gewogICAgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGwgfCBMb2dWYWx1ZU9iamVjdCB8IExvZ1ZhbHVlT2JqZWN0W107Cn07CgppbnRlcmZhY2UgR2l0SHViV29ya2Zsb3dSZXN1bHQgewogICAgam9iX2lkOiBzdHJpbmc7CiAgICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAndGltZW91dCc7CiAgICByZXN1bHQ/OiB7CiAgICAgICAgb3V0cHV0PzogYW55OwogICAgICAgIHdvcmtmbG93X3J1bl9pZD86IG51bWJlcjsKICAgICAgICB3b3JrZmxvd19jb25jbHVzaW9uPzogc3RyaW5nOwogICAgICAgIGV4ZWN1dGlvbl90aW1lPzogbnVtYmVyOwogICAgfTsKICAgIGFydGlmYWN0cz86IEFycmF5PHsKICAgICAgICBpZDogbnVtYmVyOwogICAgICAgIG5hbWU6IHN0cmluZzsKICAgICAgICBzaXplX2J5dGVzOiBudW1iZXI7CiAgICAgICAgY29udGVudD86IGFueTsKICAgICAgICBjb250ZW50X3R5cGU/OiBzdHJpbmc7CiAgICB9PjsKICAgIHN0YXJ0ZWRfYXQ/OiBzdHJpbmc7CiAgICBjb21wbGV0ZWRfYXQ/OiBzdHJpbmc7CiAgICBnaXRodWJfdXJsPzogc3RyaW5nOwogICAgZXJyb3I/OiBzdHJpbmc7Cn0KCmludGVyZmFjZSBUcmFpbmluZ0V4YW1wbGVSZW5kZXJDb250ZXh0IHsKICAgIC8qKiBTY29wZWQgYWN0aW9uczogYGdldGAvYHNldGAgcmVhZCBhbmQgd3JpdGUgdGhlIGV4YW1wbGUgc2FuZGJveCBpbnN0ZWFkIG9mIHRoZSB0YXNrIGRhdGEgcm9vdC4gKi8KICAgIGFjdGlvbnM6IHR5cGVvZiBhY3Rpb25zOwogICAgLyoqCiAgICAgKiBUaGUgY3VycmVudCBleGFtcGxlIGlucHV0IEFGVEVSIHRoZSBub2RlIHByZXByb2Nlc3MgcnVucyAoaWRlbnRpdHkgd2hlbgogICAgICogdGhlIGJsb2NrIGhhcyBubyBwcmVwcm9jZXNzKSwgc28gdGhlIGludGVyZmFjZSBzZWVzIHRoZSBzYW1lIGRhdGEgYXMKICAgICAqIHByb2R1Y3Rpb24uIEFsc28gcmVhZGFibGUgdmlhIGBhY3Rpb25zLmdldCgnPG5hbWU+JylgLgogICAgICovCiAgICBpbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47CiAgICBleGFtcGxlSWQ6IHN0cmluZzsKfQoKZGVjbGFyZSBjb25zdCBTdXNwZW5zZVBlbmRpbmdNYXJrZXI6IFJlYWN0LkZDOwpkZWNsYXJlIGNvbnN0IEZpZWxkOiB7CiAgICByZWFkb25seSBBaUVkaXRvcjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbW1lbnRzPzogewogICAgICAgICAgICB1c2VyVHlwZTogc3RyaW5nOwogICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRlbnRFZGl0YWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWlDaGVja3M/OiB7CiAgICAgICAgICAgIGNvZGU/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgdmFsaWRhdGU6IGJvb2xlYW47CiAgICAgICAgICAgICAgICBjaGVja1R5cGVzPzogKCJDT0RFQkxPQ0tfRVhJU1RTIiB8ICJJTlRST19DT01NRU5UX0VYSVNUUyIgfCAiTEFOR19TUEVDSUZJRUQiIHwgIkNPREVfQ09NTUVOVFNfRVhJU1RTIilbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgaW50ZW50PzogewogICAgICAgICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjsKICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBib29sZWFuOwogICAgICAgICAgICAgICAgcHJvbXB0OiBzdHJpbmc7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZhY3RzPzogewogICAgICAgICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjsKICAgICAgICAgICAgICAgIHNvdXJjZVRleHRzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBzb3VyY2VMaW5rcz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgbWF4U2VsZWN0ZWRTeW1ib2xzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgc3VnZ2VzdGVkRmFjdHM/OiB7CiAgICAgICAgICAgICAgICAgICAgY29udGVudDogc3RyaW5nOwogICAgICAgICAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBncmFtbWFyU2NvcmU/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgbWluU2NvcmU6IG51bWJlcjsKICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBib29sZWFuOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3b3JkQ291bnQ/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgdmFsaWRhdGU6IGJvb2xlYW47CiAgICAgICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRva2VuQ291bnQ/OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiBib29sZWFuOwogICAgICAgICAgICAgICAgdmFsaWRhdGU6IGJvb2xlYW47CiAgICAgICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBpZ25vcmVNYXJrZG93bj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB0b2tlbml6ZXJJZD86ICJ1bmlncmFtXzAycGN0X2NjX3YxLjBfaGZfY29udmVydGVkX2NsZWFuZWQiIHwgImNsYXVkZS0zLTUtc29ubmV0LTIwMjQwNjIwLWFudGhyb3BpYy1haS1jb3VudC10b2tlbnMiIHwgImNsYXVkZS0zLTUtc29ubmV0LTIwMjQxMDIyLWFudGhyb3BpYy1haS1jb3VudC10b2tlbnMiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBhaUdlbmVyYXRlZD86IHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47CiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogYm9vbGVhbjsKICAgICAgICAgICAgICAgIG9yaWdpbmFsVGhyZXNob2xkOiBudW1iZXI7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0TW9kZT86ICJtYXJrZG93biIgfCAicmljaC10ZXh0IiB8IHVuZGVmaW5lZDsKICAgICAgICBpbWFnZVR5cGU/OiAidXJsIiB8ICJiYXNlNjQiIHwgImJsb2IiIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZVNpbmdsZURvbGxhck1hdGg/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRlZmF1bHRBaVBhbmVsQ29udGVudD86ICJjb2RlIiB8ICJjb21tZW50cyIgfCAiaW50ZW50IiB8ICJncmFtbWFyU2NvcmUiIHwgImFpR2VuZXJhdGVkIiB8ICJmYWN0IiB8IHVuZGVmaW5lZDsKICAgICAgICByZXF1aXJlZENvbnRlbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlQ29udGVudD86ICgoYXJnc18wOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgQ2hlY2tib3g6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmVzZXJ2ZUZhbHNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgQ2hhdEFzc2lzdGFudDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBvcHRpb25zPzogewogICAgICAgICAgICB0aGlua2luZz86IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJlbmFibGVkIjsKICAgICAgICAgICAgICAgIGJ1ZGdldF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRvcF9wPzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdG9wX2s/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXhfdG9rZW5zPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0b29scz86IGFueVtdIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0ZW1wZXJhdHVyZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGluaXRpYWxNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IENvZGU6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgbGFuZ3VhZ2U6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZm9ybWF0aW5nPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgQ29kZUV4ZWN1dGlvbjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBsYW5ndWFnZTogInB5dGhvbkAzLjEwLjAiIHwgImphdmFzY3JpcHRAMjAuMTEuMSI7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGZvcm1hdGluZz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IERpYWxvZ1JldmlldzogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBhbGxvd2VkTWV0YU1vZGVsczogUGFydGlhbDxSZWNvcmQ8ImNoYXRncHQiIHwgImNsYXVkZSIgfCAiZ2VtaW5pIiB8ICJtZXRhIiB8ICJtZXRhXzEiIHwgIm1ldGFfMiIsIHN0cmluZz4+OwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRvcGljPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHFhPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbHM/OiAoImNoYXRncHQiIHwgImNsYXVkZSIgfCAiZ2VtaW5pIiB8ICJtZXRhIiB8ICJtZXRhXzEiIHwgIm1ldGFfMiIpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgZGltZW5zaW9ucz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBFeHRlcm5hbDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB1cmw6IHN0cmluZzsKICAgICAgICBjb25maWc6IHt9OwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBGYWNlQ29sbGVjdGlvbjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBxYT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9iaWxlT25seT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWF0aW9uPzogIkEiIHwgIkIiIHwgdW5kZWZpbmVkOwogICAgICAgIHBhZ2U/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVidWc/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHNhbWVQZXJzb25UaHJlc2hvbGQ/OiB7CiAgICAgICAgICAgIHNlbGZpZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcG9zZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgaGlzdG9yaWNhbD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBGaWxlVXBsb2FkOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG11bHRpcGxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhY2NlcHQ/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDsKICAgICAgICBsaW5rVHlwZT86ICJzYXNMaW5rIiB8ICJkb3dubG9hZExpbmsiIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbmltdW1GaWxlcz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgSW1hZ2VBbm5vdGF0aW9uOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIGltYWdlOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRvb2xzPzogKCJyZWN0YW5nbGUiIHwgInBvbHlnb24iKVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVscz86IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgY29sb3I6ICJyZWQiIHwgIm9yYW5nZSIgfCAiYW1iZXIiIHwgInllbGxvdyIgfCAibGltZSIgfCAiZ3JlZW4iIHwgImVtZXJhbGQiIHwgInRlYWwiIHwgImN5YW4iIHwgInNreSIgfCAiYmx1ZSIgfCAiaW5kaWdvIiB8ICJ2aW9sZXQiIHwgInB1cnBsZSIgfCAiZnVjaHNpYSIgfCAicGluayIgfCAicm9zZSIgfCAid2hpdGUiOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBxdWVzdGlvbnM/OiAoewogICAgICAgICAgICB0eXBlOiAidGV4dCI7CiAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgewogICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgfVtdOwogICAgICAgICAgICB0eXBlOiAidG9nZ2xlLWdyb3VwIjsKICAgICAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgICAgICB9W107CiAgICAgICAgICAgIHR5cGU6ICJzZWxlY3QiOwogICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdHlwZTogIm51bWJlciI7CiAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGRlY2ltYWxTY2FsZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB9KVtdIHwgdW5kZWZpbmVkOwogICAgICAgIGFubm90YXRpb25TaXplPzogewogICAgICAgICAgICBtaW5IZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbldpZHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzcGxheUxhYmVscz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbmF2aWdhdG9yPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0QW5ub3RhdGlvbkNvbG9yPzogInJlZCIgfCAib3JhbmdlIiB8ICJhbWJlciIgfCAieWVsbG93IiB8ICJsaW1lIiB8ICJncmVlbiIgfCAiZW1lcmFsZCIgfCAidGVhbCIgfCAiY3lhbiIgfCAic2t5IiB8ICJibHVlIiB8ICJpbmRpZ28iIHwgInZpb2xldCIgfCAicHVycGxlIiB8ICJmdWNoc2lhIiB8ICJwaW5rIiB8ICJyb3NlIiB8ICJ3aGl0ZSIgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IEltYWdlU2tlbGV0b25Bbm5vdGF0aW9uOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHRvb2xzOiB7CiAgICAgICAgICAgIHR5cGU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgY29sb3I6ICJyZWQiIHwgIm9yYW5nZSIgfCAiYW1iZXIiIHwgInllbGxvdyIgfCAibGltZSIgfCAiZ3JlZW4iIHwgImVtZXJhbGQiIHwgInRlYWwiIHwgImN5YW4iIHwgInNreSIgfCAiYmx1ZSIgfCAiaW5kaWdvIiB8ICJ2aW9sZXQiIHwgInB1cnBsZSIgfCAiZnVjaHNpYSIgfCAicGluayIgfCAicm9zZSIgfCAid2hpdGUiOwogICAgICAgICAgICB0ZW1wbGF0ZTogUmVjb3JkPHN0cmluZywgW251bWJlciwgbnVtYmVyXT47CiAgICAgICAgICAgIGNvbm5lY3Rpb25zOiBbc3RyaW5nLCBzdHJpbmddW107CiAgICAgICAgICAgIHBvaW50c0NvbG9yPzogUmVjb3JkPHN0cmluZywgInJlZCIgfCAib3JhbmdlIiB8ICJhbWJlciIgfCAieWVsbG93IiB8ICJsaW1lIiB8ICJncmVlbiIgfCAiZW1lcmFsZCIgfCAidGVhbCIgfCAiY3lhbiIgfCAic2t5IiB8ICJibHVlIiB8ICJpbmRpZ28iIHwgInZpb2xldCIgfCAicHVycGxlIiB8ICJmdWNoc2lhIiB8ICJwaW5rIiB8ICJyb3NlIiB8ICJ3aGl0ZSI+IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBzaG93UG9pbnRMYWJlbD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHNjYWxlPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICBpbWFnZTogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgaGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgSnNvblNjaGVtYUZvcm06IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc2NoZW1hPzogYW55OwogICAgfT47CiAgICByZWFkb25seSBMaXN0OiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHJlbmRlckl0ZW06IChhcmdzXzA6IHN0cmluZywgYXJnc18xOiBhbnksIGFyZ3NfMjogbnVtYmVyKSA9PiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBmbGF0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGl0ZW1XaXRoQm9yZGVyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhZGRCdXR0b25MYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBhZGRCdXR0b25WYXJpYW50PzogImRlZmF1bHQiIHwgInNlY29uZGFyeSIgfCAiZ2hvc3QiIHwgIm91dGxpbmUiIHwgdW5kZWZpbmVkOwogICAgICAgIGdhcD86IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICByZW9yZGVyYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE1lZGlhVGFza1JldmlldzogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgTWxFbmRwb2ludDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIGVuZHBvaW50OiBzdHJpbmc7CiAgICAgICAgZGF0YToge30gfCAoKCkgPT4ge30pOwogICAgICAgIGZ1bmN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB1c2VfY2FjaGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHBvc3RQcm9jZXNzaW5nRm4/OiAoKGVuZHBvaW50UmVzdWx0OiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWFudD86ICJkZWZhdWx0IiB8ICJzZWNvbmRhcnkiIHwgImdob3N0IiB8ICJvdXRsaW5lIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb21wbGFpbj86IHsKICAgICAgICAgICAgdHlwZT86ICJidXR0b24iIHwgImNoZWNrYm94IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGRlZmF1bHRDb21tZW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBvblN1Y2Nlc3M/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGluc3RydWN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE1sRW5kcG9pbnRNdWx0aXBsZTogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIHJlcXVlc3RzOiB7CiAgICAgICAgICAgIGVuZHBvaW50OiBzdHJpbmc7CiAgICAgICAgICAgIGRhdGE6IHt9IHwgKCgpID0+IHt9KTsKICAgICAgICAgICAgZnVuY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1vbmRheVN1Yml0ZW1JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdXNlX2NhY2hlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcG9zdFByb2Nlc3NpbmdGbj86ICgoZW5kcG9pbnRSZXN1bHQ6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWFudD86ICJkZWZhdWx0IiB8ICJzZWNvbmRhcnkiIHwgImdob3N0IiB8ICJvdXRsaW5lIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb21wbGFpbj86IHsKICAgICAgICAgICAgdHlwZT86ICJidXR0b24iIHwgImNoZWNrYm94IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGRlZmF1bHRDb21tZW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBvblN1Y2Nlc3M/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGluc3RydWN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE11bHRpU2VsZWN0OiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IE51bWJlcjogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRlY2ltYWxTY2FsZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgUG9ydGFsQ2hhdEFzc2lzdGFudDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICBvcHRpb25zPzogewogICAgICAgICAgICB0aGlua2luZz86IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJlbmFibGVkIjsKICAgICAgICAgICAgICAgIGJ1ZGdldF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRvcF9wPzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdG9wX2s/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXhfdG9rZW5zPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0b29scz86IGFueVtdIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0ZW1wZXJhdHVyZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGluaXRpYWxNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGNvbnRleHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFJhZGlvR3JvdXA6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgICAgICBoaW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgU2VsZWN0OiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFNob3BpZnlPbmVEY2c6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgc2hvcEFwcEVtYWlsOiBzdHJpbmc7CiAgICAgICAgY291bnRyeTogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcWE/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHF1ZXJ5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHF1ZXJ5U2hhcGU/OiAia2V5d29yZCIgfCAiY29tcGxleCIgfCAiY29udmVyc2F0aW9uYWwiIHwgdW5kZWZpbmVkOwogICAgICAgIHBlcnNvbmE/OiB7CiAgICAgICAgICAgIHV1aWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlbGF0aW9uc2hpcD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgc3VtbWFyeT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgc25hcHNob3Q/OiB1bmtub3duOwogICAgICAgICAgICBsb29rdXBfc291cmNlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgcGFpcnNUYXJnZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgaXNUZXN0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByZWFzb25pbmdGYWN0b3JzPzogewogICAgICAgICAgICBpZDogc3RyaW5nOwogICAgICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgU2hvcGlmeVN0b3JlZnJvbnQ6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAganVkZ2VzOiB7CiAgICAgICAgICAgIHNob3BfYXBwX2VtYWlsOiBzdHJpbmc7CiAgICAgICAgICAgIGNvdW50cnk6IHN0cmluZzsKICAgICAgICAgICAgcGVyc29uYTogewogICAgICAgICAgICAgICAgdXVpZDogc3RyaW5nOwogICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwOiBzdHJpbmc7CiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBzdHJpbmc7CiAgICAgICAgICAgICAgICBsb29rdXBfc291cmNlOiBzdHJpbmc7CiAgICAgICAgICAgICAgICBzbmFwc2hvdD86IHVua25vd247CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHN0b3JlczogewogICAgICAgICAgICAgICAgc2hvcF9naWQ6IHN0cmluZzsKICAgICAgICAgICAgICAgIG1lcmNoYW50X25hbWU6IHN0cmluZzsKICAgICAgICAgICAgICAgIGRvbWFpbjogc3RyaW5nOwogICAgICAgICAgICAgICAgbWVyY2hhbnRfY2F0ZWdvcnk6IHN0cmluZzsKICAgICAgICAgICAgICAgIHNhbXBsZV9wcm9kdWN0czogc3RyaW5nW107CiAgICAgICAgICAgICAgICB2aXNpdGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJhbms/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH1bXTsKICAgICAgICAgICAgbGF0ZXN0X3F1ZXJ5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGlzVGVzdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFNwZWVjaFRvVGV4dDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG1vbmRheVN1Yml0ZW1JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9kZWxJZD86ICJncHQtNG8tdHJhbnNjcmliZSIgfCAiZ3B0LTRvLW1pbmktdHJhbnNjcmliZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFNwZWVjaFRvVGV4dFYyOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtb2RlbElkPzogImdwdC00by10cmFuc2NyaWJlIiB8ICJncHQtNG8tbWluaS10cmFuc2NyaWJlIiB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVGV4dDogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzcGVsbENoZWNrPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZENvcHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkUGFzdGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBUZXh0QW5ub3RhdGlvbjogUmVhY3QuRkM8ewogICAgICAgIGNvbnRlbnQ6IHN0cmluZzsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgbGFiZWxzOiB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgIGNvbG9yOiAicmVkIiB8ICJvcmFuZ2UiIHwgImFtYmVyIiB8ICJ5ZWxsb3ciIHwgImxpbWUiIHwgImdyZWVuIiB8ICJlbWVyYWxkIiB8ICJ0ZWFsIiB8ICJjeWFuIiB8ICJza3kiIHwgImJsdWUiIHwgImluZGlnbyIgfCAidmlvbGV0IiB8ICJwdXJwbGUiIHwgImZ1Y2hzaWEiIHwgInBpbmsiIHwgInJvc2UiIHwgIndoaXRlIjsKICAgICAgICB9W107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9kZT86ICJjbGFzc2lmeWluZyIgfCAiY2xhc3NpZnlpbmctY29tbWVudGluZyIgfCB1bmRlZmluZWQ7CiAgICAgICAgYWRqdXN0PzogInN5bWJvbHMiIHwgIndvcmRzIiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVGV4dGFyZWE6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3BlbGxDaGVjaz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWRDb3B5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZFBhc3RlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICByZXNpemFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJvd3M/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFRvZ2dsZUdyb3VwOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIHR5cGU/OiAibXVsdGlwbGUiIHwgInNpbmdsZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICByZWFkb25seSBWaWRlb1RpbWVsaW5lU2VnbWVudGF0aW9uOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIHZpZGVvOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcXVlc3Rpb25zPzogewogICAgICAgICAgICBrZXlmcmFtZXM/OiAoewogICAgICAgICAgICAgICAgdHlwZTogInRleHQiOwogICAgICAgICAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgewogICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHN0cmluZzsKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9W107CiAgICAgICAgICAgICAgICB0eXBlOiAidG9nZ2xlLWdyb3VwIjsKICAgICAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0pW10gfCAoKGFyZ3NfMDogb2JqZWN0SW5wdXRUeXBlPHsKICAgICAgICAgICAgICAgIHRpbWU6IFpvZE51bWJlcjsKICAgICAgICAgICAgfSwgWm9kVW5rbm93biwgInN0cmlwIj4pID0+ICh7CiAgICAgICAgICAgICAgICB0eXBlOiAidGV4dCI7CiAgICAgICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0gfCB7CiAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIH1bXTsKICAgICAgICAgICAgICAgIHR5cGU6ICJ0b2dnbGUtZ3JvdXAiOwogICAgICAgICAgICAgICAga2V5OiBzdHJpbmc7CiAgICAgICAgICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSlbXSkgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHNlZ21lbnRzPzogKHsKICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZXh0IjsKICAgICAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgfVtdOwogICAgICAgICAgICAgICAgdHlwZTogInRvZ2dsZS1ncm91cCI7CiAgICAgICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9KVtdIHwgKChhcmdzXzA6IG9iamVjdElucHV0VHlwZTx7CiAgICAgICAgICAgICAgICBmcm9tOiBab2ROdW1iZXI7CiAgICAgICAgICAgICAgICB0bzogWm9kTnVtYmVyOwogICAgICAgICAgICB9LCBab2RVbmtub3duLCAic3RyaXAiPikgPT4gKHsKICAgICAgICAgICAgICAgIHR5cGU6ICJ0ZXh0IjsKICAgICAgICAgICAgICAgIGtleTogc3RyaW5nOwogICAgICAgICAgICAgICAgbGFiZWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgfVtdOwogICAgICAgICAgICAgICAgdHlwZTogInRvZ2dsZS1ncm91cCI7CiAgICAgICAgICAgICAgICBrZXk6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9KVtdKSB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgIG1vZGU/OiAia2V5ZnJhbWVzIiB8ICJzZWdtZW50cyIgfCAia2V5ZnJhbWVzLXNlZ21lbnRzIiB8IHVuZGVmaW5lZDsKICAgICAgICB2aWRlb0hlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0UGxheWJhY2tSYXRlPzogMSB8IDIgfCAwLjI1IHwgMC41IHwgMC43NSB8IDEuMjUgfCAxLjUgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFZpZGVvRnJhbWluZzogUmVhY3QuRkM8ewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICB2aWRlbzogc3RyaW5nOwogICAgICAgIHZhbGlkYXRpb24/OiB7CiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHR5cGU/OiAic3RyaW5nIiB8ICJudW1iZXIiIHwgImJvb2xlYW4iIHwgIm9iamVjdCIgfCAiaW50ZWdlciIgfCAiZmxvYXQiIHwgImRhdGUiIHwgImFycmF5IiB8ICJ1cmwiIHwgImVudW0iIHwgImhleCIgfCAiZW1haWwiIHwgImFueSIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1pbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWF4PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGVudW0/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxlbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgd2hpdGVzcGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGZpZWxkcz86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICB2YWxpZGF0b3I/OiAoKGZpZWxkVmFsdWU6IGFueSkgPT4gdHJ1ZSB8IEVycm9yKSB8IHVuZGVmaW5lZDsKICAgICAgICB9W10gfCB1bmRlZmluZWQ7CiAgICAgICAgb25DaGFuZ2U/OiAoKGNoYW5nZWRWYWx1ZTogdW5rbm93bikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGhpbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZpZGVvSGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGRlZmF1bHRQbGF5YmFja1JhdGU/OiAxIHwgMiB8IDAuMjUgfCAwLjUgfCAwLjc1IHwgMS4yNSB8IDEuNSB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVmlkZW9SZWNvcmQ6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgZnBzVG9sZXJhbmNlRnJhY3Rpb246IG51bWJlcjsKICAgICAgICByZXNvbHV0aW9uVG9sZXJhbmNlRnJhY3Rpb246IG51bWJlcjsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0eXBlPzogInN0cmluZyIgfCAibnVtYmVyIiB8ICJib29sZWFuIiB8ICJvYmplY3QiIHwgImludGVnZXIiIHwgImZsb2F0IiB8ICJkYXRlIiB8ICJhcnJheSIgfCAidXJsIiB8ICJlbnVtIiB8ICJoZXgiIHwgImVtYWlsIiB8ICJhbnkiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVxdWlyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBlbnVtPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsZW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHdoaXRlc3BhY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBmaWVsZHM/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdmFsaWRhdG9yPzogKChmaWVsZFZhbHVlOiBhbnkpID0+IHRydWUgfCBFcnJvcikgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgICAgIG9uQ2hhbmdlPzogKChjaGFuZ2VkVmFsdWU6IHVua25vd24pID0+IHZvaWQpIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBtb2JpbGVPbmx5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBsaW5rVHlwZT86ICJzYXNMaW5rIiB8ICJkb3dubG9hZExpbmsiIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtaW5XaWR0aD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvcmllbnRhdGlvbj86ICJsYW5kc2NhcGUiIHwgInBvcnRyYWl0IiB8IHVuZGVmaW5lZDsKICAgICAgICBsb2NrU2NyZWVuT3JpZW50YXRpb24/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkR1cmF0aW9uU2VjPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1heER1cmF0aW9uU2VjPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGNhbWVyYUZhY2luZz86ICJ1c2VyIiB8ICJlbnZpcm9ubWVudCIgfCB1bmRlZmluZWQ7CiAgICAgICAgYXVkaW8/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHJlY29yZGluZ1F1YWxpdHk/OiAiaGlnaCIgfCAibG93IiB8ICJiYWxhbmNlZCIgfCB1bmRlZmluZWQ7CiAgICAgICAgdW5zdXBwb3J0ZWRNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG5hdGl2ZUNhbWVyYT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhdGZvcm0/OiAiaW9zIiB8ICJhbmRyb2lkIiB8ICJib3RoIiB8IHVuZGVmaW5lZDsKICAgICAgICBsZW5zPzogImRlZmF1bHQiIHwgIndpZGUiIHwgInVsdHJhV2lkZSIgfCAidGVsZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluRm92RGVnPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1pbkZwcz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBtaW5CaXRyYXRlPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIGhkck1vZGU/OiAib2ZmIiB8ICJoZHIxMCIgfCAiYXV0byIgfCB1bmRlZmluZWQ7CiAgICAgICAgbGlnaHRpbmdUaHJlc2hvbGQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgcmVjb3JkSW11PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgcmVhZG9ubHkgVmlkZW9VcGxvYWQ6IFJlYWN0LkZDPHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbXVsdGlwbGU/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGFjY2VwdD86IHN0cmluZ1tdIHwgdW5kZWZpbmVkOwogICAgICAgIGxpbmtUeXBlPzogInNhc0xpbmsiIHwgImRvd25sb2FkTGluayIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluaW11bUZpbGVzPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG9yaWVudGF0aW9uPzogImxhbmRzY2FwZSIgfCAicG9ydHJhaXQiIHwgInNxdWFyZSIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWluRHVyYXRpb25TZWM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgbWF4RHVyYXRpb25TZWM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIHJlYWRvbmx5IFdvcmxkU2VhcmNoOiBSZWFjdC5GQzx7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIGF2YWlsYWJsZVdvcmxkczogc3RyaW5nW107CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgbWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHlwZT86ICJzdHJpbmciIHwgIm51bWJlciIgfCAiYm9vbGVhbiIgfCAib2JqZWN0IiB8ICJpbnRlZ2VyIiB8ICJmbG9hdCIgfCAiZGF0ZSIgfCAiYXJyYXkiIHwgInVybCIgfCAiZW51bSIgfCAiaGV4IiB8ICJlbWFpbCIgfCAiYW55IiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbWluPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtYXg/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZW51bT86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB3aGl0ZXNwYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZmllbGRzPzoge30gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHZhbGlkYXRvcj86ICgoZmllbGRWYWx1ZTogYW55KSA9PiB0cnVlIHwgRXJyb3IpIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXSB8IHVuZGVmaW5lZDsKICAgICAgICBvbkNoYW5nZT86ICgoY2hhbmdlZFZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgaGludD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICByZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGVyUGFnZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzZWxlY3REb2N1bWVudHM/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47Cn07CmRlY2xhcmUgY29uc3QgTGF5b3V0OiB7CiAgICBTdGlja3lIZWFkZXI6IFJlYWN0LkZDPHsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBoZWFkZXI/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKfTsKZGVjbGFyZSBjb25zdCBWaWV3OiB7CiAgICBBY3Rpb25CdXR0b246IFJlYWN0LkZDPHsKICAgICAgICBsYWJlbDogc3RyaW5nOwogICAgICAgIGFjdGlvbjogKCkgPT4gYW55OwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YXJpYW50PzogImRlZmF1bHQiIHwgInNlY29uZGFyeSIgfCAiZ2hvc3QiIHwgIm91dGxpbmUiIHwgdW5kZWZpbmVkOwogICAgICAgIGxvYWRpbmdMYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgQWxlcnQ6IFJlYWN0LkZDPHsKICAgICAgICB0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBkZXNjcmlwdGlvbj86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YXJpYW50PzogImVycm9yIiB8ICJkZWZhdWx0IiB8ICJpbmZvIiB8ICJzdWNjZXNzIiB8ICJ3YXJuaW5nIiB8IHVuZGVmaW5lZDsKICAgICAgICBwYWRkaW5nPzogInNtIiB8ICJtZCIgfCB1bmRlZmluZWQ7CiAgICAgICAgaWNvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIEF1ZGlvOiBSZWFjdC5GQzx7CiAgICAgICAgdXJsOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgcGxheWVkRnVsbHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIENhcmQ6IFJlYWN0LkZDPHsKICAgICAgICBmbGF0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBkZXNjcmlwdGlvbj86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB2YXJpYW50PzogImVycm9yIiB8ICJkZWZhdWx0IiB8ICJpbmZvIiB8ICJzdWNjZXNzIiB8ICJ3YXJuaW5nIiB8IHVuZGVmaW5lZDsKICAgICAgICB2aWV3PzogImZpbGwiIHwgIm91dGxpbmUiIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBDb2RlRGlmZjogUmVhY3QuRkM8ewogICAgICAgIG9yaWdpbmFsOiBzdHJpbmc7CiAgICAgICAgbGFuZ3VhZ2U6IHN0cmluZzsKICAgICAgICBtb2RpZmllZDogc3RyaW5nOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzaWRlQnlTaWRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgQ29sOiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgc3Bhbj86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBvZmZzZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2V0UGFyYW1zPzogKChhcmdzXzA6IG51bWJlcikgPT4gewogICAgICAgICAgICBzcGFuPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBvZmZzZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgfSkgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIENvbGxhcHNpYmxlOiBSZWFjdC5GQzx7CiAgICAgICAgZmxhdD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdGl0bGU/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHZhcmlhbnQ/OiAiZGVmYXVsdCIgfCAiaW5mbyIgfCB1bmRlZmluZWQ7CiAgICAgICAgZGVmYXVsdE9wZW4/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBEaXZpZGVyOiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgb3JpZW50YXRpb24/OiAiaG9yaXpvbnRhbCIgfCAidmVydGljYWwiIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBGbGV4OiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZ2FwPzogc3RyaW5nIHwgbnVtYmVyIHwgW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyXSB8IHVuZGVmaW5lZDsKICAgICAgICBqdXN0aWZ5PzogInN0YXJ0IiB8ICJlbmQiIHwgImNlbnRlciIgfCAibm9ybWFsIiB8ICJzcGFjZS1hcm91bmQiIHwgInNwYWNlLWJldHdlZW4iIHwgdW5kZWZpbmVkOwogICAgICAgIHZlcnRpY2FsPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB3cmFwPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICBhbGlnbj86ICJzdGFydCIgfCAiZW5kIiB8ICJtaWRkbGUiIHwgInN0cmV0Y2giIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBJbWFnZTogUmVhY3QuRkM8ewogICAgICAgIHNyYzogc3RyaW5nOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHByZXZpZXc/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBJbWFnZUdhbGxlcnk6IFJlYWN0LkZDPHsKICAgICAgICBpbWFnZXM6IHN0cmluZ1tdOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwcmV2aWV3PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgTGFiZWw6IFJlYWN0LkZDPHsKICAgICAgICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBoaW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBMYWJlbHM6IFJlYWN0LkZDPHsKICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgdGl0bGU6IHN0cmluZzsKICAgICAgICAgICAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aGVtZT86ICJkZWZhdWx0IiB8ICJhbGVydCIgfCAic3VjY2VzcyIgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBMZWFmbGV0TWFwOiBSZWFjdC5GQzx7CiAgICAgICAgY2VudGVyOiBbbnVtYmVyLCBudW1iZXJdOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB6b29tPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIG1hcmtlcnM/OiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdOwogICAgICAgICAgICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcG9wdXA/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBMaW5rOiBSZWFjdC5GQzx7CiAgICAgICAgdXJsOiBzdHJpbmc7CiAgICAgICAgdmFsaWRhdGlvbj86IHsKICAgICAgICAgICAgb3BlbmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfSAmIHsKICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwogICAgfT47CiAgICBNYXJrZG93bjogUmVhY3QuRkM8ewogICAgICAgIGNvbnRlbnQ6IHN0cmluZzsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZENvcHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGh0bWw/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBSb3c6IFJlYWN0LkZDPHsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnYXA/OiBzdHJpbmcgfCBudW1iZXIgfCBbc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdIHwgdW5kZWZpbmVkOwogICAgICAgIGp1c3RpZnk/OiAic3RhcnQiIHwgImVuZCIgfCAiY2VudGVyIiB8ICJzcGFjZS1hcm91bmQiIHwgInNwYWNlLWJldHdlZW4iIHwgdW5kZWZpbmVkOwogICAgICAgIGFsaWduPzogInN0YXJ0IiB8ICJlbmQiIHwgIm1pZGRsZSIgfCAic3RyZXRjaCIgfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIFRhYnM6IFJlYWN0LkZDPHsKICAgICAgICB0YWJzOiB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIGNvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGU7CiAgICAgICAgICAgIGxhYmVsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICBmbGF0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBkZXNjcmlwdGlvbj86IFJlYWN0LlJlYWN0Tm9kZTsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0VGFiPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYnNWaWV3S2V5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUZXh0OiBSZWFjdC5GQzx7CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgY29sb3I/OiAiZXJyb3IiIHwgInNlY29uZGFyeSIgfCAicHJpbWFyeSIgfCB1bmRlZmluZWQ7CiAgICAgICAgdmFyaWFudD86ICJjb2RlIiB8ICJibG9ja3F1b3RlIiB8ICJoMSIgfCAiaDIiIHwgImgzIiB8ICJoNCIgfCAicCIgfCAic21hbGwiIHwgImxhcmdlIiB8IHVuZGVmaW5lZDsKICAgIH0gJiB7CiAgICAgICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsKICAgIH0+OwogICAgVGV4dERpZmY6IFJlYWN0LkZDPHsKICAgICAgICBzb3VyY2U6IHN0cmluZzsKICAgICAgICB0YXJnZXQ6IHN0cmluZzsKICAgICAgICBsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkZWZhdWx0T3Blbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWxnb3JpdGhtPzogInN5bWJvbHMiIHwgIndvcmRzIiB8IHVuZGVmaW5lZDsKICAgICAgICBjb250ZW50SGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgIHRhYnNMYWJlbHM/OiB7CiAgICAgICAgICAgIHNvdXJjZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdGFyZ2V0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBkaWZmPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIFR1dG9yaWFsOiBSZWFjdC5GQzx7CiAgICAgICAgdW5pcXVlSWQ6IHN0cmluZzsKICAgICAgICBzdGVwczogewogICAgICAgICAgICB0aXRsZTogc3RyaW5nOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgZGlzYWJsZUFjdGl2ZUludGVyYWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgICAgICB9W107CiAgICAgICAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkOwogICAgICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZW50aXR5Q3VzdG9tSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW5zdGFudD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgd2l0aEJ1dHRvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgYWxsb3dDbG9zZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9ICYgewogICAgICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIFBkZjogUmVhY3QuRkM8ewogICAgICAgIHVybDogc3RyaW5nOwogICAgICAgIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgVmlkZW86IFJlYWN0LkZDPHsKICAgICAgICB1cmw6IHN0cmluZzsKICAgICAgICB2YWxpZGF0aW9uPzogewogICAgICAgICAgICBwbGF5ZWRGdWxseT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7CiAgICAgICAgdHV0b3JpYWxJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICByYXRpbz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgT25ib2FyZGluZzogUmVhY3QuRkM8ewogICAgICAgIG1vZHVsZXM6IHsKICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgcm9sZTogc3RyaW5nOwogICAgICAgICAgICBzdGVwczogewogICAgICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHsKICAgICAgICAgICAgICAgICAgICBpZDogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47CiAgICAgICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIGNyaXRlcmlhOiBzdHJpbmc7CiAgICAgICAgICAgICAgICB9W107CiAgICAgICAgICAgICAgICBjb250ZW50PzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgICAgICB9W107CiAgICAgICAgICAgIHNjZW5hcmlvOiBzdHJpbmc7CiAgICAgICAgICAgIGdvYWw6IHN0cmluZzsKICAgICAgICAgICAgc3VjY2Vzc0NyaXRlcmlhOiBzdHJpbmc7CiAgICAgICAgfVtdOwogICAgICAgIGZsYXQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHRpdGxlPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIGRlc2NyaXB0aW9uPzogUmVhY3QuUmVhY3ROb2RlOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUcmFpbmluZzogUmVhY3QuRkM8ewogICAgICAgIHN0ZXBzOiB7CiAgICAgICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgICAgIGJsb2NrczogYW55W107CiAgICAgICAgfVtdOwogICAgICAgIHRpdGxlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgICAgICB0dXRvcmlhbElkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGVudGl0eUN1c3RvbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUcmFpbmluZ1RoZW9yeTogUmVhY3QuRkM8ewogICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgY29udGVudD86ICh7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJtYXJrZG93biI7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogImltYWdlIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGFsdD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAidmlkZW8iOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAiY29kZSI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBsYW5ndWFnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9KVtdIHwgdW5kZWZpbmVkOwogICAgICAgIHRpdGxlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgfT47CiAgICBUcmFpbmluZ0NvbnNlbnQ6IFJlYWN0LkZDPHsKICAgICAgICBpZDogc3RyaW5nOwogICAgICAgIGNvbnNlbnRMYWJlbDogc3RyaW5nOwogICAgICAgIGNvbnRlbnQ/OiAoewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAibWFya2Rvd24iOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJpbWFnZSI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBhbHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogInZpZGVvIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogImNvZGUiOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgbGFuZ3VhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgfSlbXSB8IHVuZGVmaW5lZDsKICAgICAgICBwYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRpdGxlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgVHJhaW5pbmdRdWl6OiBSZWFjdC5GQzx7CiAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICBxdWVzdGlvbnM6IHsKICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7CiAgICAgICAgICAgIH1bXTsKICAgICAgICAgICAgdHlwZTogInNpbmdsZS1jaG9pY2UiIHwgIm11bHRpcGxlLWNob2ljZSI7CiAgICAgICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgICAgIHF1ZXN0aW9uOiBzdHJpbmc7CiAgICAgICAgICAgIGNvcnJlY3RBbnN3ZXI6IHN0cmluZyB8IHN0cmluZ1tdOwogICAgICAgICAgICBoaW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBjb3JyZWN0QW5zd2VyRmVlZGJhY2s/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGluY29ycmVjdEFuc3dlckZlZWRiYWNrPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH1bXTsKICAgICAgICBjb250ZW50PzogKHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogIm1hcmtkb3duIjsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAiaW1hZ2UiOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgYWx0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJ2aWRlbyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJjb2RlIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxhbmd1YWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0pW10gfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIFRyYWluaW5nUHJhY3RpY2U6IFJlYWN0LkZDPHsKICAgICAgICBpZDogc3RyaW5nOwogICAgICAgIHZhbGlkYXRvcnM6IHsKICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZzsKICAgICAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47CiAgICAgICAgICAgIG5hbWU6IHN0cmluZzsKICAgICAgICAgICAgY3JpdGVyaWE6IHN0cmluZzsKICAgICAgICB9W107CiAgICAgICAgZWRpdG9yVHlwZTogIlRFWFQiIHwgIk1BUktET1dOIiB8ICJDT0RFIjsKICAgICAgICBjb250ZW50PzogKHsKICAgICAgICAgICAgdmFsdWU6IHN0cmluZzsKICAgICAgICAgICAgdHlwZTogIm1hcmtkb3duIjsKICAgICAgICB9IHwgewogICAgICAgICAgICB2YWx1ZTogc3RyaW5nOwogICAgICAgICAgICB0eXBlOiAiaW1hZ2UiOwogICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgYWx0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJ2aWRlbyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0gfCB7CiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7CiAgICAgICAgICAgIHR5cGU6ICJjb2RlIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGxhbmd1YWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0pW10gfCB1bmRlZmluZWQ7CiAgICAgICAgcGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VVcmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgZWRpdG9yQ29uZmlnPzogewogICAgICAgICAgICBsYW5ndWFnZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJvd3M/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgIH0+OwogICAgVHJhaW5pbmdFeGFtcGxlczogUmVhY3QuRkM8ewogICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgZXhhbXBsZXM6IHsKICAgICAgICAgICAgaWQ6IHN0cmluZzsKICAgICAgICAgICAgY2hlY2tzOiAoewogICAgICAgICAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgICAgICAgICAgdHlwZTogImV4YWN0IjsKICAgICAgICAgICAgICAgIGhpbnQ6IHN0cmluZzsKICAgICAgICAgICAgICAgIGdvbGRlbjogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVua25vd25bXSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIGNvZGU6IHN0cmluZzsKICAgICAgICAgICAgICAgIHR5cGU6ICJjb2RlIjsKICAgICAgICAgICAgICAgIGhpbnQ6IHN0cmluZzsKICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJsbG0iOwogICAgICAgICAgICAgICAgY3JpdGVyaWE6IHN0cmluZzsKICAgICAgICAgICAgICAgIHBhdGhzOiBzdHJpbmdbXTsKICAgICAgICAgICAgICAgIGhpbnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBpbWFnZVVybD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHJlZmVyZW5jZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSlbXTsKICAgICAgICAgICAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OwogICAgICAgICAgICBleHBsYW5hdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9W107CiAgICAgICAgcGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB0aXRsZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcHJlcHJvY2Vzcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb3N0cHJvY2Vzcz86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0gJiB7CiAgICAgICAgY2hpbGRyZW46IChjb250ZXh0OiBUcmFpbmluZ0V4YW1wbGVSZW5kZXJDb250ZXh0KSA9PiBSZWFjdC5SZWFjdE5vZGU7CiAgICB9PjsKICAgIFRyYWluaW5nSW5mbzogUmVhY3QuRkM8ewogICAgICAgIGlkOiBzdHJpbmc7CiAgICAgICAgcm9sZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBnb2FsPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHN1Y2Nlc3NDcml0ZXJpYT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBjb21wbGV0aW9uVGltZT86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0+Owp9OwpkZWNsYXJlIGNvbnN0IFZhbGlkYXRpb246IFJlYWN0LkZDPHsKICAgIG1lc3NhZ2U6IHN0cmluZzsKICAgIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDsKICAgIHR1dG9yaWFsSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICBlbnRpdHlDdXN0b21JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIGlzVmFsaWQ/OiBhbnk7Cn0gJiB7CiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOwp9PjsKZGVjbGFyZSBjb25zdCBhY3Rpb25zOiB7CiAgICBsbG06IChwYXJhbXM6IHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgcHJvbXB0OiBzdHJpbmcgfCB7CiAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZzsKICAgICAgICAgICAgfVtdOwogICAgICAgICAgICByb2xlOiBzdHJpbmc7CiAgICAgICAgfVtdIHwgKCgpID0+IHN0cmluZyB8IHsKICAgICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nOwogICAgICAgICAgICB9W107CiAgICAgICAgICAgIHJvbGU6IHN0cmluZzsKICAgICAgICB9W10pOwogICAgICAgIG9wdGlvbnM/OiB7CiAgICAgICAgICAgIHRoaW5raW5nPzogewogICAgICAgICAgICAgICAgdHlwZTogImVuYWJsZWQiOwogICAgICAgICAgICAgICAgYnVkZ2V0X3Rva2Vucz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgdG9wX3A/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0b3Bfaz86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIG1heF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRvb2xzPzogYW55W10gfCB1bmRlZmluZWQ7CiAgICAgICAgfSB8IHVuZGVmaW5lZDsKICAgICAgICB0ZW1wZXJhdHVyZT86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICBzeXN0ZW1fcHJvbXB0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1vZGVsX2lkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHJlc3BvbnNlX2Zvcm1hdF90eXBlPzogImpzb25fb2JqZWN0IiB8IHVuZGVmaW5lZDsKICAgICAgICBpbWFnZV91cmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgaW1hZ2VfZGV0YWlsPzogImhpZ2giIHwgImxvdyIgfCB1bmRlZmluZWQ7CiAgICAgICAganNvbl9zY2hlbWE/OiB7fSB8IHVuZGVmaW5lZDsKICAgICAgICBwbHVnaW5zPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7CiAgICAgICAgcmV0dXJuX2Z1bGxfYm9keT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgdXNlX2xpdGVsbG0/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIHBhcnNlSnNvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5X3N1Yml0ZW1faWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgcGxhdGZvcm1fcHJvamVjdF9pZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD47CiAgICBsbG1NdWx0aXBsZTogKHBhcmFtczogewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICByZXF1ZXN0czogewogICAgICAgICAgICBwcm9tcHQ6IHN0cmluZyB8IHsKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmc7CiAgICAgICAgICAgICAgICB9W107CiAgICAgICAgICAgICAgICByb2xlOiBzdHJpbmc7CiAgICAgICAgICAgIH1bXSB8ICgoKSA9PiBzdHJpbmcgfCB7CiAgICAgICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nOwogICAgICAgICAgICAgICAgfVtdOwogICAgICAgICAgICAgICAgcm9sZTogc3RyaW5nOwogICAgICAgICAgICB9W10pOwogICAgICAgICAgICBvcHRpb25zPzogewogICAgICAgICAgICAgICAgdGhpbmtpbmc/OiB7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogImVuYWJsZWQiOwogICAgICAgICAgICAgICAgICAgIGJ1ZGdldF90b2tlbnM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdG9wX3A/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdG9wX2s/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgbWF4X3Rva2Vucz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB0b29scz86IGFueVtdIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtb25kYXlTdWJpdGVtSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHRlbXBlcmF0dXJlPzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBzeXN0ZW1fcHJvbXB0Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtb2RlbF9pZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgcmVzcG9uc2VfZm9ybWF0X3R5cGU/OiAianNvbl9vYmplY3QiIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBpbWFnZV91cmw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGltYWdlX2RldGFpbD86ICJoaWdoIiB8ICJsb3ciIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBqc29uX3NjaGVtYT86IHt9IHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwbHVnaW5zPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJldHVybl9mdWxsX2JvZHk/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB1c2VfbGl0ZWxsbT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBhcnNlSnNvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdOwogICAgfSkgPT4gUHJvbWlzZTwoc3RyaW5nIHwgbnVsbClbXT47CiAgICBsbG1RYTogKHBhcmFtczogewogICAgICAgIGNvbmZpZ0lkOiBudW1iZXI7CiAgICAgICAgaW5wdXRQYXRoOiBzdHJpbmc7CiAgICAgICAgb3V0cHV0UGF0aDogc3RyaW5nOwogICAgICAgIHN0YXRlUGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICBwb2xsSW50ZXJ2YWxNcz86IG51bWJlciB8IHVuZGVmaW5lZDsKICAgICAgICB0aW1lb3V0TXM/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICB9KSA9PiBQcm9taXNlPHsKICAgICAgICBzdGF0dXM6IHN0cmluZzsKICAgICAgICBydW5fa2V5Pzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIG1ldHJpY3M/OiB1bmtub3duW10gfCB1bmRlZmluZWQ7CiAgICB9PjsKICAgIG1sRW5kcG9pbnQ6IChwYXJhbXM6IHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgZW5kcG9pbnQ6IHN0cmluZzsKICAgICAgICBkYXRhOiB7fSB8ICgoKSA9PiB7fSk7CiAgICAgICAgZnVuY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHVzZV9jYWNoZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgcG9zdFByb2Nlc3NpbmdGbj86ICgoZW5kcG9pbnRSZXN1bHQ6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8YW55PjsKICAgIG1sRW5kcG9pbnRNdWx0aXBsZTogKHBhcmFtczogewogICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICByZXF1ZXN0czogewogICAgICAgICAgICBlbmRwb2ludDogc3RyaW5nOwogICAgICAgICAgICBkYXRhOiB7fSB8ICgoKSA9PiB7fSk7CiAgICAgICAgICAgIGZ1bmN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBtb25kYXlTdWJpdGVtSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHVzZV9jYWNoZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIHBvc3RQcm9jZXNzaW5nRm4/OiAoKGVuZHBvaW50UmVzdWx0OiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7CiAgICAgICAgfVtdOwogICAgfSkgPT4gUHJvbWlzZTxhbnlbXT47CiAgICBnaXRodWJXb3JrZmxvdzogKChwYXJhbXM6IHsKICAgICAgICBwYXRoOiBzdHJpbmc7CiAgICAgICAgcmVmOiBzdHJpbmc7CiAgICAgICAgb3duZXI6IHN0cmluZzsKICAgICAgICByZXBvOiBzdHJpbmc7CiAgICAgICAgd29ya2Zsb3c6IHN0cmluZzsKICAgICAgICBpbnB1dHM6IFJlY29yZDxzdHJpbmcsIGFueT4gfCAoKCkgPT4gUmVjb3JkPHN0cmluZywgYW55Pik7CiAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7CiAgICAgICAgcG9zdFByb2Nlc3NpbmdGbj86ICgoZW5kcG9pbnRSZXN1bHQ6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8YW55PikgJiB7CiAgICAgICAgc3RhcnQ6IChwYXJhbXM6IHsKICAgICAgICAgICAgcmVmOiBzdHJpbmc7CiAgICAgICAgICAgIG93bmVyOiBzdHJpbmc7CiAgICAgICAgICAgIHJlcG86IHN0cmluZzsKICAgICAgICAgICAgd29ya2Zsb3c6IHN0cmluZzsKICAgICAgICAgICAgaW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgKCgpID0+IFJlY29yZDxzdHJpbmcsIGFueT4pOwogICAgICAgICAgICBtb25kYXlTdWJpdGVtSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGpvYlN0b3JlUGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9KSA9PiBQcm9taXNlPEdpdEh1YldvcmtmbG93UmVzdWx0PjsKICAgICAgICBwb2xsOiAocGFyYW1zOiB7CiAgICAgICAgICAgIG1vbmRheVN1Yml0ZW1JZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICAgICAgam9iU3RvcmVQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBqb2JJZD86IHN0cmluZyB8IHVuZGVmaW5lZDsKICAgICAgICB9KSA9PiBQcm9taXNlPEdpdEh1YldvcmtmbG93UmVzdWx0PjsKICAgICAgICBnZXRSZXN1bHRzOiAocGFyYW1zOiB7CiAgICAgICAgICAgIHBhdGg6IHN0cmluZzsKICAgICAgICAgICAgbW9uZGF5U3ViaXRlbUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgICAgICB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBwb3N0UHJvY2Vzc2luZ0ZuPzogKChlbmRwb2ludFJlc3VsdDogYW55KSA9PiBhbnkpIHwgdW5kZWZpbmVkOwogICAgICAgICAgICBqb2JTdG9yZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7CiAgICAgICAgICAgIGpvYklkPzogc3RyaW5nIHwgdW5kZWZpbmVkOwogICAgICAgIH0pID0+IFByb21pc2U8dW5rbm93bj47CiAgICB9OwogICAgZ2V0OiAocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpID0+IGFueTsKICAgIHNldDogKHBhdGg6IHN0cmluZywgcGF5bG9hZDogYW55KSA9PiB2b2lkOwogICAgc2V0VGFiOiAocGFyYW1zOiB7CiAgICAgICAgdGFic1ZpZXdLZXk6IHN0cmluZzsKICAgICAgICB0YWJWYWx1ZTogc3RyaW5nOwogICAgICAgIHNjcm9sbFRvVGFiU3RhcnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgfSkgPT4gdm9pZDsKICAgIG5leHRUYWI6IChwYXJhbXM6IHsKICAgICAgICB0YWJzVmlld0tleTogc3RyaW5nOwogICAgICAgIHNjcm9sbFRvVGFiU3RhcnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkOwogICAgICAgIGN5Y2xlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0pID0+IHZvaWQ7CiAgICBjb252ZXJ0TWFya2Rvd25Ub0xsbVByb21wdDogKHBhcmFtczogewogICAgICAgIG1hcmtkb3duOiBzdHJpbmc7CiAgICAgICAgbW9kZWw/OiAiY2xhdWRlIiB8ICJncHQiIHwgdW5kZWZpbmVkOwogICAgfSkgPT4gewogICAgICAgIGNvbnRlbnQ6IG9iamVjdE91dHB1dFR5cGU8ewogICAgICAgICAgICB0eXBlOiBab2RTdHJpbmc7CiAgICAgICAgfSwgWm9kVW5rbm93biwgInN0cmlwIj5bXTsKICAgICAgICByb2xlOiBzdHJpbmc7CiAgICB9W107CiAgICBnZXRUZXh0RGlmZjogKHBhcmFtczogewogICAgICAgIHNvdXJjZTogc3RyaW5nOwogICAgICAgIHRhcmdldDogc3RyaW5nOwogICAgICAgIGFsZ29yaXRobT86ICJzeW1ib2xzIiB8ICJ3b3JkcyIgfCB1bmRlZmluZWQ7CiAgICB9KSA9PiBQcm9taXNlPG51bWJlcj47CiAgICBub3RpZnk6IChwYXJhbXM6IHsKICAgICAgICBtZXNzYWdlOiBzdHJpbmc7CiAgICAgICAgdmFyaWFudDogImVycm9yIiB8ICJpbmZvIiB8ICJzdWNjZXNzIiB8ICJ3YXJuaW5nIjsKICAgIH0pID0+IHZvaWQ7CiAgICBleGVjdXRlQ29kZTogKHBhcmFtczogewogICAgICAgIGNvZGU6IHN0cmluZzsKICAgICAgICBsYW5ndWFnZTogInB5dGhvbkAzLjEwLjAiIHwgImphdmFzY3JpcHRAMjAuMTEuMSI7CiAgICB9KSA9PiBQcm9taXNlPHsKICAgICAgICBvdXRwdXQ6IHN0cmluZzsKICAgICAgICBpc0Vycm9yOiBib29sZWFuOwogICAgfT47CiAgICBzdGFydEVkaXRpbmc6IChwYXJhbXM6IHVuZGVmaW5lZCkgPT4gUHJvbWlzZTx7CiAgICAgICAgc3VjY2VzczogYm9vbGVhbjsKICAgIH0+OwogICAgc3VibWl0VGFzazogKHBhcmFtczogewogICAgICAgIHBhdGNoVmFsdWVzPzogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZDsKICAgICAgICByZXNldFZhbHVlcz86IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ7CiAgICB9KSA9PiBQcm9taXNlPHsKICAgICAgICBzdWNjZXNzOiBib29sZWFuOwogICAgfT47CiAgICBpbnZhbGlkYXRlVGFzazogKHBhcmFtczogdW5kZWZpbmVkKSA9PiBQcm9taXNlPHsKICAgICAgICBzdWNjZXNzOiBib29sZWFuOwogICAgfT47CiAgICB1bmFzc2lnbkFuZEV4aXQ6IChwYXJhbXM6IHsKICAgICAgICB3aXRob3V0Q29uZmlybWF0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsKICAgIH0pID0+IFByb21pc2U8ewogICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47CiAgICB9PjsKICAgIHNlbmRVc2VyTG9nOiAocGFyYW1zOiB7CiAgICAgICAgdmFsdWU6IExvZ1ZhbHVlT2JqZWN0OwogICAgICAgIHR5cGU6IHN0cmluZzsKICAgIH0pID0+IFByb21pc2U8dW5rbm93bj47CiAgICBzaWduV2l0aEdlb0lwOiAocGFyYW1zOiB7CiAgICAgICAgcGF0aDogc3RyaW5nOwogICAgICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47CiAgICB9KSA9PiBQcm9taXNlPHN0cmluZz47Cn07CgpleHBvcnQgeyBGaWVsZCwgTGF5b3V0LCBTdXNwZW5zZVBlbmRpbmdNYXJrZXIsIFZhbGlkYXRpb24sIFZpZXcsIGFjdGlvbnMgfTsK","base64").toString("utf8")}};var At=require("@typescript/vfs");var CH=Ju.default.dirname(xu.createRequire("file:///Users/gzarip/code/potato-5/packages/sdk/src/checks/task-ui-typecheck.ts").resolve("typescript-api")),tt={data:"DATA_INJECTION",constants:"CONST_INJECTION",preprocess:"PREPROCESS_INJECTION",postprocess:"POSTPROCESS_INJECTION",code:"CODE_INJECTION"},vi="index.tsx",uH=[["data",tt.data],["constants",tt.constants],["preprocess",tt.preprocess],["postprocess",tt.postprocess],["code",tt.code]],mH=()=>({data:[],constants:[],preprocess:[],postprocess:[],code:[]}),Yu=(e)=>`
|
|
43
|
+
import * as React from 'react';
|
|
44
|
+
import { View, Field, Layout, SuspensePendingMarker, Validation, actions } from 'elements';
|
|
45
|
+
|
|
46
|
+
declare global {
|
|
47
|
+
const data: /* DATA_INJECTION_START */
|
|
48
|
+
(
|
|
49
|
+
${e.data}
|
|
50
|
+
)
|
|
51
|
+
/* DATA_INJECTION_END */ & { [key: string]: any };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare global {
|
|
55
|
+
const CONST: /* CONST_INJECTION_START */
|
|
56
|
+
(
|
|
57
|
+
${e.constants}
|
|
58
|
+
)
|
|
59
|
+
/* CONST_INJECTION_END */ & { [key: string]: any };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
(() => /* PREPROCESS_INJECTION_START */
|
|
63
|
+
{
|
|
64
|
+
${e.preprocess}
|
|
65
|
+
}
|
|
66
|
+
/* PREPROCESS_INJECTION_END */ )()
|
|
67
|
+
|
|
68
|
+
(() => /* POSTPROCESS_INJECTION_START */
|
|
69
|
+
{
|
|
70
|
+
${e.postprocess}
|
|
71
|
+
}
|
|
72
|
+
/* POSTPROCESS_INJECTION_END */ )()
|
|
73
|
+
|
|
74
|
+
/* CODE_INJECTION_START */
|
|
75
|
+
(
|
|
76
|
+
${e.code}
|
|
77
|
+
)
|
|
78
|
+
/* CODE_INJECTION_END */
|
|
79
|
+
|
|
80
|
+
export {}`,Nu=(e)=>`
|
|
81
|
+
const data = (
|
|
82
|
+
/* DATA_INJECTION_START */
|
|
83
|
+
${e.data}
|
|
84
|
+
/* DATA_INJECTION_END */
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
const CONST = (
|
|
88
|
+
/* CONST_INJECTION_START */
|
|
89
|
+
${e.constants}
|
|
90
|
+
/* CONST_INJECTION_END */
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
const preprocess = (data) => {
|
|
94
|
+
/* PREPROCESS_INJECTION_START */
|
|
95
|
+
${e.preprocess}
|
|
96
|
+
/* PREPROCESS_INJECTION_END */
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const postprocess = (data) => {
|
|
100
|
+
/* POSTPROCESS_INJECTION_START */
|
|
101
|
+
${e.postprocess}
|
|
102
|
+
/* POSTPROCESS_INJECTION_END */
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const code = (
|
|
106
|
+
/* CODE_INJECTION_START */
|
|
107
|
+
${e.code}
|
|
108
|
+
/* CODE_INJECTION_END */
|
|
109
|
+
);
|
|
110
|
+
`,pH=["preprocess","postprocess","code"],Xu=(e,t,i)=>{let n={...e};for(let s of pH){let o=new Set(t[s].map((a)=>a.text)),r=e[s].filter((a)=>!o.has(a.text)&&!/TS(?:7006|7031)\b/u.test(a.text)),g=i[s].length>0?i[s]:t[s];n[s]=[...r,...g]}return n},Su=(e,t)=>{let i=(n)=>{let s=e.indexOf(`/* ${n}_START */`)+`/* ${n}_START */`.length+1,o=e.indexOf(`/* ${n}_END */`)-1;return t.filter((r)=>{if(!r.file||r.start==null)return!1;return r.start>=s&&r.start<=o}).map((r)=>{let g=Te.default.flattenDiagnosticMessageText(r.messageText,`
|
|
111
|
+
`),a=r.category===Te.default.DiagnosticCategory.Error?"error":"warning";Z(r.file&&r.start!=null,"Diagnostic location is missing");let{line:l,character:I}=r.file.getLineAndCharacterOfPosition(s),{line:d,character:p}=r.file.getLineAndCharacterOfPosition(r.start),c=d-l,m=d===l?p-I:p,C=r.file.text.split(/\r?\n/gu)[d]??"",u=" ".repeat(p)+"^".repeat(r.length&&r.length>0?r.length:1);return{severity:a,text:[`${c}:${m+1} - [${Te.default.DiagnosticCategory[r.category]}] TS${r.code}`,g,"",C,u].join(`
|
|
112
|
+
`)}})};return{data:i(tt.data),constants:i(tt.constants),preprocess:i(tt.preprocess),postprocess:i(tt.postprocess),code:i(tt.code)}},Fa=(e,t)=>{let i=[0];for(let a=0;a<e.length;a+=1)if(e[a]===`
|
|
113
|
+
`)i.push(a+1);let n=(a)=>{let l=0;while(l+1<i.length&&i[l+1]<=a)l+=1;return{line:l,character:a-i[l]}},s=e.split(/\r?\n/gu),o=uH.map(([a,l])=>({key:a,start:e.indexOf(`/* ${l}_START */`)+`/* ${l}_START */`.length+1,end:e.indexOf(`/* ${l}_END */`)-1})),r=(a)=>{let l=o.find((p)=>a>=p.start&&a<=p.end);if(l)return l;let d=o.filter((p)=>p.start<=a).at(-1)??o[0];return Z(d,"Task UI diagnostic block is missing"),d},g=mH();for(let a of t){let l=a.labels[0],I=l?.start??e.length,d=r(I),p=a.severity==="Error"?"error":"warning",{line:c,character:m}=n(d.start),{line:C,character:u}=n(I),A=C-c,b=C===c?u-m:u,W=s[C]??"",h=l?l.end-l.start:0,y=" ".repeat(u)+"^".repeat(h>0?h:1);g[d.key].push({severity:p,text:[`${A}:${b+1} - [${a.severity}]`,a.message,"",W,y].join(`
|
|
114
|
+
`)})}return g},Eu=({reactDeclaration:e,elementsDeclaration:t})=>({performTypeCheck:async(i)=>{let n=Yu(i),s=At.createDefaultMapFromNodeModules({target:Te.default.ScriptTarget.Latest},Te.default,CH);s.set("node_modules/@types/react/index.d.ts",e),s.set("node_modules/elements/index.d.ts",t),s.set(vi,n);let o=At.createSystem(s),{languageService:r}=At.createVirtualTypeScriptEnvironment(o,[vi],Te.default,{target:Te.default.ScriptTarget.Latest,allowNonTsExtensions:!0,ignoreDeprecations:"6.0",module:Te.default.ModuleKind.CommonJS,moduleResolution:Te.default.ModuleResolutionKind.Node10,noEmit:!0,typeRoots:["node_modules/@types"],jsx:Te.default.JsxEmit.React,jsxFactory:"React.createElement",noErrorTruncation:!0}),g=[],a=[];try{g=r.getSyntacticDiagnostics(vi),a=[...r.getSemanticDiagnostics(vi),...r.getSuggestionDiagnostics(vi),...r.getCompilerOptionsDiagnostics()]}finally{r.dispose()}let l=Su(n,g),I=Su(n,[...g,...a]),d=Nu(i),p=Fa(d,ro.parseSync("runtime.jsx",d).errors);return Xu(I,l,p)},performSyntaxCheck:(i)=>{let n=Yu(i),s=Fa(n,ro.parseSync(vi,n).errors),o=Nu(i),r=Fa(o,ro.parseSync("runtime.jsx",o).errors);return Xu(s,s,r)}}),Ha=()=>Eu({reactDeclaration:Xn.react.source,elementsDeclaration:Xn.elements.source});var ka=require("crypto"),ki=require("fs/promises"),Ou=require("path");var Tu="TOLOKA_CHECK_EVIDENCE_DIR",Pa="TOLOKA_CHECK_PIPELINE_FINGERPRINT",Ya="TOLOKA_CHECK_NODE_ID",Na="TOLOKA_CHECK_TYPED_ONLY",AH=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),ZH=(e)=>Array.isArray(e)&&e.every((t)=>typeof t==="string"),va=(e)=>{if(Array.isArray(e))return e.map(va);if(typeof e!=="object"||e===null)return e;return Object.fromEntries(Object.entries(e).toSorted(([t],[i])=>t.localeCompare(i)).map(([t,i])=>[t,va(i)]))},Xa=(e)=>ka.createHash("sha256").update(JSON.stringify(va(e))).digest("hex"),bH=(e,t)=>`[toloka:${e}:${t??"pipeline"}]`,Uu=(e)=>e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),zu=(e,t)=>t===void 0?Uu(`[toloka:${e}:`):Uu(bH(e,t));var WH=(e)=>e==="code"||e==="ui"||e==="pipeline",hH=(e)=>e==="passed"||e==="failed"||e==="infrastructure_error",fH=(e,t)=>{Z(AH(e),`Invalid test evidence ${t}`);let i=e;Z(i.version===1,`Unsupported test evidence version in ${t}`),Z(typeof i.pipelineFingerprint==="string",`Missing pipeline fingerprint in ${t}`),Z(WH(i.kind),`Invalid test evidence kind in ${t}`),Z(hH(i.status),`Invalid test evidence status in ${t}`),Z(typeof i.testName==="string",`Missing test name in ${t}`),Z(i.nodeId===void 0||typeof i.nodeId==="string",`Invalid node id in ${t}`),Z(i.diagnostic===void 0||typeof i.diagnostic==="string",`Invalid diagnostic in ${t}`),Z(i.partial===void 0||typeof i.partial==="boolean",`Invalid partial coverage in ${t}`),Z(i.untestedHardwareFields===void 0||ZH(i.untestedHardwareFields),`Invalid hardware fields in ${t}`);let n=i.untestedHardwareFields;return{version:1,pipelineFingerprint:i.pipelineFingerprint,kind:i.kind,status:i.status,testName:i.testName,...i.nodeId===void 0?{}:{nodeId:i.nodeId},...i.diagnostic===void 0?{}:{diagnostic:i.diagnostic},...i.partial===void 0?{}:{partial:i.partial},...n===void 0?{}:{untestedHardwareFields:n}}};var ju=async(e)=>{let i=(await ki.readdir(e,{withFileTypes:!0})).filter((n)=>n.isFile()&&n.name.endsWith(".json")).map((n)=>n.name).toSorted();return Promise.all(i.map(async(n)=>{let s=Ou.join(e,n),o;try{o=JSON.parse(await ki.readFile(s,"utf8"))}catch(r){throw Error(`Invalid test evidence ${s}`,{cause:r})}return fH(o,s)}))};var En=require("fs/promises"),pe=require("path"),Wm=require("url");var cm=be(Va(),1),Cm=be(lm(),1);var Im={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:{version:{type:"number",const:1},fields:{maxItems:500,type:"array",items:{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},name:{type:"string"},jsonSchema:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1,ref:"JsonSchema"}},required:["id","name","jsonSchema"],additionalProperties:!1}},nodes:{maxItems:500,type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"root"},settings:{type:"object",properties:{datasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},itemFilter:{type:"object",properties:{fieldValues:{default:[],type:"array",items:{type:"object",properties:{jsonPath:{type:"string",minLength:1},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},latestOnly:{default:!0,type:"boolean"},sources:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["jsonPath","operator","value","fieldId"],additionalProperties:!1}},fieldSources:{default:[],type:"array",items:{type:"object",properties:{fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},sources:{minItems:1,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["fieldId","sources"],additionalProperties:!1}},missingRevisionFields:{default:[],type:"array",items:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},createdBefore:{type:"string",format:"date-time",pattern:"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},additionalProperties:!1},itemLimit:{type:"integer",exclusiveMinimum:0,maximum:9007199254740991},startedFieldProxies:{type:"object",properties:{output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["output"]},completedFieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["startedFieldProxies","completedFieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"code"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}},output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input","output"]},code:{type:"object",properties:{code:{type:"string"}},required:["code"],additionalProperties:!1},envVars:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"static"},name:{type:"string"},value:{type:"string"}},required:["type","name","value"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"secret"},name:{type:"string"},secretName:{type:"string"}},required:["type","name","secretName"],additionalProperties:!1}]}},checks:{type:"object",propertyNames:{type:"string",enum:["code"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["code"]}},required:["about","fieldProxies","code"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"generation"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"human_only"},smartSamplingPercent:{default:100,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"hybrid"},smartSamplingPercent:{default:30,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]}]},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},oneOf:[{type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},{type:"object",properties:{audienceType:{type:"string",const:"synthetic"},generationModelId:{default:"gpt-5.6-terra",type:"string",enum:["gpt-5.4","gpt-5.4-mini","claude-sonnet-4-6","gemini-3.1-pro-preview","gemini-3.5-flash","claude-sonnet-5","gpt-5.6-terra","gpt-5.6-luna"]},reasoningEffort:{type:"string",enum:["low","medium","high"]},llmInstruction:{default:"",type:"string"},maxCostPerAttempt:{type:"number"}},required:["audienceType","maxCostPerAttempt"],additionalProperties:!1}]},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"match"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},conditions:{type:"array",items:{type:"object",properties:{name:{type:"string"},logic:{default:"and",type:"string",enum:["and","or"]},predicates:{type:"array",items:{type:"object",properties:{fieldProxyId:{type:"string"},jsonPath:{type:"string"},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]}},required:["fieldProxyId","jsonPath","operator","value"],additionalProperties:!1}}},required:["name","predicates"],additionalProperties:!1}},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["about","conditions","fieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"quorum"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},offboardingRules:{default:[],type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},type:{type:"string",enum:["mv_agreement"]},agreementScale:{type:"string"}},required:["id"],additionalProperties:!1}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"none"}},required:["qaMode"]}]},overlap:{type:"integer",minimum:1,maximum:100},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","overlap","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1}]}},connections:{maxItems:2000,type:"array",items:{type:"object",properties:{from:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},to:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},settings:{type:"object",properties:{},additionalProperties:{}}},required:["from","to","settings"],additionalProperties:!1}},layout:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"array",prefixItems:[{type:"number",description:"X"},{type:"number",description:"Y"}]},maxProperties:2},maxProperties:500}},required:["version","fields","nodes","connections"],additionalProperties:!1,$defs:{__schema0:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema1"}},__schema1:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1},__schema2:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema2"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema2"}}]},__schema3:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema3"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}}]},__schema4:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema4"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema4"}}]}}};var um=new cm.default({strict:!1});Cm.default(um);var dm=um.compile(Im),t5=(e)=>{let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return{path:typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/",reason:e.message??`failed ${e.keyword} validation`}};function Da(e){if(dm(e))return;let t=dm.errors;Z(t,"Pipeline graph validation failed without errors");let i=new Set,n=[];for(let s of t){let o=t5(s),r=`${o.path}
|
|
115
|
+
${o.reason}`;if(i.has(r))continue;i.add(r),n.push(o)}throw ui.fromIssues(n)}var i5=Symbol("fieldDefinition"),n5=Symbol.for("@toloka-platform/sdk/pipeline-definition"),pm=Symbol("portDefinition"),s5=Symbol("nodeFieldReferences");function Am(e,t){return{node:e,handle:t,direction:"input",[pm]:"input"}}function Zm(e,t){return{node:e,handle:t,direction:"output",[pm]:"output"}}function bm(e){return typeof e==="object"&&e!==null&&i5 in e}function Qa(e,t){if(bm(e)){t.push(e);return}if(Array.isArray(e)){for(let i of e)Qa(i,t);return}if(typeof e==="object"&&e!==null)for(let i of Object.values(e))Qa(i,t)}function o5(e){let t=[];return Qa(e,t),t}function mm(e){return bm(e)?{id:e.id,optional:!1}:{id:e.field.id,optional:e.optional??!1}}function r5(e,t={}){let i=t.id??"root",{started:n,completed:s,...o}=e;return{id:i,type:"root",settings:{...o,startedFieldProxies:{output:n.map(mm)},completedFieldProxies:{input:s.map(mm)}},started:Zm(i,"started"),completed:Am(i,"completed"),[s5]:o5(e)}}var FS=Object.assign(r5,{started:Zm("root","started"),completed:Am("root","completed")});function g5(e){return typeof e==="object"&&e!==null&&n5 in e}function lo(e){Z(g5(e),"Invalid pipeline definition: expected a value returned by definePipeline"),Z(e.dataset.length>0,"Dataset name must not be empty");for(let t of e.graph.nodes){if(t.type!=="root")continue;Z(!("datasetId"in t.settings),"An unresolved pipeline definition cannot contain a dataset id"),Z(!("itemFilter"in t.settings),"An unresolved pipeline definition cannot contain a dataset item filter")}Da(e.graph)}function Jn(e,t){let i={version:e.graph.version,fields:e.graph.fields.map((n)=>({...n})),nodes:e.graph.nodes.map((n)=>n.type==="root"?{...n,settings:{...n.settings,datasetId:t.datasetId}}:n),connections:e.graph.connections.map((n)=>({from:{...n.from},to:{...n.to},settings:{...n.settings}}))};return Da(i),i}var hm=async(e)=>{let t;try{t=await En.readdir(e,{withFileTypes:!0})}catch(n){if(n instanceof Error&&Reflect.get(n,"code")==="ENOENT")return[];throw n}let i=[];for(let n of t.toSorted((s,o)=>s.name.localeCompare(o.name))){let s=pe.join(e,n.name);if(n.isDirectory())i.push(...await hm(s));else if(n.isFile()&&n.name==="pipeline.ts")i.push(s)}return i},a5="toloka.json",l5=async(e)=>{try{return(await En.stat(pe.join(e,a5))).isFile()}catch{return!1}};async function fm(e){let t=pe.resolve(e);for(;;){if(await l5(t))return t;let i=pe.dirname(t);if(i===t)return;t=i}}async function Xi(e){let t=await hm(pe.join(e,"pipelines"));return{pipelines:(await Promise.all(t.map(async(n)=>{let s=await En.stat(n),o=Wm.pathToFileURL(n);o.searchParams.set("version",`${s.mtimeMs}-${s.size}`);let r=await import(o.href);Z(typeof r==="object"&&r!==null,`Invalid ${n}: expected a module`);let g=Reflect.get(r,"default");lo(g);let a=pe.relative(e,pe.dirname(n)).split(pe.sep).join("/");return{sourceDirectory:a,name:pe.basename(a),definition:g}}))).toSorted((n,s)=>n.sourceDirectory.localeCompare(s.sourceDirectory))}}var ym=5000,I5=65536,On="TOLOKA_INTERNAL_CHECK_RESULT_FILE",d5=(e)=>e.message.length<=ym?e:{...e,message:`${e.message.slice(0,ym)}
|
|
116
|
+
\u2026output truncated`},_a=20,Vm=async(e)=>{let t=[],i=0,n=!1;for await(let o of e){let r=Buffer.isBuffer(o)?o:Buffer.from(o),g=I5-i;if(g>0){let a=r.subarray(0,g);t.push(a),i+=a.length}if(r.length>g)n=!0}let s=Buffer.concat(t).toString("utf8");return n?`${s}
|
|
117
|
+
\u2026output truncated`:s},$a=async(e,t,i,n=process.env,s,o=process.execPath)=>{s?.throwIfAborted();let r=Fm.spawn(o,[t,...i],{cwd:e,env:n,stdio:["ignore","pipe","pipe"]}),g=()=>r.kill("SIGTERM");if(s?.addEventListener("abort",g,{once:!0}),s?.aborted===!0)g();try{let[a,l,I]=await Promise.all([vm.once(r,"close"),Vm(r.stdout),Vm(r.stderr)]),d=a[0];return typeof d==="number"?{exitCode:d,stdout:l,stderr:I}:{exitCode:2,stdout:l,stderr:[I,`Process terminated by ${String(a[1])}`].filter(Boolean).join(`
|
|
118
|
+
`),infrastructureError:!0}}finally{s?.removeEventListener("abort",g)}},km=(e,t,i)=>{let n=Hm.createRequire(Nt.join(e,"package.json"));return Nt.join(Nt.dirname(n.resolve(`${t}/package.json`)),i)},c5=async(e,t,i)=>{try{return await $a(e,km(e,"typescript","bin/tsc"),["--noEmit"],t,i)}catch(n){return{exitCode:2,stdout:"",stderr:`Unable to run project TypeScript: ${n instanceof Error?n.message:String(n)}. Install it with \`bun add --dev typescript\`.`,infrastructureError:!0}}},C5=(e)=>{if(e.exitCode===0)return e;let t=`${e.stderr}
|
|
119
|
+
${e.stdout}`;return/Local Task UI testing requires Playwright and Chromium|Unable to load the Task UI launcher|Cannot find (?:package|module).*playwright/iu.test(t)?{...e,infrastructureError:!0}:e},u5=async({sourceRoot:e,environment:t,signal:i})=>{try{let n=t[Pa],s=t[Na]==="1"&&n!==void 0?zu(n,t[Ya]):void 0;return C5(await $a(e,km(e,"vitest","vitest.mjs"),["run",...s===void 0?[]:["--testNamePattern",s]],t,i))}catch(n){return{exitCode:2,stdout:"",stderr:`Unable to run project Vitest: ${n instanceof Error?n.message:String(n)}. Install it with \`bun add --dev vitest playwright\`.`,infrastructureError:!0}}},m5=Ha(),p5=async(e,t)=>{let i=new Map([[process.env,process.env.POTATO_API_KEY],[t,t.POTATO_API_KEY]]);for(let n of i.keys())delete n.POTATO_API_KEY;try{return await Xi(e)}finally{for(let[n,s]of i)if(s===void 0)delete n.POTATO_API_KEY;else n.POTATO_API_KEY=s}},La={loadSource:p5,runTypeScript:c5,runVitest:u5,typecheckUi:(e)=>m5.performTypeCheck(e)},A5=(e)=>{if(typeof e!=="object"||e===null)return;let t=Reflect.get(e,"code"),i=Reflect.get(e,"data"),n=Reflect.get(e,"constants"),s=Reflect.get(e,"preprocess"),o=Reflect.get(e,"postprocess");if(typeof t!=="string"||typeof i!=="string"||typeof n!=="string"||typeof s!=="string"||o!==void 0&&typeof o!=="string")return;return{code:t,data:i,constants:n,preprocess:s,postprocess:o??"return {};"}},Z5=(e)=>{let t=Reflect.get(e.settings,"about"),i=typeof t==="object"&&t!==null?Reflect.get(t,"name"):void 0;return typeof i==="string"&&i.length>0?i:e.id},b5=(e)=>e.pipelines.map((t)=>({sourceDirectory:t.sourceDirectory,name:t.name,pipelineFingerprint:Xa(t.definition),nodes:t.definition.graph.nodes.filter((i)=>i.type==="code"||i.type==="generation"||i.type==="quorum").map((i)=>({id:i.id,name:Z5(i),kind:i.type==="code"?"code":"ui"})).toSorted((i,n)=>i.id.localeCompare(n.id))})),W5=(e,t,i)=>{let n=t===void 0?[...e]:e.filter((o)=>o.sourceDirectory===t||o.name===t||o.sourceDirectory.split("/").at(-1)===t);if(t!==void 0)Z(n.length>0,`Unknown pipeline ${JSON.stringify(t)}. Available: ${e.map((o)=>o.sourceDirectory).join(", ")}`),Z(n.length===1,`Pipeline selector ${JSON.stringify(t)} is ambiguous: ${n.map((o)=>o.sourceDirectory).join(", ")}`);if(i===void 0)return{pipelines:n};let s=n.flatMap((o)=>o.nodes.filter((r)=>r.id===i||r.name===i).map((r)=>({pipeline:o,node:r})));return Z(s.length===1,s.length===0?`Unknown checkable node ${JSON.stringify(i)}.`:`Node selector ${JSON.stringify(i)} is ambiguous across pipelines.`),{pipelines:[s[0].pipeline],nodeId:s[0].node.id}},Bm=(e,t={})=>{let i=/^(\d+):(\d+) - \[[^\]]+\](?: (TS\d+))?/u.exec(e);return{message:e,...t,...i===null?{}:{line:Number(i[1]),column:Number(i[2]),...i[3]===void 0?{}:{code:i[3]}}}},Io=(e)=>({diagnostics:e.slice(0,_a).map(d5),...e.length<=_a?{}:{truncatedDiagnosticCount:e.length-_a}}),Gm=(e,t)=>{let i=t.infrastructureError===!0?"infrastructure_error":t.exitCode===0?"passed":"failed",n=[t.stderr.trim(),t.stdout.trim()].filter(Boolean).join(`
|
|
120
|
+
`);return{scope:"project",kind:e,status:i,...Io(i==="passed"||n.length===0?[]:[{message:n}])}},h5=async(e,t,i,n)=>{let s=new Set(t.map((r)=>r.sourceDirectory)),o=[];for(let r of e.pipelines){let g=Xa(r.definition);if(!s.has(r.sourceDirectory))continue;for(let a of r.definition.graph.nodes){if(a.type!=="generation"&&a.type!=="quorum")continue;if(i!==void 0&&a.id!==i)continue;let l=A5(Reflect.get(a.settings,"ui"));if(l===void 0){o.push({scope:"node",kind:"ui-types",status:"failed",sourceDirectory:r.sourceDirectory,pipelineFingerprint:g,nodeId:a.id,diagnostics:[{message:"No labeling interface is configured on this node"}]});continue}let I;try{I=await n(l)}catch(p){o.push({scope:"node",kind:"ui-types",status:"infrastructure_error",sourceDirectory:r.sourceDirectory,pipelineFingerprint:g,nodeId:a.id,diagnostics:[{message:p instanceof Error?p.message:String(p)}]});continue}let d=Object.entries(I).flatMap(([p,c])=>c.map((m)=>Bm(m.text,{severity:m.severity,setting:p})));d.push(...wa(l).map((p)=>Bm(p.text,{severity:p.severity,setting:"postprocess"}))),o.push({scope:"node",kind:"ui-types",status:d.some((p)=>p.severity==="error")?"failed":"passed",sourceDirectory:r.sourceDirectory,pipelineFingerprint:g,nodeId:a.id,...Io(d)})}}return o},Rm=(e)=>{if(e.some((i)=>i.status==="infrastructure_error"))return{status:"infrastructure_error",...Io(e.filter((i)=>i.status==="infrastructure_error").map((i)=>({message:i.diagnostic??`Infrastructure error in ${i.testName}`})))};if(e.some((i)=>i.status==="failed"))return{status:"failed",...Io(e.filter((i)=>i.status==="failed").map((i)=>({message:i.diagnostic??`Failed test ${i.testName}`})))};let t=e.filter((i)=>i.status==="passed");if(t.length===0)return{status:"missing",diagnostics:[]};if(t.every((i)=>i.partial===!0))return{status:"partial",diagnostics:[{message:`Hardware-backed fields not fully covered: ${[...new Set(t.flatMap((i)=>i.untestedHardwareFields??[]))].join(", ")}`}]};return{status:"passed",diagnostics:[]}},wm=(e,t,i,n)=>e.filter((s)=>s.pipelineFingerprint===t.pipelineFingerprint&&s.kind===i&&(n===void 0||s.nodeId===n)),f5=(e,t,i)=>e.flatMap((n)=>{let s=[];for(let o of n.nodes){if(i!==void 0&&o.id!==i)continue;let r=o.kind==="code"?"code-test":"ui-test",g=o.kind==="code"?"code":"ui";s.push({scope:"node",kind:r,sourceDirectory:n.sourceDirectory,pipelineFingerprint:n.pipelineFingerprint,nodeId:o.id,...Rm(wm(t,n,g,o.id))})}if(i===void 0)s.push({scope:"pipeline",kind:"pipeline-flow",sourceDirectory:n.sourceDirectory,pipelineFingerprint:n.pipelineFingerprint,...Rm(wm(t,n,"pipeline"))});return s}),y5={passed:"PASS",failed:"FAIL",missing:"MISSING",partial:"PARTIAL",infrastructure_error:"ERROR"},V5=(e)=>[e.sourceDirectory,e.nodeId,e.kind].filter(Boolean).join("/"),B5=(e)=>{let t={project:0,pipeline:1,node:2};return[...e].toSorted((i,n)=>t[i.scope]-t[n.scope]||(i.sourceDirectory??"").localeCompare(n.sourceDirectory??"")||(i.nodeId??"").localeCompare(n.nodeId??"")||i.kind.localeCompare(n.kind))},G5=(e)=>e.message.split(`
|
|
121
|
+
`).map((t)=>` ${t}`),Un=(e)=>e.flatMap((t)=>[`${y5[t.status]} ${V5(t)}`,...t.diagnostics.flatMap(G5),...t.truncatedDiagnosticCount===void 0?[]:[` ${t.truncatedDiagnosticCount} more diagnostics not shown`]]).join(`
|
|
122
|
+
`),R5=(e)=>{if(e.some((t)=>t.status==="infrastructure_error"))return 2;if(e.some((t)=>t.status==="failed"||t.status==="missing"||t.status==="partial"))return 1;return 0};async function qa(e,t=La){let i;try{e.signal?.throwIfAborted(),i=await t.loadSource(e.sourceRoot,e.environment??process.env),e.signal?.throwIfAborted()}catch(o){let r=[{scope:"project",kind:"source",status:"failed",diagnostics:[{message:o instanceof Error?o.message:String(o)}]}];return{exitCode:1,results:r,output:e.json===!0?JSON.stringify({exitCode:1,results:r}):Un(r)}}if(i.pipelines.length===0){let o=[{scope:"project",kind:"source",status:"failed",diagnostics:[{message:`No pipeline source found under ${e.sourceRoot}/pipelines`}]}];return{exitCode:1,results:o,output:e.json===!0?JSON.stringify({exitCode:1,results:o}):Un(o)}}let n=W5(b5(i),e.pipeline,e.node),s=await Xt.mkdtemp(Nt.join(Ma.tmpdir(),"toloka-check-"));try{let o=n.pipelines.length===1?n.pipelines[0]:void 0,r={...e.environment??process.env};delete r.POTATO_API_KEY;let g={...r,[Tu]:s,...o===void 0?{}:{[Pa]:o.pipelineFingerprint},...n.nodeId===void 0?{}:{[Ya]:n.nodeId},...e.pipeline===void 0&&e.node===void 0?{}:{[Na]:"1"}},[a,l,I]=await Promise.all([t.runTypeScript(e.sourceRoot,r,e.signal),h5(i,n.pipelines,n.nodeId,t.typecheckUi),t.runVitest({sourceRoot:e.sourceRoot,evidenceDirectory:s,environment:g,inventory:n.pipelines,signal:e.signal})]),d=await ju(s),p=B5([{scope:"project",kind:"source",status:"passed",diagnostics:[]},Gm("project-types",a),...l,Gm("test-runner",I),...f5(n.pipelines,d,n.nodeId)]),c=R5(p);return{exitCode:c,results:p,source:i,output:e.json===!0?JSON.stringify({exitCode:c,results:p}):Un(p)}}catch(o){let r=[{scope:"project",kind:"test-runner",status:"infrastructure_error",diagnostics:[{message:o instanceof Error?o.message:String(o)}]}];return{exitCode:2,results:r,source:i,output:e.json===!0?JSON.stringify({exitCode:2,results:r}):Un(r)}}finally{await Xt.rm(s,{recursive:!0,force:!0})}}var w5=(e)=>{if(e===null)return!0;let t=e.toString();if(t.includes("node_modules/")||t.includes(".git/")||t.includes("test-results/")||t.includes("coverage/")||t.includes("dist/")||t.includes(".cache/")||t.includes(".toloka-check-project-")||t.includes(".toloka-project-")||t.includes(".pipeline-source-"))return!1;return/(?:^|\/)(?:package\.json|tsconfig[^/]*\.json)$/u.test(t)||/\.(?:ts|tsx|mts|cts|js|jsx|mjs|cjs|json|jsonl|csv)$/u.test(t)},F5=(e)=>e==="project"||e==="pipeline"||e==="node",H5=(e)=>e==="source"||e==="project-types"||e==="ui-types"||e==="code-test"||e==="ui-test"||e==="pipeline-flow"||e==="test-runner",v5=(e)=>e==="passed"||e==="failed"||e==="missing"||e==="partial"||e==="infrastructure_error",k5=(e)=>{Z(typeof e==="object"&&e!==null,"Fresh check returned invalid diagnostics");let t=Reflect.get(e,"message"),i=Reflect.get(e,"severity"),n=Reflect.get(e,"setting"),s=Reflect.get(e,"line"),o=Reflect.get(e,"column"),r=Reflect.get(e,"code");return Z(typeof t==="string","Fresh check diagnostic has no message"),Z(i===void 0||i==="error"||i==="warning","Fresh check diagnostic has invalid severity"),Z(n===void 0||typeof n==="string","Fresh check diagnostic has invalid setting"),Z(s===void 0||Number.isInteger(s),"Fresh check diagnostic has invalid line"),Z(o===void 0||Number.isInteger(o),"Fresh check diagnostic has invalid column"),Z(r===void 0||typeof r==="string","Fresh check diagnostic has invalid code"),{message:t,...i===void 0?{}:{severity:i},...n===void 0?{}:{setting:n},...s===void 0?{}:{line:Number(s)},...o===void 0?{}:{column:Number(o)},...r===void 0?{}:{code:r}}},P5=(e)=>{Z(typeof e==="object"&&e!==null,"Fresh check returned an invalid result");let t=Reflect.get(e,"scope"),i=Reflect.get(e,"kind"),n=Reflect.get(e,"status"),s=Reflect.get(e,"diagnostics"),o=Reflect.get(e,"sourceDirectory"),r=Reflect.get(e,"pipelineFingerprint"),g=Reflect.get(e,"nodeId"),a=Reflect.get(e,"truncatedDiagnosticCount");return Z(F5(t),"Fresh check returned an invalid scope"),Z(H5(i),"Fresh check returned an invalid kind"),Z(v5(n),"Fresh check returned an invalid status"),Z(Array.isArray(s),"Fresh check returned invalid diagnostics"),Z(o===void 0||typeof o==="string","Fresh check returned an invalid source directory"),Z(r===void 0||typeof r==="string","Fresh check returned an invalid pipeline fingerprint"),Z(g===void 0||typeof g==="string","Fresh check returned an invalid node id"),Z(a===void 0||Number.isInteger(a)&&Number(a)>=0,"Fresh check returned an invalid truncated count"),{scope:t,kind:i,status:n,diagnostics:s.map(k5),...o===void 0?{}:{sourceDirectory:o},...r===void 0?{}:{pipelineFingerprint:r},...g===void 0?{}:{nodeId:g},...a===void 0?{}:{truncatedDiagnosticCount:Number(a)}}},Y5=(e,t)=>{Z(typeof e==="object"&&e!==null,"Fresh check returned invalid JSON");let i=Reflect.get(e,"exitCode"),n=Reflect.get(e,"results");Z(i===0||i===1||i===2,"Fresh check returned an invalid exit code"),Z(Array.isArray(n),"Fresh check returned no results");let s=n.map(P5);return{exitCode:i,results:s,output:t?JSON.stringify({exitCode:i,results:s}):Un(s)}},el=async(e)=>{let t=Ka.fileURLToPath(new URL("./bin.ts","file:///Users/gzarip/code/potato-5/packages/sdk/src/cli/check.ts")),i=co.existsSync(t)?t:Ka.fileURLToPath("file:///Users/gzarip/code/potato-5/packages/sdk/src/cli/check.ts"),n=await Xt.mkdtemp(Nt.join(Ma.tmpdir(),"toloka-check-watch-result-")),s=Nt.join(n,"result.json"),o;try{return o=await $a(e.sourceRoot,i,["--source-root",e.sourceRoot,"check",...e.pipeline===void 0?[]:[e.pipeline],...e.node===void 0?[]:["--node",e.node],"--json"],{...process.env.PATH===void 0?{}:{PATH:process.env.PATH},...e.environment??process.env,[On]:s},e.signal,"bun"),Y5(JSON.parse(await Xt.readFile(s,"utf8")),e.json===!0)}catch(r){let g=[o?.stderr,o?.stdout,r instanceof Error?r.message:String(r)].filter(Boolean).join(`
|
|
123
|
+
`);throw Error(`Fresh check process returned unreadable output: ${g}`,{cause:r})}finally{await Xt.rm(n,{recursive:!0,force:!0})}};async function Pm(e,t,i=La,n){let{promise:s,resolve:o,reject:r}=Promise.withResolvers(),g=!1,a=!1,l=!1,I,d=()=>{if(l=!0,a=!1,clearTimeout(I),m.close(),!g)o()},p=(C)=>{clearTimeout(I),m.close(),r(C)},c=async()=>{if(g){a=!0;return}g=!0;try{do{a=!1;let C=i===La?await el({...e,signal:n}):await qa({...e,signal:n},i);if(!l)await t(C)}while(a&&n?.aborted!==!0)}catch(C){if(!l)p(C)}finally{if(g=!1,l)o()}},m=co.watch(e.sourceRoot,{recursive:!0},(C,u)=>{if(!w5(u))return;if(a=!0,g)return;clearTimeout(I),I=setTimeout(()=>void c(),100)});if(m.once("error",p),n?.aborted===!0)d();else n?.addEventListener("abort",d,{once:!0}),c();try{await s}finally{n?.removeEventListener("abort",d)}}var Ae=require("fs/promises"),Xm=require("os"),Si=require("path");class Tn extends Error{constructor(e,t){super(e,t);this.name="CredentialsError"}}var Sm=(e)=>e.HOME??Xm.homedir(),N5=(e)=>e.XDG_CONFIG_HOME??Si.join(Sm(e),".config"),je=(e=process.env)=>e.TOLOKA_CREDENTIALS_FILE??Si.join(N5(e),"toloka","credentials.json"),xm=(e=process.env)=>Si.join(Sm(e),".toloka","credentials.json"),Ym=(e)=>{let t=e.length;while(t>0&&e.charCodeAt(t-1)===47)t-=1;return t===e.length?e:e.slice(0,t)},Zt=(e)=>{let t=Ym(e.trim());try{let i=new URL(t);return i.hash="",i.search="",Ym(i.toString())}catch{return t}},Co=(e,t)=>typeof e==="object"&&e!==null?Reflect.get(e,t):void 0,X5=(e)=>{if(typeof e!=="object"||e===null)return;let t=Reflect.get(e,"id");if(typeof t!=="string"||t.length===0)return;let i=Reflect.get(e,"name");if(i!==void 0&&typeof i!=="string")return;return i===void 0?{id:t}:{id:t,name:i}},S5=(e)=>{if(e===void 0||typeof e!=="object"||e===null||Array.isArray(e))return;let t=Object.create(null);for(let[i,n]of Object.entries(e)){if(i.length===0)return;let s=X5(n);if(s===void 0)return;Object.defineProperty(t,i,{value:s,writable:!0,enumerable:!0,configurable:!0})}return t},x5=(e,t)=>{let i=S5(e);if(i===void 0)return;if(typeof t==="string"){if(t.length===0||!Object.hasOwn(i,t))return;return{current:t,projects:i}}if(t!==void 0)return;return Object.keys(i).length===0?{}:{projects:i}},J5=(e)=>{let t=Co(e,"baseUrl"),i=Co(e,"apiKey");if(typeof t!=="string"||t.length===0)return;if(typeof i!=="string"||i.length===0)return;let n=Co(e,"current"),s=Co(e,"projects");if(n===void 0&&s===void 0)return{baseUrl:t,apiKey:i};let o=x5(s,n);if(o===void 0)return;return{baseUrl:t,apiKey:i,...o}};async function uo(e){let t;try{t=await Ae.readFile(e,"utf8")}catch(i){if(i instanceof Error&&"code"in i&&i.code==="ENOENT")return"missing";return"invalid"}try{let i=J5(JSON.parse(t));return i===void 0?"invalid":{credentials:i}}catch{return"invalid"}}async function tl(e=process.env){let t=je(e),i=await uo(t);if(i!=="missing"){if(i==="invalid")throw new Tn(`Invalid credentials file at ${t}. Run toloka logout, then toloka login.`);return{credentials:i.credentials,path:t,legacy:!1}}if(e.TOLOKA_CREDENTIALS_FILE!==void 0)return;let n=xm(e),s=await uo(n);if(s==="missing")return;if(s==="invalid")throw new Tn(`Invalid credentials file at ${n}. Run toloka logout, then toloka login.`);return{credentials:s.credentials,path:n,legacy:!0}}async function zn(e,t){try{return{found:await tl(e)}}catch(i){if(!(i instanceof Tn)||t===void 0)throw i;return{found:void 0,warning:i.message}}}async function Jm(e=process.env){return(await tl(e))?.credentials}async function St(e=process.env){let t=await tl(e);if(t!==void 0)return t;throw new Tn(`No stored credentials found at ${je(e)}. Run toloka login.`)}var E5=(e)=>{let t=e.projects,i=t!==void 0&&Object.keys(t).length>0;return{baseUrl:e.baseUrl,apiKey:e.apiKey,...e.current===void 0?{}:{current:e.current},...i?{projects:t}:{}}},Nm=async(e)=>{try{let t=await Ae.lstat(e);Z(!t.isSymbolicLink(),`Refusing to write through symbolic link ${e}.`)}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return;throw t}};async function il(e){let t=Si.dirname(e);await Nm(t),await Nm(e),await Ae.mkdir(t,{recursive:!0,mode:448}),await Ae.chmod(t,448)}async function mo(e,t=process.env){let i=je(t);return await il(i),await Ae.writeFile(i,`${JSON.stringify(E5(e),null,2)}
|
|
124
|
+
`,{mode:384}),await Ae.chmod(i,384),i}var U5=async(e)=>{try{return await Ae.stat(e),!0}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return!1;throw t}};async function Em(e=process.env){let t=[],i=[je(e),...e.TOLOKA_CREDENTIALS_FILE===void 0?[xm(e)]:[]];for(let n of i){if(!await U5(n))continue;await Ae.rm(n,{force:!0}),t.push(n)}return t}var O5=16,Um=(e)=>e.length>O5?`${e.slice(0,4)}${"*".repeat(e.length-8)}${e.slice(-4)}`:"*".repeat(e.length);var M="Missing project ID. Pass --project-id, set TOLOKA_PROJECT_ID, set projectId in toloka.json, or run toloka project add.",T5="No project selected. Run toloka project add, or cd into a checkout.",Om="project add writes the machine registry; unset --api-key / --base-url / POTATO_API_KEY / POTATO_BASE_URL, or run login against that platform first.",z5=/^[^/\s]+$/u,po=(e)=>{let t=e.trim();return Z(t.length>0&&z5.test(t),"Project alias must be non-empty and contain no / or whitespace."),t},Ze=(e)=>{if(e===void 0)return;let t=e.trim();return t.length===0?void 0:t},j5=(e,t,i)=>Ze(e?.baseUrl)??Ze(t?.POTATO_BASE_URL)??bt(t??{})??Ze(i?.baseUrl),jn=(e,t)=>e!==void 0&&Object.hasOwn(e,t)?e[t]:void 0,D5=(e,t,i)=>{if(!i||t?.projects===void 0)return{};if(t.current!==void 0){let n=jn(t.projects,t.current);if(n?.id===e)return n.name===void 0?{alias:t.current}:{alias:t.current,name:n.name}}for(let n of Object.keys(t.projects).toSorted()){let s=jn(t.projects,n);if(s?.id!==e)continue;return s.name===void 0?{alias:n}:{alias:n,name:s.name}}return{}};function xi(e={}){let t=e.flags??{},i=e.environment??{},n=e.stored,s=e.effectiveBaseUrl??j5(t,i,n),o=n!==void 0&&s!==void 0&&Zt(s)===Zt(n.baseUrl),g=[{id:Ze(t.projectId),source:"flag"},{id:Ze(i.TOLOKA_PROJECT_ID),source:"toloka-project-id"},{id:Ze(i.POTATO_PROJECT_ID),source:"potato-project-id"},{id:Ze(e.state?.projectId),source:"toloka.json"},{id:o&&n.current!==void 0?Ze(n.projects?.[n.current]?.id):void 0,source:"registry"}].find((a)=>a.id!==void 0);if(g?.id===void 0)return;return{id:g.id,source:g.source,...D5(g.id,n,o)}}var sl=(e,t)=>{if(e===void 0)return"Project: (none). Run toloka project add.";let i=e.alias===void 0?"":`alias ${e.alias}, `,n=e.source!=="registry"&&t?.current!==void 0?`; registry current is ${t.current}`:"";return`Project: ${e.id} (${i}from ${e.source}${n})`},Ao=(e,t,i)=>{let n=Ze(e.apiKey)??Ze(t.POTATO_API_KEY),s=Ze(e.baseUrl)??Ze(t.POTATO_BASE_URL)??bt(t);Z(n===void 0||n===i.apiKey,Om),Z(s===void 0||Zt(s)===Zt(i.baseUrl),Om)},Zo=async(e,t)=>{await mo(e,t)},Tm=(e,t,i)=>{let n=Object.assign(Object.create(null),e.projects??{},{[t]:i.name===void 0?{id:i.id}:i});return{...e,current:t,projects:n}},nl=async(e,t,i)=>{Z(e?.prompt,i);let n=(await e.prompt(t)).trim();return Z(n.length>0,i),n};async function zm(e){let t=e.limit??20,i=await e.client.projects.listPage({limit:t}),n=i.projects.map((o)=>{let r=e.context?.id===o.id?"*":" ",g=e.context?.id===o.id&&e.context.alias!==void 0?` ${e.context.alias}`:"";return`${r} ${o.id} ${o.name}${g}`});if(i.pagination.hasMore)n.push(`Showing ${i.projects.length} of ${i.pagination.total} projects. Raise --limit to see more.`);let s=n.length===0?"No projects visible.":n.join(`
|
|
125
|
+
`);return e.io.stdout(s),{output:s}}async function jm(e){let t=await St(e.environment);Ao(e.flags??{},e.environment,t.credentials);let i=po(e.alias??await nl(e.io,"Alias: ","Missing project alias. Pass an alias or run this in a terminal.")),n=Ze(e.projectId)??await nl(e.io,"Project id: ","Missing project ID. Pass a project id or run this in a terminal."),s=jn(t.credentials.projects,i);Z(s===void 0||s.id===n,`Alias ${i} already points at ${s?.id}. Run toloka project remove ${i} first.`),await e.afterPreflight?.();let o=await e.client.projects.get({projectId:n});await Zo(Tm(t.credentials,i,{id:o.id,name:o.name}),e.environment);let r=`Using project ${o.id} as ${i}.`;return e.io?.stdout(r),{output:r,alias:i,projectId:o.id}}async function Dm(e){let t=await St(e.environment);Ao(e.flags??{},e.environment,t.credentials);let i=po(e.alias),n=jn(t.credentials.projects,i);Z(n,`Unknown project alias ${i}.`),await Zo({...t.credentials,current:i},e.environment);let s=`Using project ${n.id} as ${i}.`;return e.io?.stdout(s),{output:s}}async function Qm(e){let t=await St(e.environment);Ao(e.flags??{},e.environment,t.credentials);let i=po(e.alias),n=Object.assign(Object.create(null),t.credentials.projects??{});Z(jn(n,i),`Unknown project alias ${i}.`),delete n[i];let s=t.credentials.current===i?void 0:t.credentials.current;await Zo({baseUrl:t.credentials.baseUrl,apiKey:t.credentials.apiKey,...s===void 0?{}:{current:s},...Object.keys(n).length===0?{}:{projects:n}},e.environment);let o=`Removed local alias ${i}.`;return e.io?.stdout(o),{output:o}}function _m(e){let t=xi(e),i=t===void 0?T5:sl(t,e.stored);return e.io?.stdout(i),t===void 0?{output:i}:{output:i,project:t}}var Q5=(e)=>{let t=[...new Set(e.map((i)=>i.teamId))];return t.length===1?t[0]:void 0},_5=async(e,t)=>{let i=Ze(t);if(i!==void 0)return i;let n=[];for await(let o of e.projects.listAll())n.push(o);let s=Q5(n);return Z(s,"Missing team id. Pass --team-id. Visible projects do not share a single team, or none are visible."),s},K5=async(e,t,i,n)=>{if(t===void 0){try{await Kt(e,{projectId:i.id,pipelines:{},datasets:{}})}catch(s){let o=s instanceof Error?s.message:String(s);throw Error([`Created project ${i.id} as ${n}.`,`Failed to write toloka.json: ${o}`].join(`
|
|
126
|
+
`),{cause:s})}return}if(t.projectId===i.id)return;return`Checkout still uses ${t.projectId}; it overrides the new registry current.`};async function Km(e){let t=await St(e.environment);Ao(e.flags??{},e.environment,t.credentials);let i=po(e.alias??await nl(e.io,"Alias: ","Missing project alias. Pass an alias or run this in a terminal."));Z(t.credentials.projects?.[i]===void 0,`Alias ${i} already exists. Run toloka project remove ${i} first.`);let n=e.sourceRoot===void 0?void 0:await Ge(e.sourceRoot);await e.afterPreflight?.();let s=await _5(e.client,e.teamId),o=await e.client.projects.create({teamId:s,name:Ze(e.name)??i});try{await Zo(Tm(t.credentials,i,{id:o.id,name:o.name}),e.environment)}catch(a){let l=a instanceof Error?a.message:String(a);throw Error([`Created ${o.id} but failed to update the local registry: ${l}`,`Run: toloka project add ${i} ${o.id}`].join(`
|
|
127
|
+
`),{cause:a})}let r=[`Created project ${o.id} as ${i}.`];if(e.sourceRoot!==void 0){let a=await K5(e.sourceRoot,n,o,i);if(a!==void 0)r.push(a)}let g=r.join(`
|
|
128
|
+
`);return e.io?.stdout(g),{output:g,projectId:o.id,alias:i}}var Mt="https://platform.toloka.ai",L5=/^(?:prestable|pr-\d+)$/u,bt=(e)=>{let t=e.ENV?.trim();if(t===void 0||!L5.test(t))return;return`https://${t}.platform.toloka-test.ai`},M5="https://console.toloka.ai",$5="https://prestable.console.toloka-test.ai",Lm=(e)=>{let t;try{t=new URL(e).host}catch{return}if(t==="platform.toloka.ai")return M5;if(t.endsWith(".platform.toloka-test.ai"))return $5;return},q5=["Missing API key. Run toloka login once to store credentials for this machine:",""," toloka login","","It explains how to generate an API key and where it is saved. To override per command,","pass --api-key or set POTATO_API_KEY. Run toloka auth-status to see what is in effect."].join(`
|
|
129
|
+
`);function ol(e,t,i,n){let s=e.apiKey??i.POTATO_API_KEY??n?.apiKey,o=e.baseUrl??i.POTATO_BASE_URL??bt(i)??n?.baseUrl??Mt,r=xi({flags:e,state:t,environment:i,stored:n,effectiveBaseUrl:o});return Z(s,q5),{apiKey:s,baseUrl:o,...r===void 0?{}:{projectId:r.id}}}var ev=(e)=>{let t=Lm(e);return[...t===void 0?[`An API key identifies you to ${e}. Generate one in the console that`,"serves this platform, under Company -> API Keys -> Generate API Key."]:[`An API key identifies you to ${e}. To generate one:`,"",` 1. open ${t}`," 2. go to Company -> API Keys"," 3. press Generate API Key and copy it"],"","The key is shown once. Treat it like a password: it is stored with owner-only","permissions and never printed back to you."].join(`
|
|
130
|
+
`)};async function Mm(e={}){let t=e.environment??process.env,i=e.write??(()=>{return}),n=Zt(e.baseUrl??t.POTATO_BASE_URL??bt(t)??Mt),s=e.apiKey;if(s===void 0)Z(e.prompt,"Missing API key. Pass --api-key, or set POTATO_API_KEY, when stdin is not a terminal."),i(`
|
|
131
|
+
${ev(n)}
|
|
132
|
+
`),s=(await e.prompt("API key: ",{mask:!0})).trim();Z(s.length>0,"No API key entered.");let o={baseUrl:n,apiKey:s},r=e.probe?.(o)??Ct(o),g;try{let p=await r.projects.listPage({limit:1});g=`Authenticated against ${n}: ${p.pagination.total} project(s) visible.`}catch(p){let c=p instanceof Error?p.message:String(p);throw Error([`Could not authenticate against ${n}: ${c}`,"","Nothing was saved. Check that the key was copied whole and has not been revoked."].join(`
|
|
133
|
+
`),{cause:p})}let a=je(t),l=await uo(a),I=typeof l==="object"&&Zt(l.credentials.baseUrl)===Zt(n)?{baseUrl:n,apiKey:s,...l.credentials.current===void 0?{}:{current:l.credentials.current},...l.credentials.projects===void 0?{}:{projects:l.credentials.projects}}:o,d=await mo(I,t);return{credentialsFile:d,baseUrl:n,output:[g,`Saved credentials to ${d}.`,"","toloka reads them automatically. --api-key and POTATO_API_KEY still win when set."].join(`
|
|
134
|
+
`)}}async function $m(e=process.env){let t=await Em(e);return{removed:t,output:t.length===0?`No stored credentials found at ${je(e)}.`:`Removed ${t.join(", ")}.
|
|
135
|
+
|
|
136
|
+
This does not revoke the key. Delete it in console.toloka.ai to do that.`}}var qm=(e)=>e.find((t)=>t!==void 0),tv=(e,t,i,n)=>qm([e.flagApiKey===void 0?void 0:{value:e.flagApiKey,source:"from --api-key"},t.POTATO_API_KEY===void 0?void 0:{value:t.POTATO_API_KEY,source:"from POTATO_API_KEY"},i===void 0?void 0:{value:i.credentials.apiKey,source:`stored in ${n}`}]),iv=(e,t,i)=>{let n=bt(t);return qm([e.flagBaseUrl===void 0?void 0:{value:e.flagBaseUrl.replace(/\/+$/u,""),source:"from --base-url"},t.POTATO_BASE_URL===void 0?void 0:{value:t.POTATO_BASE_URL,source:"from POTATO_BASE_URL"},n===void 0?void 0:{value:n,source:`from ENV=${t.ENV}`},i===void 0?void 0:{value:i.credentials.baseUrl,source:"stored"}])??{value:Mt,source:"default"}};async function ep(e={}){let t=e.environment??process.env,i=e.credentialLookup??await zn(t,e.flagApiKey??t.POTATO_API_KEY),{found:n,warning:s}=i,o=n?.path??je(t),r=tv(e,t,n,o),g=iv(e,t,n),a=sl(e.project,n?.credentials),l=s===void 0?[]:[s,""];if(r===void 0)return l.push("Not logged in.","","Run toloka login to store an API key for this machine.","",a),{authenticated:!1,output:l.join(`
|
|
137
|
+
`)};let{value:I,source:d}=g;if(l.push(`Platform: ${I} (${d})`,`API key: ${e.showToken===!0?r.value:Um(r.value)} (${r.source})`,a),t.POTATO_API_KEY!==void 0&&n!==void 0)l.push("",`POTATO_API_KEY is set, so the key stored in ${n.path} is ignored.`);if(n?.legacy===!0)l.push("",`Credentials still live at the old path ${n.path}. Run toloka login to move them to ${je(t)}.`);let p=e.probe?.({baseUrl:I,apiKey:r.value})??Ct({baseUrl:I,apiKey:r.value});try{let c=await p.projects.listPage({limit:1});return l.push("",`Reachable: ${c.pagination.total} project(s) visible.`),{authenticated:!0,output:l.join(`
|
|
138
|
+
`)}}catch(c){let m=c instanceof Error?c.message:String(c);return l.push("",`Not reachable: ${m}`,"","Run toloka login to store a working key."),{authenticated:!1,output:l.join(`
|
|
139
|
+
`)}}}var oZ=require("crypto"),oi=require("fs/promises"),Qo=require("path");var Ji=require("path");function ip(){let e=nv();return async(t)=>{for(let i of t)i.module=e(i.filename);return t}}function nv(e=process.argv[1]?Ji.dirname(process.argv[1]):process.cwd(),t=Ji.sep==="\\"){let i=t?tp(e):e;return(n)=>{if(!n)return;let s=t?tp(n):n,{dir:o,base:r,ext:g}=Ji.posix.parse(s);if(g===".js"||g===".mjs"||g===".cjs")r=r.slice(0,-1*g.length);let a=decodeURIComponent(r);if(!o)o=".";let l=o.lastIndexOf("/node_modules");if(l>-1)return`${o.slice(l+14).replace(/\//g,".")}:${a}`;if(o.startsWith(i)){let I=o.slice(i.length+1).replace(/\//g,".");return I?`${I}:${a}`:a}return a}}function tp(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var rl=(e)=>{if("flags"in e){let t=np(e.flags),i=sp(e.flags);return{...e,featureFlags:t,featureFlagPayloads:i}}{let t=e.featureFlags??{},i=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([s,o])=>[s,bo(o)])),n=Object.fromEntries(Object.entries(t).map(([s,o])=>[s,sv(s,o,i[s])]));return{...e,featureFlags:t,featureFlagPayloads:i,flags:n}}};function sv(e,t,i){return{key:e,enabled:typeof t=="string"?!0:t,variant:typeof t=="string"?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:i?JSON.stringify(i):void 0,description:void 0}}}var np=(e)=>Object.fromEntries(Object.entries(e??{}).map(([t,i])=>[t,Dn(i)]).filter(([,t])=>t!==void 0)),sp=(e)=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter((i)=>{let n=t[i];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map((i)=>{let n=t[i].metadata?.payload;return[i,n?bo(n):void 0]}))},Dn=(e)=>e===void 0?void 0:e.variant??e.enabled,bo=(e)=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var ov=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],Qn=(e,t=[])=>{let i={},n=(s)=>{if(e[s]!==void 0)i[s]=e[s]};return ov.forEach(n),t.forEach(n),i};var Re=function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.AiQueue="ai_queue",e.LogsQueue="logs_queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e}({});function gl(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var gv="NativeGzipValidationError",av=31,lv=139,Iv=8,dv=(e)=>e.length>=2&&e[0]===av&&e[1]===lv;var _n,cv=()=>{if(_n)return _n;_n=[];for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;_n[e]=t>>>0}return _n},Cv=(e)=>{let t=cv(),i=4294967295;for(let n=0;n<e.length;n++)i=t[(i^e[n])&255]^i>>>8;return(4294967295^i)>>>0},Wo=(e)=>{let t=Error(`Native gzip produced invalid output: ${e}`);throw t.name=gv,t},uv=async(e,t)=>{if(e.size<18)Wo("too-short");let i=new Uint8Array(await e.slice(0,10).arrayBuffer());if(!dv(i)||i[2]!==Iv)Wo("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());if(n.getUint32(0,!0)!==Cv(t))Wo("invalid-crc");let s=t.length>>>0;if(n.getUint32(4,!0)!==s)Wo("invalid-size")};async function $t(e,t=!0,i){try{let n=new TextEncoder().encode(e),s=new globalThis.CompressionStream("gzip"),o=s.writable.getWriter(),r=o.write(n).then(()=>o.close()).catch(async(l)=>{try{await o.abort(l)}catch{}throw l}),g=new Response(s.readable).blob(),[a]=await Promise.all([g,r]);return await uv(a,n),a}catch(n){if(i?.rethrow)throw n;if(t)console.error("Failed to gzip compress data",n);return null}}var mv=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],op=function(e,t=[]){if(!e)return!1;let i=e.toLowerCase();return mv.concat(t).some((n)=>{let s=n.toLowerCase();return i.indexOf(s)!==-1})};function Ei(e){let t=[];return JSON.stringify(e,function(i,n){if(typeof n=="bigint")return n.toString();if(typeof n=="function"||typeof n=="symbol")return;if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){while(t.length>0&&t[t.length-1]!==this)t.pop();if(t.includes(n))return"[Circular]";t.push(n)}return n})??"null"}var Av=Array.isArray,rp=Object.prototype,c2=rp.hasOwnProperty,ho=rp.toString,st=Av||function(e){return ho.call(e)==="[object Array]"};var Kn=(e)=>e===Object(e)&&!st(e);var qt=(e)=>e===void 0,Wt=(e)=>ho.call(e)=="[object String]",gp=(e)=>Wt(e)&&e.trim().length===0,ap=(e)=>e===null;var Ln=(e)=>ho.call(e)=="[object Number]"&&e===e;var lp=(e)=>ho.call(e)==="[object Boolean]";var Ip=(e)=>e instanceof Error;function fo(e){return e===null||typeof e!="object"}function ei(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function dp(e){return ei(e,"ErrorEvent")}function Ui(e){return typeof Event<"u"&&Zv(e,Event)}function cp(e){return ei(e,"Object")}function Zv(e,t){try{return e instanceof t}catch{return!1}}function Mn(e,t,i,n,s){if(t>i)n.warn("min cannot be greater than max."),t=i;if(Ln(e))if(e>i)return n.warn(" cannot be greater than max: "+i+". Using max value instead."),i;else{if(!(e<t))return e;return n.warn(" cannot be less than min: "+t+". Using min value instead."),t}return n.warn(" must be a number. using max or fallback. max: "+i+", fallback: "+s),Mn(s||i,t,i,n)}var bv=86400000,Wv=1,hv=10;function Cp(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??Wv,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??hv}}class al{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=Mn(e.bucketSize,0,100,e._logger),this._refillRate=Mn(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=Mn(e.refillInterval,0,bv,e._logger)}_applyRefill(e,t){let i=t-e.lastAccess,n=Math.floor(i/this._refillInterval);if(n>0){let s=n*this._refillRate;e.tokens=Math.min(e.tokens+s,this._bucketSize),e.lastAccess=e.lastAccess+n*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),i=String(e),n=this._buckets[i];if(n)this._applyRefill(n,t);else n={tokens:this._bucketSize,lastAccess:t},this._buckets[i]=n;if(n.tokens===0)return!0;if(n.tokens--,n.tokens===0)this._onBucketRateLimited?.(e);return n.tokens===0}stop(){this._buckets={}}}/*! For license information please see uuidv7.mjs.LICENSE.txt */class ti{constructor(e){this.bytes=e}static ofInner(e){if(e.length===16)return new ti(e);throw TypeError("not 128-bit length")}static fromFieldsV7(e,t,i,n){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(i)||!Number.isInteger(n)||e<0||t<0||i<0||n<0||e>281474976710655||t>4095||i>1073741823||n>4294967295)throw RangeError("invalid field value");let s=new Uint8Array(16);return s[0]=e/1099511627776,s[1]=e/4294967296,s[2]=e/16777216,s[3]=e/65536,s[4]=e/256,s[5]=e,s[6]=112|t>>>8,s[7]=t,s[8]=128|i>>>24,s[9]=i>>>16,s[10]=i>>>8,s[11]=i,s[12]=n>>>24,s[13]=n>>>16,s[14]=n>>>8,s[15]=n,new ti(s)}static parse(e){let t;switch(e.length){case 32:t=/^[0-9a-f]{32}$/i.exec(e)?.[0];break;case 36:t=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;case 38:t=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(e)?.slice(1,6).join("");break;case 45:t=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(e)?.slice(1,6).join("");break;default:break}if(t){let i=new Uint8Array(16);for(let n=0;n<16;n+=4){let s=parseInt(t.substring(2*n,2*n+8),16);i[n+0]=s>>>24,i[n+1]=s>>>16,i[n+2]=s>>>8,i[n+3]=s}return new ti(i)}throw SyntaxError("could not parse UUID string")}toString(){let e="";for(let t=0;t<this.bytes.length;t++)if(e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]),t===3||t===5||t===7||t===9)e+="-";return e}toHex(){let e="";for(let t=0;t<this.bytes.length;t++)e+="0123456789abcdef".charAt(this.bytes[t]>>>4),e+="0123456789abcdef".charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error("unreachable");if(e<=7)return this.bytes.every((t)=>t===0)?"NIL":"VAR_0";if(e<=11)return"VAR_10";if(e<=13)return"VAR_110";if(e<=15)return this.bytes.every((t)=>t===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new ti(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(let t=0;t<16;t++){let i=this.bytes[t]-e.bytes[t];if(i!==0)return Math.sign(i)}return 0}}class mp{constructor(e){this.timestamp=0,this.counter=0,this.random=e??fv()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let i=this.generateOrAbortCore(e,t);if(i===void 0)this.timestamp=0,i=this.generateOrAbortCore(e,t);return i}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return ti.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,ti.ofInner(e)}}var fv=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),up,we=()=>yv().toString(),yv=()=>(up||(up=new mp)).generate();class ll{add(e){let t=we(),i=++this.nextId;return this.promiseByIds[t]={id:i,promise:e},e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds).map((i)=>i.promise),t=e.length;while(t>0)await Promise.all(e),e=Object.values(this.promiseByIds).map((i)=>i.promise),t=e.length}getPromises(e=[],t=this.nextId){let i=new Set(e);return Object.values(this.promiseByIds).filter((n)=>n.id<=t&&!i.has(n.promise)).map((n)=>n.promise)}get maxId(){return this.nextId}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={},this.nextId=0}}function Vv(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var pp=(e,t,i)=>{function n(o,...r){t(()=>{let g=i[o];g(e,...r)})}return{debug:(...o)=>{n("debug",...o)},info:(...o)=>{n("log",...o)},warn:(...o)=>{n("warn",...o)},error:(...o)=>{n("error",...o)},critical:(...o)=>{i.error(e,...o)},createLogger:(o)=>pp(`${e} ${o}`,t,i)}},Bv=(e)=>e();function Ap(e,t=Bv){return pp(e,t,Vv())}var Ti="Mobile",Vo="iOS",Oi="Android",fp="Tablet",V2=Oi+" "+fp;var Rv="Apple",B2=Rv+" Watch",yp="Safari",Bo="BlackBerry",Vp="Samsung",wv=Vp+"Browser",Fv=Vp+" Internet",Go="Chrome",Hv=Go+" OS",vv=Go+" "+Vo,Bp="Internet Explorer",kv=Bp+" "+Ti,dl="Opera",G2=dl+" Mini",Gp="Edge",Pv="Microsoft "+Gp,cl="Firefox",Yv=cl+" "+Vo,Cl="Nintendo",ul="PlayStation",yo="Xbox",Nv=Oi+" "+Ti,Xv=Ti+" "+yp,$n="Windows",Sv=$n+" Phone";var Rp="Generic",R2=Rp+" "+Ti.toLowerCase(),w2=Rp+" "+fp.toLowerCase(),xv="Konqueror",Jv="Oculus Browser",Zp="Vivaldi",Ev="Yandex",bp="Whale",Uv="DuckDuckGo",Ov="Pale Moon",Wp="Waterfox",hp="Brave",Tv="Google Search App",_="(\\d+(\\.\\d+)?)",Il=new RegExp("Version/"+_);var F2=new RegExp(yo,"i"),H2=new RegExp(ul+" \\w+","i"),v2=new RegExp(Cl+" \\w+","i"),zv=new RegExp(Bo+"|PlayBook|BB10","i"),jv={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"};var k2={[kv]:[new RegExp("rv:"+_)],[Pv]:[new RegExp(Gp+"?\\/"+_)],[Go]:[new RegExp("("+Go+"|CrMo)\\/"+_)],[vv]:[new RegExp("CriOS\\/"+_)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+_)],[yp]:[Il],[Xv]:[Il],[dl]:[new RegExp("("+dl+"|OPR)\\/"+_)],[cl]:[new RegExp(cl+"\\/"+_)],[Yv]:[new RegExp("FxiOS\\/"+_)],[xv]:[new RegExp("Konqueror[:/]?"+_,"i")],[Bo]:[new RegExp(Bo+" "+_),Il],[Nv]:[new RegExp("android\\s"+_,"i")],[Fv]:[new RegExp(wv+"\\/"+_)],[Jv]:[new RegExp("OculusBrowser\\/"+_)],[Zp]:[new RegExp(Zp+"\\/"+_)],[Ev]:[new RegExp("YaBrowser\\/"+_)],[bp]:[new RegExp(bp+"\\/"+_)],[hp]:[new RegExp(hp+"\\/"+_)],[Uv]:[new RegExp("(DuckDuckGo|Ddg)\\/"+_)],[Ov]:[new RegExp("PaleMoon\\/"+_)],[Wp]:[new RegExp(Wp+"\\/"+_)],[Tv]:[new RegExp("GSA\\/"+_)],[Bp]:[new RegExp("(rv:|MSIE )"+_)],Mozilla:[new RegExp("rv:"+_)]};var P2=[[new RegExp(yo+"; "+yo+" (.*?)[);]","i"),(e)=>[yo,e&&e[1]||""]],[new RegExp(Cl,"i"),[Cl,""]],[new RegExp(ul,"i"),[ul,""]],[zv,[Bo,""]],[new RegExp($n,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[Sv,""];if(new RegExp(Ti).test(t)&&!/IEMobile\b/.test(t))return[$n+" "+Ti,""];let i=/Windows NT ([0-9.]+)/i.exec(t);if(i&&i[1]){let n=i[1],s=jv[n]||"";if(/arm/i.test(t))s="RT";return[$n,s]}return[$n,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,(e)=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[Vo,t.join(".")]}return[Vo,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,(e)=>{let t="";if(e&&e.length>=3)t=qt(e[2])?e[3]:e[2];return["watchOS",t]}],[new RegExp("("+Oi+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Oi+")","i"),(e)=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[Oi,t.join(".")]}return[Oi,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,(e)=>{let t=["Mac OS X",""];if(e&&e[1]){let i=[e[1],e[2],e[3]||"0"];t[1]=i.join(".")}return t}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Hv,""]],[/Linux|debian/i,["Linux",""]]];var wp="utf8",Dv=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Qv(e){return typeof e=="string"&&Dv.test(e)}function Ro(e,t){return Qv(e)?e:t()}function Fp(e){return e?.replace(/\/+$/,"")}async function Hp(e,t){let i=null;for(let n=0;n<t.retryCount+1;n++){if(n>0)await new Promise((s)=>setTimeout(s,t.retryDelay));try{return await e()}catch(s){if(i=s,!t.retryCheck(s))throw s}}throw i}function ml(){return new Date().toISOString()}function de(e,t){let i=setTimeout(e,t);return i?.unref&&i?.unref(),i}var vp=(e)=>e instanceof Error;function pl(e){return Promise.all(e.map((t)=>(t??Promise.resolve()).then((i)=>({status:"fulfilled",value:i}),(i)=>({status:"rejected",reason:i}))))}var Kv={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},j2=Kv.info;function Al(e){if(lp(e))return{boolValue:e};if(typeof e=="number"){if(!Number.isFinite(e))return{stringValue:String(e)};if(Number.isInteger(e))return{intValue:e};return{doubleValue:e}}if(typeof e=="string")return{stringValue:e};if(st(e))return{arrayValue:{values:e.map((t)=>Al(t))}};try{return{stringValue:JSON.stringify(e)}}catch{return{stringValue:String(e)}}}function qn(e){let t=[];for(let i in e){let n=e[i];if(!(ap(n)||qt(n)))t.push({key:i,value:Al(n)})}return t}var es=[0,5,10,25,50,75,100,250,500,750,1000,2500,5000,7500,1e4];function Zl(e){return String(e)+"000000"}function bl(e,t,i,n){let s="";if(n)s=Object.keys(n).sort().map((r)=>`${JSON.stringify(r)}:${JSON.stringify(n[r])}`).join(",");return`${e}\x00${t}\x00${i??""}\x00${s}`}function kp(e,t){for(let i=0;i<t.length;i++)if(e<=t[i])return i;return t.length}function Wl(e,t,i){return{...e.resourceAttributes,"service.name":e.serviceName||"unknown_service",...e.environment&&{"deployment.environment":e.environment},...e.serviceVersion&&{"service.version":e.serviceVersion},"telemetry.sdk.name":t,"telemetry.sdk.version":i}}function hl(e,t,i,n){return{resourceMetrics:[{resource:{attributes:qn(t)},scopeMetrics:[{scope:{name:i,version:n},metrics:e}]}]}}function wo(e){let t=e?.resourceAttributes;return{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1000}}var Pp=1;class Fo{constructor(e,t,i){this._instance=e,this._config=t,this._logger=i,this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._generation=0}count(e,t=1,i){this._capture({name:e,type:"count",value:t,unit:i?.unit,attributes:i?.attributes})}gauge(e,t,i){this._capture({name:e,type:"gauge",value:t,unit:i?.unit,attributes:i?.attributes})}histogram(e,t,i){this._capture({name:e,type:"histogram",value:t,unit:i?.unit,attributes:i?.attributes})}flush(){let e=this._flushPromise,i=(async()=>{if(e)await e.catch(()=>{});await this._doFlush()})().finally(()=>{if(this._flushPromise===i)this._flushPromise=null});return this._flushPromise=i,i}drainWindow(){if(this._series.size===0)return null;let e=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(e)}reset(){this._generation++,this._clearFlushTimer(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(e){if(this._instance.isDisabled||this._instance.optedOut)return;let t=this._runBeforeSend(e);if(t===null)return;if(!t.name||typeof t.name!="string")return void this._logger.warn("Dropping metric with empty name");if(typeof t.value!="number"||!Number.isFinite(t.value))return void this._logger.warn(`Dropping metric '${t.name}': value must be a finite number`);if(t.type==="count"&&t.value<0)return void this._logger.warn(`Dropping count '${t.name}': counters are monotonic, value must be >= 0`);let i,n;try{i=t.attributes?{...t.attributes}:void 0,n=bl(t.type,t.name,t.unit,i)}catch(r){this._logger.warn(`Dropping metric '${t.name}': attributes could not be serialized`,r);return}let s=this._series.get(n);if(!s){if(!this._admitNewSeries())return;s={name:t.name,type:t.type,unit:t.unit,attributes:i,windowStartMs:Date.now()},this._series.set(n,s)}let o=this._typeByName.get(t.name);if(o===void 0)this._typeByName.set(t.name,t.type);else if(o!==t.type&&!this._typeCollisionWarned.has(t.name))this._typeCollisionWarned.add(t.name),this._logger.warn(`Metric name '${t.name}' is already used as a ${o}; recording it as a ${t.type} too will blend both series in charts. Use a distinct name.`);this._fold(s,t.value),this._armFlushTimer()}_admitNewSeries(){if(this._series.size<this._config.maxSeriesPerFlush)return!0;if(!this._seriesCapWarned)this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`);return!1}_fold(e,t){switch(e.type){case"count":e.total=(e.total??0)+t;break;case"gauge":e.last=t;break;case"histogram":{if(!e.hist)e.hist={count:0,sum:0,min:t,max:t,bucketCounts:Array(es.length+1).fill(0)};let i=e.hist;i.count+=1,i.sum+=t,i.min=Math.min(i.min,t),i.max=Math.max(i.max,t),i.bucketCounts[kp(t,es)]+=1;break}}}_runBeforeSend(e){let t=this._config.beforeSend;if(!t)return e;let i=st(t)?t:[t],n=e;for(let s of i)try{let o=s(n);if(!o)return this._logger.info("Metric was rejected in beforeSend function"),null;n=o}catch(o){return this._logger.error("Error in beforeSend function for metric:",o),null}return n}_armFlushTimer(){if(this._flushTimer)return;this._flushTimer=de(()=>{this._flushTimer=void 0,this.flush().catch((e)=>{this._logger.error("Metrics flush failed:",e)})},this._config.flushIntervalMs)}_clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}async _doFlush(){if(this._series.size===0)return;let e=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let t=this._generation,i=await this._instance._sendMetricsBatch(this._buildPayload(e));if(t!==this._generation)return;switch(i.kind){case"ok":return;case"retry-later":this._mergeWindowBack(e),this._armFlushTimer();return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",i.error);return}}_buildPayload(e){return hl(this._buildMetrics(e),Wl(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(e){let t=Zl(Date.now()),i=new Map;for(let n of e.values()){let s=bl(n.type,n.name,n.unit,void 0),o=i.get(s);if(!o){if(o={name:n.name,...n.unit&&{unit:n.unit}},n.type==="count")o.sum={aggregationTemporality:Pp,isMonotonic:!0,dataPoints:[]};else if(n.type==="gauge")o.gauge={dataPoints:[]};else o.histogram={aggregationTemporality:Pp,dataPoints:[]};i.set(s,o)}let r=qn(n.attributes??{}),g=Zl(n.windowStartMs);if(n.type==="count"){let a={attributes:r,startTimeUnixNano:g,timeUnixNano:t,asDouble:n.total??0};o.sum.dataPoints.push(a)}else if(n.type==="gauge"){let a={attributes:r,timeUnixNano:t,asDouble:n.last??0};o.gauge.dataPoints.push(a)}else if(n.hist){let a={attributes:r,startTimeUnixNano:g,timeUnixNano:t,count:n.hist.count,sum:n.hist.sum,min:n.hist.min,max:n.hist.max,bucketCounts:n.hist.bucketCounts,explicitBounds:es};o.histogram.dataPoints.push(a)}}return Array.from(i.values())}_mergeWindowBack(e){for(let[t,i]of e){let n=this._series.get(t);if(!n){if(this._admitNewSeries())this._series.set(t,i);continue}switch(n.windowStartMs=Math.min(n.windowStartMs,i.windowStartMs),n.type){case"count":n.total=(n.total??0)+(i.total??0);break;case"gauge":break;case"histogram":if(i.hist)if(n.hist){n.hist.count+=i.hist.count,n.hist.sum+=i.hist.sum,n.hist.min=Math.min(n.hist.min,i.hist.min),n.hist.max=Math.max(n.hist.max,i.hist.max);for(let s=0;s<n.hist.bucketCounts.length;s++)n.hist.bucketCounts[s]+=i.hist.bucketCounts[s]}else n.hist=i.hist;break}}}}class fl{constructor(){this.events={},this.events={}}on(e,t){if(!this.events[e])this.events[e]=[];return this.events[e].push(t),()=>{this.events[e]=this.events[e].filter((i)=>i!==t)}}emit(e,t){for(let i of this.events[e]||[])i(t);for(let i of this.events["*"]||[])i(e,t)}}var Ve={};pW(Ve,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>Jo,DOMExceptionCoercer:()=>jp,EXCEPTION_STEP_INTERNAL_FIELDS:()=>ts,ErrorCoercer:()=>Yo,ErrorEventCoercer:()=>Dp,ErrorPropertiesBuilder:()=>ko,EventCoercer:()=>_p,ExceptionStepsBuffer:()=>Mp,ObjectCoercer:()=>So,PrimitiveCoercer:()=>xo,PromiseRejectionEventCoercer:()=>Kp,ReduceableCache:()=>Lp,StringCoercer:()=>No,chromeStackLineParser:()=>yl,createDefaultStackParser:()=>Bl,createStackParser:()=>zp,geckoStackLineParser:()=>Vl,getUtf8ByteLength:()=>$p,nodeStackLineParser:()=>Ep,opera10StackLineParser:()=>Sp,opera11StackLineParser:()=>xp,resolveExceptionStepsConfig:()=>Gl,reverseAndStripFrames:()=>Tp,stripReservedExceptionStepFields:()=>Ak,winjsStackLineParser:()=>Xp});var Ho,Yp,vo;function Np(e){let t=globalThis._posthogChunkIds;if(!t)return;let i=Object.keys(t);if(vo&&i.length===Yp)return vo;return Yp=i.length,vo=i.reduce((n,s)=>{if(!Ho)Ho={};let o=Ho[s];if(o)n[o[0]]=o[1];else{let r=e(s);for(let g=r.length-1;g>=0;g--){let l=r[g]?.filename,I=t[s];if(l&&I){n[l]=I,Ho[s]=[l,I];break}}}return n},{}),vo}var qv=4;class ko{constructor(e,t,i=[]){this.coercers=e,this.stackParser=t,this.modifiers=i}buildFromUnknown(e,t={}){let n=t&&t.mechanism||{handled:!0,type:"generic"},o=this.buildCoercingContext(n,t,0).apply(e),r=this.buildParsingContext(t),g=this.parseStacktrace(o,r);return{$exception_list:this.convertToExceptionList(g,n),$exception_level:"error"}}async modifyFrames(e){for(let t of e)if(t.stacktrace&&t.stacktrace.frames&&st(t.stacktrace.frames))t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames);return e}coerceFallback(e){return{type:"Error",value:"Unknown error",stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let i;if(e.cause!=null)i=this.parseStacktrace(e.cause,t);let n;if(e.stack!=""&&e.stack!=null)n=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap);return{...e,cause:i,stack:n}}applyChunkIds(e,t){return e.map((i)=>{if(i.filename&&t)i.chunk_id=t[i.filename];return i})}applyCoercers(e,t){for(let i of this.coercers)if(i.match(e))return i.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let i of this.modifiers)t=await i(t);return t}convertToExceptionList(e,t){let i={type:e.type,value:e.value,mechanism:{type:t.type??"generic",handled:t.handled??!0,synthetic:e.synthetic??!1}};if(e.stack)i.stacktrace={type:"raw",frames:e.stack};let n=[i];if(e.cause!=null)n.push(...this.convertToExceptionList(e.cause,{...t,handled:!0}));return n}buildParsingContext(e){return{chunkIdMap:Np(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,i=0){let n=(o,r)=>{if(!(r<=qv))return;{let g=this.buildCoercingContext(e,t,r);return this.applyCoercers(o,g)}};return{...t,syntheticException:i==0?t.syntheticException:void 0,mechanism:e,apply:(o)=>n(o,i),next:(o)=>n(o,i+1)}}}var re="?";function ot(e,t,i,n,s){let o={platform:e,filename:t,function:i==="<anonymous>"?re:i,in_app:!0};if(!qt(n))o.lineno=n;if(!qt(s))o.colno=s;return o}var Po=(e,t)=>{let i=e.indexOf("safari-extension")!==-1,n=e.indexOf("safari-web-extension")!==-1;return i||n?[e.indexOf("@")!==-1?e.split("@")[0]:re,i?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var ek=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,tk=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ik=/\((\S*)(?::(\d+))(?::(\d+))\)/,yl=(e,t)=>{let i=ek.exec(e);if(i){let[,s,o,r]=i;return ot(t,s,re,+o,+r)}let n=tk.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let g=ik.exec(n[2]);if(g)n[2]=g[1],n[3]=g[2],n[4]=g[3]}let[o,r]=Po(n[1]||re,n[2]);return ot(t,r,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var nk=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,sk=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Vl=(e,t)=>{let i=nk.exec(e);if(i){if(i[3]&&i[3].indexOf(" > eval")>-1){let r=sk.exec(i[3]);if(r)i[1]=i[1]||"eval",i[3]=r[1],i[4]=r[2],i[5]=""}let s=i[3],o=i[1]||re;return[o,s]=Po(o,s),ot(t,s,o,i[4]?+i[4]:void 0,i[5]?+i[5]:void 0)}};var ok=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,Xp=(e,t)=>{let i=ok.exec(e);return i?ot(t,i[2],i[1]||re,+i[3],i[4]?+i[4]:void 0):void 0};var rk=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,Sp=(e,t)=>{let i=rk.exec(e);return i?ot(t,i[2],i[3]||re,+i[1]):void 0},gk=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,xp=(e,t)=>{let i=gk.exec(e);return i?ot(t,i[5],i[3]||i[4]||re,+i[1],+i[2]):void 0};var ak=/^\s*[-]{4,}$/,lk=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,Ik=/^Promise\.(?:all|any)$/,dk=/^index \d+$/,ck="node:internal/promise",Ep=(e,t)=>{let i=e.match(lk);if(i){let n,s,o,r,g;if(i[1]){o=i[1];let I=o.lastIndexOf(".");if(o[I-1]===".")I--;if(I>0){n=o.slice(0,I),s=o.slice(I+1);let d=n.indexOf(".Module");if(d>0)o=o.slice(d+1),n=n.slice(0,d)}r=void 0}if(s)r=n,g=s;if(s==="<anonymous>")g=void 0,o=void 0;if(o===void 0)g=g||re,o=r?`${r}.${g}`:g;let a=i[2]?.startsWith("file://")?i[2].slice(7):i[2],l=i[5]==="native";if(a?.match(/\/[A-Z]:/))a=a.slice(1);if(!a&&i[5]&&!l)a=i[5];if(Ik.test(o)&&dk.test(a||""))a=ck;return{filename:a?decodeURI(a):void 0,module:void 0,function:o,lineno:Jp(i[3]),colno:Jp(i[4]),in_app:Ck(a||"",l),platform:t}}if(e.match(ak))return{filename:e,platform:t}};function Ck(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes("node_modules/")}function Jp(e){return parseInt(e||"",10)||void 0}var Up=/\(error: (.*)\)/,Op=50;function Tp(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,Op).map((i)=>({...i,filename:i.filename||uk(t).filename,function:i.function||re}))}function uk(e){return e[e.length-1]||{}}function Bl(){return zp("web:javascript",yl,Vl)}function zp(e,...t){return(i,n=0)=>{let s=[],o=i.split(`
|
|
140
|
+
`);for(let r=n;r<o.length;r++){let g=o[r];if(g.length>1024)continue;let a=Up.test(g)?g.replace(Up,"$1"):g;if(!a.match(/\S*Error: /)){for(let l of t){let I=l(a,e);if(I){s.push(I);break}}if(s.length>=Op)break}}return Tp(s)}}class jp{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,t){let i=Wt(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:i?e.stack:void 0,cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){let t=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?`${t}: ${e.message}`:t}isDOMException(e){return ei(e,"DOMException")}isDOMError(e){return ei(e,"DOMError")}}class Yo{match(e){return Ip(e)}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let i=e.message;if(i.error&&typeof i.error.message=="string")return String(i.error.message);return String(i)}getStack(e){return e.stacktrace||e.stack||void 0}}class Dp{constructor(){}match(e){return dp(e)&&e.error!=null}coerce(e,t){let i=t.apply(e.error);if(!i)return{type:"ErrorEvent",value:e.message,stack:t.syntheticException?.stack,synthetic:!0};return i}}var mk=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class No{match(e){return typeof e=="string"}coerce(e,t){let[i,n]=this.getInfos(e);return{type:i??"Error",value:n??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t="Error",i=e,n=e.match(mk);if(n)t=n[1],i=n[2];return[t,i]}}var Qp=["fatal","error","warning","log","info","debug"];function Xo(e,t=40){let i=Object.keys(e);if(i.sort(),!i.length)return"[object has no keys]";for(let n=i.length;n>0;n--){let s=i.slice(0,n).join(", ");if(!(s.length>t)){if(n===i.length)return s;return s.length<=t?s:`${s.slice(0,t)}...`}}return""}class So{match(e){return typeof e=="object"&&e!==null}coerce(e,t){let i=this.getErrorPropertyFromObject(e);if(i)return t.apply(i);return{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return Ui(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){let n=`'${e.name}' captured as exception`;if("message"in e&&typeof e.message=="string")n+=` with message: '${e.message}'`;return n}if("message"in e&&typeof e.message=="string")return e.message;let t=this.getObjectClassName(e),i=Xo(e);return`${t&&t!=="Object"?`'${t}'`:"Object"} captured as exception with keys: ${i}`}isSeverityLevel(e){return Wt(e)&&!gp(e)&&Qp.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let i=e[t];if(vp(i))return i}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(t){return}}}class _p{match(e){return Ui(e)}coerce(e,t){let i=e.constructor.name;return{type:i,value:`${i} captured as exception with keys: ${Xo(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class xo{match(e){return fo(e)}coerce(e,t){return{type:"Error",value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}}class Kp{match(e){return ei(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!Ui(e))return!1;try{let t=e.detail;return t!=null&&typeof t=="object"&&"reason"in t}catch{return!1}}coerce(e,t){let i=this.getUnhandledRejectionReason(e);if(fo(i))return{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(i)}`,stack:t.syntheticException?.stack,synthetic:!0};return t.apply(i)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}class Lp{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(t===void 0)return;return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){while(this._cache.size>=this._maxSize){let e=this._cache.keys().next().value;if(e)this._cache.delete(e)}}}var ts={MESSAGE:"$message",TIMESTAMP:"$timestamp"},pk=new Set([ts.MESSAGE,ts.TIMESTAMP]),Jo={enabled:!0,max_bytes:32768};function Gl(e){if(!e)return{...Jo};return{enabled:e.enabled??Jo.enabled,max_bytes:Zk(e.max_bytes,Jo.max_bytes)}}function Ak(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,s)=>{if(pk.has(s))return t.push(s),n;return n[s]=e[s],n},{}),droppedKeys:t}}class Mp{constructor(e){this._entries=[],this._totalBytes=0,this._config=Gl(e)}setConfig(e){this._config=Gl(e),this._trimToMaxBytes()}add(e){let t=bk(e);if(!t)return;let i=$p(t.json);if(i>this._config.max_bytes)return;this._entries.push({step:t.step,bytes:i}),this._totalBytes+=i,this._trimToMaxBytes()}getAttachable(){return this._entries.map((e)=>e.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){while(this._totalBytes>this._config.max_bytes&&this._entries.length>0){let e=this._entries.shift();if(e)this._totalBytes-=e.bytes}}}function Zk(e,t){if(!Ln(e)||e===1/0||e===-1/0)return t;let i=Math.floor(e);if(i<0)return t;return i}function bk(e){let t;try{t=Ei(e)}catch{return}try{let i=JSON.parse(t);if(!Kn(i))return;let n=i,s=n[ts.MESSAGE],o=n[ts.TIMESTAMP];if(!Wt(s)||s.trim().length===0)return;if(!Wt(o)&&!Ln(o))return;return{step:n,json:t}}catch{return}}function $p(e){if(typeof TextEncoder<"u")return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),i=0;for(let n=0;n<t.length;n++)if(t[n]==="%")i+=1,n+=2;else i+=1;return i}class xt extends Error{constructor(e,t){super("HTTP error while fetching PostHog: status="+e.status+", reqByteLength="+t),this.response=e,this.reqByteLength=t,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}}class ii extends Error{constructor(e){super("Network error while fetching PostHog",e instanceof Error?{cause:e}:{}),this.error=e,this.name="PostHogFetchNetworkError"}}var tA=(e,t)=>{for(let i of Object.keys(t))if(i.startsWith("$feature/")||i==="$active_feature_flags")e[i]=t[i]};async function qp(e){if(e instanceof xt){let t="";try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function Wk(e){return typeof e=="object"&&(e instanceof xt||iA(e))}function iA(e){return e instanceof ii}function hk(e){if(e instanceof xt)return e.status===502||e.status===504;if(!(e instanceof ii))return!1;let t=e.error;return(t?.code??t?.cause?.code)!=="ECONNREFUSED"}function zi(e){return typeof e=="object"&&e instanceof xt&&e.status===413}function is(e){if(e instanceof xt)return e.status===408||e.status===429||e.status>=500;return iA(e)}function eA(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var Rl="default";class Eo{getErrorPropertiesBuilder(){if(!this._errorPropertiesBuilder)this._errorPropertiesBuilder=this.createErrorPropertiesBuilder();return this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new ko([new Yo,new So,new No,new xo],Bl())}constructor(e,t={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new ll,this._events=new fl,this._isInitialized=!1;let i=typeof e=="string"?e.trim():"",n=typeof t.host=="string"?t.host.trim():"",s=!i;if(this._logger=Ap("[PostHog]",this.logMsgIfDebug.bind(this)),s)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=i,this.host=Fp(n||"https://us.i.posthog.com"),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1000),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3000,retryCheck:is},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3000,this.featureFlagsRequestMaxRetries=t.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=t.disableGeoip??!0,this.disabled=(t.disabled??!1)||s,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!gl()||(t?.disableCompression??!1)}logMsgIfDebug(e){if(this.isDebug)e()}wrap(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return e();this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Re.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Re.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Re.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let t=this.on("*",(i,n)=>this._logger.info(i,n));this.removeDebugCallback=()=>{t(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){let t=e.properties||{},i={...t,...this.getCommonEventProperties()};if(tA(i,t),e.event==="$feature_flag_called"&&i.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled())i=Qn(i);return{distinct_id:e.distinct_id,event:e.event,properties:i}}isMinimalFlagCalledEventsEnabled(){return!1}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,i){this.wrap(()=>{let n={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};this.enqueue("identify",n,i)})}async identifyStatelessImmediate(e,t,i){let n={...this.buildPayload({distinct_id:e,event:"$identify",properties:t})};await this.sendImmediate("identify",n,i)}captureStateless(e,t,i,n){this.wrap(()=>{let s=this.buildPayload({distinct_id:e,event:t,properties:i});this.enqueue("capture",s,n)})}async captureStatelessImmediate(e,t,i,n){let s=this.buildPayload({distinct_id:e,event:t,properties:i});await this.sendImmediate("capture",s,n)}aliasStateless(e,t,i,n){this.wrap(()=>{let s=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...i||{},distinct_id:t,alias:e}});this.enqueue("alias",s,n)})}async aliasStatelessImmediate(e,t,i,n){let s=this.buildPayload({event:"$create_alias",distinct_id:t,properties:{...i||{},distinct_id:t,alias:e}});await this.sendImmediate("alias",s,n)}groupIdentifyStateless(e,t,i,n,s,o){this.wrap(()=>{let r=this.buildPayload({distinct_id:s||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{},...o||{}}});this.enqueue("capture",r,n)})}async groupIdentifyStatelessImmediate(e,t,i,n,s,o){let r=this.buildPayload({distinct_id:s||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{},...o||{}}});await this.sendImmediate("capture",r,n)}async getRemoteConfig(){await this._initPromise;let e=this.host;if(e==="https://us.i.posthog.com")e="https://us-assets.i.posthog.com";else if(e==="https://eu.i.posthog.com")e="https://eu-assets.i.posthog.com";let t=`${e}/array/${this.apiKey}/config`,i={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(t,i,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((n)=>n.json()).catch((n)=>{this._logger.error("Remote config could not be loaded",n),this._events.emit("error",n)})}async getFlags(e,t={},i={},n={},s={},o=!1){await this._initPromise;let r=o?"&config=true":"",g=`${this.host}/flags/?v=2${r}`,a={token:this.apiKey,distinct_id:e,groups:t,person_properties:i,group_properties:n,...s};if(i.$device_id)a.$device_id=i.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)a.evaluation_contexts=this.evaluationContexts;let l={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(a)};return this._logger.info("Flags URL",g),this.fetchWithRetry(g,l,{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:hk},this.featureFlagsRequestTimeoutMs).then((I)=>I.json()).then((I)=>({success:!0,response:rl(I)})).catch((I)=>(this._events.emit("error",I),{success:!1,error:this.categorizeRequestError(I)}))}categorizeRequestError(e){if(e instanceof xt)return{type:"api_error",statusCode:e.status};if(e instanceof ii){let t=e.error;if(t instanceof Error&&(t.name==="AbortError"||t.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(e,t,i={},n={},s={},o){await this._initPromise;let r=await this.getFeatureFlagDetailStateless(e,t,i,n,s,o);if(r===void 0)return{response:void 0,requestId:void 0};let g=Dn(r.response);if(g===void 0)g=!1;return{response:g,requestId:r.requestId}}async getFeatureFlagDetailStateless(e,t,i={},n={},s={},o){await this._initPromise;let r=await this.getFeatureFlagDetailsStateless(t,i,n,s,o,[e]);if(r===void 0)return;return{response:r.flags[e],requestId:r.requestId,evaluatedAt:r.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,i={},n={},s={},o){await this._initPromise;let r=await this.getFeatureFlagPayloadsStateless(t,i,n,s,o,[e]);if(!r)return;let g=r[e];if(g===void 0)return null;return g}async getFeatureFlagPayloadsStateless(e,t={},i={},n={},s,o){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,i,n,s,o)).payloads}async getFeatureFlagsStateless(e,t={},i={},n={},s,o){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,i,n,s,o)}async getFeatureFlagsAndPayloadsStateless(e,t={},i={},n={},s,o){await this._initPromise;let r=await this.getFeatureFlagDetailsStateless(e,t,i,n,s,o);if(!r)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:r.featureFlags,payloads:r.featureFlagPayloads,requestId:r.requestId}}async getFeatureFlagDetailsStateless(e,t={},i={},n={},s,o){await this._initPromise;let r={geoip_disable:s??this.disableGeoip};if(o)r.flag_keys_to_evaluate=o;let g=await this.getFlags(e,t,i,n,r);if(!g.success)return;let a=g.response;if(a.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(a.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:a?.requestId,quotaLimited:a.quotaLimited};return a}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},n=(await this.fetchWithRetry(e,t).then((s)=>{if(s.status!==200||!s.json){let o=`Surveys API could not be loaded: ${s.status}`,r=Error(o);this._logger.error(r),this._events.emit("error",Error(o));return}return s.json()}).catch((s)=>{this._logger.error("Surveys API could not be loaded",s),this._events.emit("error",s)}))?.surveys;if(n)this._logger.info("Surveys fetched from API: ",JSON.stringify(n));return n??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(Re.Props);return this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(Re.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(Re.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}getQueueRouteKey(e){return Rl}persistedQueueKeyForRoute(e){return Re.Queue}getActiveQueueRoutes(){return[Rl]}getRouteQueue(e){return this.getPersistedProperty(this.persistedQueueKeyForRoute(e))||[]}enqueue(e,t,i){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let n=this.prepareMessage(t,i);if(n=this.processBeforeEnqueue(n),n===null)return;n=this.normalizeMessage(n);let s=this.persistedQueueKeyForRoute(this.getQueueRouteKey(n)),o=this.getPersistedProperty(s)||[];if(o.length>=this.maxQueueSize)o.shift(),this._logger.warn("Queue is full, the oldest event is dropped.");if(o.push({message:n}),this.setPersistedProperty(s,o),this._events.emit(e,n),o.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=de(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate(e,t,i){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit(e,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let n=this.prepareMessage(t,i);if(n=this.processBeforeEnqueue(n),n===null)return;n=this.normalizeMessage(n);try{await this.sendBatch([n],void 0,this.getQueueRouteKey(n))}catch(s){this._events.emit("error",s)}}normalizeMessage(e){let{type:t,library:i,library_version:n,...s}=e,o=eA(s.properties)?s.properties:void 0;if(i!==void 0&&o?.$lib===void 0)o={...o||{},$lib:i};if(n!==void 0&&o?.$lib_version===void 0)o={...o||{},$lib_version:n};if(o)s.properties=o;return s.uuid=Ro(s.uuid,we),s}prepareMessage(e,t){let i={...e,timestamp:t?.timestamp?t?.timestamp:ml(),uuid:Ro(t?.uuid,we)};if(t?.disableGeoip??this.disableGeoip){if(!eA(i.properties))i.properties={};i.properties.$geoip_disable=!0}if(i.distinctId)i.distinct_id=i.distinctId,delete i.distinctId;return i}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){if(this.pendingFlushPromise)return;this.flush().catch(async(e)=>{await qp(e)})}async waitForPendingPromises(e,t=[]){let i=t.filter((s)=>!!s),n=0;while(!0){let s=this.promiseQueue.getPromises([...i,...this.flushPromises],e);if(s.length===0)return;if(n>0)this._logger.debug(`flush() re-checking ${s.length} pending promise(s) before flushing`);await Promise.all(s.map((o)=>o.catch(()=>{}))),n++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(e){if(this.disabled)return Promise.resolve();if(!e&&this.pendingFlushPromise)return this.pendingFlushPromise;let t=this.flushPromise,i=this.promiseQueue.maxId,n=Promise.resolve().then(()=>{if(e)return this.waitForPendingPromises(i,[t,n])}).then(()=>pl([t])).then(()=>{if(this.pendingFlushPromise===n)this.pendingFlushPromise=null;return this._flush()});return this.pendingFlushPromise=n,this.flushPromise=n,this.flushPromises.add(n),this.addPendingPromise(n),pl([n]).then(()=>{if(this.flushPromises.delete(n),this.pendingFlushPromise===n)this.pendingFlushPromise=null;if(this.flushPromise===n)this.flushPromise=null}),n}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};if(e&&e!=="")t["User-Agent"]=e;return t}async sendBatch(e,t,i=Rl){let n={api_key:this.apiKey,batch:e,sent_at:ml()};if(this.historicalMigration)n.historical_migration=!0;let s=Ei(n),o=`${this.host}/batch/`,r=this.disableCompression?null:await $t(s,this.isDebug),g={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...r!==null&&{"Content-Encoding":"gzip"}},body:r||s};await(await this.fetchWithRetry(o,g,t)).body?.cancel()?.catch(()=>{})}async _flush(){this.clearFlushTimer(),await this._initPromise;let e=this.getActiveQueueRoutes();if(!e.some((n)=>this.getRouteQueue(n).length>0))return;let t=[],i;for(let n of e)try{await this._flushRoute(n,t)}catch(s){if(i===void 0)i=s}if(i!==void 0)throw i;this._events.emit("flush",t)}async _flushRoute(e,t){let i=this.persistedQueueKeyForRoute(e),n=this.getPersistedProperty(i)||[];if(!n.length)return;let s=n.length,o=0;while(n.length>0&&o<s){let r=n.slice(0,this.maxBatchSize),g=r.map((I)=>I.message===void 0?I.message:this.normalizeMessage(I.message)),a=async()=>{let d=(this.getPersistedProperty(i)||[]).slice(r.length);this.setPersistedProperty(i,d),n=d,this._dequeuedMessagesCount+=r.length,await this.flushStorage()},l={retryCheck:(I)=>{if(zi(I))return!1;return is(I)}};try{await this.sendBatch(g,l,e)}catch(I){if(zi(I)&&g.length>1){this.maxBatchSize=Math.max(1,Math.floor(g.length/2)),this._logger.warn(`Received 413 when sending batch of size ${g.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(I instanceof ii))await a();throw this._events.emit("error",I),I}await a(),t.push(...g),o+=g.length}}async _sendLogsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),i=`${this.host}/i/v1/logs?token=${encodeURIComponent(this.apiKey)}`,n=this.disableCompression?null:await $t(t,this.isDebug),s={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...n!==null&&{"Content-Encoding":"gzip"}},body:n||t};try{return await this.fetchWithRetry(i,s,{retryCheck:(o)=>{if(zi(o))return!1;return is(o)}}),{kind:"ok"}}catch(o){if(zi(o))return{kind:"too-large"};if(o instanceof ii)return{kind:"retry-later",error:o};return{kind:"fatal",error:o}}}async _sendMetricsBatch(e){if(this.disabled)return{kind:"fatal",error:Error("The client is disabled")};let t=JSON.stringify(e),i=`${this.host}/i/v1/metrics?token=${encodeURIComponent(this.apiKey)}`,n=this.disableCompression?null:await $t(t,this.isDebug),s={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...n!==null&&{"Content-Encoding":"gzip"}},body:n||t};try{return await this.fetchWithRetry(i,s,{retryCheck:(o)=>{if(zi(o))return!1;return is(o)}}),{kind:"ok"}}catch(o){if(zi(o))return{kind:"too-large"};if(is(o))return{kind:"retry-later",error:o};return{kind:"fatal",error:o}}}async fetchWithRetry(e,t,i,n){let s=t.body?t.body:"",o=-1;try{o=s instanceof Blob?s.size:Buffer.byteLength(s,wp)}catch{if(s instanceof Blob)o=s.size;else o=new TextEncoder().encode(s).length}return await Hp(async()=>{let r=new AbortController,g=n??this.requestTimeout,a=de(()=>r.abort(),g),l=null;try{l=await this.fetch(e,{signal:r.signal,...t})}catch(d){throw new ii(d)}finally{clearTimeout(a)}if(t.mode!=="no-cors"&&(l.status<200||l.status>=400))throw new xt(l,o);return l},{...this._retryOptions,...i})}async _shutdown(e=30000){await this._initPromise;let t=!1;if(this.clearFlushTimer(),this.disabled)return;let i=async()=>{try{await this.promiseQueue.join();while(!0){if(!this.getActiveQueueRoutes().some((r)=>this.getRouteQueue(r).length>0))break;let o=this._dequeuedMessagesCount;if(await this.flush(),t)break;if(this._dequeuedMessagesCount===o){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(s){if(!Wk(s))throw s;await qp(s)}},n;try{return await Promise.race([new Promise((s,o)=>{n=de(()=>{this._logger.error("Timed out while shutting down PostHog"),t=!0,o("Timeout while shutting down PostHog. Some events may not have been sent.")},e)}),i()])}finally{clearTimeout(n)}}async shutdown(e=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var oA=require("fs"),rA=require("readline"),Uo=new Ve.ReduceableCache(25),gA=new Ve.ReduceableCache(20),wl=7,Gk=1000,Rk=1e4;async function aA(e){let t={};for(let s=e.length-1;s>=0;s--){let o=e[s],r=o?.filename;if(!o||typeof r!="string"||typeof o.lineno!="number"||vk(r)||kk(o))continue;if(!t[r])t[r]=[];t[r].push(o.lineno)}let i=Object.keys(t);if(i.length==0)return e;let n=[];for(let s of i){if(gA.get(s))continue;let o=t[s];if(!o)continue;o.sort((a,l)=>a-l);let r=Yk(o);if(r.every((a)=>Pk(s,a)))continue;let g=Nk(Uo,s,{});n.push(wk(s,r,g))}if(await Promise.all(n).catch(()=>{}),e&&e.length>0)Fk(e,Uo);return Uo.reduce(),e}function wk(e,t,i){return new Promise((n)=>{let s=oA.createReadStream(e),o=rA.createInterface({input:s});function r(){s.destroy(),n()}let g=0,a=0,l=t[a];if(l===void 0)return void r();let I=l[0],d=l[1];function p(){gA.set(e,1),o.close(),o.removeAllListeners(),r()}s.on("error",p),o.on("error",p),o.on("close",r),o.on("line",(c)=>{if(g++,g<I)return;if(i[g]=Xk(c,0),g>=d){if(a===t.length-1){o.close(),o.removeAllListeners();return}a++;let m=t[a];if(m===void 0){o.close(),o.removeAllListeners();return}I=m[0],d=m[1]}})})}function Fk(e,t){for(let i of e)if(i.filename&&i.context_line===void 0&&typeof i.lineno=="number"){let n=t.get(i.filename);if(n===void 0)continue;Hk(i.lineno,i,n)}}function Hk(e,t,i){if(t.lineno===void 0||i===void 0)return;t.pre_context=[];for(let s=lA(e);s<e;s++){let o=i[s];if(o===void 0)return void nA(t);t.pre_context.push(o)}if(i[e]===void 0)return void nA(t);t.context_line=i[e];let n=IA(e);t.post_context=[];for(let s=e+1;s<=n;s++){let o=i[s];if(o===void 0)break;t.post_context.push(o)}}function nA(e){delete e.pre_context,delete e.context_line,delete e.post_context}function vk(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function kk(e){if(e.lineno!==void 0&&e.lineno>Rk)return!0;if(e.colno!==void 0&&e.colno>Gk)return!0;return!1}function Pk(e,t){let i=Uo.get(e);if(i===void 0)return!1;for(let n=t[0];n<=t[1];n++)if(i[n]===void 0)return!1;return!0}function Yk(e){if(!e.length)return[];let t=0,i=e[0];if(typeof i!="number")return[];let n=sA(i),s=[];while(!0){if(t===e.length-1){s.push(n);break}let o=e[t+1];if(typeof o!="number")break;if(o<=n[1])n[1]=o+wl;else s.push(n),n=sA(o);t++}return s}function sA(e){return[lA(e),IA(e)]}function lA(e){return Math.max(1,e-wl)}function IA(e){return e+wl}function Nk(e,t,i){let n=e.get(t);if(n===void 0)return e.set(t,i),i;return n}function Xk(e,t){let i=e,n=i.length;if(n<=150)return i;if(t>n)t=n;let s=Math.max(t-60,0);if(s<5)s=0;let o=Math.min(s+140,n);if(o>n-5)o=n;if(o===n)s=Math.max(o-140,0);if(i=i.slice(s,o),s>0)i=`...${i}`;if(o<n)i+="...";return i}var ji=require("path");function dA(e=process.cwd()){let t=ji.sep==="\\",i=(s)=>t?s.replace(/\\/g,"/"):s,n=i(e);return async(s)=>{for(let o of s)if(!(!o.filename||o.filename.startsWith("node:")||o.filename.startsWith("data:"))){if(ji.isAbsolute(o.filename))o.filename=i(ji.relative(n,i(o.filename)))}return s}}var cA="5.46.1";var ht={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};class ni{constructor(e){this._host=e.host,this._distinctId=e.distinctId,this._groups=e.groups,this._disableGeoip=e.disableGeoip,this._flags=e.flags,this._requestId=e.requestId,this._evaluatedAt=e.evaluatedAt,this._flagDefinitionsLoadedAt=e.flagDefinitionsLoadedAt,this._errorsWhileComputing=e.errorsWhileComputing??!1,this._quotaLimited=e.quotaLimited??!1,this._accessed=e.accessed??new Set,this._isSlice=e.isSlice??!1}isEnabled(e){let t=this._flags[e];return this._recordAccess(e),t?.enabled??!1}getFlag(e){let t=this._flags[e];if(this._recordAccess(e),!t)return;if(!t.enabled)return!1;return t.variant??!0}getFlagPayload(e){return this._flags[e]?.payload}onlyAccessed(){let e={};for(let t of this._accessed){let i=this._flags[t];if(i)e[t]=i}return this._cloneWith(e)}only(e){let t={},i=[];for(let n of e){let s=this._flags[n];if(s)t[n]=s;else i.push(n)}if(i.length>0)this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${i.join(", ")}`);return this._cloneWith(t)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let e={},t=[];for(let[i,n]of Object.entries(this._flags)){let s=n.enabled===!1?!1:n.variant??!0;if(e[`$feature/${i}`]=s,n.enabled)t.push(i)}if(t.length>0)t.sort(),e.$active_feature_flags=t;return e}_cloneWith(e){return new ni({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:e,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(e){if(this._accessed.add(e),this._distinctId==="")return;if(this._isSlice&&!(e in this._flags))return;let t=this._flags[e],i=t===void 0?void 0:t.enabled===!1?!1:t.variant??!0,n={$feature_flag:e,$feature_flag_response:i,$feature_flag_id:t?.id,$feature_flag_version:t?.version,$feature_flag_reason:t?.reason,locally_evaluated:t?.locallyEvaluated??!1,[`$feature/${e}`]:i,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:t?.locallyEvaluated?Date.now():this._evaluatedAt};if(t?.hasExperiment!==void 0)n.$feature_flag_has_experiment=t.hasExperiment;if(t?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0)n.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt;let s=[];if(this._errorsWhileComputing)s.push(ht.ERRORS_WHILE_COMPUTING);if(this._quotaLimited)s.push(ht.QUOTA_LIMITED);if(t===void 0)s.push(ht.FLAG_MISSING);if(s.length>0)n.$feature_flag_error=s.join(",");this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:e,response:i,groups:this._groups,disableGeoip:this._disableGeoip,properties:n})}}async function CA(e){let t=globalThis.crypto?.subtle;if(!t)throw Error("SubtleCrypto API not available");let i=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(i)).map((s)=>s.toString(16).padStart(2,"0")).join("")}var Sk=60000,xk=1152921504606847000,Jk=["is_not","is_set"];class Di extends Error{constructor(e){super();Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=e,Object.setPrototypeOf(this,Di.prototype)}}function AA(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}class x extends Error{constructor(e){super(e);AA(this,x)}}class rt extends Error{constructor(e){super(e);AA(this,rt)}}class Fl{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:i,timeout:n,host:s,customHeaders:o,...r}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=n,this.projectApiKey=i,this.host=s,this.poller=void 0,this.fetch=r.fetch||fetch,this.onError=r.onError,this.customHeaders=o,this.onLoad=r.onLoad,this.onMinimalFlagCalledEvents=r.onMinimalFlagCalledEvents,this.cacheProvider=r.cacheProvider,this.strictLocalEvaluation=r.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){if(this.debugMode)e()}createEvaluationContext(e,t={},i={},n={},s={}){return{distinctId:e,groups:t,personProperties:i,groupProperties:n,evaluationCache:s}}async getFeatureFlag(e,t,i={},n={},s={}){await this.loadFeatureFlags();let o,r;if(!this.loadedSuccessfullyOnce)return o;if(r=this.featureFlagsByKey[e],r!==void 0){let g=this.createEvaluationContext(t,i,n,s);try{o=(await this.computeFlagAndPayloadLocally(r,g)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${o}`))}catch(a){if(a instanceof rt||a instanceof x)this.logMsgIfDebug(()=>console.debug(`${a.name} when computing flag locally: ${e}: ${a.message}`));else if(a instanceof Error)this.onError?.(Error(`Error computing flag locally: ${e}: ${a}`))}}return o}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let i={},n={},s=this.featureFlags.length==0,o=t?t.map((g)=>this.featureFlagsByKey[g]).filter(Boolean):this.featureFlags,r={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(o.map(async(g)=>{try{let{value:a,payload:l}=await this.computeFlagAndPayloadLocally(g,r);if(i[g.key]=a,l)n[g.key]=l}catch(a){if(a instanceof rt||a instanceof x)this.logMsgIfDebug(()=>console.debug(`${a.name} when computing flag locally: ${g.key}: ${a.message}`));else if(a instanceof Error)this.onError?.(Error(`Error computing flag locally: ${g.key}: ${a}`));s=!0}})),{response:i,payloads:n,fallbackToFlags:s}}async computeFlagAndPayloadLocally(e,t,i={}){let{matchValue:n,skipLoadCheck:s=!1}=i;if(!s)await this.loadFeatureFlags();if(!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let o;o=n!==void 0?n:await this.computeFlagValueLocally(e,t);let r=this.getFeatureFlagPayload(e.key,o);return{value:o,payload:r}}async computeFlagValueLocally(e,t){let{distinctId:i,groups:n,personProperties:s,groupProperties:o}=t;if(!e.active)return!1;if(e.ensure_experience_continuity)throw new x("Flag has experience continuity enabled");let g=(e.filters||{}).aggregation_group_type_index;if(g!=null){let a=this.groupTypeMapping[String(g)];if(!a)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${g} for feature flag ${e.key}`)),new x("Flag has unknown group type index");if(!(a in n))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;if(e.bucketing_identifier==="device_id"&&(s?.$device_id===void 0||s?.$device_id===null||s?.$device_id===""))this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let l=o[a];return await this.matchFeatureFlagProperties(e,n[a],l,t)}{let a=this.getBucketingValueForFlag(e,i,s);if(a===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new x(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,a,s,t)}}getBucketingValueForFlag(e,t,i){if(e.filters?.aggregation_group_type_index!=null)return t;if(e.bucketing_identifier==="device_id"){let n=i?.$device_id;if(n==null||n==="")return;return n}return t}getFeatureFlagPayload(e,t){let i=null;if(t!==!1&&t!=null){if(typeof t=="boolean")i=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null;else if(typeof t=="string")i=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null;if(i!=null){if(typeof i=="object")return i;if(typeof i=="string")try{return JSON.parse(i)}catch{}return i}}return null}async evaluateFlagDependency(e,t,i){let{evaluationCache:n}=i,s=e.key;if(!this.featureFlagsByKey)throw new x("Feature flags not available for dependency evaluation");if(!("dependency_chain"in e))throw new x(`Flag dependency property for '${s}' is missing required 'dependency_chain' field`);let o=e.dependency_chain;if(!Array.isArray(o))throw new x(`Flag dependency property for '${s}' has an invalid 'dependency_chain' (expected array, got ${typeof o})`);if(o.length===0)throw new x(`Circular dependency detected for flag '${s}' (empty dependency chain)`);for(let g of o){if(!(g in n)){let l=this.featureFlagsByKey[g];if(l)if(l.active)try{let I=await this.computeFlagValueLocally(l,i);n[g]=I}catch(I){throw new x(`Error evaluating flag dependency '${g}' for flag '${s}': ${I}`)}else n[g]=!1;else throw new x(`Missing flag dependency '${g}' for flag '${s}'`)}if(n[g]==null)throw new x(`Dependency '${g}' could not be evaluated`)}let r=n[s];return this.flagEvaluatesToExpectedValue(e.value,r)}flagEvaluatesToExpectedValue(e,t){if(typeof e=="boolean")return e===t||typeof t=="string"&&t!==""&&e===!0;if(typeof e=="string")return t===e;return!1}async matchFeatureFlagProperties(e,t,i,n){let s=e.filters||{},o=s.groups||[],r=s.aggregation_group_type_index,g=s.early_exit??!1,{groups:a,groupProperties:l}=n,I=!1,d;for(let p of o)try{let c=p.aggregation_group_type_index!==void 0?p.aggregation_group_type_index:r,m=i,C=t;if(c!==r){if(c!=null){let A=this.groupTypeMapping[String(c)];if(!A||!(A in a)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${e.key}': group type index ${c} not available`));continue}if(!(A in l)){I=!0;continue}m=l[A],C=a[A]}}let u=await this.isConditionMatch(e,C,p,m,n);if(u==="match"){let A=p.variant,b=s.multivariate?.variants||[];d=A&&b.some((W)=>W.key===A)?A:await this.getMatchingVariant(e,C)||!0;break}if(g&&u==="out_of_rollout_bound")return!1}catch(c){if(c instanceof rt)throw c;if(c instanceof x)I=!0;else throw c}if(d!==void 0)return d;if(I)throw new x("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(e,t,i,n,s){let o=i.rollout_percentage,r=(g)=>{this.logMsgIfDebug(()=>console.warn(g))};if((i.properties||[]).length>0){for(let g of i.properties){let a=g.type,l=!1;if(a==="cohort"){let I=await bA(g,n,this.cohorts,this.debugMode,(d)=>this.evaluateFlagDependency(d,n,s));l=g.operator==="not_in"?!I:I}else l=a==="flag"?await this.evaluateFlagDependency(g,n,s):ZA(g,n,r);if(!l)return"no_match"}if(o==null)return"match"}if(o!=null&&await uA(e.key,t)>o/100)return"out_of_rollout_bound";return"match"}async getMatchingVariant(e,t){let i=await uA(e.key,t,"variant"),n=this.variantLookupTable(e).find((s)=>i>=s.valueMin&&i<s.valueMax);if(n)return n.key}variantLookupTable(e){let t=[],i=0,n=0;return((e.filters||{}).multivariate?.variants||[]).forEach((r)=>{n=i+r.rollout_percentage/100,t.push({valueMin:i,valueMax:n,key:r.key}),i=n}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((t,i)=>(t[i.key]=i,t),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0,this.onMinimalFlagCalledEvents?.(e.minimalFlagCalledEvents===!0)}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter((i)=>i.ensure_experience_continuity);if(t.length>0)console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map((i)=>i.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();if(t)return this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0;return!1}catch(t){return this.onError?.(Error(`Failed to load from cache: ${t}`)),!1}}async loadFeatureFlags(e=!1){if(this.loadedSuccessfullyOnce&&!e)return;if(!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt)return void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period"));if(!this.loadingPromise)this.loadingPromise=this._loadFeatureFlags().catch((t)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${t}`))).finally(()=>{this.loadingPromise=void 0});return this.loadingPromise}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){if(!this.shouldBeginExponentialBackoff)return this.pollingInterval;return Math.min(Sk,this.pollingInterval*2**this.backOffCount)}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){if(this.poller)clearTimeout(this.poller),this.poller=void 0;this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(i){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${i}`))}if(!e){if(await this.loadFromCache("Loaded flags from cache (skipped fetch)"))return;if(this.loadedSuccessfullyOnce)return}let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=t.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new Di(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.onMinimalFlagCalledEvents?.(!1);return;case 403:throw this.beginBackoff(),new Di(`Your secret key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new Di(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let i=await t.json()??{};if(!("flags"in i))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(i)}`));this.flagsEtag=t.headers?.get("ETag")??void 0;let n={flags:i.flags??[],groupTypeMapping:i.group_type_mapping||{},cohorts:i.cohorts||{},minimalFlagCalledEvents:i.minimal_flag_called_events===!0};if(this.updateFlagState(n),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(n)}catch(s){this.onError?.(Error(`Failed to store in cache: ${s}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(n.flags);break}default:return}}catch(e){if(e instanceof Di)this.onError?.(e)}}getPersonalApiKeyRequestOptions(e="GET",t){let i={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};if(t)i["If-None-Match"]=t;return{method:e,headers:i}}_requestFeatureFlagDefinitions(){let e=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),i=null;if(this.timeout&&typeof this.timeout=="number"){let n=new AbortController;i=de(()=>{n.abort()},this.timeout),t.signal=n.signal}try{let n=this.fetch;return n(e,t)}finally{clearTimeout(i)}}async stopPoller(e=30000){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();if(t instanceof Promise)await Promise.race([t,new Promise((i,n)=>setTimeout(()=>n(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(t){this.onError?.(Error(`Error during cache shutdown: ${t}`))}}}async function uA(e,t,i=""){let n=await CA(`${e}.${t}${i}`);return parseInt(n.slice(0,15),16)/xk}function ZA(e,t,i){let{key:n,value:s}=e,o=e.operator||"exact";if(n in t){if(o==="is_not_set")return!1}else{if(o==="is_not_set")return!0;throw new x(`Property ${n} not found in propertyValues`)}let r=t[n];if(r==null&&!Jk.includes(o)){if(i)i(`Property ${n} cannot have a value of null/undefined with the ${o} operator`);return!1}function g(l,I){if(Array.isArray(l))return l.map((d)=>String(d).toLowerCase()).includes(String(I).toLowerCase());return String(l).toLowerCase()===String(I).toLowerCase()}function a(l,I,d){if(d==="gt")return l>I;if(d==="gte")return l>=I;if(d==="lt")return l<I;if(d==="lte")return l<=I;throw Error(`Invalid operator: ${d}`)}switch(o){case"exact":return g(s,r);case"is_not":return!g(s,r);case"is_set":return n in t;case"icontains":return String(r).toLowerCase().includes(String(s).toLowerCase());case"not_icontains":return!String(r).toLowerCase().includes(String(s).toLowerCase());case"regex":return mA(String(s))&&String(r).match(String(s))!==null;case"not_regex":return mA(String(s))&&String(r).match(String(s))===null;case"gt":case"gte":case"lt":case"lte":{let l=typeof s=="number"?s:parseFloat(String(s)),I;if(I=typeof r=="number"?r:r!=null?parseFloat(String(r)):NaN,Number.isFinite(l)&&Number.isFinite(I))return a(I,l,o);return a(String(r),String(s),o)}case"is_date_after":case"is_date_before":{if(typeof s=="boolean")throw new x("Date operations cannot be performed on boolean values");let l=zk(String(s));if(l==null)l=pA(s);if(l==null)throw new x(`Invalid date: ${s}`);let I=pA(r);if(["is_date_before"].includes(o))return I<l;return I>l}case"semver_eq":return Ye(ge(String(r)),ge(String(s)))===0;case"semver_neq":return Ye(ge(String(r)),ge(String(s)))!==0;case"semver_gt":return Ye(ge(String(r)),ge(String(s)))>0;case"semver_gte":return Ye(ge(String(r)),ge(String(s)))>=0;case"semver_lt":return Ye(ge(String(r)),ge(String(s)))<0;case"semver_lte":return Ye(ge(String(r)),ge(String(s)))<=0;case"semver_tilde":{let l=ge(String(r)),{lower:I,upper:d}=Uk(String(s));return Ye(l,I)>=0&&Ye(l,d)<0}case"semver_caret":{let l=ge(String(r)),{lower:I,upper:d}=Ok(String(s));return Ye(l,I)>=0&&Ye(l,d)<0}case"semver_wildcard":{let l=ge(String(r)),{lower:I,upper:d}=Tk(String(s));return Ye(l,I)>=0&&Ye(l,d)<0}default:throw new x(`Unknown operator: ${o}`)}}function Ek(e,t){if(!(e in t))throw new rt(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function bA(e,t,i,n=!1,s){let o=String(e.value);Ek(o,i);let r=i[o];return WA(r,t,i,n,s)}async function WA(e,t,i,n=!1,s){if(!e)return!0;let{type:o,values:r}=e;if(!r||r.length===0)return!0;let g=!1;if("values"in r[0]){for(let a of r)try{let l=await WA(a,t,i,n,s);if(o==="AND"){if(!l)return!1}else if(l)return!0}catch(l){if(l instanceof rt)throw l;if(l instanceof x){if(n)console.debug(`Failed to compute property ${a} locally: ${l}`);g=!0}else throw l}if(g)throw new x("Can't match cohort without a given cohort property value");return o==="AND"}for(let a of r)try{let l;if(a.type==="cohort")l=await bA(a,t,i,n,s);else if(a.type==="flag"){if(!s)throw new x(`Flag dependency '${a.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);l=await s(a)}else l=ZA(a,t);let I=a.negation||!1;if(o==="AND"){if(!l&&!I)return!1;if(l&&I)return!1}else{if(l&&!I)return!0;if(!l&&I)return!0}}catch(l){if(l instanceof rt)throw l;if(l instanceof x){if(n)console.debug(`Failed to compute property ${a} locally: ${l}`);g=!0}else throw l}if(g)throw new x("can't match cohort without a given cohort property value");return o==="AND"}function mA(e){try{return new RegExp(e),!0}catch(t){return!1}}function hA(e,t){if(!/^\d+$/.test(e))throw new x(`Invalid semver: ${t}`);if(e.length>1&&e[0]==="0")throw new x(`Invalid semver: ${t}`);return parseInt(e,10)}function ge(e){let i=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!i||i.startsWith("."))throw new x(`Invalid semver: ${e}`);let n=i.split("."),s=(a)=>{if(a===void 0||a==="")return 0;return hA(a,e)},o=s(n[0]),r=s(n[1]),g=s(n[2]);return[o,r,g]}function Ye(e,t){for(let i=0;i<3;i++){if(e[i]<t[i])return-1;if(e[i]>t[i])return 1}return 0}function Uk(e){let t=ge(e),i=[t[0],t[1],t[2]],n=[t[0],t[1]+1,0];return{lower:i,upper:n}}function Ok(e){let t=ge(e),[i,n,s]=t,o=[i,n,s],r;return r=i>0?[i+1,0,0]:n>0?[0,n+1,0]:[0,0,s+1],{lower:o,upper:r}}function Tk(e){let i=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!i)throw new x(`Invalid wildcard semver: ${e}`);let n=i.split("."),s=(a)=>{try{return hA(a,e)}catch{throw new x(`Invalid wildcard semver: ${e}`)}},o=s(n[0]),r,g;if(n.length===1)r=[o,0,0],g=[o+1,0,0];else{let a=s(n[1]);r=[o,a,0],g=[o,a+1,0]}return{lower:r,upper:g}}function pA(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new x(`${e} is in an invalid date format`)}throw new x(`The date provided ${e} must be a string, number, or date object`)}function zk(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,i=e.match(t),n=new Date(new Date().toISOString());if(!i)return null;{if(!i.groups)return null;let s=parseInt(i.groups.number);if(s>=1e4)return null;let o=i.groups.interval;if(o=="h")n.setUTCHours(n.getUTCHours()-s);else if(o=="d")n.setUTCDate(n.getUTCDate()-s);else if(o=="w")n.setUTCDate(n.getUTCDate()-7*s);else if(o=="m")n.setUTCMonth(n.getUTCMonth()-s);else{if(o!="y")return null;n.setUTCFullYear(n.getUTCFullYear()-s)}return n}}function jk(e,t){let i=!1;return Object.assign((n)=>{let o=global.process.listeners("uncaughtException").filter((r)=>r.name!=="domainUncaughtExceptionClear"&&r._posthogErrorHandler!==!0).length===0;if(e(n,{mechanism:{type:"onuncaughtexception",handled:!1}}),!i&&o)i=!0,t(n)},{_posthogErrorHandler:!0})}function fA(e,t){globalThis.process?.on("uncaughtException",jk(e,t))}function yA(e){globalThis.process?.on("unhandledRejection",(t)=>e(t,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var Dk=2000;class gt{constructor(e,t,i){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=i,this._rateLimiter=new al({...Cp(t),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return Kn(e)&&"__posthog_previously_captured_error"in e&&e.__posthog_previously_captured_error===!0}static async buildEventMessage(e,t,i,n,s){let o={...s},r=e.buildFromUnknown(t,i);return r.$exception_list=await e.modifyFrames(r.$exception_list),{event:"$exception",distinctId:n,properties:{...r,...o},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled())fA(this.onException.bind(this),this.onFatalError.bind(this)),yA(this.onException.bind(this))}onException(e,t){this.client.addPendingPromise((async()=>{if(!gt.isPreviouslyCapturedError(e)){let i=await gt.buildEventMessage(this.client.getErrorPropertiesBuilder(),e,t),s=i.properties?.$exception_list[0]?.type??"Exception";if(this._rateLimiter.consumeRateLimit(s))return void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:s});return this.client._capturePreparedEvent(i,!1)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(Dk),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}class Hl{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=t!==null?t:void 0}constructor(){this._memoryStorage={}}}function Qk(e){return e==="v0"||e==="v1"}function VA(){let e=typeof process<"u"?process.env?.POSTHOG_CAPTURE_MODE:void 0;return Qk(e)?e:"v0"}var ns="analytics",ss="ai";function BA(e){return typeof e.event=="string"&&e.event.startsWith("$ai_")}class Qi extends Error{constructor({requestId:e,drops:t,retryExhausted:i,cause:n}){super(Qi.buildMessage(e,t,i,n)),this.name="CaptureV1Error",this.requestId=e,this.drops=t,this.retryExhausted=i,this.cause=n}static buildMessage(e,t,i,n){let s=`Capture V1 batch ${e} did not fully deliver: ${t.length} dropped, ${i.length} undelivered`;if(n instanceof Error)s+=` (${n.message})`;return s}}function vl(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.trim().toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function _k(e){return typeof e=="string"?e:void 0}var Kk=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:vl},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:vl},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:vl},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:_k}],Lk=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function Mk(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $k(e){if(typeof e=="string"){let i=new Date(e);return Number.isNaN(i.getTime())?new Date().toISOString():e}if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=e==null?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}function GA(e,t,i){if(i!==void 0&&!(t in e))e[t]=i}function qk(e){let i={...Mk(e.properties)?e.properties:{}},n={};for(let{property:o,optionKey:r,coerce:g}of Kk)if(o in i){let a=g(i[o]);if(a!==void 0)n[r]=a;delete i[o]}let s={};for(let{property:o,field:r}of Lk)if(o in i){let g=i[o];if(typeof g=="string")s[r]=g;delete i[o]}return delete i.$lib,delete i.$lib_version,GA(i,"$set",e.$set),GA(i,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:$k(e.timestamp),...s,options:n,properties:i}}function RA(e,{createdAt:t,historicalMigration:i}){let n={created_at:t,batch:e.map(qk)};if(i)n.historical_migration=!0;return n}var eP="/i/v1/analytics/events",tP=30000,iP=new Set([408,500,502,503,504]);class kl{constructor(e,t){this.config=e,this.maxBackoffMs=e.maxBackoffMs??tP,this.fetchFn=t.fetch,this.onError=t.onError,this.now=t.now??Date.now,this.sleep=t.sleep??((i)=>new Promise((n)=>de(n,i))),this.generateRequestId=t.generateRequestId??we,this.compress=t.compress??$t}async sendV1Batch(e){if(e.length===0)return;let t=this.generateRequestId(),i=new Date(this.now()).toISOString(),{batch:n}=RA(e,{createdAt:i,historicalMigration:this.config.historicalMigration}),s=`${this.config.host}${eP}`,o=[],r=n,g=Math.max(1,this.config.maxAttempts);for(let a=1;a<=g;a++){let l=a===g,I=Ei({created_at:i,...this.config.historicalMigration?{historical_migration:!0}:{},batch:r}),d;try{d=await this.sendOnce(s,I,a,t)}catch(u){if(l)return this.surfaceBatchFailure(t,o,r,u);await this.sleep(this.backoffDelay(a));continue}let{status:p}=d;if(p<200||p>=300){if(!l&&iP.has(p)){let A=this.parseRetryAfter(d);await this.cancelBody(d),await this.sleep(this.backoffDelay(a,A));continue}let u=await this.buildHttpError(d,p);return this.surfaceBatchFailure(t,o,r,u)}let c;try{c=await this.parseResponse(d)}catch{return this.surfaceBatchFailure(t,o,r,Error(`Capture V1 returned an unparseable ${p} response body`))}let m=this.classify(r,c,o);if(m.length===0)return this.surfacePartialDrops(t,o);if(l)return void this.onError(new Qi({requestId:t,drops:o,retryExhausted:m.map((u)=>u.uuid)}));r=m;let C=this.parseRetryAfter(d);await this.sleep(this.backoffDelay(a,C))}}async sendOnce(e,t,i,n){let s=this.buildHeaders(i,n),o=t;if(this.config.compressionEnabled){let a=await this.compress(t,this.config.isDebug);if(a!==null)o=a,s["Content-Encoding"]="gzip"}let r=new AbortController,g=de(()=>r.abort(),this.config.requestTimeoutMs);try{return await this.fetchFn(e,{method:"POST",headers:s,body:o,signal:r.signal})}finally{clearTimeout(g)}}buildHeaders(e,t){let i=`${this.config.libraryId}/${this.config.libraryVersion}`,n={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":i,"PostHog-Attempt":String(e),"PostHog-Request-Id":t,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};if(this.config.userAgent)n["User-Agent"]=this.config.userAgent;return n}classify(e,t,i){let n=t.results??{},s=[];for(let o of e){let r=n[o.uuid];if(r){if(r.result==="drop")i.push({uuid:o.uuid,details:r.details??void 0});else if(r.result==="retry")s.push(o)}}return s}backoffDelay(e,t){let i=Math.min(this.config.initialRetryDelayMs*2**(e-1),this.maxBackoffMs);if(t===void 0)return i;return Math.max(i,Math.min(t,this.maxBackoffMs))}parseRetryAfter(e){let t=e.headers?.get("Retry-After");if(!t)return;let i=t.trim();if(/^\d+$/.test(i)){let o=parseInt(i,10);return Number.isFinite(o)&&o>0?1000*o:void 0}let n=Date.parse(i);if(Number.isNaN(n))return;let s=n-this.now();return s>0?s:void 0}async parseResponse(e){let t=await e.text(),i=JSON.parse(t);if(typeof i!="object"||i===null||Array.isArray(i))throw Error("unexpected response shape");let n=i.results;if(n!==void 0&&(typeof n!="object"||n===null||Array.isArray(n)))throw Error("unexpected results shape");return{results:n??{}}}async buildHttpError(e,t){let i="";try{i=(await e.text()).slice(0,512)}catch{}let n=i?`: ${i}`:"";return Error(`Capture V1 request failed with HTTP ${t}${n}`)}surfaceBatchFailure(e,t,i,n){this.onError(new Qi({requestId:e,drops:t,retryExhausted:i.map((s)=>s.uuid),cause:n}))}surfacePartialDrops(e,t){if(t.length>0)this.onError(new Qi({requestId:e,drops:t,retryExhausted:[]}))}async cancelBody(e){await e.body?.cancel()?.catch(()=>{})}}var nP=100,wA=30000,sP=50000,oP=50,rP=500,gP="https://us.i.posthog.com",FA=new Set;function Oo(e,t){if(FA.has(e))return;FA.add(e),console.warn(`[PostHog] ${t}`)}function aP(e){return typeof e=="string"?e.trim():""}function lP(e){return(typeof e=="string"?e.trim():"")||void 0}function IP(e){return(typeof e=="string"?e.trim():"")||gP}function dP(e){return(Array.isArray(e)?e:[e]).filter((i)=>typeof i=="string"&&i.trim().length>0)}function cP(e){if(!e)return{};let t={};for(let[n,s]of Object.entries(e))t[`$feature/${n}`]=s;let i=Object.keys(e).filter((n)=>e[n]!==!1).sort();if(i.length>0)t.$active_feature_flags=i;return t}class Pl extends Eo{constructor(e,t={}){let i=aP(e),n={...t,maxQueueSize:t.maxQueueSize??1e4,flushInterval:t.flushInterval??5000,host:IP(t.host),personalApiKey:lP(t.secretKey??t.personalApiKey)};if(super(i,n),this._memoryStorage=new Hl,this._minimalFlagCalledEvents=!1,this.options=n,this.captureMode=VA(),this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof n.featureFlagsPollingInterval=="number"?Math.max(n.featureFlagsPollingInterval,nP):wA,typeof n.waitUntilDebounceMs=="number")this.options.waitUntilDebounceMs=Math.max(n.waitUntilDebounceMs,0);if(typeof n.waitUntilMaxWaitMs=="number")this.options.waitUntilMaxWaitMs=Math.max(n.waitUntilMaxWaitMs,0);if(!this.disabled&&n.personalApiKey){if(n.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');if(n.enableLocalEvaluation!==!1)this.featureFlagsPoller=new Fl({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:n.personalApiKey,projectApiKey:i,timeout:n.requestTimeout??1e4,host:this.host,fetch:n.fetch,onError:(o)=>{this._events.emit("error",o)},onLoad:(o)=>{this._events.emit("localEvaluationFlagsLoaded",o)},onMinimalFlagCalledEvents:(o)=>{this._minimalFlagCalledEvents=o},customHeaders:this.getCustomHeaders(),cacheProvider:n.flagDefinitionCacheProvider,strictLocalEvaluation:n.strictLocalEvaluation})}this.errorTracking=new gt(this,n,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=n.maxCacheSize||sP}enqueue(e,t,i){super.enqueue(e,t,i),this.scheduleDebouncedFlush()}async flush(){let e=this.flushWithPendingPromises(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e)return;if(this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let o,r=new Promise((g)=>{o=g});try{e(r)}catch{return}this._waitUntilCycle={resolve:o,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt,i=this.options.waitUntilMaxWaitMs??rP,n=t>=i;if(this._waitUntilCycle.timer!==void 0)clearTimeout(this._waitUntilCycle.timer);if(n)return void this.resolveWaitUntilFlush();let s=this.options.waitUntilDebounceMs??oP;this._waitUntilCycle.timer=de(()=>{this.resolveWaitUntilFlush()},s)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;if(e)clearTimeout(e.timer),this._waitUntilCycle=void 0;return e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await this.flushWithPendingPromises()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getQueueRouteKey(e){return this.captureMode==="v1"&&BA(e)?ss:ns}persistedQueueKeyForRoute(e){return e===ss?Re.AiQueue:Re.Queue}getActiveQueueRoutes(){return this.captureMode==="v1"?[ns,ss]:[ns]}async sendBatch(e,t,i=ns){if(this.captureMode!=="v1"||i===ss)return super.sendBatch(e,t,i);let n=e.filter((s)=>s!==void 0);await this.getV1Sender().sendV1Batch(n)}getV1Sender(){if(!this._v1Sender)this._v1Sender=new kl({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3000,isDebug:this.isDebug},{fetch:(e,t)=>this.fetch(e,t),onError:(e)=>this._events.emit("error",e)});return this._v1Sender}getLibraryVersion(){return cA}get metrics(){if(!this._metrics)this._metrics=new Fo(this,wo(this.options.metrics),this._logger);return this._metrics}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getCommonEventProperties(){let e=super.getCommonEventProperties();if(this.options.isServer??!0)e.$is_server=!0;return e}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}_warnIfInvalidCapture(e,t,i){if(typeof e=="string")this._logger.warn(t);if(e.event==="$exception"&&!e._originatedFromCaptureException)this._logger.warn(i)}_sendPreparedEvent(e,t,i,n){return this.addPendingPromise(this._prepareEventMessage(t,n).then(({distinctId:s,event:o,properties:r,options:g})=>{let a={timestamp:g.timestamp,disableGeoip:g.disableGeoip,uuid:g.uuid},l={distinctId:s,event:o,properties:{...r,...this.getCommonEventProperties()}};return i?this.sendImmediate(e,l,a):this.enqueue(e,l,a)}).catch((s)=>{if(s)console.error(s)}))}_capturePreparedEvent(e,t){return this._sendPreparedEvent("capture",e,t)}capture(e){this._warnIfInvalidCapture(e,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(e,!1)}async captureImmediate(e){return this._warnIfInvalidCapture(e,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(e,!0)}identify({distinctId:e,properties:t={},disableGeoip:i}){let{$set:n,$set_once:s,$anon_distinct_id:o,...r}=t,l={$set:n||r,$set_once:s||{},$anon_distinct_id:o??void 0};this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:l,disableGeoip:i},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:i}){let{$set:n,$set_once:s,$anon_distinct_id:o,...r}=t,l={$set:n||r,$set_once:s||{},$anon_distinct_id:o??void 0};await this._sendPreparedEvent("identify",{distinctId:e,event:"$identify",properties:l,disableGeoip:i},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:e,properties:t={},propertiesOnce:i={}}){if(Object.keys(t).length===0&&Object.keys(i).length===0)return;let n={};if(Object.keys(t).length>0)n.$set=t;if(Object.keys(i).length>0)n.$set_once=i;this.capture({distinctId:e,event:"$set",properties:n})}unsetPersonProperties({distinctId:e,properties:t}){let i=dP(t);if(i.length===0)return;this.capture({distinctId:e,event:"$set",properties:{$unset:i}})}alias(e){this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(e){await this._sendPreparedEvent("alias",{distinctId:e.distinctId,event:"$create_alias",properties:{distinct_id:e.distinctId,alias:e.alias},disableGeoip:e.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=wA){if(this.isLocalEvaluationReady())return!0;if(this.featureFlagsPoller===void 0)return!1;return new Promise((t)=>{let i=setTimeout(()=>{n(),t(!1)},e),n=this._events.on("localEvaluationFlagsLoaded",(s)=>{clearTimeout(i),n(),t(s>0)})})}_resolveDistinctId(e,t){if(typeof e=="string")return{distinctId:e,options:t};return{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,i={},n){if(this.disabled)return void this._logger.warn("The client is disabled");let s=i.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&e in this._flagOverrides){let V=this._flagOverrides[e];if(V===void 0)return;let B=this._payloadOverrides?.[e];return{key:e,enabled:V!==!1,variant:typeof V=="string"?V:void 0,payload:B}}let{groups:o,disableGeoip:r}=i,{onlyEvaluateLocally:g,personProperties:a,groupProperties:l}=i,I=this.addLocalPersonAndGroupProperties(t,o,a,l);a=I.allPersonProperties,l=I.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(t,o,this.personPropertiesForLocalEvaluation(t,a),l);if(g==null)g=this.options.strictLocalEvaluation??!1;let p,c=!1,m,C,u,A,b,W,h;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let V=this.featureFlagsPoller?.featureFlagsByKey[e];if(V)try{let B=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(V,d,{matchValue:n});if(B){c=!0;let F=B.value;A=V.id,W="Evaluated locally",h=V.has_experiment,p={key:e,enabled:F!==!1,variant:typeof F=="string"?F:void 0,payload:B.payload??void 0}}}catch(B){if(B instanceof rt||B instanceof x)this._logger?.info(`${B.name} when computing flag locally: ${e}: ${B.message}`);else throw B}}if(!c&&!g){let V=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,a,l,r,[e]);if(V===void 0)u=ht.UNKNOWN_ERROR;else{this._minimalFlagCalledEvents=V.minimalFlagCalledEvents===!0,m=V.requestId,C=V.evaluatedAt;let B=[];if(V.errorsWhileComputingFlags)B.push(ht.ERRORS_WHILE_COMPUTING);if(V.quotaLimited?.includes("feature_flags"))B.push(ht.QUOTA_LIMITED);let F=V.flags[e];if(F===void 0)B.push(ht.FLAG_MISSING);else{A=F.metadata?.id,b=F.metadata?.version,W=F.reason?.description??F.reason?.code,h=F.metadata?.has_experiment;let w;if(F.metadata?.payload!==void 0)try{w=JSON.parse(F.metadata.payload)}catch{w=F.metadata.payload}p={key:e,enabled:F.enabled,variant:F.variant,payload:w}}if(B.length>0)u=B.join(",")}}if(s){let V=p===void 0?void 0:p.enabled===!1?!1:p.variant??!0,B={$feature_flag:e,$feature_flag_response:V,$feature_flag_id:A,$feature_flag_version:b,$feature_flag_reason:W,locally_evaluated:c,[`$feature/${e}`]:V,$feature_flag_request_id:m,$feature_flag_evaluated_at:c?Date.now():C};if(h!==void 0)B.$feature_flag_has_experiment=h;if(c&&this.featureFlagsPoller){let F=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();if(F!==void 0)B.$feature_flag_definitions_loaded_at=F}if(u)B.$feature_flag_error=u;this._captureFlagCalledEventIfNeeded({distinctId:t,key:e,response:V,groups:o,disableGeoip:r,properties:B})}if(p!==void 0&&this._payloadOverrides!==void 0&&e in this._payloadOverrides)p={...p,payload:this._payloadOverrides[e]};return p}async getFeatureFlag(e,t,i){Oo("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let n=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(n===void 0)return;if(n.enabled===!1)return!1;return n.variant??!0}async getFeatureFlagPayload(e,t,i,n){if(Oo("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&e in this._payloadOverrides)return this._payloadOverrides[e];let s=await this._getFeatureFlagResult(e,t,{...n,sendFeatureFlagEvents:!1},i);if(s===void 0)return;return s.payload??null}async getFeatureFlagResult(e,t,i){let{distinctId:n,options:s}=this._resolveDistinctId(t,i);if(!n)return void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()");return this._getFeatureFlagResult(e,n,{...s,sendFeatureFlagEvents:s?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0})}async getRemoteConfigPayload(e){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let t=await this._requestRemoteConfigPayload(e);if(!t)return;let i=await t.json();if(typeof i=="string")try{return JSON.parse(i)}catch(n){}return i}async isFeatureEnabled(e,t,i){Oo("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let n=await this._getFeatureFlagResult(e,t,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(n===void 0)return;if(n.enabled===!1)return!1;return!!(n.variant??!0)||!1}async getAllFlags(e,t){let{distinctId:i,options:n}=this._resolveDistinctId(e,t);if(!i)return this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{};return(await this.getAllFlagsAndPayloads(i,n)).featureFlags||{}}async getAllFlagsAndPayloads(e,t){let{distinctId:i,options:n}=this._resolveDistinctId(e,t);if(!i)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:s,disableGeoip:o,flagKeys:r}=n||{},{onlyEvaluateLocally:g,personProperties:a,groupProperties:l}=n||{},I=this.addLocalPersonAndGroupProperties(i,s,a,l);a=I.allPersonProperties,l=I.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(i,s,this.personPropertiesForLocalEvaluation(i,a),l);if(g==null)g=this.options.strictLocalEvaluation??!1;let p=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,r),c={},m={},C=!0;if(p)c=p.response,m=p.payloads,C=p.fallbackToFlags;if(C&&!g){let u=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,a,l,o,r);c={...c,...u.flags||{}},m={...m,...u.payloads||{}}}if(this._flagOverrides!==void 0)c={...c,...this._flagOverrides};if(this._payloadOverrides!==void 0)m={...m,...this._payloadOverrides};return{featureFlags:c,featureFlagPayloads:m}}async evaluateFlags(e,t){let{distinctId:i,options:n}=this._resolveDistinctId(e,t);if(!i)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new ni({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new ni({host:this._getFeatureFlagEvaluationsHost(),distinctId:i,flags:{}});let{groups:s,disableGeoip:o,flagKeys:r}=n||{},{onlyEvaluateLocally:g,personProperties:a,groupProperties:l}=n||{},I=this.addLocalPersonAndGroupProperties(i,s,a,l);a=I.allPersonProperties,l=I.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(i,s,this.personPropertiesForLocalEvaluation(i,a),l);if(g==null)g=this.options.strictLocalEvaluation??!1;let p={},c,m,C=!1,u=!1,A=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,r),b=new Set;if(A)for(let[h,y]of Object.entries(A.response)){let V=this.featureFlagsPoller?.featureFlagsByKey[h];p[h]={key:h,enabled:y!==!1,variant:typeof y=="string"?y:void 0,payload:A.payloads[h],id:V?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0,hasExperiment:V?.has_experiment},b.add(h)}if((A?A.fallbackToFlags:!0)&&!g){let h=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,a,l,o,r);if(h){this._minimalFlagCalledEvents=h.minimalFlagCalledEvents===!0,c=h.requestId,m=h.evaluatedAt,C=Boolean(h.errorsWhileComputingFlags),u=Array.isArray(h.quotaLimited)&&h.quotaLimited.includes("feature_flags");for(let[y,V]of Object.entries(h.flags)){if(b.has(y))continue;let B;if(V.metadata?.payload!==void 0)try{B=JSON.parse(V.metadata.payload)}catch{B=V.metadata.payload}p[y]={key:y,enabled:V.enabled,variant:V.variant,payload:B,id:V.metadata?.id,version:V.metadata?.version,reason:V.reason?.description??V.reason?.code,locallyEvaluated:!1,hasExperiment:V.metadata?.has_experiment}}}}if(this._flagOverrides!==void 0)for(let[h,y]of Object.entries(this._flagOverrides)){if(y===void 0){delete p[h];continue}let V=p[h];p[h]={key:h,enabled:y!==!1,variant:typeof y=="string"?y:void 0,payload:V?.payload,id:V?.id,version:V?.version,reason:V?.reason,locallyEvaluated:V?.locallyEvaluated??!1,hasExperiment:V?.hasExperiment}}if(this._payloadOverrides!==void 0)for(let[h,y]of Object.entries(this._payloadOverrides)){let V=p[h];if(V)p[h]={...V,payload:y}}return new ni({host:this._getFeatureFlagEvaluationsHost(),distinctId:i,groups:s,disableGeoip:o,flags:p,requestId:c,evaluatedAt:m,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:C,quotaLimited:u})}_shouldSendMinimalFlagCalledEvent(e,t){return e==="$feature_flag_called"&&this._minimalFlagCalledEvents&&t.$feature_flag_has_experiment===!1}_captureFlagCalledEventIfNeeded(e){let{distinctId:t,key:i,response:n,groups:s,disableGeoip:o,properties:r}=e,g=s&&Object.keys(s).length>0?`_${JSON.stringify(Object.entries(s).sort(([l],[I])=>l<I?-1:l>I?1:0))}`:"",a=`${i}_${n}${g}`;if(t in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[t].has(a))return;if(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize)this.distinctIdHasSentFlagCalls={};if(this.distinctIdHasSentFlagCalls[t]instanceof Set)this.distinctIdHasSentFlagCalls[t].add(a);else this.distinctIdHasSentFlagCalls[t]=new Set([a]);this.capture({distinctId:t,event:"$feature_flag_called",properties:r,groups:s,disableGeoip:o})}_getFeatureFlagEvaluationsHost(){if(!this._featureFlagEvaluationsHost)this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:(e)=>this._captureFlagCalledEventIfNeeded(e),logWarning:(e)=>{if(this.options.featureFlagsLogWarnings!==!1)console.warn(`[PostHog] ${e}`)}};return this._featureFlagEvaluationsHost}groupIdentify({groupType:e,groupKey:t,properties:i,distinctId:n,disableGeoip:s}){this._sendPreparedEvent("capture",{distinctId:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{}},disableGeoip:s},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:e,groupKey:t,properties:i,distinctId:n,disableGeoip:s}){await this._sendPreparedEvent("capture",{distinctId:n||`$${e}_${t}`,event:"$groupidentify",properties:{$group_type:e,$group_key:t,$group_set:i||{}},disableGeoip:s},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=(i)=>Object.fromEntries(i.map((n)=>[n,!0]));if(e===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){if("flags"in e){if(e.flags===!1)this._flagOverrides=void 0;else if(Array.isArray(e.flags))this._flagOverrides=t(e.flags);else if(e.flags!==void 0)this._flagOverrides={...e.flags}}if("payloads"in e){if(e.payloads===!1)this._payloadOverrides=void 0;else if(e.payloads!==void 0)this._payloadOverrides={...e.payloads}}return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e;if("flags"in t){let i=t.flags;if(i===!1||Array.isArray(i)||typeof i=="object"&&i!==null)return!0}if("payloads"in t){let i=t.payloads;if(i===!1||typeof i=="object"&&i!==null)return!0}return!1}withContext(e,t,i){if(!this.context)return t();return this.context.run(e,t,i)}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=Date.now()+(e??30000),i=this._consumeWaitUntilCycle();if(await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown(),this._metrics)await Promise.race([this._metrics.flush().catch(()=>{}),new Promise((n)=>de(n,Math.max(0,t-Date.now())))]),this._metrics.reset();try{return await super._shutdown(Math.max(0,t-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},i?.()}}async _requestRemoteConfigPayload(e){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,i={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},n=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let s=new AbortController;n=de(()=>{s.abort()},this.options.requestTimeout),i.signal=s.signal}try{return await this.fetch(t,i)}catch(s){this._events.emit("error",s);return}finally{if(n)clearTimeout(n)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let i={},n={};for(let[s,o]of Object.entries(e))if(cp(o)&&t&&s in t){let r={};for(let[g,a]of Object.entries(o))r[String(g)]=String(a);n[String(s)]=r}else i[String(s)]=String(o);return{personProperties:i,groupProperties:n}}async getFeatureFlagsForEvent(e,t,i,n){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let s=n?.personProperties||{},o=n?.groupProperties||{},r=n?.flagKeys;if(n?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let a={};for(let[l,I]of Object.entries(t||{}))a[l]=String(I);return await this.getAllFlags(e,{groups:a,personProperties:s,groupProperties:o,disableGeoip:i,onlyEvaluateLocally:!0,flagKeys:r})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let a={};for(let[l,I]of Object.entries(t||{}))a[l]=String(I);return await this.getAllFlags(e,{groups:a,personProperties:s,groupProperties:o,disableGeoip:i,onlyEvaluateLocally:!0,flagKeys:r})}return(await super.getFeatureFlagsStateless(e,t,s,o,i)).flags}addLocalPersonAndGroupProperties(e,t,i,n){let s={...i||{}},o={};if(t)for(let r of Object.keys(t))o[r]={$group_key:t[r],...n?.[r]||{}};return{allPersonProperties:s,allGroupProperties:o}}personPropertiesForLocalEvaluation(e,t){return{distinct_id:e,...t||{}}}createFeatureFlagEvaluationContext(e,t,i,n){return{distinctId:e,groups:t||{},personProperties:i||{},groupProperties:n||{},evaluationCache:{}}}captureException(e,t,i,n,s){if(!gt.isPreviouslyCapturedError(e)){let o=Error("PostHog syntheticException");this.addPendingPromise(gt.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:o},t,i).then((r)=>this._capturePreparedEvent({...r,uuid:n,flags:s},!1)))}}async captureExceptionImmediate(e,t,i,n){if(!gt.isPreviouslyCapturedError(e)){let s=Error("PostHog syntheticException");return this.addPendingPromise(gt.buildEventMessage(this.getErrorPropertiesBuilder(),e,{syntheticException:s},t,i).then((o)=>this.captureImmediate({...o,flags:n})))}}async prepareEventMessage(e){return this._prepareEventMessage(e)}async _prepareEventMessage(e,t={}){let{distinctId:i,event:n,properties:s,groups:o,flags:r,sendFeatureFlags:g,timestamp:a,disableGeoip:l,uuid:I}=e,d=this.context?.get(),p=t.includeContextProperties??!0,c=i||d?.distinctId,m=p?{...this.props,...d?.properties||{},...s||{}}:{...s||{}};if(!c)c=we(),m.$process_person_profile=!1;if(p&&d?.sessionId&&!m.$session_id)m.$session_id=d.sessionId;let C=this._shouldSendMinimalFlagCalledEvent(n,m)?Qn(m):m,u=this._runBeforeSend({distinctId:c,event:n,properties:C,groups:o,flags:r,sendFeatureFlags:g,timestamp:a,disableGeoip:l,uuid:I});if(!u)return Promise.reject(null);let A=await Promise.resolve().then(async()=>{if(r){if(g)console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`.");return r._getEventProperties()}if(g){Oo("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let b=typeof g=="object"?g:void 0,W=await this.getFeatureFlagsForEvent(u.distinctId,o,l,b);return cP(W)}return{}}).catch(()=>({})).then((b)=>{let W=u.groups||o;return{...b,...u.properties||{},...W!==void 0&&Object.keys(W).length>0?{$groups:W}:{}}});if(u.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof A.$raw_user_agent=="string"){if(op(A.$raw_user_agent,this.options.custom_blocked_useragents||[]))u.event="$bot_pageview",A.$browser_type="bot"}return{distinctId:u.distinctId,event:u.event,properties:A,options:{timestamp:u.timestamp,disableGeoip:u.disableGeoip,uuid:u.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let i=Array.isArray(t)?t:[t],n=e;for(let s of i){if(n=s(n),!n)return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!n.properties||Object.keys(n.properties).length===0){let o=`Event '${n.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(o)}}return n}}var HA=require("async_hooks");class Yl{constructor(){this.storage=new HA.AsyncLocalStorage}get(){return this.storage.getStore()}run(e,t,i){return this.storage.run(this.resolve(e,i),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let i=this.get()||{};return{distinctId:e.distinctId??i.distinctId,sessionId:e.sessionId??i.sessionId,properties:{...i.properties||{},...e.properties||{}}}}}function CP(e,{organization:t,projectId:i,prefix:n,severityAllowList:s=["error"],sendExceptionsToPostHog:o=!0}={}){return(r)=>{if(!(s==="*"||s.includes(r.level)))return r;if(!r.tags)r.tags={};let a=r.tags[vA.POSTHOG_ID_TAG];if(a===void 0)return r;let l=e.options.host??"https://us.i.posthog.com",I=new URL(`/project/${e.apiKey}/person/${a}`,l).toString();r.tags["PostHog Person URL"]=I;let d=r.exception?.values||[],p=d.map((m)=>({...m,stacktrace:m.stacktrace?{...m.stacktrace,type:"raw",frames:(m.stacktrace.frames||[]).map((C)=>({...C,platform:"node:javascript"}))}:void 0})),c={$exception_message:d[0]?.value||r.message,$exception_type:d[0]?.type,$exception_level:r.level,$exception_list:p,$sentry_event_id:r.event_id,$sentry_exception:r.exception,$sentry_exception_message:d[0]?.value||r.message,$sentry_exception_type:d[0]?.type,$sentry_tags:r.tags};if(t&&i)c.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+i+"&query="+r.event_id;if(o)e.capture({event:"$exception",distinctId:a,properties:c});return r}}class vA{static#i=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(e,t,i,n,s){this.name="posthog-node",this.name="posthog-node",this.setupOnce=function(o,r){let g=r()?.getClient()?.getDsn()?.projectId;o(CP(e,{organization:t,projectId:g,prefix:i,severityAllowList:n,sendExceptionsToPostHog:s??!0}))}}}class Nl extends Pl{getLibraryId(){return"posthog-node"}initializeContext(){return new Yl}createErrorPropertiesBuilder(){return new Ve.ErrorPropertiesBuilder([new Ve.EventCoercer,new Ve.ErrorCoercer,new Ve.ObjectCoercer,new Ve.StringCoercer,new Ve.PrimitiveCoercer],Ve.createStackParser("node:javascript",Ve.nodeStackLineParser),[ip(),aA,dA()])}}var ie=require("fs/promises"),Ce=require("path");var kA={name:"@toloka-platform/sdk",version:"0.1.0-preview.7",private:!1,description:"Preview. Build, inspect, and operate Toloka pipeline projects as TypeScript source. The public API may change.",license:"Apache-2.0",bin:{toloka:"bin/toloka.js"},files:["README.md","bin","docs","dist","examples","openapi/gen","skills","src"],type:"module",main:"./src/index.ts",exports:{".":"./src/index.ts","./testing":"./src/testing/index.ts","./checks":"./src/checks/index.ts","./examples/face-image-collection":"./examples/face-image-collection/pipeline.ts"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/",tag:"preview"},scripts:{build:"bun ./scripts/build-cli.ts ./dist/cli",generate:"orval --config ./openapi/orval.config.js",prepack:"bun run build","sync-skill-catalog":"bun ./scripts/sync-skill-catalog.ts","sync-task-ui-declarations":"bun ./scripts/sync-task-ui-declarations.ts",test:"vitest run","test:browser":"vitest run --config vitest.browser.config.ts",typecheck:"tsc --noEmit"},dependencies:{"@inquirer/select":"5.2.1","@typescript/vfs":"1.6.2",ajv:"8.17.1","ajv-formats":"3.0.1",commander:"15.0.0","es-toolkit":"1.42.0","jsonpath-rfc9535":"1.3.0","oxc-parser":"0.138.0","posthog-node":"5.46.1","typescript-api":"npm:typescript@6.0.3"},devDependencies:{"@types/node":"24.10.1",orval:"7.17.0",playwright:"1.56.1",typescript:"7.0.2",vitest:"4.1.0",yaml:"2.9.0"},peerDependencies:{playwright:">=1.56.1 <2",vitest:">=4.1.0 <5"},peerDependenciesMeta:{playwright:{optional:!0},vitest:{optional:!0}},engines:{bun:"1.4.0"}};var PA=require("fs/promises"),YA=require("path"),To=(e,...t)=>e instanceof Error&&("code"in e)&&typeof e.code==="string"&&t.includes(e.code),zo=(e)=>To(e,"ENOENT"),_i=async(e)=>{try{return await PA.lstat(e)}catch(t){if(zo(t))return;throw t}},os=async(e,t,i="write")=>{let n=e;for(let s of t.split("/")){n=YA.join(n,s);let o=await _i(n);if(o===void 0)return;Z(!o.isSymbolicLink(),`Refusing to ${i} through symbolic link ${n}.`)}};var xA=require("crypto"),q=require("fs/promises"),ce=require("path"),JA=require("url");var mP=(e)=>{let t=typeof e.body==="string"?e.body:e.body===void 0?void 0:JSON.stringify(e.body);return t===void 0||t.length===0?void 0:t},rs=(e)=>{if(e instanceof te){let t=mP(e);return t===void 0?e.message:`${e.message}
|
|
141
|
+
${t}`}return e instanceof Error?e.message:String(e)};var Xl=JA.fileURLToPath(new URL("../../skills","file:///Users/gzarip/code/potato-5/packages/sdk/src/cli/skill.ts")),jo="catalog.json",Li=".agents/skills",Ki="SKILL.md",EA="skills",NA=500,XA=1048576,UA=64,pP=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u,AP=/^[a-f0-9]{64}$/u,OA=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),SA=(e)=>Array.isArray(e)&&e.every((t)=>typeof t==="string"),Sl=(e)=>typeof e==="string"&&e.trim().length>0,ZP=(e)=>typeof e==="string"&&e.length<=UA&&pP.test(e),bP=(e)=>!e.includes("\\")&&!e.includes("\x00")&&e.split("/").every((t)=>t.length>0&&t!=="."&&t!==".."),WP=(e,t)=>{Z(OA(e),t("every skill must be an object."));let{id:i,name:n,description:s,tags:o,version:r,digest:g,files:a}=e;return Z(ZP(i),t(`skill id ${JSON.stringify(i)} must be at most ${UA} lowercase letters, digits, and single hyphens.`)),Z(Sl(n),t(`skill ${i} needs a name.`)),Z(Sl(s),t(`skill ${i} needs a description.`)),Z(SA(o),t(`skill ${i} tags must be strings.`)),Z(Sl(r),t(`skill ${i} needs a version.`)),Z(typeof g==="string"&&AP.test(g),t(`skill ${i} digest must be the sha256 hex digest of its files.`)),Z(SA(a)&&a.includes(Ki),t(`skill ${i} files must include ${Ki}.`)),Z(a.every(bP),t(`skill ${i} files must be relative paths inside its directory.`)),Z(new Set(a).size===a.length,t(`skill ${i} lists a file more than once.`)),{id:i,name:n,description:s,tags:o,version:r,digest:g,files:a}},hP=(e,t)=>{try{return JSON.parse(e)}catch(i){throw Error(`Invalid skill catalog ${t}: ${rs(i)}`)}},TA=async(e)=>{try{return(await q.stat(e)).isFile()}catch(t){if(To(t,"ENOENT","ENOTDIR"))return!1;throw t}},zA=async(e)=>{let t=ce.join(e,EA);if(await TA(ce.join(t,jo)))return t;let i=ce.dirname(e);return i===e?void 0:zA(i)};async function fP(e=process.argv[1]){let t=e===void 0?void 0:await q.realpath(e),i=t===void 0?void 0:await zA(ce.dirname(t));if(i!==void 0)return i;let n=t===void 0?"process.argv[1] names no runtime entry":`none exists between ${t} and the filesystem root`;return Z(await TA(ce.join(Xl,jo)),`Cannot locate the bundled skill catalog. An installed @toloka-platform/sdk must ship ${EA}/${jo} in a directory above its runtime entry, but ${n}, and the source checkout catalog ${Xl} is absent. Reinstall @toloka-platform/sdk.`),Xl}var xl=async()=>yP(await fP());async function yP(e){let t=ce.join(e,jo),i=(g)=>`Invalid skill catalog ${t}: ${g}`,{size:n}=await q.stat(t);Z(n<=XA,i(`the manifest is ${n} bytes; the limit is ${XA} bytes.`));let s=hP(await q.readFile(t,"utf8"),t);Z(OA(s)&&Array.isArray(s.skills),i("expected an object with a skills array.")),Z(s.skills.length<=NA,i(`${s.skills.length} skills exceed the limit of ${NA}.`));let o=s.skills.map((g)=>WP(g,i)),r=new Set;for(let g of o)Z(!r.has(g.id),i(`skill id ${g.id} appears more than once.`)),r.add(g.id);return{root:e,manifestPath:t,skills:o}}async function jA(e,t){let i=xA.createHash("sha256");for(let n of t.toSorted())i.update(n),i.update("\x00"),i.update(await q.readFile(ce.join(e,n))),i.update("\x00");return i.digest("hex")}var VP=(e,t)=>{let i=t.trim().toLowerCase().split(/\s+/u).filter(Boolean);if(i.length===0)return[];return e.map((n,s)=>{let o=[n.id,n.name,n.description,...n.tags].join(`
|
|
142
|
+
`).toLowerCase();return{skill:n,index:s,score:i.filter((r)=>o.includes(r)).length}}).filter(({score:n})=>n>0).toSorted((n,s)=>s.score-n.score||n.index-s.index).map(({skill:n})=>n)};async function BP(e,t){let i=ce.join(e,Li,t.id);if(await _i(i)===void 0)return"not-installed";try{return await jA(i,t.files)===t.digest?"current":"stale"}catch(n){if(To(n,"ENOENT","ENOTDIR"))return"stale";throw n}}var DA=({sourceRoot:e,skills:t})=>Promise.all(t.map(async(i)=>({...i,status:await BP(e,i)}))),GP=async(e,t,i,n)=>{await e(i,n);try{await e(t,i)}catch(s){try{await e(n,i)}catch(o){throw Error(`Failed to replace ${i}; the previous version is preserved at ${n}. ${rs(o)}`,{cause:s})}throw s}await q.rm(n,{recursive:!0,force:!0})};async function RP({catalog:e,sourceRoot:t,skillId:i,force:n=!1,rename:s=q.rename}){let o=e.skills.find((d)=>d.id===i);Z(o,`Skill ${JSON.stringify(i)} is not in the catalog. Run \`toloka skill list\` to see the available skills.`);let r=`${Li}/${o.id}`;await os(t,r);let g=ce.join(t,r),a=await _i(g);Z(a===void 0||n,`${r} already exists. Re-run with --force to replace it with the catalog version of ${o.id}.`);let l=ce.dirname(g);await q.mkdir(l,{recursive:!0});let I=await q.mkdtemp(ce.join(l,`.${o.id}.tmp-`));try{for(let d of o.files){let p=ce.join(I,d);await q.mkdir(ce.dirname(p),{recursive:!0}),await q.copyFile(ce.join(e.root,o.id,d),p)}if(Z(await jA(I,o.files)===o.digest,`Skill ${o.id} failed its digest check: the packaged files do not match the catalog digest ${o.digest}. Nothing was installed.`),a===void 0)await s(I,g);else await GP(s,I,g,`${I}.backup`)}catch(d){throw await q.rm(I,{recursive:!0,force:!0}),d}return{skill:o,directory:g,replaced:a!==void 0}}var QA=(e,t)=>{if(t)return JSON.stringify(e,void 0,2);let i=Math.max(...e.map((s)=>s.id.length)),n=Math.max(...e.map((s)=>s.status.length));return e.flatMap((s)=>[`${s.id.padEnd(i)} ${s.status.padEnd(n)} ${s.name}`,` ${s.description}`]).join(`
|
|
143
|
+
`)};async function _A({sourceRoot:e,json:t,io:i}){let n=await xl();i.stdout(QA(await DA({sourceRoot:e,skills:n.skills}),t))}async function KA({sourceRoot:e,query:t,json:i,io:n}){let s=await xl(),o=await DA({sourceRoot:e,skills:VP(s.skills,t)});if(i||o.length>0){n.stdout(QA(o,i));return}n.stdout(`No skills match ${JSON.stringify(t)}. Run \`toloka skill list\` to see the catalog.`)}async function LA({sourceRoot:e,skillId:t,force:i,io:n}){let s=await xl(),o=await RP({catalog:s,sourceRoot:e,skillId:t,force:i}),r=`${Li}/${o.skill.id}`,g=o.skill.files.length;n.stdout(`${o.replaced?"Replaced":"Installed"} ${o.skill.id} in ${r} (${g} ${g===1?"file":"files"}). Start with ${r}/${Ki}.`)}var De=kA.version,Qe="@toloka-platform/sdk",Ol="toloka-bootstrap",$A=`.claude/skills/${Ol}/SKILL.md`,qA=`.cursor/rules/${Ol}.mdc`,si="AGENTS.md",wP=[$A,qA,si],Mi={begin:"<toloka>",end:"</toloka>"},Jl={begin:"<!-- toloka:begin -->",end:"<!-- toloka:end -->"},El=/<!-- toloka:sdk-version ([^\s>]+) -->/u,eZ=["toloka-build","toloka-pipeline-as-code"].flatMap((e)=>[{file:`.claude/skills/${e}/SKILL.md`,directory:`.claude/skills/${e}`},{file:`.cursor/rules/${e}.mdc`}]),$i=async(e)=>{try{return await ie.readFile(e,"utf8")}catch(t){if(zo(t))return;throw t}},Ul=async(e)=>{try{return(await ie.lstat(e)).isDirectory()}catch(t){if(zo(t))return!1;throw t}},Tl=(e)=>El.test(e),tZ=`Generated by \`${Qe}\` version \`${De}\`.
|
|
144
|
+
<!-- toloka:sdk-version ${De} -->`,FP=`${Mi.begin}
|
|
59
145
|
|
|
60
146
|
## Toloka Agent Bootstrap
|
|
61
147
|
|
|
62
|
-
${
|
|
148
|
+
${tZ}
|
|
63
149
|
Re-run \`toloka init\` to refresh this block. Keep your own instructions outside it.
|
|
64
150
|
|
|
65
151
|
This repository works with the Toloka platform through the \`toloka\` CLI. Before starting a Toloka task:
|
|
66
152
|
|
|
67
153
|
1. Run \`toloka --help\`, then \`toloka <resource> --help\` for the resource you need.
|
|
68
154
|
2. Run \`toloka skill search <query>\` to find a bundled skill for the task; \`toloka skill list\` shows every skill and whether it is installed.
|
|
69
|
-
3. Run \`toloka skill install <skill-id>\` and read \`${
|
|
155
|
+
3. Run \`toloka skill install <skill-id>\` and read \`${Li}/<skill-id>/${Ki}\` before acting; add \`--force\` to refresh a stale skill.
|
|
70
156
|
4. Follow the installed skill. When no skill matches, continue with the CLI help and never invent commands or SDK helpers.
|
|
71
157
|
5. To report a Toloka platform problem or unexpected failure to support, run \`toloka skill search report-issue\` and install \`toloka-report-issue\` before collecting evidence.
|
|
72
158
|
|
|
73
|
-
${
|
|
159
|
+
${Mi.end}`,iZ=`# Toloka Agent Bootstrap pointer
|
|
74
160
|
|
|
75
|
-
${
|
|
161
|
+
${tZ}
|
|
76
162
|
|
|
77
|
-
Read the \`${
|
|
78
|
-
`,
|
|
79
|
-
name: ${
|
|
80
|
-
description: Toloka platform work with the toloka CLI and ${
|
|
163
|
+
Read the \`${Mi.begin}\` block in \`${si}\` at the source root and follow it before doing Toloka work. It tells you to run \`toloka --help\`, search the bundled Skill Catalog with \`toloka skill search <query>\`, install the match with \`toloka skill install <skill-id>\`, and read \`${Li}/<skill-id>/${Ki}\` before acting.
|
|
164
|
+
`,HP=`---
|
|
165
|
+
name: ${Ol}
|
|
166
|
+
description: Toloka platform work with the toloka CLI and ${Qe}, such as pipeline projects, datasets, runs, secrets, and issue reporting. Use when the user mentions Toloka or the toloka CLI. Start by reading the ${Mi.begin} Agent Bootstrap block in ${si}, then find and install the matching skill.
|
|
81
167
|
---
|
|
82
168
|
|
|
83
|
-
${
|
|
84
|
-
description: Toloka Agent Bootstrap pointer for the toloka CLI and ${
|
|
169
|
+
${iZ}`,vP=`---
|
|
170
|
+
description: Toloka Agent Bootstrap pointer for the toloka CLI and ${Qe}
|
|
85
171
|
alwaysApply: true
|
|
86
172
|
---
|
|
87
173
|
|
|
88
|
-
${
|
|
174
|
+
${iZ}`,MA=(e,t,i)=>{let n=e.indexOf(t.begin),s=e.indexOf(t.end);if(n===-1&&s===-1)return;return Z(n!==-1&&s!==-1&&n<s,`Malformed Toloka block in ${i}: expected one ${t.begin} followed by one ${t.end}. Repair the file by hand, then re-run \`toloka init\`.`),Z(!e.includes(t.begin,n+t.begin.length)&&!e.includes(t.end,s+t.end.length),`Multiple Toloka blocks in ${i}: keep exactly one ${t.begin} ... ${t.end} block, then re-run \`toloka init\`.`),{beginIndex:n,endIndex:s+t.end.length}},kP=(e,t)=>{let i=MA(e,Mi,t),n=MA(e,Jl,t);Z(i===void 0||n===void 0,`Ambiguous Toloka blocks in ${t}: both ${Mi.begin} and ${Jl.begin} are present. Keep one, then re-run \`toloka init\`.`);let s=e.includes(`\r
|
|
89
175
|
`)?`\r
|
|
90
176
|
`:`
|
|
91
|
-
`,
|
|
92
|
-
`,
|
|
93
|
-
`),
|
|
94
|
-
`,{mode:384}),await
|
|
95
|
-
${e.map((
|
|
177
|
+
`,o=FP.replaceAll(`
|
|
178
|
+
`,s),r=i??n;if(r!==void 0)return`${e.slice(0,r.beginIndex)}${o}${e.slice(r.endIndex)}`;if(e.length===0)return`${o}${s}`;let g=e.endsWith(`${s}${s}`)?"":e.endsWith(s)?s:`${s}${s}`;return`${e}${g}${o}${s}`},PP=async(e)=>{if(await Ul(Ce.join(e,"node_modules",Qe)))return!0;let t=await $i(Ce.join(e,"package.json"));if(t===void 0)return!1;let i=JSON.parse(t);return Z(typeof i==="object"&&i!==null,"package.json must contain a JSON object."),["dependencies","devDependencies"].some((n)=>{let s=Reflect.get(i,n);return typeof s==="object"&&s!==null&&typeof Reflect.get(s,Qe)==="string"})},YP=async(e,t)=>{if(await $i(e)===t)return!1;return await ie.mkdir(Ce.dirname(e),{recursive:!0}),await ie.writeFile(e,t,"utf8"),!0},NP=async(e,t)=>{let i=Ce.join(e,t),n=await $i(i);Z(n===void 0||Tl(n),`Refusing to overwrite ${i}: it carries no \`<!-- toloka:sdk-version ... -->\` marker, so it is not a pointer generated by ${Qe}. Move it aside, then re-run \`toloka init\`.`)},XP=async(e)=>(await Promise.all(eZ.map(async(i)=>{let n=Ce.join(e,i.file);if(await _i(n)===void 0)return;return await os(e,i.file,"remove legacy agent entry point"),Tl(await ie.readFile(n,"utf8"))?i:void 0}))).filter((i)=>i!==void 0),SP=async(e,t)=>{if(await ie.rm(Ce.join(e,t.file),{force:!0}),t.directory===void 0)return;let i=Ce.join(e,t.directory);if((await ie.readdir(i)).length===0)await ie.rmdir(i)},xP=(e,t,i,n)=>[`${i.length===0&&n.length===0?"Agent entry points are up to date":"Initialized agent entry points"} for ${Qe} ${De} in ${e}:`,...t.map((s)=>` ${s}`),...n.map((s)=>` removed ${s} (replaced by the ${si} Agent Bootstrap)`)].join(`
|
|
179
|
+
`),JP=async(e,t)=>{if(t===void 0)return;let i=await Ge(e);if(Z(i===void 0||i.projectId===t,`This directory is already bound to ${i?.projectId}.`),i!==void 0)return;return await Kt(e,{projectId:t,pipelines:{},datasets:{}}),"toloka.json"};async function nZ(e,t={}){await ie.mkdir(e,{recursive:!0});let i=await ie.realpath(e),n=Ce.join(i,si),s=await $i(n),o=kP(s??"",n),[r,g]=await Promise.all([Ul(Ce.join(i,".claude")),Ul(Ce.join(i,".cursor","rules"))]),l=[...r||!r&&!g&&s===void 0?[{relativePath:$A,source:HP}]:[],...g?[{relativePath:qA,source:vP}]:[]],I=[...l,{relativePath:si,source:o}];await Promise.all(I.map((b)=>os(i,b.relativePath))),await Promise.all(l.map((b)=>NP(i,b.relativePath)));let d=await XP(i),p=await JP(i,t.projectId),c=p===void 0?[]:[p];for(let b of I)if(await YP(Ce.join(i,b.relativePath),b.source))c.push(b.relativePath);for(let b of d)await SP(i,b);let m=d.map((b)=>b.file),C=await PP(i),u=[...I.map((b)=>b.relativePath),...p===void 0?[]:[p]],A=C?void 0:`Warning: ${Qe} is not listed in dependencies or devDependencies in ${Ce.join(i,"package.json")}. Run \`bun add --dev ${Qe}\` before using \`toloka\`, then re-run \`toloka init\`.`;return{targetDirectory:i,files:u,writtenFiles:c,removedFiles:m,sdkVersion:De,dependencyReady:C,output:xP(i,u,c,m),...A===void 0?{}:{warning:A}}}async function sZ(e){let t=[],i=new Set,n=(o,r)=>{t.push(o);let g=El.exec(r)?.[1];if(g!==void 0)i.add(g)};for(let{file:o}of eZ){let r=await $i(Ce.join(e,o));if(r!==void 0&&Tl(r))n(o,r)}for(let o of wP){let r=await $i(Ce.join(e,o));if(r===void 0)continue;let g=El.exec(r)?.[1];if(r.includes(Jl.begin)||g!==void 0&&g!==De)n(o,r)}if(t.length===0)return;return`Warning: Agent instructions generated by ${i.size===0?`an earlier ${Qe} build`:`${Qe} ${[...i].toSorted().join(", ")}`} are out of date (${t.join(", ")}). The installed ${De} manages one Agent Bootstrap in ${si} plus pointer files. Re-run \`toloka init\`.`}var EP="phc_kqHt0f53B5MVqURyzWpW1aNlbOmYt1YbUYza0JPcg19",UP="https://eu.posthog.com",OP={"--source-root":!0,"--api-key":!0,"--base-url":!0,"--project-id":!0},Do=(e)=>{if(e===void 0)return!1;let t=e.trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"},TP=(e)=>{if(e===void 0)return!1;let t=e.trim().toLowerCase();return t==="0"||t==="false"||t==="no"||t==="off"};function zP(e){let t=e.TOLOKA_TELEMETRY??process.env.TOLOKA_TELEMETRY;if(TP(t))return!1;if(Do(t))return!0;if(Do(e.DO_NOT_TRACK??process.env.DO_NOT_TRACK))return!1;if(Do(e.CI??process.env.CI))return!1;if(Do(process.env.VITEST))return!1;return!0}var jP={project:{list:!0,add:!0,switch:!0,current:!0,remove:!0,create:!0},pipeline:{list:!0,run:!0,status:!0,runs:!0,cost:!0,cancel:!0,results:!0},dataset:{list:!0,fields:!0,load:!0,upload:!0},secret:{set:!0},skill:{list:!0,search:!0,install:!0}},DP={apply:!0,check:!0,"auth-status":!0,help:!0,import:!0,init:!0,login:!0,logout:!0,plan:!0,status:!0,validate:!0,report:!0,version:!0,whoami:!0},zl=(e)=>{let t=e[0];if(t===void 0)return"help";let i=jP[t];if(i===void 0)return DP[t]===!0?t:"unknown";let n=e[1];return n!==void 0&&i[n]===!0?`${t} ${n}`:t};function rZ(e){if(e.includes("-v")||e.includes("--version"))return"version";let t=[];for(let i=0;i<e.length;i+=1){let n=e[i];if(n===void 0)continue;if(n==="--help"||n==="-h")break;if(n.startsWith("-")){if(OP[n]===!0)i+=1;continue}t.push(n)}return zl(t)}function QP(e){if(e===void 0)return{error_code:"command_failed"};if(e instanceof te||e instanceof ui)return{error_code:e.code};return{error_code:e instanceof Error?"error":"unknown"}}var _P=(e)=>Qo.join(Qo.dirname(je(e)),"anonymous-id"),KP=async(e)=>{let t=_P(e);await il(t);try{let n=(await oi.readFile(t,"utf8")).trim();if(n.length>0)return await oi.chmod(t,384),n}catch(n){if(!(n instanceof Error&&("code"in n)&&n.code==="ENOENT"))throw n}let i=oZ.randomUUID();return await oi.writeFile(t,`${i}
|
|
180
|
+
`,{mode:384}),await oi.chmod(t,384),i},LP=()=>({shouldIdentify:!1,issueReportingEnabled:!1,identifyCurrentUser(){},captureCommand(){},async submitIssueReport(){Z(!1,"Issue reporting is disabled. Re-run with TOLOKA_TELEMETRY=1.")},async shutdown(){}});function gZ(e){let{environment:t}=e;if(e.client===void 0&&!zP(t))return LP();let{client:i,distinctId:n}=e,s,o=[],r=(I)=>{o.push(I)};i?.on?.("error",r);let g=async()=>{if(i!==void 0&&n!==void 0)return;if(i===void 0){let I=new Nl(EP,{host:UP,flushAt:1,flushInterval:0});I.on("error",r),i=I}n??=await KP(t)},a=()=>({sdk_version:De,bun_version:typeof process.versions.bun==="string"?process.versions.bun:void 0,actor:"user",channel:"cli"}),l=g().catch(()=>{});return{issueReportingEnabled:!0,shouldIdentify:!0,identifyCurrentUser(I){l=l.then(()=>{if(i===void 0||n===void 0)return;if(s===I.id)return;if(s=I.id,n!==I.id)i.alias({distinctId:I.id,alias:n});n=I.id}).catch(()=>{})},captureCommand(I){l=l.then(()=>{if(i===void 0||n===void 0)return;let d=a();if(I.outcome==="failed"){let p=QP(I.error);i.capture({distinctId:n,event:"sdk_cli_command_failed",disableGeoip:!0,properties:{...d,command:zl(I.command.split(" ")),duration_ms:I.durationMs,exit_code:I.exitCode,...p}});return}i.capture({distinctId:n,event:"sdk_cli_command_completed",disableGeoip:!0,properties:{...d,command:zl(I.command.split(" ")),duration_ms:I.durationMs,exit_code:I.exitCode,outcome:I.outcome}})}).catch(()=>{})},submitIssueReport(I){let d=l.then(async()=>{Z(i&&n,"PostHog issue reporting could not be initialized."),o.length=0,i.capture({distinctId:n,event:"sdk_cli_issue_report_submitted",disableGeoip:!0,properties:{...a(),report_id:I.reportId,report_text:I.reportText,report_length_bytes:new TextEncoder().encode(I.reportText).length,authored_by:I.authoredBy,platform:I.platform,$process_person_profile:!1}}),await i.flush();let p=o[0];if(o.length=0,p!==void 0)throw p});return l=d.catch(()=>{}),d},async shutdown(){try{await l,await i?.shutdown(2000)}catch{}}}}var qi=require("fs/promises"),ls=require("path");var dZ=Symbol("sourceReference"),cZ={code:!0,connect:!0,definePipeline:!0,field:!0,generation:!0,match:!0,pipeline:!0,quorum:!0,root:!0},MP={arguments:!0,await:!0,break:!0,case:!0,catch:!0,class:!0,const:!0,continue:!0,debugger:!0,default:!0,delete:!0,do:!0,else:!0,enum:!0,eval:!0,export:!0,extends:!0,false:!0,finally:!0,for:!0,function:!0,if:!0,implements:!0,import:!0,in:!0,instanceof:!0,interface:!0,let:!0,new:!0,null:!0,package:!0,private:!0,protected:!0,public:!0,return:!0,static:!0,super:!0,switch:!0,this:!0,throw:!0,true:!0,try:!0,typeof:!0,var:!0,void:!0,while:!0,with:!0,yield:!0};function Jt(e,t){return e<t?-1:e>t?1:0}function aZ(e){let t=2166136261;for(let i=0;i<e.length;i+=1)t^=e.charCodeAt(i),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function CZ(e){return e.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").split(/[^A-Za-z0-9]+/).filter(Boolean)}function uZ(e,t){let[i,...n]=CZ(e),o=`${(i??t).toLowerCase()}${n.map((g)=>`${g.slice(0,1).toUpperCase()}${g.slice(1).toLowerCase()}`).join("")}`,r=/^\d/.test(o)?`_${o}`:o;return Object.hasOwn(MP,r)?`${r}Value`:r}function $P(e,t){return CZ(e).map((i)=>i.toLowerCase()).join("-")||t}function jl(e,t,i){let n=new Map,s=new Set;for(let a of e){Z(!s.has(a.key),`Naming key "${a.key}" is duplicated`),s.add(a.key);let l=t(a),I=n.get(l)??[];I.push(a),n.set(l,I)}let o=new Set(n.keys()),r=new Set,g=new Map;for(let[a,l]of[...n.entries()].toSorted(([I],[d])=>Jt(I,d))){let I=l.toSorted((d,p)=>Jt(d.key,p.key));for(let d of I){let p=a;if(I.length>1||i!==void 0&&Object.hasOwn(i,p))p=`${a}_${aZ(d.key)}`;let c=2;while(r.has(p)||i!==void 0&&Object.hasOwn(i,p)||p!==a&&o.has(p))p=`${a}_${aZ(d.key)}_${c}`,c+=1;r.add(p),g.set(d.key,p)}}return g}function qP(e){return typeof e==="object"&&e!==null&&dZ in e}function ne(e){return" ".repeat(e)}function Ne(e,t=0){if(qP(e))return e.name;if(Z(e!==void 0,"Cannot emit an undefined source value"),typeof e==="number")Z(Number.isFinite(e),"Cannot emit a non-finite number");if(e===null||typeof e!=="object"){let s=JSON.stringify(e);return Z(s!==void 0,`Cannot emit a ${typeof e} source value`),s}if(Array.isArray(e)){if(e.length===0)return"[]";return`[
|
|
181
|
+
${e.map((o)=>`${ne(t+1)}${Ne(o,t+1)}`).join(`,
|
|
96
182
|
`)}
|
|
97
|
-
${
|
|
98
|
-
${
|
|
183
|
+
${ne(t)}]`}let i=Object.entries(e).filter(([,s])=>s!==void 0).toSorted(([s],[o])=>Jt(s,o));if(i.length===0)return"{}";return`{
|
|
184
|
+
${i.map(([s,o])=>{let r=s==="__proto__"?`[${JSON.stringify(s)}]`:/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(s)?s:JSON.stringify(s);return`${ne(t+1)}${r}: ${Ne(o,t+1)}`}).join(`,
|
|
99
185
|
`)}
|
|
100
|
-
${
|
|
186
|
+
${ne(t)}}`}function gs(e,t){return{field:t(e.id),optional:e.optional}}function _o(e,t){let{fieldProxyId:i,relations:n,...s}=e;return{...s,field:t(i),...n===void 0?{}:{relations:n.map(({id:o,...r})=>({...r,field:t(o)}))}}}function Dl(e,t){let{targetEntity:i,...n}=e;return{...n,targetEntity:t(i)}}function lZ(e,t){return{...e,gradedEntities:e.gradedEntities.map((i)=>Dl(i,t))}}function eY(e,t){switch(e.type){case"root":{let{datasetId:i,itemFilter:n,startedFieldProxies:s,completedFieldProxies:o,...r}=e.settings;return{...r,started:s.output.map((g)=>gs(g,t)),completed:o.input.map((g)=>gs(g,t))}}case"code":{let{fieldProxies:i,...n}=e.settings;return{...n,fieldProxies:{input:i.input.map((s)=>gs(s,t)),output:i.output.map((s)=>gs(s,t))}}}case"generation":{let{entities:i,qualityCriteria:n,exam:s,...o}=e.settings;return{...o,entities:{input:i.input.map((r)=>_o(r,t)),output:i.output.map((r)=>_o(r,t))},qualityCriteria:n.map((r)=>Dl(r,t)),...s===void 0?{}:{exam:lZ(s,t)}}}case"match":{let{conditions:i,fieldProxies:n,...s}=e.settings;return{...s,conditions:i.map(({predicates:o,...r})=>({...r,predicates:o.map(({fieldProxyId:g,...a})=>({...a,field:t(g)}))})),fieldProxies:{input:n.input.map((o)=>gs(o,t))}}}case"quorum":{let{entities:i,qualityCriteria:n,exam:s,...o}=e.settings;return{...o,entities:{input:i.input.map((r)=>_o(r,t)),output:i.output.map((r)=>_o(r,t))},qualityCriteria:n.map((r)=>Dl(r,t)),...s===void 0?{}:{exam:lZ(s,t)}}}}}function tY(e,t,i,n){let s=new Set,r=eY(e,(I)=>{let d=n.get(I);return Z(d,`Node "${e.id}" references unknown field "${I}"`),s.add(d),{name:d,[dZ]:!0}}),g=[...s].toSorted(Jt),a=[`import { ${e.type} } from '@toloka-platform/sdk';`,...g.length===0?[]:["",`import { ${g.join(", ")} } from '../../fields';`]],l=e.type==="root"?[`${ne(1)}${Ne(r,1)}`,`${ne(1)}${Ne({id:e.id},1)}`]:[`${ne(1)}${Ne(e.settings.about.name,1)}`,`${ne(1)}${Ne(r,1)}`,`${ne(1)}${Ne({id:e.id},1)}`];return{binding:t,path:i,source:`${a.join(`
|
|
101
187
|
`)}
|
|
102
188
|
|
|
103
189
|
export const ${t} = ${e.type}(
|
|
104
|
-
${
|
|
190
|
+
${l.join(`,
|
|
105
191
|
`)}
|
|
106
192
|
);
|
|
107
|
-
`}}function
|
|
193
|
+
`}}function mZ(e,t){if(e.length===0)return`export {};
|
|
108
194
|
`;return`import { field } from '@toloka-platform/sdk';
|
|
109
195
|
|
|
110
|
-
${e.map((
|
|
111
|
-
${
|
|
196
|
+
${e.map((n)=>{let s=t(n),o=[`${ne(1)}${Ne(n.name,1)}`,`${ne(1)}${Ne(n.jsonSchema,1)}`,...n.options===void 0?[]:[`${ne(1)}${Ne(n.options,1)}`]];return{binding:s,source:`export const ${s} = field(
|
|
197
|
+
${o.join(`,
|
|
112
198
|
`)}
|
|
113
|
-
);`}}).toSorted((
|
|
199
|
+
);`}}).toSorted((n,s)=>Jt(n.binding,s.binding)).map(({source:n})=>n).join(`
|
|
114
200
|
|
|
115
201
|
`)}
|
|
116
|
-
`}function
|
|
117
|
-
${
|
|
118
|
-
${
|
|
119
|
-
${
|
|
120
|
-
${
|
|
121
|
-
${
|
|
202
|
+
`}function pZ(e){let t=new Map(e.map((n)=>[n,`field:${n.options?.id??n.name}`])),i=jl(e.map((n)=>({key:t.get(n)??"",name:n.name,fallback:"field"})),({name:n,fallback:s})=>uZ(n,s),cZ);return mZ(e,(n)=>{let s=t.get(n);Z(s,`Field "${n.name}" has no source key`);let o=i.get(s);return Z(o,`Field "${n.name}" has no source binding`),o})}function iY(e,t){return mZ(e.fields.map((i)=>({name:i.name,jsonSchema:i.jsonSchema,options:{id:i.id}})),(i)=>{let n=i.options?.id;Z(n,`Field "${i.name}" has no source ID`);let s=t.get(n);return Z(s,`Field "${n}" has no source binding`),s})}function IZ(e,t,i,n){let s=i.get(e.node);Z(s,`Connection references unknown node "${e.node}"`);let o=n.get(s.id);switch(Z(o,`Node "${s.id}" has no source binding`),s.type){case"root":return Z(e.handle===(t==="output"?"started":"completed"),`Root ${t} handle "${e.handle}" cannot be authored`),`${o}.${t==="output"?"started":"completed"}`;case"code":case"generation":case"quorum":return Z(e.handle===t,`${s.type} ${t} handle "${e.handle}" cannot be authored`),`${o}.${t}`;case"match":if(t==="input")return Z(e.handle==="input",`Match input handle "${e.handle}" cannot be authored`),`${o}.input`;if(e.handle==="default")return`${o}.default`;let r=/^matched_(\d+)$/.exec(e.handle);Z(r,`Match output handle "${e.handle}" cannot be authored`);let g=r[1];return Z(g!==void 0,`Match output handle "${e.handle}" has no index`),Z(String(Number(g))===g,`Match output handle "${e.handle}" is not canonical`),`${o}.matched(${g})`}}function nY(e,t,i,n,s){let o=new Map(e.nodes.map((d)=>[d.id,d])),r=[`import { ${e.connections.length===0?"definePipeline":"connect, definePipeline"} } from '@toloka-platform/sdk';`,...e.fields.length===0?[]:["",`import { ${[...n.values()].toSorted(Jt).join(", ")} } from './fields';`],...i.toSorted((d,p)=>Jt(d.path,p.path)).flatMap(({binding:d,path:p})=>[`import { ${d} } from './${p.slice(0,-3)}';`])],g=e.fields.map(({id:d})=>{let p=n.get(d);return Z(p,`Field "${d}" has no source binding`),p}),a=e.nodes.map(({id:d})=>{let p=s.get(d);return Z(p,`Node "${d}" has no source binding`),p}),l=e.connections.map((d)=>{let p=IZ(d.from,"output",o,s),c=IZ(d.to,"input",o,s);if(Object.keys(d.settings).length===0)return`connect(${p}, ${c})`;return`connect(
|
|
203
|
+
${ne(3)}${p},
|
|
204
|
+
${ne(3)}${c},
|
|
205
|
+
${ne(3)}${Ne(d.settings,3)}
|
|
206
|
+
${ne(2)})`}),I=(d,p)=>{if(d.length===0)return"[]";return`[
|
|
207
|
+
${d.map((c)=>`${ne(p+1)}${c}`).join(`,
|
|
122
208
|
`)}
|
|
123
|
-
${
|
|
209
|
+
${ne(p)}]`};return`${r.join(`
|
|
124
210
|
`)}
|
|
125
211
|
|
|
126
212
|
export default definePipeline({
|
|
127
|
-
dataset: ${
|
|
128
|
-
fields: ${
|
|
129
|
-
nodes: ${
|
|
130
|
-
connections: ${l
|
|
213
|
+
dataset: ${Ne(t)},
|
|
214
|
+
fields: ${I(g,1)},
|
|
215
|
+
nodes: ${I(a,1)},
|
|
216
|
+
connections: ${I(l,1)}
|
|
131
217
|
});
|
|
132
|
-
`}function Eg(e,t={dataset:"imported-dataset"}){let r=[...e.fields.map((u)=>({key:`field:${u.id}`,name:u.name,fallback:"field"})),...e.nodes.map((u)=>({key:`node:${u.id}`,name:u.type==="root"?"root":u.settings.about.name||u.type,fallback:u.type}))],i=Yl(r,({name:u,fallback:l})=>vg(u,l),bg),n=Yl(e.nodes.map((u)=>({key:`node:${u.id}`,name:u.type==="root"?"root":u.settings.about.name||u.type,fallback:u.type})),({name:u,fallback:l})=>Bj(u,l)),s=new Map(e.fields.map((u)=>{let l=i.get(`field:${u.id}`);return y(l,`Field "${u.id}" has no allocated binding`),[u.id,l]})),o=new Map(e.nodes.map((u)=>{let l=i.get(`node:${u.id}`);return y(l,`Node "${u.id}" has no allocated binding`),[u.id,l]})),a=e.nodes.map((u)=>{let l=o.get(u.id),c=n.get(`node:${u.id}`);return y(l&&c,`Node "${u.id}" has no allocated source name`),Kj(u,l,`nodes/${c}/node.ts`,s)}),d=[{path:"fields.ts",source:zj(e,s)},...a.map(({path:u,source:l})=>({path:u,source:l})),{path:"pipeline.ts",source:Wj(e,t.dataset,a,s,o)}].toSorted((u,l)=>Ft(u.path,l.path));return Object.fromEntries(d.map(({path:u,source:l})=>[u,l]))}var yt=require("fs/promises"),Zt=require("path");var Kg=Ce(nl(),1),zg=Ce(Bg(),1);var Gg={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:{version:{type:"number",const:1},fields:{maxItems:500,type:"array",items:{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},name:{type:"string"},jsonSchema:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1,ref:"JsonSchema"}},required:["id","name","jsonSchema"],additionalProperties:!1}},nodes:{maxItems:500,type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"root"},settings:{type:"object",properties:{datasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},itemFilter:{type:"object",properties:{fieldValues:{default:[],type:"array",items:{type:"object",properties:{jsonPath:{type:"string",minLength:1},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},latestOnly:{default:!0,type:"boolean"},sources:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["jsonPath","operator","value","fieldId"],additionalProperties:!1}},fieldSources:{default:[],type:"array",items:{type:"object",properties:{fieldId:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},sources:{minItems:1,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"user"},userId:{type:"string",minLength:1}},required:["type","userId"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"system"},source:{type:"string",minLength:1}},required:["type","source"],additionalProperties:!1}]}}},required:["fieldId","sources"],additionalProperties:!1}},missingRevisionFields:{default:[],type:"array",items:{type:"string",pattern:"^df\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"}},createdBefore:{type:"string",format:"date-time",pattern:"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},additionalProperties:!1},itemLimit:{type:"integer",exclusiveMinimum:0,maximum:9007199254740991},startedFieldProxies:{type:"object",properties:{output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["output"]},completedFieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["startedFieldProxies","completedFieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"code"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}},output:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input","output"]},code:{type:"object",properties:{code:{type:"string"}},required:["code"],additionalProperties:!1},envVars:{default:[],type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"static"},name:{type:"string"},value:{type:"string"}},required:["type","name","value"],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:"secret"},name:{type:"string"},secretName:{type:"string"}},required:["type","name","secretName"],additionalProperties:!1}]}},checks:{type:"object",propertyNames:{type:"string",enum:["code"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["code"]}},required:["about","fieldProxies","code"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"generation"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"human_only"},smartSamplingPercent:{default:100,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"hybrid"},smartSamplingPercent:{default:30,type:"number",minimum:10,maximum:100},humanQaTimeForTask:{type:"number",exclusiveMinimum:0},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]}]},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},oneOf:[{type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},{type:"object",properties:{audienceType:{type:"string",const:"synthetic"},generationModelId:{default:"gpt-5.6-terra",type:"string",enum:["gpt-5.4","gpt-5.4-mini","claude-sonnet-4-6","gemini-3.1-pro-preview","gemini-3.5-flash","claude-sonnet-5","gpt-5.6-terra","gpt-5.6-luna"]},reasoningEffort:{type:"string",enum:["low","medium","high"]},llmInstruction:{default:"",type:"string"},maxCostPerAttempt:{type:"number"}},required:["audienceType","maxCostPerAttempt"],additionalProperties:!1}]},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset","synthgen"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"match"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},conditions:{type:"array",items:{type:"object",properties:{name:{type:"string"},logic:{default:"and",type:"string",enum:["and","or"]},predicates:{type:"array",items:{type:"object",properties:{fieldProxyId:{type:"string"},jsonPath:{type:"string"},operator:{type:"string",enum:["text_eq","text_neq"]},value:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]}},required:["fieldProxyId","jsonPath","operator","value"],additionalProperties:!1}}},required:["name","predicates"],additionalProperties:!1}},fieldProxies:{type:"object",properties:{input:{type:"array",items:{type:"object",properties:{id:{type:"string"},optional:{type:"boolean"}},required:["id","optional"],additionalProperties:!1}}},required:["input"]}},required:["about","conditions","fieldProxies"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1},{type:"object",properties:{id:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},type:{type:"string",const:"quorum"},settings:{type:"object",properties:{about:{type:"object",properties:{name:{type:"string"},description:{type:"string"},projectType:{type:"string",enum:["general","data_collection"]}},required:["name"],additionalProperties:!1},publicName:{type:"string"},audienceAndPricing:{default:{audienceType:"human",verifiedExperts:!0,audience:{languages:{type:"and",values:[]},specializations:{type:"and",values:[]},countries:{type:"or",values:[]}},pricePerTask:1,timeForTask:1800,perExpertCapEnabled:!1,perExpertCapValue:1},type:"object",properties:{verifiedExperts:{type:"boolean"},audience:{type:"object",properties:{languages:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"}},required:["value"]}}},required:["type","values"],additionalProperties:!1},specializations:{type:"object",properties:{type:{type:"string",enum:["or","and"]},values:{type:"array",items:{type:"object",properties:{value:{type:"string"},qualificationId:{type:"string"}},required:["value","qualificationId"],additionalProperties:!1}}},required:["type","values"],additionalProperties:!1},countries:{type:"object",properties:{type:{type:"string",enum:["or"]},values:{type:"array",items:{type:"string"}}},required:["type","values"],additionalProperties:!1}},required:["languages","specializations","countries"],additionalProperties:!1},pricePerTask:{type:"number"},timeForTask:{type:"number"},perExpertCapEnabled:{default:!1,type:"boolean"},perExpertCapValue:{default:1,type:"integer",exclusiveMinimum:0,maximum:50},audienceType:{type:"string",const:"human"}},required:["verifiedExperts","audience","pricePerTask","timeForTask","audienceType"],additionalProperties:!1},entities:{type:"object",properties:{input:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}},output:{type:"array",items:{oneOf:[{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!1},maxEntities:{type:"null"}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1},{type:"object",properties:{fieldProxyId:{type:"string"},entityType:{type:"string"},optional:{type:"boolean"},jsonPath:{type:"string"},description:{type:"string"},relations:{type:"array",items:{anyOf:[{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",enum:["context","references","depends_on","evaluates"]}},required:["id","rel_type"]},{type:"object",properties:{id:{type:"string"},rel_type:{type:"string",const:"conditional"},condition:{type:"object",properties:{operator:{type:"string",enum:["EQ","NEQ","IN","NOT_IN","NOT_EMPTY"]},value:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["operator","value"]}},required:["id","rel_type","condition"]}]}},minDurationSeconds:{type:"number",exclusiveMinimum:0},maxDurationSeconds:{type:"number",exclusiveMinimum:0},allowedLabels:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{type:"string"}},required:["label","value"],additionalProperties:!1}},dynamic:{type:"boolean",const:!0},maxEntities:{anyOf:[{type:"number"},{type:"null"}]}},required:["fieldProxyId","entityType","optional","jsonPath","description","dynamic"],additionalProperties:!1}]}}},required:["input","output"],additionalProperties:!1},qualityCriteria:{type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},qualityElement:{type:"string"},thresholds:{type:"object",properties:{pass:{type:"string"},fail:{type:"string"}},required:["pass","fail"]},targetEntity:{type:"string"},llmQaInstruction:{type:"string",maxLength:5000}},required:["id","qualityElement","thresholds","targetEntity"]}},offboardingRules:{default:[],type:"array",items:{type:"object",properties:{id:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},type:{type:"string",enum:["mv_agreement"]},agreementScale:{type:"string"}},required:["id"],additionalProperties:!1}},instruction:{type:"string"},ui:{type:"object",properties:{code:{type:"string"},data:{type:"string"},preprocess:{type:"string"},postprocess:{default:"return {};",type:"string"},constants:{type:"string"}},required:["code","data","preprocess","constants"]},qualityAssurance:{default:{qaMode:"llm_only",llmQaModelId:"gpt-5.4"},oneOf:[{type:"object",properties:{qaMode:{type:"string",const:"llm_only"},llmQaModelId:{default:"gpt-5.4",type:"string",enum:["gpt-5.4","gpt-5.4-mini","gpt-5","gpt-5-mini","claude-sonnet-4-6"]}},required:["qaMode"]},{type:"object",properties:{qaMode:{type:"string",const:"none"}},required:["qaMode"]}]},overlap:{type:"integer",minimum:1,maximum:100},onboarding:{type:"object",properties:{enabled:{type:"boolean"},steps:{type:"array",items:{type:"object",properties:{id:{type:"string"},blocks:{type:"array",items:{oneOf:[{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"info"},estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["id","type","estimatedTime","role","goal","successCriteria"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"text"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"quiz"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},questions:{type:"array",items:{type:"object",properties:{id:{type:"string"},type:{type:"string",enum:["single-choice","multiple-choice"]},title:{type:"string"},question:{type:"string"},hint:{type:"string"},correctAnswerFeedback:{type:"string"},incorrectAnswerFeedback:{type:"string"},options:{type:"array",items:{type:"object",properties:{value:{type:"string"},label:{type:"string"}},required:["value","label"]}},correctAnswer:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}},required:["id","type","question","options","correctAnswer"]}}},required:["id","type","questions"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"practice"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},imageUrl:{type:"string"},editorType:{type:"string"},editorConfig:{type:"object",properties:{rows:{type:"number"},language:{type:"string"},placeholder:{type:"string"}}},validators:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},description:{type:"string"},criteria:{type:"string"}},required:["id","name","description","criteria"]}}},required:["id","type"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"examples"},title:{type:"string"},examples:{maxItems:10,type:"array",items:{type:"object",properties:{id:{type:"string"},input:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}},checks:{maxItems:10,type:"array",items:{oneOf:[{type:"object",properties:{type:{type:"string",const:"exact"},path:{type:"string"},golden:{$ref:"#/$defs/__schema4"},hint:{type:"string"}},required:["type","path","golden","hint"]},{type:"object",properties:{type:{type:"string",const:"code"},code:{type:"string"},hint:{type:"string"}},required:["type","code","hint"]},{type:"object",properties:{type:{type:"string",const:"llm"},paths:{type:"array",items:{type:"string"}},criteria:{type:"string"},reference:{type:"string"},hint:{type:"string"},imageUrl:{type:"string"}},required:["type","paths","criteria"]}]}},explanation:{type:"string"},sourceItemId:{type:"string"}},required:["id","input","checks"]}}},required:["id","type","examples"]},{type:"object",properties:{id:{type:"string"},type:{type:"string",const:"consent"},title:{type:"string"},content:{type:"array",items:{type:"object",properties:{type:{type:"string",const:"markdown"},value:{type:"string"}},required:["type","value"]}},consentLabel:{type:"string"}},required:["id","type","consentLabel"]}]}}},required:["id"]}},info:{type:"object",properties:{estimatedTime:{type:"string"},role:{type:"string"},goal:{type:"string"},successCriteria:{type:"string"}},required:["estimatedTime","role","goal","successCriteria"]}},required:["enabled","steps","info"]},exam:{default:{enabled:!1,gradedEntities:[],tasksPerExpert:1,passThreshold:1},type:"object",properties:{enabled:{type:"boolean"},gradedEntities:{type:"array",items:{type:"object",properties:{targetEntity:{type:"string"},mode:{type:"string",enum:["ground_truth","quality_criteria","not_graded"]},groundTruthType:{type:"string",enum:["direct","custom"]},customInstruction:{type:"string"},disabledCriterionIds:{type:"array",items:{type:"string",format:"uuid",pattern:"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},required:["targetEntity","mode","groundTruthType","customInstruction","disabledCriterionIds"],additionalProperties:!1}},goldenDatasetId:{type:"string",pattern:"^ds\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},tasksPerExpert:{type:"integer",minimum:1,maximum:9007199254740991},passThreshold:{type:"integer",minimum:0,maximum:9007199254740991}},required:["enabled","gradedEntities","tasksPerExpert","passThreshold"],additionalProperties:!1},reuseAudienceWithNodeId:{default:null,anyOf:[{type:"object",properties:{pipelineId:{type:"string",pattern:"^pl\\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},nodeId:{type:"string"}},required:["pipelineId","nodeId"],additionalProperties:!1},{type:"null"}]},smartSearch:{default:null,anyOf:[{type:"object",properties:{briefDescription:{type:"string"},projectDescription:{anyOf:[{type:"string"},{type:"null"}]},extraHardRequirements:{type:"array",items:{type:"string"}},relevanceCriteria:{type:"array",items:{type:"string"}},typicalJobTitles:{type:"array",items:{type:"string"}},idealCandidateProfile:{type:"string"},whoIsNotAFit:{type:"array",items:{type:"string"}},sourceFingerprint:{type:"string"}},required:["briefDescription","projectDescription","extraHardRequirements","relevanceCriteria","typicalJobTitles","idealCandidateProfile","whoIsNotAFit"],additionalProperties:!1},{type:"null"}]},checks:{type:"object",propertyNames:{type:"string",enum:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]},additionalProperties:{type:"array",items:{type:"object",properties:{id:{type:"string"},name:{type:"string"},input:{type:"string"}},required:["id","name","input"]}},required:["ui","llmqa","qc_lint","ui_types_lint","exam_dataset"]}},required:["about","publicName","entities","qualityCriteria","instruction","ui","overlap","onboarding"],additionalProperties:!1}},required:["id","type","settings"],additionalProperties:!1}]}},connections:{maxItems:2000,type:"array",items:{type:"object",properties:{from:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},to:{type:"object",properties:{node:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},handle:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"}},required:["node","handle"],additionalProperties:!1},settings:{type:"object",properties:{},additionalProperties:{}}},required:["from","to","settings"],additionalProperties:!1}},layout:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"object",propertyNames:{type:"string",pattern:"^(?!(?:__proto__|constructor|prototype)$).+$"},additionalProperties:{type:"array",prefixItems:[{type:"number",description:"X"},{type:"number",description:"Y"}]},maxProperties:2},maxProperties:500}},required:["version","fields","nodes","connections"],additionalProperties:!1,$defs:{__schema0:{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema1"}},__schema1:{type:"object",properties:{type:{anyOf:[{type:"string",enum:["string","number","integer","boolean","object","array","null"]},{minItems:1,type:"array",items:{type:"string",enum:["string","number","integer","boolean","object","array","null"]}}]},properties:{$ref:"#/$defs/__schema0"},required:{type:"array",items:{type:"string"}},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#/$defs/__schema1"}]},items:{$ref:"#/$defs/__schema1"},minItems:{type:"integer",minimum:0,maximum:9007199254740991},maxItems:{type:"integer",minimum:0,maximum:9007199254740991},uniqueItems:{type:"boolean"},enum:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema2"}},const:{$ref:"#/$defs/__schema2"},minimum:{type:"number"},maximum:{type:"number"},exclusiveMinimum:{type:"number"},exclusiveMaximum:{type:"number"},minLength:{type:"integer",minimum:0,maximum:9007199254740991},maxLength:{type:"integer",minimum:0,maximum:9007199254740991},pattern:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{$ref:"#/$defs/__schema2"},examples:{type:"array",items:{$ref:"#/$defs/__schema2"}},anyOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},oneOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}},allOf:{minItems:1,type:"array",items:{$ref:"#/$defs/__schema1"}}},additionalProperties:!1},__schema2:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema2"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema2"}}]},__schema3:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema3"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema3"}}]},__schema4:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"},{type:"array",items:{$ref:"#/$defs/__schema4"}},{type:"object",propertyNames:{type:"string"},additionalProperties:{$ref:"#/$defs/__schema4"}}]}}};var Wg=new Kg.default({strict:!1});zg.default(Wg);var Vg=Wg.compile(Gg),SF=(e)=>{let t=e.keyword==="required"?e.params.missingProperty:e.keyword==="additionalProperties"?e.params.additionalProperty:void 0;return{path:typeof t==="string"?`${e.instancePath}/${t.replaceAll("~","~0").replaceAll("/","~1")}`:e.instancePath||"/",reason:e.message??`failed ${e.keyword} validation`}};function lc(e){if(Vg(e))return;let t=Vg.errors;y(t,"Pipeline graph validation failed without errors");let r=new Set,i=[];for(let n of t){let s=SF(n),o=`${s.path}
|
|
133
|
-
|
|
134
|
-
`)}
|
|
135
|
-
`)}}
|
|
136
|
-
`)}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
${
|
|
140
|
-
`)}}var rT=async(e)=>{let t=await e.fetch(e.downloadUrl);y(t.ok,`Dataset export download failed with HTTP ${t.status}.`);let r=await t.text(),i;try{i=JSON.parse(r)}catch(s){throw Error(`Dataset export ${e.exportId} is not valid JSON.`,{cause:s})}y(Array.isArray(i),`Dataset export ${e.exportId} is not a JSON array.`);let n=[];for(let[s,o]of i.entries())y(hc(o),`Dataset export ${e.exportId} row ${s} is not a JSON object.`),n.push(o);return n};async function _y(e,t){let r=await gc(e,t,!1),i=[];for await(let d of e.datasets.listAllFields({datasetId:r.datasetId})){if(d.internal||d.name===py)continue;i.push(d.name)}y(i.length>0,`Dataset ${r.name} has no fields to export.`);let n=await e.datasets.startExport({datasetId:r.datasetId,fields:i}),s;try{s=await e.waitFor({type:"datasetExport",exportId:n.id},t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs})}catch(d){throw y(!(d instanceof re&&d.code==="wait_timeout"),`Stopped waiting for dataset export ${n.id}; raise --timeout to wait longer.`),d}y(s.result.downloadUrl,`Dataset export ${s.id} succeeded without a download URL.`);let o=await rT({downloadUrl:s.result.downloadUrl,exportId:s.id,fetch:t.fetch??globalThis.fetch}),a=t.limit===void 0?o:o.slice(0,t.limit);return await Br.mkdir(Ur.dirname(t.outPath),{recursive:!0}),await Br.writeFile(t.outPath,a.length===0?"":`${a.map((d)=>JSON.stringify(d)).join(`
|
|
218
|
+
`}function AZ(e,t={dataset:"imported-dataset"}){let i=[...e.fields.map((l)=>({key:`field:${l.id}`,name:l.name,fallback:"field"})),...e.nodes.map((l)=>({key:`node:${l.id}`,name:l.type==="root"?"root":l.settings.about.name||l.type,fallback:l.type}))],n=jl(i,({name:l,fallback:I})=>uZ(l,I),cZ),s=jl(e.nodes.map((l)=>({key:`node:${l.id}`,name:l.type==="root"?"root":l.settings.about.name||l.type,fallback:l.type})),({name:l,fallback:I})=>$P(l,I)),o=new Map(e.fields.map((l)=>{let I=n.get(`field:${l.id}`);return Z(I,`Field "${l.id}" has no allocated binding`),[l.id,I]})),r=new Map(e.nodes.map((l)=>{let I=n.get(`node:${l.id}`);return Z(I,`Node "${l.id}" has no allocated binding`),[l.id,I]})),g=e.nodes.map((l)=>{let I=r.get(l.id),d=s.get(`node:${l.id}`);return Z(I&&d,`Node "${l.id}" has no allocated source name`),tY(l,I,`nodes/${d}/node.ts`,o)}),a=[{path:"fields.ts",source:iY(e,o)},...g.map(({path:l,source:I})=>({path:l,source:I})),{path:"pipeline.ts",source:nY(e,t.dataset,g,o,r)}].toSorted((l,I)=>Jt(l.path,I.path));return Object.fromEntries(a.map(({path:l,source:I})=>[l,I]))}var ft=require("fs/promises"),ri=require("path");function ZZ(e){let t=new Set;for(let i of e.nodes){if(i.type!=="code")continue;for(let n of i.settings.envVars??[])if(n.type==="secret")t.add(n.secretName)}return[...t].toSorted((i,n)=>i.localeCompare(n))}var sY=/^(?!\/)(?!.*\\)(?!.*(?:^|\/)\.\.?(?:\/|$))(?!.*\/\/).+$/u,_l=(e)=>{if(Array.isArray(e))return e.map(_l);if(typeof e!=="object"||e===null)return e;return Object.fromEntries(Object.entries(e).toSorted(([t],[i])=>t.localeCompare(i)).map(([t,i])=>[t,_l(i)]))},Be=(e)=>JSON.stringify(_l(e)),bZ=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),hZ=(e,t)=>{if(!bZ(e)||!bZ(t))return t;return Object.fromEntries(Object.keys(e).map((i)=>[i,hZ(e[i],t[i])]))},oY=(e,t)=>Be(e)===Be(hZ(e,t)),as=async(e)=>{let t=[];for await(let i of e)t.push(i);return t},Kl=(e)=>{let t=Reflect.get(e.settings,"about");if(typeof t==="object"&&t!==null){let i=Reflect.get(t,"name");if(typeof i==="string"&&i.length>0)return`${i} (${e.id})`}return e.id},rY=(e)=>`${e.name} (${e.id})`,gY=(e,t)=>{let i=t.get(e.from.node),n=t.get(e.to.node),s=i===void 0?e.from.node:Kl(i),o=n===void 0?e.to.node:Kl(n);return`${s}.${e.from.handle} -> ${o}.${e.to.handle}`},Ko=(e)=>new Map(e.map((t)=>[t.id,t])),Ql=(e,t,i,n)=>{let s=[];for(let[o,r]of[...e].toSorted(([g],[a])=>g.localeCompare(a))){let g=t.get(o);if(g===void 0)s.push(n(r,"added"));else if(!i(r,g))s.push(n(r,"changed"))}for(let[o,r]of[...t].toSorted(([g],[a])=>g.localeCompare(a)))if(!e.has(o))s.push(n(r,"removed"));return s};function aY(e,t){let i=Ko(e.nodes),n=Ko(t.nodes),s=new Map(e.connections.map((r)=>[Be(r),r])),o=new Map(t.connections.map((r)=>[Be(r),r]));return[...Ql(Ko(e.fields),Ko(t.fields),(r,g)=>Be(r)===Be(g),(r,g)=>({kind:"field",action:g,label:rY(r),id:r.id})),...Ql(i,n,oY,(r,g)=>({kind:"node",action:g,label:Kl(r),id:r.id})),...Ql(s,o,()=>!0,(r,g)=>({kind:"connection",action:g,label:gY(r,g==="removed"?n:i)})),...Be(e.layout)===Be(t.layout)?[]:[{kind:"layout",action:"changed",label:"pipeline layout"}]]}var Ll=(e,t)=>{let i=t.nodes.find((s)=>s.type==="root"),n=i===void 0?{}:{...i.settings.itemFilter===void 0?{}:{itemFilter:i.settings.itemFilter},...i.settings.itemLimit===void 0?{}:{itemLimit:i.settings.itemLimit}};return{...e,...t.layout===void 0?{}:{layout:t.layout},nodes:e.nodes.map((s)=>s.type==="root"?{...s,settings:{...n,...s.settings}}:s)}},Lo=(e)=>{let t=new Map;for(let i of e.pipelines){let n=t.get(i.definition.dataset);if(n===void 0)n=new Map,t.set(i.definition.dataset,n);for(let s of i.definition.graph.fields){let o=n.get(s.name);if(Z(o===void 0||Be(o.jsonSchema)===Be(s.jsonSchema),`Dataset "${i.definition.dataset}" has conflicting schemas for field "${s.name}".`),o===void 0)n.set(s.name,s)}}return[...t].toSorted(([i],[n])=>i.localeCompare(n)).map(([i,n])=>({name:i,fields:[...n.values()].toSorted((s,o)=>s.name.localeCompare(o.name))}))},lY=(e)=>{let t=new Set;for(let i of e.pipelines)Z(sY.test(i.sourceDirectory),`Invalid pipeline source directory ${i.sourceDirectory}`),Z(!t.has(i.sourceDirectory),`Pipeline source directory ${i.sourceDirectory} is declared more than once`),t.add(i.sourceDirectory),lo(i.definition);Lo(e)},IY=(e,t,i)=>{let n=t===void 0?void 0:i.find((o)=>o.id===t.datasetId);if(n!==void 0)return Z(n.name===e,`Dataset ${n.id} is bound as "${e}" but is named "${n.name}".`),n;let s=i.filter((o)=>o.name===e);return Z(s.length<=1,`Project has multiple datasets named "${e}".`),s[0]},dY=(e,t,i)=>{let n=t===void 0?void 0:i.find((o)=>o.id===t.pipelineId);if(n!==void 0)return n;let s=i.filter((o)=>o.name===e.name);return Z(s.length<=1,`Project has multiple pipelines named "${e.name}".`),s[0]},cY=(e)=>{let t=e.action==="added"?"+":e.action==="removed"?"-":e.action==="missing"?"!":"~";switch(e.kind){case"pipeline":return`${t} Pipeline ${e.action}: ${e.label}`;case"dataset":return`${t} Dataset ${e.action}: ${e.label}`;case"datasetField":return`${t} Dataset field ${e.action}: ${e.dataset}.${e.label}`;case"secret":return`${t} Missing secret: ${e.label}`;case"node":return`${t} Node ${e.action} in ${e.pipeline}: ${e.label}`;case"connection":return`${t} Connection ${e.action} in ${e.pipeline}: ${e.label}`;case"field":return`${t} Graph field ${e.action} in ${e.pipeline}: ${e.label}`;case"layout":return`${t} Layout ${e.action} in ${e.pipeline}: ${e.label}`}},CY=(e,t)=>{if(e.length===0)return"No changes.";let i=e.length===1?"change":"changes",n=[`Plan: ${e.length} ${i}`,...e.map(cY)];if(t.length>0){n.push("","Required secrets are missing:");for(let s of t)n.push(` ${s}`);n.push("Run `toloka secret set <name>` before apply.")}return n.join(`
|
|
219
|
+
`)},uY=async(e,t,i,n)=>{let s=t.map((r)=>({desired:r,dataset:IY(r.name,i?.datasets[r.name],n)})),o=await Promise.all(s.map(async({dataset:r})=>r===void 0?[]:as(e.datasets.listAllFields({datasetId:r.id}))));return s.map(({desired:r,dataset:g},a)=>{let l=o[a]??[],I=new Map(l.map((d)=>[d.name,d]));return{...r,...g===void 0?{}:{dataset:g},liveFields:l,missingFields:r.fields.filter((d)=>!I.has(d.name)),conflictingFields:r.fields.filter((d)=>{let p=I.get(d.name);return p!==void 0&&Be(p.jsonSchema)!==Be(d.jsonSchema)})}})},mY=async(e,t,i,n,s)=>{let o=t.pipelines.map((g)=>({source:g,pipeline:dY(g,i?.pipelines[g.sourceDirectory],s)})),r=await Promise.all(o.map(async({pipeline:g})=>g===void 0?void 0:e.pipelines.getGraph({pipelineId:g.id})));return o.map(({source:g,pipeline:a},l)=>{let I=r[l],d=n.find((c)=>c.name===g.definition.dataset)?.dataset,p=[];if(a!==void 0&&I!==void 0)p=d===void 0?[{kind:"node",action:"changed",label:"root dataset binding",id:"root"}]:aY(Ll(Jn(g.definition,{datasetId:d.id}),I.graph),I.graph);return{source:g,...a===void 0?{}:{pipeline:a},...I===void 0?{}:{snapshot:I},graphChanges:p}})},pY=(e,t,i,n,s)=>{let o=[];for(let r of s)o.push({kind:"pipeline",action:"removed",label:r});for(let r of n)o.push({kind:"dataset",action:"removed",label:r});for(let r of e){if(r.dataset===void 0)o.push({kind:"dataset",action:"added",label:r.name});for(let g of r.missingFields)o.push({kind:"datasetField",action:"added",label:g.name,dataset:r.name});for(let g of r.conflictingFields)o.push({kind:"datasetField",action:"changed",label:g.name,dataset:r.name})}for(let r of t)if(r.pipeline===void 0)o.push({kind:"pipeline",action:"added",label:r.source.sourceDirectory});else for(let g of r.graphChanges)o.push({...g,pipeline:r.source.sourceDirectory});for(let r of i)o.push({kind:"secret",action:"missing",label:r});return o},Mo=async(e,t)=>{let i=t.source??await Xi(t.sourceRoot);lY(i);let n=await Ge(t.sourceRoot),s=t.projectId??n?.projectId;Z(s,M);let o=n?.projectId===s?n:void 0,r=new Set(i.pipelines.flatMap(({definition:b})=>ZZ(b.graph))),g=t.listAllSecrets===!0||r.size>0,[a,l,I]=await Promise.all([as(e.pipelines.listAll({projectId:s})),as(e.datasets.listAll({projectId:s})),g?e.secrets.list({projectId:s}):Promise.resolve([])]),d=Lo(i),p=Object.keys(o?.datasets??{}).filter((b)=>!d.some((W)=>W.name===b)).toSorted(),c=Object.keys(o?.pipelines??{}).filter((b)=>!i.pipelines.some((W)=>W.sourceDirectory===b)).toSorted(),m=await uY(e,d,o,l),C=await mY(e,i,o,m,a),u=new Set(I.map((b)=>b.name)),A=[...r].filter((b)=>!u.has(b)).toSorted();return{projectId:s,source:i,state:n,datasets:m,pipelines:C,livePipelines:a,liveDatasets:l,liveSecrets:I,changes:pY(m,C,A,p,c),missingSecrets:A,removedDatasets:p,removedPipelines:c}},WZ=(e)=>e.toLowerCase().match(/[a-z0-9]+/gu)?.join("-")||"pipeline",AY=(e)=>{let t=2166136261;for(let i=0;i<e.length;i+=1)t^=e.charCodeAt(i),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")},ZY=(e)=>{let t=Map.groupBy(e,(i)=>WZ(i.name));return new Map(e.map((i)=>{let n=WZ(i.name),s=(t.get(n)?.length??0)>1;return[i.id,`pipelines/${s?`${n}-${AY(i.id)}`:n}`]}))};async function fZ(e,t){let i=(await as(e.pipelines.listAll({projectId:t.projectId}))).toSorted((b,W)=>b.name.localeCompare(W.name)||b.id.localeCompare(W.id)),n=await Promise.all(i.map((b)=>e.pipelines.getGraph({pipelineId:b.id}))),s=new Set;for(let b of n){let W=b.graph.nodes.find((h)=>h.type==="root");Z(W?.settings.datasetId,"Every imported pipeline must have a bound dataset."),s.add(W.settings.datasetId)}let o=await as(e.datasets.listAll({projectId:t.projectId})),r=[];for(let b of[...s].toSorted()){let W=o.find((h)=>h.id===b);Z(W,`Project ${t.projectId} has no dataset ${b}.`),r.push(W)}let g=new Map(r.map((b)=>[b.id,b])),a=ZY(i),l={},I={},d={};for(let[b,W]of i.entries()){let h=n[b];Z(h,`Pipeline ${W.id} has no graph snapshot.`);let y=h.graph.nodes.find((w)=>w.type==="root");Z(y?.settings.datasetId,`Pipeline ${W.id} has no dataset binding.`);let V=g.get(y.settings.datasetId);Z(V,`Pipeline ${W.id} references unknown dataset ${y.settings.datasetId}.`);let B=d[V.name];Z(B===void 0||B.datasetId===V.id,`Project has multiple referenced datasets named "${V.name}".`),d[V.name]={datasetId:V.id};let F=a.get(W.id);Z(F,`Pipeline ${W.id} has no source directory.`),I[F]={pipelineId:W.id};for(let[w,T]of Object.entries(AZ(h.graph,{dataset:V.name})))l[`${F}/${w}`]=T}await ft.mkdir(t.sourceRoot,{recursive:!0});let p=ri.join(t.sourceRoot,"pipelines"),c=!1;try{c=(await ft.stat(p)).isDirectory()}catch(b){if(!(b instanceof Error)||!("code"in b)||b.code!=="ENOENT")throw b}if(Z(!c||t.force===!0,`Folder already exists: ${p}. Pass --force to replace it.`),c)await ft.rm(p,{recursive:!0,force:!0});for(let[b,W]of Object.entries(l).toSorted(([h],[y])=>h.localeCompare(y))){let h=ri.join(t.sourceRoot,b);await ft.mkdir(ri.dirname(h),{recursive:!0}),await ft.writeFile(h,W,"utf8")}let m={projectId:t.projectId,pipelines:I,datasets:d};await Kt(t.sourceRoot,m);let C=[...Object.keys(l),oo].toSorted(),u=i.length===1?"pipeline":"pipelines",A=r.length===1?"dataset":"datasets";return{state:m,files:C,output:`Imported project ${t.projectId} with ${i.length} ${u} and ${r.length} ${A} into ${ri.resolve(t.sourceRoot)}.`}}async function yZ(e,t){let i=await Mo(e,t);return{projectId:i.projectId,changes:i.changes,missingSecrets:i.missingSecrets,output:CY(i.changes,i.missingSecrets)}}async function VZ(e,t){let i=t.projectId;Z(i,M);let n=await e.projects.get({projectId:i}),s=await Mo(e,{...t,listAllSecrets:!0}),o=s.changes.length,r=o===0?"Source has no pending changes.":`Source has ${o} pending change${o===1?"":"s"}.`;return{projectId:i,output:[`Project: ${i} (${n.name})`,`Team: ${n.teamId}`,`Pipelines: ${s.livePipelines.length}`,`Datasets: ${s.liveDatasets.length}`,`Secrets: ${s.liveSecrets.length}`,r].join(`
|
|
220
|
+
`)}}async function BZ(e,t){let i=await Mo(e,t);Z(i.removedPipelines.length===0,`Refusing to delete pipelines absent from source: ${i.removedPipelines.join(", ")}.`),Z(i.removedDatasets.length===0,`Refusing to delete datasets absent from source: ${i.removedDatasets.join(", ")}. Dataset items are never deleted.`),Z(i.missingSecrets.length===0,`Required secrets are missing: ${i.missingSecrets.join(", ")}. Run toloka secret set <name> before apply.`);let n=i.datasets.flatMap((I)=>I.conflictingFields.map((d)=>`${I.name}.${d.name}`));Z(n.length===0,`Dataset field schemas conflict with source: ${n.join(", ")}. Existing fields are never rewritten.`);let s=0,o=new Map;for(let I of i.datasets){let d=I.dataset;if(d===void 0)d=await e.datasets.create({projectId:i.projectId,name:I.name}),s+=1;if(o.set(I.name,d.id),I.missingFields.length>0)await e.datasets.createFields({datasetId:d.id,fields:I.missingFields.map((p)=>({name:p.name,jsonSchema:p.jsonSchema}))}),s+=I.missingFields.length}let r=new Map;for(let I of i.pipelines){let d=o.get(I.source.definition.dataset);Z(d,`Dataset ${I.source.definition.dataset} has no resolved ID.`);let p=Jn(I.source.definition,{datasetId:d});if(I.pipeline===void 0){let m=await e.pipelines.import({projectId:i.projectId,name:I.source.name,graph:p});await e.pipelines.attachDataset({pipelineId:m.id,datasetId:d}),r.set(I.source.sourceDirectory,m.id),s+=2;continue}if(r.set(I.source.sourceDirectory,I.pipeline.id),I.graphChanges.length===0)continue;let c=I.snapshot;Z(c,`Pipeline ${I.pipeline.id} has no graph snapshot.`),await e.pipelines.replaceGraph({pipelineId:I.pipeline.id,graph:Ll(p,c.graph),expectedVersion:c.version}),s+=1}let g={projectId:i.projectId,pipelines:Object.fromEntries(i.source.pipelines.map((I)=>{let d=r.get(I.sourceDirectory);return Z(d,`Pipeline ${I.sourceDirectory} has no resolved ID.`),[I.sourceDirectory,{pipelineId:d}]})),datasets:Object.fromEntries(i.datasets.map((I)=>{let d=o.get(I.name);return Z(d,`Dataset ${I.name} has no resolved ID.`),[I.name,{datasetId:d}]}))};if(Be(i.state)!==Be(g))await Kt(t.sourceRoot,g);let a=s===0?"unchanged":"changed",l=s===0?"No changes.":`Applied ${s} ${s===1?"write":"writes"} to project ${i.projectId}.`;return{action:a,state:g,changes:i.changes,writes:s,output:l}}var bY=(e)=>[e.nodeId,e.checkId].filter((t)=>t!==void 0).join("/"),WY=(e)=>e.issues.map((t)=>{let i=bY(t);return` ${t.severity} ${t.code}${i.length===0?"":` ${i}`}: ${t.message}`});async function GZ(e,t){let i=await Mo(e,t),n=[];for(let r of i.pipelines){let g=i.datasets.find((I)=>I.name===r.source.definition.dataset)?.dataset;if(r.pipeline===void 0){n.push({sourceDirectory:r.source.sourceDirectory,skipped:"pipeline is not on the platform yet; run toloka apply first"});continue}if(g===void 0){n.push({sourceDirectory:r.source.sourceDirectory,pipelineId:r.pipeline.id,skipped:`dataset "${r.source.definition.dataset}" is not on the platform yet; run toloka apply first`});continue}let a=r.snapshot===void 0?Jn(r.source.definition,{datasetId:g.id}):Ll(Jn(r.source.definition,{datasetId:g.id}),r.snapshot.graph),l=await e.pipelines.validateGraph({pipelineId:r.pipeline.id,graph:a});n.push({sourceDirectory:r.source.sourceDirectory,pipelineId:r.pipeline.id,report:l})}let s=n.every((r)=>r.report?.valid!==!1),o=n.flatMap((r)=>{if(r.skipped!==void 0)return[`- ${r.sourceDirectory}: skipped (${r.skipped})`];return Z(r.report,`Pipeline ${r.sourceDirectory} is missing a validation report`),[r.report.valid?`- ${r.sourceDirectory}: valid`:`- ${r.sourceDirectory}: invalid`,...WY(r.report)]});return{projectId:i.projectId,results:n,valid:s,output:o.length===0?"No pipelines to validate.":o.join(`
|
|
221
|
+
`)}}var FZ="uploaded",hY=/^ds\.[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,RZ=3;class qo extends Error{constructor(e,t){super(e,{cause:t});this.name="DatasetUploadError"}}var fY=(e)=>hY.test(e)?e.toLowerCase():void 0,yY={json:"application/json",jsonl:"application/x-ndjson",csv:"text/csv"},$l=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),Ml=(e)=>{if(!$l(e))return"unknown";if(Array.isArray(e.anyOf)){let n=[...new Set(e.anyOf.map(Ml))];return n.length===0?"unknown":n.join(" | ")}let t=e.type,i=typeof t==="string"?[t]:Array.isArray(t)?t.filter((n)=>typeof n==="string"):[];if(i.length===0)return"unknown";return i.map((n)=>{if(n!=="array")return n;let s=Ml(e.items);return s==="unknown"?"array":`array<${s}>`}).join(" | ")},VY=(e)=>{if(e.length===0)return"No inferred fields are available yet.";return["Inferred fields:",...e.toSorted((t,i)=>t.jsonPath.localeCompare(i.jsonPath)).map((t)=>`${" ".repeat(t.depth)}- ${t.jsonPath}: ${Ml(t.jsonSchema)}`)].join(`
|
|
222
|
+
`)},HZ=async(e)=>{let t=e.source??await Xi(e.sourceRoot),i=Lo(t).find((n)=>n.name===e.datasetName);return i===void 0?[]:i.fields.map((n)=>({name:n.name,jsonSchema:n.jsonSchema}))},wZ=(e)=>`${e.name} (${e.id})`,vZ=async(e,t)=>{let i=[];for await(let n of e.datasets.listAll({projectId:t}))i.push(n);return i.toSorted((n,s)=>{let o=n.name.localeCompare(s.name);return o===0?n.id.localeCompare(s.id):o})},ql=async(e,t,i)=>{let n=await Ge(t.sourceRoot),s=t.projectId??n?.projectId;Z(s,M);let o=t.datasetName,r=await vZ(e,s),g=(c)=>r.filter((m)=>m.name===c).length<=1,a=fY(o),l=r.find((c)=>c.id===o||c.id.toLowerCase()===a);if(l!==void 0)return{datasetId:l.id,name:l.name,nameIsUnique:g(l.name)};let I=r.filter((c)=>c.name===o);if(Z(I.length<=1,`Project ${s} has multiple datasets named "${o}": ${I.map(wZ).join(", ")}.`),I.length===1){let[c]=I;return Z(c,`Dataset "${o}" has no resolved ID.`),{datasetId:c.id,name:c.name,nameIsUnique:!0}}let d=n?.projectId===s?n.datasets[o]:void 0;if(d!==void 0){let c=r.find((m)=>m.id===d.datasetId);if(c!==void 0)return{datasetId:c.id,name:c.name,nameIsUnique:g(c.name)}}Z(i&&a===void 0,r.length===0?`Dataset "${o}" does not exist in project ${s}. Run toloka apply first.`:`Dataset "${o}" does not exist in project ${s}. This project has: ${r.map(wZ).join(", ")}.`),Z((await HZ(t)).length>0,`Dataset "${o}" does not exist in project ${s} and no pipeline in source declares it. Bind a pipeline to it in source so its columns are known, or upload to an existing dataset.`);let p=await e.datasets.create({projectId:s,name:o});return{datasetId:p.id,name:p.name,nameIsUnique:!0}},BY=(e)=>{let t=e.toLowerCase();if(t.endsWith(".json"))return"json";if(t.endsWith(".jsonl"))return"jsonl";if(t.endsWith(".csv"))return"csv";Z(!1,`${e} must have a .json, .jsonl, or .csv extension`)},GY=async(e)=>{let t=ls.basename(e),i=BY(t),n=await qi.readFile(e,"utf8");if(i==="jsonl")for(let{line:s,lineNumber:o}of n.split(/\r?\n/u).map((r,g)=>({line:r,lineNumber:g+1})).filter(({line:r})=>r.length>0)){let r;try{r=JSON.parse(s)}catch{Z(!1,`${t}:${o} is not valid JSON`)}Z($l(r),`${t}:${o} must contain a JSON object`)}return{payload:n,format:i,contentType:yY[i]}},$o=async(e,t,i)=>{let n=i instanceof Error?i.message:String(i);try{await e.datasets.cancelUpload({uploadId:t})}catch(s){let o=s instanceof Error?s.message:String(s);throw AggregateError([i,s],`Dataset upload ${t} failed and could not be canceled. Upload error: ${n}. Cancellation error: ${o}.`)}throw new qo(`Dataset upload ${t} failed and was canceled: ${n}`,i)},RY=async({client:e,started:t,payload:i,contentType:n,fetch:s,retryIntervalMs:o})=>{let r;try{r=await s(t.uploadUrl,{method:"PUT",headers:{"Content-Type":n,"x-ms-blob-type":"BlockBlob"},body:i})}catch(a){return $o(e,t.job.id,a)}if(!r.ok)return $o(e,t.job.id,new qo(`Dataset upload failed with HTTP ${r.status}.`,void 0));let g=0;while(!0)try{await e.datasets.finalizeUpload({uploadId:t.job.id});return}catch(a){if(!(a instanceof te&&a.status===503))return $o(e,t.job.id,a);if(g+=1,g===RZ)return $o(e,t.job.id,new qo(`Storage remained unavailable after ${RZ} finalization attempts.`,a));let{promise:l,resolve:I}=Promise.withResolvers();setTimeout(I,o),await l}};async function kZ(e,t){let{payload:i,format:n,contentType:s}=await GY(t.filePath),o=await ql(e,t,!0),r=o.datasetId,g=new Map;for await(let A of e.datasets.listAllFields({datasetId:r})){if(A.internal||A.name===FZ)continue;g.set(A.name,{name:A.name,jsonSchema:A.jsonSchema})}for(let A of await HZ({...t,datasetName:o.name}))if(!g.has(A.name))g.set(A.name,A);let a=[...g.values()],l=await e.datasets.startUpload({datasetId:r,filename:ls.basename(t.filePath),format:n,declaredSizeBytes:new TextEncoder().encode(i).byteLength,fields:a});await RY({client:e,started:l,payload:i,contentType:s,fetch:t.fetch??globalThis.fetch,retryIntervalMs:t.waitFor?.intervalMs??1000});let I=await e.waitFor({type:"datasetUpload",uploadId:l.job.id},t.waitFor),d=o.nameIsUnique?o.name:o.datasetId,p=I.status==="failed"&&I.error?.startsWith("Schema incompatible with existing upload")===!0?`
|
|
223
|
+
Run toloka dataset fields ${JSON.stringify(d)} to inspect the inferred schema stored from the first successful upload.`:"";Z(I.status==="succeeded",`${I.error??`Dataset upload ${I.id} failed.`}${p}`);let c=`Uploaded ${I.result.itemsIngested} rows to dataset ${o.name}.`,m=[],C,u;try{m=(await e.datasets.getInferredFields({datasetId:r})).fields,C=VY(m)}catch(A){u=`Upload succeeded, but inferred fields could not be fetched: ${A instanceof Error?A.message:String(A)}`}return{datasetId:r,rowsUploaded:I.result.itemsIngested,inferredFields:m,output:C===void 0?c:`${c}
|
|
224
|
+
${C}`,...u===void 0?{}:{warning:u}}}async function PZ(e,t){let i=await ql(e,t,!1),n=await e.datasets.getInferredFields({datasetId:i.datasetId}),s=n.fields.filter((r)=>r.depth===1),o=pZ(s.map(({name:r,jsonSchema:g})=>({name:r,jsonSchema:g})));return{datasetId:i.datasetId,inferredFields:n.fields,declarations:o,output:s.length===0?`Dataset ${i.name} has no inferred fields yet.`:o}}async function YZ(e,t){let i=await vZ(e,t.projectId);if(i.length===0)return{output:"This project has no datasets."};return{output:i.map((n)=>`${n.name} ${n.id}`).join(`
|
|
225
|
+
`)}}var wY=async(e)=>{let t=await e.fetch(e.downloadUrl);Z(t.ok,`Dataset export download failed with HTTP ${t.status}.`);let i=await t.text(),n;try{n=JSON.parse(i)}catch(o){throw Error(`Dataset export ${e.exportId} is not valid JSON.`,{cause:o})}Z(Array.isArray(n),`Dataset export ${e.exportId} is not a JSON array.`);let s=[];for(let[o,r]of n.entries())Z($l(r),`Dataset export ${e.exportId} row ${o} is not a JSON object.`),s.push(r);return s};async function NZ(e,t){let i=await ql(e,t,!1),n=[];for await(let a of e.datasets.listAllFields({datasetId:i.datasetId})){if(a.internal||a.name===FZ)continue;n.push(a.name)}Z(n.length>0,`Dataset ${i.name} has no fields to export.`);let s=await e.datasets.startExport({datasetId:i.datasetId,fields:n}),o;try{o=await e.waitFor({type:"datasetExport",exportId:s.id},t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs})}catch(a){throw Z(!(a instanceof te&&a.code==="wait_timeout"),`Stopped waiting for dataset export ${s.id}; raise --timeout to wait longer.`),a}Z(o.result.downloadUrl,`Dataset export ${o.id} succeeded without a download URL.`);let r=await wY({downloadUrl:o.result.downloadUrl,exportId:o.id,fetch:t.fetch??globalThis.fetch}),g=t.limit===void 0?r:r.slice(0,t.limit);return await qi.mkdir(ls.dirname(t.outPath),{recursive:!0}),await qi.writeFile(t.outPath,g.length===0?"":`${g.map((a)=>JSON.stringify(a)).join(`
|
|
141
226
|
`)}
|
|
142
|
-
`),{output:`Wrote ${a.length} rows to ${t.outPath}.`}}async function by(e,t){return await e.secrets.set({projectId:t.projectId,name:t.name,value:t.value}),{name:t.name,output:`Set secret ${t.name}.`}}var iT=["emacs","vim"],nT=new Set(iT);function sT(e){return nT.has(e)}function Py(){let e=process.env.INQUIRER_KEYBINDINGS;if(!e)return[];return Array.from(new Set(e.toLowerCase().split(/[\s,]+/).filter(sT)))}var Qi=(e,t=[])=>e.name==="up"||t.includes("vim")&&e.name==="k"||t.includes("emacs")&&e.ctrl&&e.name==="p",As=(e,t=[])=>e.name==="down"||t.includes("vim")&&e.name==="j"||t.includes("emacs")&&e.ctrl&&e.name==="n";var yc=(e)=>e.name==="backspace";var _c=(e)=>"1234567890".includes(e.name),bc=(e)=>e.name==="enter"||e.name==="return";class Pc extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(e){super();this.cause=e?.cause}}class vc extends Error{name="CancelPromptError";message="Prompt was canceled"}class Ds extends Error{name="ExitPromptError"}class wc extends Error{name="HookError"}class Yi extends Error{name="ValidationError"}var Ey=require("async_hooks");var Ns=require("async_hooks");var vy=new Ns.AsyncLocalStorage;function oT(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function wy(e,t){let r=oT(e);return vy.run(r,()=>{function i(n){r.handleChange=()=>{r.index=0,n()},r.handleChange()}return t(i)})}function er(){let e=vy.getStore();if(!e)throw new wc("[Inquirer] Hook functions can only be called from within a prompt");return e}function $c(){return er().rl}function Ec(e){let t=(...r)=>{let i=er(),n=!1,s=i.handleChange;i.handleChange=()=>{n=!0};let o=e(...r);if(n)s();return i.handleChange=s,o};return Ns.AsyncResource.bind(t)}function Gr(e){let t=er(),{index:r}=t,i={get(){return t.hooks[r]},set(s){t.hooks[r]=s},initialized:r in t.hooks},n=e(i);return t.index++,n}function $y(){er().handleChange()}var tr={queue(e){let t=er(),{index:r}=t;t.hooksEffect.push(()=>{t.hooksCleanup[r]?.();let i=e($c());if(i!=null&&typeof i!=="function")throw new Yi("useEffect return value must be a cleanup function or nothing.");t.hooksCleanup[r]=i})},run(){let e=er();Ec(()=>{e.hooksEffect.forEach((t)=>{t()}),e.hooksEffect.length=0})()},clearAll(){let e=er();e.hooksCleanup.forEach((t)=>{t?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}};function aT(e){return typeof e==="function"}function st(e){return Gr((t)=>{let r=Ey.AsyncResource.bind(function(s){if(t.get()!==s)t.set(s),$y()});if(t.initialized)return[t.get(),r];let i=aT(e)?e():e;return t.set(i),[i,r]})}function rr(e,t){Gr((r)=>{let i=r.get();if(!Array.isArray(i)||t.some((s,o)=>!Object.is(s,i[o])))tr.queue(e);r.set(t)})}var Ne=require("util");var De=Ce(require("process"));function lT(){if(!De.default.platform.startsWith("win"))return De.default.env.TERM!=="linux";return Boolean(De.default.env.CI)||Boolean(De.default.env.WT_SESSION)||Boolean(De.default.env.TERMINUS_SUBLIME)||De.default.env.ConEmuTask==="{cmd::Cmder}"||De.default.env.TERM_PROGRAM==="Terminus-Sublime"||De.default.env.TERM_PROGRAM==="vscode"||De.default.env.TERM==="xterm-256color"||De.default.env.TERM==="alacritty"||De.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Iy={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},Sy={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},cT={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},dT={...Iy,...Sy},uT={...Iy,...cT},pT=lT(),fT=pT?dT:uT,Vr=fT,jU=Object.entries(Sy);var mT={prefix:{idle:Ne.styleText("blue","?"),done:Ne.styleText("green",Vr.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((e)=>Ne.styleText("yellow",e))},keybindings:[],style:{answer:(e)=>Ne.styleText("cyan",e),message:(e)=>Ne.styleText("bold",e),error:(e)=>Ne.styleText("red",`> ${e}`),defaultAnswer:(e)=>Ne.styleText("dim",`(${e})`),help:(e)=>Ne.styleText("dim",e),highlight:(e)=>Ne.styleText("cyan",e),key:(e)=>Ne.styleText("cyan",Ne.styleText("bold",`<${e}>`))}};function xy(){return{...mT,keybindings:Py()}}function Ry(e){if(typeof e!=="object"||e===null)return!1;let t=e;while(Object.getPrototypeOf(t)!==null)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Cy(...e){let t={};for(let r of e)for(let[i,n]of Object.entries(r)){let s=t[i];t[i]=Ry(s)&&Ry(n)?Cy(s,n):n}return t}function Xi(...e){let t=[xy(),...e.filter((r)=>r!=null)];return Cy(...t)}function Ic({status:e="idle",theme:t}){let[r,i]=st(!1),[n,s]=st(0),{prefix:o,spinner:a}=Xi(t);if(rr(()=>{if(e==="loading"){let u,l=-1,c=setTimeout(()=>{i(!0),u=setInterval(()=>{l=l+1,s(l%a.frames.length)},a.interval)},300);return()=>{clearTimeout(c),clearInterval(u)}}else i(!1)},[e]),r)return a.frames[n];return typeof o==="string"?o:o[e==="loading"?"idle":e]??o.idle}function Zi(e,t){return Gr((r)=>{let i=r.get();if(!i||i.dependencies.length!==t.length||i.dependencies.some((n,s)=>n!==t[s])){let n=e();return r.set({value:n,dependencies:t}),n}return i.value})}function ir(e){return st({current:e})[0]}function Sc(e){let t=ir(e);t.current=e,rr((r)=>{let i=!1,n=Ec((s,o)=>{if(i)return;t.current(o,r)});return r.input.on("keypress",n),()=>{i=!0,r.input.removeListener("keypress",n)}},[])}var Wy=Ce(jy(),1);var Fy=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(t)=>{let r=0;e.lastIndex=0;while(e.test(t))r+=1;return t.length-r}})(),Ty=(e)=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,ky=(e)=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var yT=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,_T=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Ay=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,bT=/\t{1,1000}/y,Dy=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,PT=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,vT=/\p{M}+/gu,wT={limit:1/0,ellipsis:""},Ny=(e,t={},r={})=>{let i=t.limit??1/0,n=t.ellipsis??"",s=t?.ellipsisWidth??(n?Ny(n,wT,r).width:0),o=0,a=r.controlWidth??0,d=r.tabWidth??8,u=r.emojiWidth??2,l=2,c=r.regularWidth??1,p=r.wideWidth??2,f=[[PT,c],[yT,0],[_T,a],[bT,d],[Dy,u],[Ay,p]],m=0,h=0,g=e.length,_=0,b=!1,v=g,w=Math.max(0,i-s),I=0,E=0,x=0,T=0;e:while(!0){if(E>I||h>=g&&h>m){let R=e.slice(I,E)||e.slice(m,h);_=0;for(let V of R.replaceAll(vT,"")){let J=V.codePointAt(0)||0;if(Ty(J))T=2;else if(ky(J))T=p;else T=c;if(x+T>w)v=Math.min(v,Math.max(I,m)+_);if(x+T>i){b=!0;break e}_+=V.length,x+=T}I=E=0}if(h>=g)break e;for(let R=0,V=f.length;R<V;R++){let[J,Z]=f[R];if(J.lastIndex=h,J.test(e)){if(_=J===Ay?Fy(e.slice(h,J.lastIndex)):J===Dy?1:J.lastIndex-h,T=_*Z,x+T>w)v=Math.min(v,h+Math.floor((w-x)/Z));if(x+T>i){b=!0;break e}x+=T,I=m,E=h,h=m=J.lastIndex;continue e}}h+=1}return{width:b?w:x,index:b?v:g,truncated:b,ellipsed:b&&i>=s}},Ly=Ny;var $T={limit:1/0,ellipsis:"",ellipsisWidth:0},ET=(e,t={})=>Ly(e,$T,t).width,_t=ET;var Ls="\x1B",Gy="\x9B",IT=39,Rc="\x07",Vy="[",ST="]",Ky="m",Cc=`${ST}8;;`,qy=new RegExp(`(?:\\${Vy}(?<code>\\d+)m|\\${Cc}(?<uri>.*)${Rc})`,"y"),My=(e)=>{if(e>=30&&e<=37)return 39;if(e>=90&&e<=97)return 39;if(e>=40&&e<=47)return 49;if(e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0;return},Uy=(e)=>`${Ls}${Vy}${e}${Ky}`,By=(e)=>`${Ls}${Cc}${e}${Rc}`,xc=(e,t,r)=>{let i=t[Symbol.iterator](),n=!1,s=!1,o=e.at(-1),a=o===void 0?0:_t(o),d=i.next(),u=i.next(),l=0;while(!d.done){let c=d.value,p=_t(c);if(a+p<=r)e[e.length-1]+=c;else e.push(c),a=0;if(c===Ls||c===Gy)n=!0,s=t.startsWith(Cc,l+1);if(n){if(s){if(c===Rc)n=!1,s=!1}else if(c===Ky)n=!1}else if(a+=p,a===r&&!u.done)e.push(""),a=0;d=u,u=i.next(),l+=c.length}if(o=e.at(-1),!a&&o!==void 0&&o.length&&e.length>1)e[e.length-2]+=e.pop()},xT=(e)=>{let t=e.split(" "),r=t.length;while(r){if(_t(t[r-1]))break;r--}if(r===t.length)return e;return t.slice(0,r).join(" ")+t.slice(r).join("")},RT=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let i="",n,s,o=e.split(" "),a=[""],d=0;for(let c=0;c<o.length;c++){let p=o[c];if(r.trim!==!1){let m=a.at(-1)??"",h=m.trimStart();if(m.length!==h.length)a[a.length-1]=h,d=_t(h)}if(c!==0){if(d>=t&&(r.wordWrap===!1||r.trim===!1))a.push(""),d=0;if(d||r.trim===!1)a[a.length-1]+=" ",d++}let f=_t(p);if(r.hard&&f>t){let m=t-d,h=1+Math.floor((f-m-1)/t);if(Math.floor((f-1)/t)<h)a.push("");xc(a,p,t),d=_t(a.at(-1)??"");continue}if(d+f>t&&d&&f){if(r.wordWrap===!1&&d<t){xc(a,p,t),d=_t(a.at(-1)??"");continue}a.push(""),d=0}if(d+f>t&&r.wordWrap===!1){xc(a,p,t),d=_t(a.at(-1)??"");continue}a[a.length-1]+=p,d+=f}if(r.trim!==!1)a=a.map((c)=>xT(c));let u=a.join(`
|
|
143
|
-
`),l=!1;for(let c=0;c<u.length;c++){let p=u[c];if(i+=p,!l){if(l=p>="\uD800"&&p<="\uDBFF",l)continue}else l=!1;if(p===Ls||p===Gy){qy.lastIndex=c+1;let m=qy.exec(u)?.groups;if(m?.code!==void 0){let h=Number.parseFloat(m.code);n=h===IT?void 0:h}else if(m?.uri!==void 0)s=m.uri.length===0?void 0:m.uri}if(u[c+1]===`
|
|
144
|
-
`){if(
|
|
145
|
-
`){if(n
|
|
146
|
-
`)}function
|
|
147
|
-
`)
|
|
148
|
-
`).
|
|
149
|
-
`)
|
|
150
|
-
`)})
|
|
151
|
-
`)}
|
|
152
|
-
`).length,
|
|
153
|
-
`).
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
`).
|
|
159
|
-
`)}}var
|
|
160
|
-
`)}
|
|
161
|
-
`)
|
|
162
|
-
`)}
|
|
163
|
-
`)}}async function
|
|
164
|
-
`)}}async function
|
|
165
|
-
|
|
166
|
-
${
|
|
167
|
-
|
|
168
|
-
`)}
|
|
169
|
-
`),
|
|
170
|
-
${tk}`).configureOutput({writeOut:(c)=>e.io.stdout(c.replace(/\n$/u,"")),writeErr:(c)=>e.io.stderr(c.replace(/\n$/u,""))}).exitOverride();let n=()=>t.opts();t.hook("postAction",async(c,p)=>{if(i)return;let f=[];for(let g=p;g!==null;g=g.parent)f.push(g.name());if(f.includes("init")||f.includes("help")||f.includes("report")||f.includes("url")||f.includes("version"))return;let m=await kt(n(),e.io),h=await ug(m).catch(()=>{return});if(h===void 0)return;i=!0,e.io.stderr(h)}),t.command("version").description("print the current CLI version").action(()=>e.io.stdout(Ve)),t.command("login").description("store an API key for this machine after verifying it").action(async()=>{let c=await nm({...n().apiKey===void 0?{}:{apiKey:n().apiKey},...n().baseUrl===void 0?{}:{baseUrl:n().baseUrl},...e.io.prompt===void 0?{}:{prompt:e.io.prompt},write:e.io.stdout,environment:e.environment});e.io.stdout(c.output);try{let p=await zf(e.environment);if(p===void 0)return;let f=e.injectedClient??ct(p);await rn(f,e.analytics)}catch{}}),t.command("logout").description("remove stored credentials from this machine").action(async()=>{let c=await sm(e.environment);e.io.stdout(c.output)}),t.command("auth-status").alias("whoami").description("show which platform and key the CLI would use").option("--show-token","print the API key instead of masking it",!1).action(async(c)=>{let p=n(),f=await Si(e.environment,p.apiKey??e.environment.POTATO_API_KEY),m=f.found?.credentials,h=await kt(p,e.io),g=await Ie(h),_=zc(p,e,m,g),b=e.injectedClient,v=await am({environment:e.environment,showToken:c.showToken,credentialLookup:f,...p.apiKey===void 0?{}:{flagApiKey:p.apiKey},...p.baseUrl===void 0?{}:{flagBaseUrl:p.baseUrl},...b===void 0?{}:{probe:()=>b},..._===void 0?{}:{project:_}});if(e.io.stdout(v.output),!v.authenticated){r.value=1;return}try{let w=ul(p,g,e.environment,m),I=e.injectedClient??ct({apiKey:w.apiKey,baseUrl:w.baseUrl});await rn(I,e.analytics)}catch{}});let s=t.command("project").description("select and manage the current platform project");s.command("list").description("list remote projects this key can see").action(async()=>{let c=n(),{client:p,stored:f,state:m}=await X(c,e),h=zc(c,e,f,m);await Yf({client:p,io:e.io,...h===void 0?{}:{context:h}})}),s.command("add").argument("[alias]","local name for this project").argument("[projectId]","platform project id").description("register a live project and select it").action(async(c,p)=>{let f=n(),m=await Ot(e.environment),h=e.injectedClient??ct(m.credentials);await Xf({environment:e.environment,flags:f,client:h,io:e.io,afterPreflight:async()=>rn(h,e.analytics),...c===void 0?{}:{alias:c},...p===void 0?{}:{projectId:p}})}),s.command("switch").argument("<alias>","local project alias").description("select a registered project").action(async(c)=>{await Zf({environment:e.environment,flags:n(),alias:c,io:e.io})}),s.command("current").description("show the project this command would use").action(async()=>{let c=n(),p=await Wc(c,e),f=await kt(c,e.io),m=await Ie(f);if(tm({flags:c,environment:e.environment,stored:p,...m===void 0?{}:{state:m},io:e.io}).project===void 0)r.value=1}),s.command("url").description("print the current project URL").action(async()=>{let{baseUrl:c,client:p,projectId:f}=await X(n(),e);y(f,de);let m=await p.projects.get({projectId:f}),h=new URL(`/teams/${encodeURIComponent(m.teamId)}/projects/${encodeURIComponent(m.id)}`,c);e.io.stdout(h.href)}),s.command("remove").argument("<alias>","local project alias").description("forget a local project alias").action(async(c)=>{await em({environment:e.environment,flags:n(),alias:c,io:e.io})}),s.command("create").argument("[alias]","local name for the new project").option("--name <name>","platform project name").option("--team-id <id>","team that owns the project").description("create a live project and select it").action(async(c,p)=>{let f=n(),m=await Ot(e.environment),h=e.injectedClient??ct(m.credentials),g=await kt(f,e.io);await rm({environment:e.environment,flags:f,client:h,io:e.io,sourceRoot:g,afterPreflight:async()=>rn(h,e.analytics),...c===void 0?{}:{alias:c},...p.name===void 0?{}:{name:p.name},...p.teamId===void 0?{}:{teamId:p.teamId}})}),t.command("init").description("initialize this project directory and install the agent bootstrap").action(async()=>{let c=n(),p=R_(c),f=await Wc(c,e),m=await Ie(p),h=zc(c,e,f,m),g=await dg(p,h===void 0?{}:{projectId:h.id});if(e.io.stdout(g.output),g.warning!==void 0)e.io.stderr(g.warning)}),t.command("import").argument("[projectId]","existing project to write into source; defaults to the selected project").option("-f, --force","replace an existing pipelines/ directory",!1).description("generate TypeScript source from a live project").action(async(c,p)=>{let{sourceRoot:f,client:m,projectId:h}=await X(n(),e),g=c??h;y(g,de);let _=await oy(m,{sourceRoot:f,projectId:g,...p?.force===!0?{force:!0}:{}});e.io.stdout(_.output)}),t.command("plan").description("show what apply would change").action(async()=>{let{sourceRoot:c,client:p,projectId:f}=await X(n(),e),m=await ay(p,{sourceRoot:c,...f===void 0?{}:{projectId:f}});e.io.stdout(m.output)}),t.command("validate").description("run platform spec validation and report matching checks").action(async()=>{let{sourceRoot:c,client:p,projectId:f}=await X(n(),e),m=await dy(p,{sourceRoot:c,...f===void 0?{}:{projectId:f}});if(e.io.stdout(m.output),!m.valid)r.value=1}),t.command("apply").description("make the platform match source").action(async()=>{let{sourceRoot:c,client:p,projectId:f}=await X(n(),e),m=await cy(p,{sourceRoot:c,...f===void 0?{}:{projectId:f}});e.io.stdout(m.output)}),t.command("secret").description("manage project secrets").command("set").argument("<name>","secret name referenced by a code node").option("--from-env <variable>","read the value from this environment variable instead of stdin").description("set a secret value without writing it to disk").action(async(c,p)=>{let{client:f,projectId:m}=await X(n(),e);y(m,de);let h=p.fromEnv===void 0?(await e.io.readStdin()).replace(/\r?\n$/u,""):e.environment[p.fromEnv];y(h!==void 0,`Missing secret value. Set ${p.fromEnv??"the named environment variable"} or pipe it to stdin.`);try{let g=await by(f,{projectId:m,name:c,value:h});e.io.stdout(g.output)}catch{e.io.stderr(`Failed to set secret ${c}.`),r.value=1}});let a=t.command("dataset").description("inspect and move dataset catalog and rows");a.command("list").description("list live datasets in the selected project").action(async()=>{let{client:c,projectId:p}=await X(n(),e);y(p,de);let f=await yy(c,{projectId:p});e.io.stdout(f.output)}),a.command("fields").argument("<name>","dataset name or id").description("print field declarations inferred from uploaded rows").action(async(c)=>{let{sourceRoot:p,client:f,projectId:m}=await X(n(),e),h=await gy(f,{sourceRoot:p,datasetName:c,...m===void 0?{}:{projectId:m}});e.io.stdout(h.output)}),a.command("load").argument("<name>","dataset name or id").requiredOption("--out <file>","JSONL file to write").option("--limit <n>","how many rows to keep after download",Wr).option("--timeout <ms>","how long to wait for the export",Wr).description("download live dataset rows into a JSONL file").action(async(c,p)=>{let{sourceRoot:f,client:m,projectId:h}=await X(n(),e),g=await _y(m,{sourceRoot:f,datasetName:c,outPath:nn.resolve(p.out),...h===void 0?{}:{projectId:h},...p.limit===void 0?{}:{limit:p.limit},...p.timeout===void 0?{}:{timeoutMs:p.timeout}});e.io.stdout(g.output)}),a.command("upload").argument("<name>","dataset name or id").argument("<file>","JSONL file, one JSON object per line").description("append rows to a dataset").action(async(c,p)=>{let{sourceRoot:f,client:m,projectId:h}=await X(n(),e),g=await hy(m,{sourceRoot:f,datasetName:c,filePath:nn.resolve(p),...h===void 0?{}:{projectId:h}});if(e.io.stdout(g.output),g.warning!==void 0)e.io.stderr(g.warning)});let d="pipeline name or id; required unless a TTY picker can choose among several",u=t.command("pipeline").description("operate on a live pipeline in the selected project");u.command("list").description("list live pipelines in the selected project").action(async()=>{let{client:c,projectId:p,state:f}=await X(n(),e);y(p,de);let m=await m_({client:c,projectId:p,state:f});e.io.stdout(m.output)}),u.command("run").argument("[name]",d).option("--wait","wait for the run to reach a terminal state",!1).option("--timeout <ms>","how long to wait",Wr).description("start a run on a deployed pipeline").action(async(c,p)=>{let{client:f,state:m,projectId:h}=await X(n(),e);y(h,de);let g=await __(f,{projectId:h,state:m,...c===void 0?{}:{pipeline:c},wait:p.wait,...p.timeout===void 0?{}:{timeoutMs:p.timeout},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(g.output),r.value=Kc(g.outcome)}),u.command("status").argument("[name]",d).description("report the latest run's state and item counts").action(async(c)=>{let{client:p,state:f,projectId:m}=await X(n(),e);y(m,de);let h=await P_(p,{projectId:m,state:f,...c===void 0?{}:{pipeline:c},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(h.output),r.value=Kc(h.outcome)}),u.command("runs").argument("[name]",d).option("--limit <n>","how many runs to list",Wr).description("list recent runs").action(async(c,p)=>{let{client:f,state:m,projectId:h}=await X(n(),e);y(h,de);let g=await b_(f,{projectId:h,state:m,...c===void 0?{}:{pipeline:c},...p.limit===void 0?{}:{limit:p.limit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(g.output)}),u.command("cost").argument("[name]",d).option("--item-limit <n>","cap how many items to price",Wr).description("forecast what a run of this pipeline would bill").action(async(c,p)=>{let{client:f,state:m,projectId:h}=await X(n(),e);y(h,de);let g=await I_(f,{projectId:h,state:m,...c===void 0?{}:{pipeline:c},...p.itemLimit===void 0?{}:{itemLimit:p.itemLimit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(g.output)}),u.command("cancel").argument("<runId>","run to cancel").description("request cancellation of a run").action(async(c)=>{let{client:p}=await X(n(),e),f=await v_(p,{runId:c});e.io.stdout(f.output)}),u.command("results").argument("<runId>","run to read").option("--limit <n>","how many items to scan",Wr).option("--failed","only report failed items",!1).description("report a run's items").action(async(c,p)=>{let{client:f}=await X(n(),e),m=await w_(f,{runId:c,failedOnly:p.failed,...p.limit===void 0?{}:{limit:p.limit}});e.io.stdout(m.output),r.value=Kc(m.outcome)}),t.command("status").description("report project health: live counts and pending source changes").action(async()=>{let{sourceRoot:c,client:p,projectId:f}=await X(n(),e);y(f,de);let m=await ly(p,{sourceRoot:c,projectId:f});e.io.stdout(m.output)}),t.command("report").argument("<markdownPath>","path to a UTF-8 Markdown report").option("--authored-by <who>","human or agent",rk,"human").option("--confirm","confirm submission in a non-interactive environment",!1).description("preview and send an issue report to Toloka through PostHog").action(async(c,p)=>{y(e.analytics,"Issue reporting requires CLI analytics.");let f=R_(n()),m=n().baseUrl??e.environment.POTATO_BASE_URL??mt(e.environment)??Vt;r.value=await x_({path:c,authoredBy:p.authoredBy,platform:new URL(m).origin,confirm:p.confirm,sourceRoot:f,cwd:process.cwd(),analytics:e.analytics,io:e.io})});let l=t.command("skill").description("discover bundled agent skills and install them into .agents/skills");return l.command("list").option("--json","print Skill Descriptors with their status as JSON",!1).description("list bundled skills as not-installed, current, or stale").action(async(c)=>{let p=await kt(n(),e.io);await tg({sourceRoot:p,json:c.json,io:e.io})}),l.command("search").argument("<query>","text matched case-insensitively against id, name, description, and tags").option("--json","print matching Skill Descriptors with their status as JSON",!1).description("find bundled skills for a task").action(async(c,p)=>{let f=await kt(n(),e.io);await rg({sourceRoot:f,query:c,json:p.json,io:e.io})}),l.command("install").argument("<skillId>","skill id from toloka skill list").option("-f, --force","replace an existing .agents/skills/<skillId> directory",!1).description("copy one bundled skill into .agents/skills/<skillId>").action(async(c,p)=>{let f=await kt(n(),e.io);await ig({sourceRoot:f,skillId:c,force:p.force,io:e.io})}),{program:t,exitCode:r}}var nk=async()=>{process.stdin.setEncoding("utf8");let e=[];for await(let t of process.stdin)e.push(String(t));return e.join("")},sk=async(e)=>{process.stdout.write(e);let t=process.stdin.isRaw;process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.setEncoding("utf8");let{promise:r,resolve:i,reject:n}=Promise.withResolvers(),s="",o=()=>{process.stdin.off("data",l),process.stdin.off("end",d),process.stdin.off("error",u),process.stdin.setRawMode(t),process.stdin.pause()},a=()=>{o(),process.stdout.write(`
|
|
171
|
-
`)},d=()=>{a(),n(Error("Standard input closed before an API key was entered."))},u=(c)=>{a(),n(c)},l=(c)=>{for(let p of c){if(p==="\r"||p===`
|
|
172
|
-
`)
|
|
227
|
+
`),{output:`Wrote ${g.length} rows to ${t.outPath}.`}}async function XZ(e,t){return await e.secrets.set({projectId:t.projectId,name:t.name,value:t.value}),{name:t.name,output:`Set secret ${t.name}.`}}var FY=["qwen3-4b","qwen3-8b","qwen3-32b","qwen3-235b"],Is=(e)=>{let t=e.reduce((i,n)=>n.map((s,o)=>Math.max(i[o]??0,s.length)),[]);return e.map((i)=>i.map((n,s)=>n.padEnd(t[s]??n.length)).join(" ").trimEnd()).join(`
|
|
228
|
+
`)},gi=(e,t,i,n)=>{e.stdout(t?JSON.stringify(i,null,2):n)},HY=(e)=>Is([["ID",e.id],["Name",e.displayName],["Provider",e.provider],["Upstream model",e.upstreamModel],["Upstream revision",e.upstreamRevision]]),SZ=(e)=>Is([["ID",e.id],["Project",e.projectId],["Name",e.name],["Base model",e.baseModelId],["Description",e.description??"-"],["Archived at",e.archivedAt??"-"],["Created at",e.createdAt],["Updated at",e.updatedAt]]),eI=(e)=>{let t=FY.find((i)=>i===e);return Z(t,`Unknown base model ${e}.`),t},tI=async(e,t,i)=>{if(i.startsWith("mdl."))return e.models.get({projectId:t,modelId:i});let n=[];for await(let s of e.models.listAll({projectId:t,limit:100}))if(s.name===i)n.push(s);return Z(n.length===1,`Model ${i} was not found or is ambiguous.`),n[0]},xZ=async(e,t,i)=>{let n=await e.baseModels.list();gi(i,t.json,n,n.length===0?"No base models found.":Is([["ID","NAME","PROVIDER","UPSTREAM MODEL"],...n.map((s)=>[s.id,s.displayName,s.provider,s.upstreamModel])]))},JZ=async(e,t,i)=>{let n=await e.baseModels.get({id:t.id});gi(i,t.json,n,HY(n))},EZ=async(e,t,i)=>{let n=await e.models.listPage({projectId:t.projectId,limit:100,offset:0});gi(i,t.json,n.models,n.models.length===0?"No models found.":Is([["ID","NAME","BASE MODEL"],...n.models.map((s)=>[s.id,s.name,s.baseModelId])]))},UZ=async(e,t,i)=>{let n=await tI(e,t.projectId,t.nameOrId);gi(i,t.json,n,SZ(n))},OZ=async(e,t,i)=>{let n=await tI(e,t.projectId,t.nameOrId),s=[];for await(let o of e.models.listAllVersions({projectId:t.projectId,modelId:n.id,limit:100}))s.push(o);gi(i,t.json,s,s.length===0?"No Model Versions found.":Is([["VERSION","ID","CREATED AT"],...s.map((o)=>[o.version,o.id,o.createdAt])]))},TZ=async(e,t,i)=>{let{json:n,...s}=t,o=await e.models.create(s);gi(i,n,o,SZ(o))},zZ=async(e,t,i)=>{let n=await tI(e,t.projectId,t.nameOrId),s=await e.models.archive({projectId:t.projectId,modelId:n.id});gi(i,t.json,s,`Archived Model ${s.id}.`)};var vY=["emacs","vim"],kY=new Set(vY);function PY(e){return kY.has(e)}function jZ(){let e=process.env.INQUIRER_KEYBINDINGS;if(!e)return[];return Array.from(new Set(e.toLowerCase().split(/[\s,]+/).filter(PY)))}var ds=(e,t=[])=>e.name==="up"||t.includes("vim")&&e.name==="k"||t.includes("emacs")&&e.ctrl&&e.name==="p",er=(e,t=[])=>e.name==="down"||t.includes("vim")&&e.name==="j"||t.includes("emacs")&&e.ctrl&&e.name==="n";var iI=(e)=>e.name==="backspace";var nI=(e)=>"1234567890".includes(e.name),sI=(e)=>e.name==="enter"||e.name==="return";class oI extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(e){super();this.cause=e?.cause}}class rI extends Error{name="CancelPromptError";message="Prompt was canceled"}class tr extends Error{name="ExitPromptError"}class gI extends Error{name="HookError"}class cs extends Error{name="ValidationError"}var KZ=require("async_hooks");var ir=require("async_hooks");var DZ=new ir.AsyncLocalStorage;function YY(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function QZ(e,t){let i=YY(e);return DZ.run(i,()=>{function n(s){i.handleChange=()=>{i.index=0,s()},i.handleChange()}return t(n)})}function ai(){let e=DZ.getStore();if(!e)throw new gI("[Inquirer] Hook functions can only be called from within a prompt");return e}function aI(){return ai().rl}function lI(e){let t=(...i)=>{let n=ai(),s=!1,o=n.handleChange;n.handleChange=()=>{s=!0};let r=e(...i);if(s)o();return n.handleChange=o,r};return ir.AsyncResource.bind(t)}function en(e){let t=ai(),{index:i}=t,n={get(){return t.hooks[i]},set(o){t.hooks[i]=o},initialized:i in t.hooks},s=e(n);return t.index++,s}function _Z(){ai().handleChange()}var li={queue(e){let t=ai(),{index:i}=t;t.hooksEffect.push(()=>{t.hooksCleanup[i]?.();let n=e(aI());if(n!=null&&typeof n!=="function")throw new cs("useEffect return value must be a cleanup function or nothing.");t.hooksCleanup[i]=n})},run(){let e=ai();lI(()=>{e.hooksEffect.forEach((t)=>{t()}),e.hooksEffect.length=0})()},clearAll(){let e=ai();e.hooksCleanup.forEach((t)=>{t?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}};function NY(e){return typeof e==="function"}function at(e){return en((t)=>{let i=KZ.AsyncResource.bind(function(o){if(t.get()!==o)t.set(o),_Z()});if(t.initialized)return[t.get(),i];let n=NY(e)?e():e;return t.set(n),[n,i]})}function Ii(e,t){en((i)=>{let n=i.get();if(!Array.isArray(n)||t.some((o,r)=>!Object.is(o,n[r])))li.queue(e);i.set(t)})}var Se=require("util");var Xe=be(require("process"));function XY(){if(!Xe.default.platform.startsWith("win"))return Xe.default.env.TERM!=="linux";return Boolean(Xe.default.env.CI)||Boolean(Xe.default.env.WT_SESSION)||Boolean(Xe.default.env.TERMINUS_SUBLIME)||Xe.default.env.ConEmuTask==="{cmd::Cmder}"||Xe.default.env.TERM_PROGRAM==="Terminus-Sublime"||Xe.default.env.TERM_PROGRAM==="vscode"||Xe.default.env.TERM==="xterm-256color"||Xe.default.env.TERM==="alacritty"||Xe.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var LZ={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},MZ={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},SY={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},xY={...LZ,...MZ},JY={...LZ,...SY},EY=XY(),UY=EY?xY:JY,tn=UY,RO=Object.entries(MZ);var OY={prefix:{idle:Se.styleText("blue","?"),done:Se.styleText("green",tn.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((e)=>Se.styleText("yellow",e))},keybindings:[],style:{answer:(e)=>Se.styleText("cyan",e),message:(e)=>Se.styleText("bold",e),error:(e)=>Se.styleText("red",`> ${e}`),defaultAnswer:(e)=>Se.styleText("dim",`(${e})`),help:(e)=>Se.styleText("dim",e),highlight:(e)=>Se.styleText("cyan",e),key:(e)=>Se.styleText("cyan",Se.styleText("bold",`<${e}>`))}};function $Z(){return{...OY,keybindings:jZ()}}function qZ(e){if(typeof e!=="object"||e===null)return!1;let t=e;while(Object.getPrototypeOf(t)!==null)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function eb(...e){let t={};for(let i of e)for(let[n,s]of Object.entries(i)){let o=t[n];t[n]=qZ(o)&&qZ(s)?eb(o,s):s}return t}function Cs(...e){let t=[$Z(),...e.filter((i)=>i!=null)];return eb(...t)}function II({status:e="idle",theme:t}){let[i,n]=at(!1),[s,o]=at(0),{prefix:r,spinner:g}=Cs(t);if(Ii(()=>{if(e==="loading"){let l,I=-1,d=setTimeout(()=>{n(!0),l=setInterval(()=>{I=I+1,o(I%g.frames.length)},g.interval)},300);return()=>{clearTimeout(d),clearInterval(l)}}else n(!1)},[e]),i)return g.frames[s];return typeof r==="string"?r:r[e==="loading"?"idle":e]??r.idle}function us(e,t){return en((i)=>{let n=i.get();if(!n||n.dependencies.length!==t.length||n.dependencies.some((s,o)=>s!==t[o])){let s=e();return i.set({value:s,dependencies:t}),s}return n.value})}function di(e){return at({current:e})[0]}function dI(e){let t=di(e);t.current=e,Ii((i)=>{let n=!1,s=lI((o,r)=>{if(n)return;t.current(r,i)});return i.input.on("keypress",s),()=>{n=!0,i.input.removeListener("keypress",s)}},[])}var Zb=be(ib(),1);var nb=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(t)=>{let i=0;e.lastIndex=0;while(e.test(t))i+=1;return t.length-i}})(),sb=(e)=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,ob=(e)=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var jY=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,DY=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,rb=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,QY=/\t{1,1000}/y,gb=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,_Y=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,KY=/\p{M}+/gu,LY={limit:1/0,ellipsis:""},ab=(e,t={},i={})=>{let n=t.limit??1/0,s=t.ellipsis??"",o=t?.ellipsisWidth??(s?ab(s,LY,i).width:0),r=0,g=i.controlWidth??0,a=i.tabWidth??8,l=i.emojiWidth??2,I=2,d=i.regularWidth??1,p=i.wideWidth??2,c=[[_Y,d],[jY,0],[DY,g],[QY,a],[gb,l],[rb,p]],m=0,C=0,u=e.length,A=0,b=!1,W=u,h=Math.max(0,n-o),y=0,V=0,B=0,F=0;e:while(!0){if(V>y||C>=u&&C>m){let w=e.slice(y,V)||e.slice(m,C);A=0;for(let T of w.replaceAll(KY,"")){let K=T.codePointAt(0)||0;if(sb(K))F=2;else if(ob(K))F=p;else F=d;if(B+F>h)W=Math.min(W,Math.max(y,m)+A);if(B+F>n){b=!0;break e}A+=T.length,B+=F}y=V=0}if(C>=u)break e;for(let w=0,T=c.length;w<T;w++){let[K,ee]=c[w];if(K.lastIndex=C,K.test(e)){if(A=K===rb?nb(e.slice(C,K.lastIndex)):K===gb?1:K.lastIndex-C,F=A*ee,B+F>h)W=Math.min(W,C+Math.floor((h-B)/ee));if(B+F>n){b=!0;break e}B+=F,y=m,V=C,C=m=K.lastIndex;continue e}}C+=1}return{width:b?h:B,index:b?W:u,truncated:b,ellipsed:b&&n>=o}},lb=ab;var MY={limit:1/0,ellipsis:"",ellipsisWidth:0},$Y=(e,t={})=>lb(e,MY,t).width,yt=$Y;var nr="\x1B",ub="\x9B",qY=39,CI="\x07",mb="[",e1="]",pb="m",uI=`${e1}8;;`,Ib=new RegExp(`(?:\\${mb}(?<code>\\d+)m|\\${uI}(?<uri>.*)${CI})`,"y"),db=(e)=>{if(e>=30&&e<=37)return 39;if(e>=90&&e<=97)return 39;if(e>=40&&e<=47)return 49;if(e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0;return},cb=(e)=>`${nr}${mb}${e}${pb}`,Cb=(e)=>`${nr}${uI}${e}${CI}`,cI=(e,t,i)=>{let n=t[Symbol.iterator](),s=!1,o=!1,r=e.at(-1),g=r===void 0?0:yt(r),a=n.next(),l=n.next(),I=0;while(!a.done){let d=a.value,p=yt(d);if(g+p<=i)e[e.length-1]+=d;else e.push(d),g=0;if(d===nr||d===ub)s=!0,o=t.startsWith(uI,I+1);if(s){if(o){if(d===CI)s=!1,o=!1}else if(d===pb)s=!1}else if(g+=p,g===i&&!l.done)e.push(""),g=0;a=l,l=n.next(),I+=d.length}if(r=e.at(-1),!g&&r!==void 0&&r.length&&e.length>1)e[e.length-2]+=e.pop()},t1=(e)=>{let t=e.split(" "),i=t.length;while(i){if(yt(t[i-1]))break;i--}if(i===t.length)return e;return t.slice(0,i).join(" ")+t.slice(i).join("")},i1=(e,t,i={})=>{if(i.trim!==!1&&e.trim()==="")return"";let n="",s,o,r=e.split(" "),g=[""],a=0;for(let d=0;d<r.length;d++){let p=r[d];if(i.trim!==!1){let m=g.at(-1)??"",C=m.trimStart();if(m.length!==C.length)g[g.length-1]=C,a=yt(C)}if(d!==0){if(a>=t&&(i.wordWrap===!1||i.trim===!1))g.push(""),a=0;if(a||i.trim===!1)g[g.length-1]+=" ",a++}let c=yt(p);if(i.hard&&c>t){let m=t-a,C=1+Math.floor((c-m-1)/t);if(Math.floor((c-1)/t)<C)g.push("");cI(g,p,t),a=yt(g.at(-1)??"");continue}if(a+c>t&&a&&c){if(i.wordWrap===!1&&a<t){cI(g,p,t),a=yt(g.at(-1)??"");continue}g.push(""),a=0}if(a+c>t&&i.wordWrap===!1){cI(g,p,t),a=yt(g.at(-1)??"");continue}g[g.length-1]+=p,a+=c}if(i.trim!==!1)g=g.map((d)=>t1(d));let l=g.join(`
|
|
229
|
+
`),I=!1;for(let d=0;d<l.length;d++){let p=l[d];if(n+=p,!I){if(I=p>="\uD800"&&p<="\uDBFF",I)continue}else I=!1;if(p===nr||p===ub){Ib.lastIndex=d+1;let m=Ib.exec(l)?.groups;if(m?.code!==void 0){let C=Number.parseFloat(m.code);s=C===qY?void 0:C}else if(m?.uri!==void 0)o=m.uri.length===0?void 0:m.uri}if(l[d+1]===`
|
|
230
|
+
`){if(o)n+=Cb("");let c=s?db(s):void 0;if(s&&c)n+=cb(c)}else if(p===`
|
|
231
|
+
`){if(s&&db(s))n+=cb(s);if(o)n+=Cb(o)}}return n},n1=/\r?\n/;function Ab(e,t,i){return String(e).normalize().split(n1).map((n)=>i1(n,t,i)).join(`
|
|
232
|
+
`)}function ms(e,t){return e.split(`
|
|
233
|
+
`).flatMap((i)=>Ab(i,t,{trim:!1,wordWrap:!1}).split(`
|
|
234
|
+
`).map((n)=>n.trimEnd())).join(`
|
|
235
|
+
`)}function sr(){return Zb.default({defaultWidth:80,output:aI().output})}function s1({active:e,renderedItems:t,pageSize:i,loop:n}){let s=di({lastPointer:e,lastActive:void 0}),{lastPointer:o,lastActive:r}=s.current,g=Math.floor(i/2),a=t.reduce((d,p)=>d+p.length,0),l=t.slice(0,e).reduce((d,p)=>d+p.length,0),I=l;if(a>i)if(n){if(I=o,r!=null&&r<e&&e-r<i)I=Math.min(g,Math.abs(e-r)===1?Math.min(o+(t[r]?.length??0),Math.max(l,o)):o+e-r)}else{let d=t.slice(e).reduce((p,c)=>p+c.length,0);I=d<i-g?i-d:Math.min(l,g)}return s.current.lastPointer=I,s.current.lastActive=e,I}function mI({items:e,active:t,renderItem:i,pageSize:n,loop:s=!0}){let o=sr(),r=(A)=>(A%e.length+e.length)%e.length,g=e.map((A,b)=>{if(A==null)return[];return ms(i({item:A,index:b,isActive:b===t}),o).split(`
|
|
236
|
+
`)}),a=g.reduce((A,b)=>A+b.length,0),l=(A)=>g[A]??[],I=s1({active:t,renderedItems:g,pageSize:n,loop:s}),d=l(t).slice(0,n),p=I+d.length<=n?I:n-d.length,c=Array.from({length:n});c.splice(p,d.length,...d);let m=new Set([t]),C=p+d.length,u=r(t+1);while(C<n&&!m.has(u)&&(s&&a>n?u!==t:u>t)){let b=l(u).slice(0,n-C);c.splice(C,b.length,...b),m.add(u),C+=b.length,u=r(u+1)}C=p-1,u=r(t-1);while(C>=0&&!m.has(u)&&(s&&a>n?u!==t:u<t)){let A=l(u),b=A.slice(Math.max(0,A.length-C-1));c.splice(C-b.length+1,b.length,...b),m.add(u),C-=b.length,u=r(u-1)}return c.filter((A)=>typeof A==="string").join(`
|
|
237
|
+
`)}var vb=be(require("readline")),kb=require("async_hooks"),Pb=be(hb(),1);var ci=[];ci.push("SIGHUP","SIGINT","SIGTERM");if(process.platform!=="win32")ci.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")ci.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var or=(e)=>!!e&&typeof e==="object"&&typeof e.removeListener==="function"&&typeof e.emit==="function"&&typeof e.reallyExit==="function"&&typeof e.listeners==="function"&&typeof e.kill==="function"&&typeof e.pid==="number"&&typeof e.on==="function",pI=Symbol.for("signal-exit emitter"),AI=globalThis,r1=Object.defineProperty.bind(Object);class fb{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(AI[pI])return AI[pI];r1(AI,pI,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,t){this.listeners[e].push(t)}removeListener(e,t){let i=this.listeners[e],n=i.indexOf(t);if(n===-1)return;if(n===0&&i.length===1)i.length=0;else i.splice(n,1)}emit(e,t,i){if(this.emitted[e])return!1;this.emitted[e]=!0;let n=!1;for(let s of this.listeners[e])n=s(t,i)===!0||n;if(e==="exit")n=this.emit("afterExit",t,i)||n;return n}}class bI{}var g1=(e)=>({onExit(t,i){return e.onExit(t,i)},load(){return e.load()},unload(){return e.unload()}});class yb extends bI{onExit(){return()=>{}}load(){}unload(){}}class Vb extends bI{#i=ZI.platform==="win32"?"SIGINT":"SIGHUP";#t=new fb;#e;#o;#r;#s={};#n=!1;constructor(e){super();this.#e=e,this.#s={};for(let t of ci)this.#s[t]=()=>{let i=this.#e.listeners(t),{count:n}=this.#t,s=e;if(typeof s.__signal_exit_emitter__==="object"&&typeof s.__signal_exit_emitter__.count==="number")n+=s.__signal_exit_emitter__.count;if(i.length===n){this.unload();let o=this.#t.emit("exit",null,t),r=t==="SIGHUP"?this.#i:t;if(!o)e.kill(e.pid,r)}};this.#r=e.reallyExit,this.#o=e.emit}onExit(e,t){if(!or(this.#e))return()=>{};if(this.#n===!1)this.load();let i=t?.alwaysLast?"afterExit":"exit";return this.#t.on(i,e),()=>{if(this.#t.removeListener(i,e),this.#t.listeners.exit.length===0&&this.#t.listeners.afterExit.length===0)this.unload()}}load(){if(this.#n)return;this.#n=!0,this.#t.count+=1;for(let e of ci)try{let t=this.#s[e];if(t)this.#e.on(e,t)}catch(t){}this.#e.emit=(e,...t)=>this.#a(e,...t),this.#e.reallyExit=(e)=>this.#g(e)}unload(){if(!this.#n)return;this.#n=!1,ci.forEach((e)=>{let t=this.#s[e];if(!t)throw Error("Listener not defined for signal: "+e);try{this.#e.removeListener(e,t)}catch(i){}}),this.#e.emit=this.#o,this.#e.reallyExit=this.#r,this.#t.count-=1}#g(e){if(!or(this.#e))return 0;return this.#e.exitCode=e||0,this.#t.emit("exit",this.#e.exitCode,null),this.#r.call(this.#e,this.#e.exitCode)}#a(e,...t){let i=this.#o;if(e==="exit"&&or(this.#e)){if(typeof t[0]==="number")this.#e.exitCode=t[0];let n=i.call(this.#e,e,...t);return this.#t.emit("exit",this.#e.exitCode,null),n}else return i.call(this.#e,e,...t)}}var ZI=globalThis.process,{onExit:Bb,load:lT,unload:IT}=g1(or(ZI)?new Vb(ZI):new yb);var Hb=require("util");var WI="\x1B[G",Rb="\x1B[?25l",wb="\x1B[?25h",hI=(e=1)=>e>0?`\x1B[${e}A`:"",fI=(e=1)=>e>0?`\x1B[${e}B`:"",yI=(e,t)=>{if(typeof t==="number"&&!Number.isNaN(t))return`\x1B[${t+1};${e+1}H`;return`\x1B[${e+1}G`},Gb="\x1B[2K",VI=(e)=>e>0?(Gb+hI(1)).repeat(e-1)+Gb+WI:"";var Fb=(e)=>e.split(`
|
|
238
|
+
`).length,a1=(e)=>e.split(`
|
|
239
|
+
`).pop()??"";class rr{height=0;extraLinesUnderPrompt=0;cursorPos;rl;constructor(e){this.rl=e,this.cursorPos=e.getCursorPos()}write(e){this.rl.output.unmute(),this.rl.output.write(e),this.rl.output.mute()}render(e,t=""){let i=a1(e),n=Hb.stripVTControlCharacters(i),s=n;if(this.rl.line.length>0)s=s.slice(0,-this.rl.line.length);this.rl.setPrompt(s),this.cursorPos=this.rl.getCursorPos();let o=sr();if(e=ms(e,o),t=ms(t,o),n.length%o===0)e+=`
|
|
240
|
+
`;let r=e+(t?`
|
|
241
|
+
`+t:""),a=Math.floor(n.length/o)-this.cursorPos.rows+(t?Fb(t):0);if(a>0)r+=hI(a);r+=yI(this.cursorPos.cols),this.write(fI(this.extraLinesUnderPrompt)+VI(this.height)+r),this.extraLinesUnderPrompt=a,this.height=Fb(r)}checkCursorPos(){let e=this.rl.getCursorPos();if(e.cols!==this.cursorPos.cols)this.write(yI(e.cols)),this.cursorPos=e}done({clearContent:e}){this.rl.setPrompt("");let t=fI(this.extraLinesUnderPrompt);t+=e?VI(this.height):`
|
|
242
|
+
`,t+=WI,t+=wb,this.write(t),this.rl.close()}}class BI extends Promise{static withResolver(){let e,t;return{promise:new Promise((n,s)=>{e=n,t=s}),resolve:e,reject:t}}}var Yb=be(require("path")),l1=globalThis.setImmediate;function I1(){let e=Error.prepareStackTrace,t=[];try{Error.prepareStackTrace=(i,n)=>{let s=n.slice(1);return t=s,s},Error().stack}catch{return t}return Error.prepareStackTrace=e,t}function GI(e){let t=I1();return(n,s={})=>{let{input:o=process.stdin,signal:r}=s,g=new Set,a=new Pb.default;a.pipe(s.output??process.stdout);let l=vb.createInterface({terminal:!0,input:o,output:a});a.mute();let I=new rr(l),{promise:d,resolve:p,reject:c}=BI.withResolver(),m=()=>c(new rI);if(r){let u=()=>c(new oI({cause:r.reason}));if(r.aborted)return u(),Object.assign(d,{cancel:m});r.addEventListener("abort",u),g.add(()=>r.removeEventListener("abort",u))}g.add(Bb((u,A)=>{c(new tr(`User force closed the prompt with ${u} ${A}`))}));let C=()=>c(new tr("User force closed the prompt with SIGINT"));return l.on("SIGINT",C),g.add(()=>l.removeListener("SIGINT",C)),QZ(l,(u)=>{let A=kb.AsyncResource.bind(()=>li.clearAll());l.on("close",A),g.add(()=>l.removeListener("close",A));let b=()=>{let W=()=>I.checkCursorPos();l.input.on("keypress",W),g.add(()=>l.input.removeListener("keypress",W));let h=null;u(()=>{let y=!1;try{let V=e(n,(w)=>{if(y)p(w);else h={value:w}});if(V===void 0){let w=t[1]?.getFileName();if(w&&!w.startsWith("file://"))w=Yb.default.resolve(w);throw Error(`Prompt functions must return a string.
|
|
243
|
+
at ${w}`)}let[B,F]=typeof V==="string"?[V]:V;I.render(B,F),li.run()}catch(V){c(V)}if(y=!0,h!==null){let{value:V}=h;h=null,p(V)}})};if("readableFlowing"in o)l1(b);else b();return Object.assign(d.then((W)=>(li.clearAll(),W),(W)=>{throw li.clearAll(),W}).finally(()=>{g.forEach((W)=>W()),I.done({clearContent:Boolean(s.clearPromptOnDone)}),a.end()}).then(()=>d),{cancel:m})})}}var Nb=require("util");class lt{separator=Nb.styleText("dim",Array.from({length:15}).join(tn.line));type="separator";constructor(e){if(e)this.separator=e}static isSeparator(e){return Boolean(e&&typeof e==="object"&&"type"in e&&e.type==="separator")}}var nn=require("util");var d1={icon:{cursor:tn.pointer},style:{disabled:(e)=>nn.styleText("dim",e),description:(e)=>nn.styleText("cyan",e),keysHelpTip:(e)=>e.map(([t,i])=>`${nn.styleText("bold",t)} ${nn.styleText("dim",i)}`).join(nn.styleText("dim"," \u2022 "))},i18n:{disabledError:"This option is disabled and cannot be selected."},indexMode:"hidden"};function RI(e){return!lt.isSeparator(e)&&!e.disabled}function wI(e){return!lt.isSeparator(e)}function c1(e){return e.map((t)=>{if(lt.isSeparator(t))return t;if(typeof t!=="object"||t===null||!("value"in t)){let s=String(t);return{value:t,name:s,short:s,disabled:!1}}let i=t.name??String(t.value),n={value:t.value,name:i,short:t.short??i,disabled:t.disabled??!1};if(t.description)n.description=t.description;return n})}var Xb=GI((e,t)=>{let{loop:i=!0,pageSize:n=7}=e,s=Cs(d1,e.theme),{keybindings:o}=s,[r,g]=at("idle"),a=II({status:r,theme:s}),l=di(),I=!o.includes("vim"),d=us(()=>c1(e.choices),[e.choices]),p=us(()=>{let w=d.findIndex(wI),T=d.findLastIndex(wI);if(w===-1)throw new cs("[select prompt] No selectable choices. All choices are disabled.");return{first:w,last:T}},[d]),c=us(()=>{if(!("default"in e))return-1;return d.findIndex((w)=>RI(w)&&w.value===e.default)},[e.default,d]),[m,C]=at(c===-1?p.first:c),u=d[m];if(u==null||lt.isSeparator(u))throw Error("Active index does not point to a choice");let[A,b]=at();dI((w,T)=>{if(clearTimeout(l.current),A)b(void 0);if(sI(w))if(u.disabled)b(s.i18n.disabledError);else g("done"),t(u.value);else if(ds(w,o)||er(w,o)){if(T.clearLine(0),i||ds(w,o)&&m!==p.first||er(w,o)&&m!==p.last){let K=ds(w,o)?-1:1,ee=m;do ee=(ee+K+d.length)%d.length;while(!wI(d[ee]));C(ee)}}else if(nI(w)&&!Number.isNaN(Number(T.line))){let K=Number(T.line)-1,ee=-1,Fe=d.findIndex((rn)=>{if(lt.isSeparator(rn))return!1;return ee++,ee===K}),on=d[Fe];if(on!=null&&RI(on))C(Fe);l.current=setTimeout(()=>{T.clearLine(0)},700)}else if(iI(w))T.clearLine(0);else if(I){let K=T.line.toLowerCase(),ee=d.findIndex((Fe)=>{if(lt.isSeparator(Fe)||!RI(Fe))return!1;return Fe.name.toLowerCase().startsWith(K)});if(ee!==-1)C(ee);l.current=setTimeout(()=>{T.clearLine(0)},700)}}),Ii(()=>()=>{clearTimeout(l.current)},[]);let W=s.style.message(e.message,r),h=s.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]),y=0,V=mI({items:d,active:m,renderItem({item:w,isActive:T,index:K}){if(lt.isSeparator(w))return y++,` ${w.separator}`;let ee=T?s.icon.cursor:" ",Fe=s.indexMode==="number"?`${K+1-y}. `:"";if(w.disabled){let rn=typeof w.disabled==="string"?w.disabled:"(disabled)",rW=T?s.icon.cursor:"-";return s.style.disabled(`${rW} ${Fe}${w.name} ${rn}`)}return(T?s.style.highlight:(rn)=>rn)(`${ee} ${Fe}${w.name}`)},pageSize:n,loop:i});if(r==="done")return[a,W,s.style.answer(u.short)].filter(Boolean).join(" ");let{description:B}=u;return`${[[a,W].filter(Boolean).join(" "),V," ",B?s.style.description(B):"",A?s.style.error(A):"",h].filter(Boolean).join(`
|
|
244
|
+
`).trimEnd()}${Rb}`});var C1="Failure details are withheld because this API key has read access only. A key with write access on the project sees them.",u1=async(e)=>{let t=[];for await(let i of e)t.push(i);return t},xb=(e,t)=>{if(t===void 0||t.projectId!==e)return new Map;let i=new Map;for(let[s,o]of Object.entries(t.pipelines)){let r=i.get(o.pipelineId)??[];r.push(s),i.set(o.pipelineId,r)}let n=new Map;for(let[s,o]of i){let[r,...g]=o;if(r!==void 0&&g.length===0)n.set(s,r)}return n},Jb=(e,t)=>{let i=t.get(e.id);return{pipelineId:e.id,name:e.name,...i===void 0?{}:{sourceDirectory:i}}},sn=(e)=>e.sourceDirectory===void 0?`${e.name} (${e.pipelineId})`:`${e.name} (${e.pipelineId}) ${e.sourceDirectory}`,m1=(e)=>e.length===0?"This project has no pipelines.":`Unknown pipeline. This project has: ${e.map(sn).join(", ")}.`;async function Eb(e){return Xb({message:"This project tracks several pipelines. Select one",choices:e})}async function Ub(e){let t=e.limit??20,i=await e.client.pipelines.listPage({projectId:e.projectId,limit:t}),n=xb(e.projectId,e.state),s=i.pipelines.map((r)=>Jb(r,n)).toSorted((r,g)=>{let a=r.name.localeCompare(g.name);return a===0?r.pipelineId.localeCompare(g.pipelineId):a});if(s.length===0)return{outcome:"reported",output:"This project has no pipelines."};let o=s.map((r)=>r.sourceDirectory===void 0?`${r.name} ${r.pipelineId}`:`${r.name} ${r.pipelineId} ${r.sourceDirectory}`);if(i.pagination.hasMore)o.push(`Showing ${s.length} of ${i.pagination.total} pipelines. Raise --limit to see more.`);return{outcome:"reported",output:o.join(`
|
|
245
|
+
`)}}var p1=async(e,t,i)=>{let n=await u1(e.pipelines.listAll({projectId:t})),s=xb(t,i);return n.map((o)=>Jb(o,s)).toSorted((o,r)=>{let g=o.name.localeCompare(r.name);return g===0?o.pipelineId.localeCompare(r.pipelineId):g})},gr=(e,t,i)=>{if(Z(e.length<=1,t),e.length!==1)return;let[n]=e;return Z(n,i),n},Sb=(e,t)=>{let i=m1(t),n=gr(t.filter((l)=>l.pipelineId===e),i,i);if(n!==void 0)return n;let s=t.filter((l)=>l.name===e),o=gr(s,`Multiple pipelines are named ${e}: ${s.map(sn).join(", ")}.`,i);if(o!==void 0)return o;let r=gr(t.filter((l)=>l.sourceDirectory===e),i,i);if(r!==void 0)return r;let g=t.filter((l)=>{if(l.sourceDirectory===void 0)return!1;let I=l.sourceDirectory.split("/");return I[I.length-1]===e}),a=gr(g,`Multiple pipelines match ${e}: ${g.map(sn).join(", ")}.`,i);if(a!==void 0)return a;Z(!1,i)};async function ps(e){let t=await p1(e.client,e.projectId,e.state);if(e.pipeline!==void 0)return Sb(e.pipeline,t);if(Z(t.length>0,"This project has no pipelines."),t.length>1&&e.select!==void 0){let i=await e.select(t.map((n)=>({name:sn(n),value:n.pipelineId})));return Sb(i,t)}if(t.length===1){let[i]=t;Z(i,"This project has no pipelines."),Z(!1,`Pass a pipeline name. This project has: ${sn(i)}.`)}Z(!1,`This project tracks several pipelines, so name one: ${t.map(sn).join(", ")}.`)}var Ob=(e)=>`run ${e.id} is ${e.status}`,Tb=(e)=>{if(e.status==="succeeded")return"succeeded";if(e.status==="failed")return"failed";return"started"};async function zb(e,t){let i=await ps({client:e,...t}),n=await e.runs.start({pipelineId:i.pipelineId});if(t.wait!==!0)return{outcome:"started",output:[`Started ${Ob(n)} for ${i.name}.`,`Follow it with toloka pipeline status ${i.pipelineId}, or re-run with --wait.`].join(`
|
|
246
|
+
`)};try{let s=await e.waitFor({type:"pipelineRun",runId:n.id},{...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs},...t.intervalMs===void 0?{}:{intervalMs:t.intervalMs}}),o=Tb(s);return{outcome:o,output:o==="failed"?[`Run ${s.id} failed.`,`Inspect items with toloka pipeline results ${s.id} --failed.`].join(`
|
|
247
|
+
`):`Run ${s.id} succeeded.`}}catch(s){if(s instanceof te&&s.code==="wait_timeout")return{outcome:"timedOut",output:[`Stopped waiting for run ${n.id}; it has not reached a terminal state yet and may still be running.`,`Check it with toloka pipeline status ${i.pipelineId}.`].join(`
|
|
248
|
+
`)};throw s}}async function jb(e,t){let i=await ps({client:e,...t}),n=await e.runs.listPage({pipelineId:i.pipelineId,limit:t.limit??10});if(n.runs.length===0)return{outcome:"reported",output:`No runs yet for ${i.name}.`};let s=[];for(let o of n.runs){let r=await e.runs.get({runId:o.id});s.push(` ${r.id} ${r.status.padEnd(9)} ${o.createdAt}`)}return{outcome:"reported",output:[`Runs for ${i.name} (${n.pagination.total} total):`,...s].join(`
|
|
249
|
+
`)}}async function Db(e,t){let i=await ps({client:e,...t}),s=(await e.runs.listPage({pipelineId:i.pipelineId,limit:1})).runs[0];if(s===void 0)return{outcome:"reported",output:`No runs yet for ${i.name}.`};let o=await e.runs.get({runId:s.id}),r=t.itemScanLimit??500,g=new Map,a=0;for await(let I of e.runs.listAllItems({runId:o.id}))if(g.set(I.state.status,(g.get(I.state.status)??0)+1),a+=1,a>=r)break;let l=g.size===0?[" no items yet"]:[...g.entries()].toSorted(([I],[d])=>I.localeCompare(d)).map(([I,d])=>` ${I.padEnd(12)} ${d}`);return{outcome:Tb(o),output:[`Latest ${Ob(o)} (started ${s.createdAt}).`,a>=r?`Items (first ${r}):`:"Items:",...l].join(`
|
|
250
|
+
`)}}async function Qb(e,t){let i=await e.runs.cancel({runId:t.runId});return{outcome:"canceled",output:`Requested cancellation of run ${i.id}; it is now ${i.status}.`}}var A1=(e)=>{let t=` ${e.index} ${e.id} ${e.state.status}`;if(e.state.status!=="failed")return t;if(!("error"in e.state))return`${t}
|
|
251
|
+
${C1}`;return e.state.error===null?t:`${t}
|
|
252
|
+
${e.state.error}`};async function _b(e,t){let i=t.limit??20,n=t.itemScanLimit??Math.max(500,i),s=[],o=0;for await(let a of e.runs.listAllItems({runId:t.runId})){if(o+=1,t.failedOnly!==!0||a.state.status==="failed")s.push(a);if(s.length>=i||o>=n)break}if(s.length===0)return{outcome:"reported",output:t.failedOnly===!0&&o>=n?`No failed items in the first ${n} items.`:t.failedOnly===!0?"No failed items.":"No items yet."};return{outcome:"reported",output:[o>=n&&s.length<i?`${t.failedOnly===!0?"Failed items":"Items"} for run ${t.runId} (showing ${s.length} after scanning ${n}, limit ${i}):`:`${t.failedOnly===!0?"Failed items":"Items"} for run ${t.runId} (showing ${s.length}, limit ${i}):`,...s.map(A1)].join(`
|
|
253
|
+
`)}}var Kb=(e)=>{if(typeof e!=="object"||e===null)return!1;if(!("label"in e)||typeof e.label!=="string")return!1;if(!("expectedTotal"in e)||typeof e.expectedTotal!=="string")return!1;if(!("maxTotal"in e)||typeof e.maxTotal!=="string")return!1;if("subLines"in e&&e.subLines!==void 0&&!Array.isArray(e.subLines))return!1;return!0},Z1=(e)=>{let t=[0,0,0];for(let i of e)for(let n=0;n<3;n+=1){let s=i[n];t[n]=Math.max(t[n]??0,s?.length??0)}return e.map((i)=>i.map((n,s)=>s===0?n.padEnd(t[0]??0):n.padStart(t[s]??0)).join(" "))},Lb=(e,t)=>{let n=[[`${" ".repeat(t)}${e.label}`,e.expectedTotal,e.maxTotal]];for(let s of e.subLines??[])if(Kb(s))n.push(...Lb(s,t+1));return n},b1=(e)=>{let t=[],i=[];for(let n of e){if(n.kind==="priced"){t.push([n.nodeNameDisplay,n.expectedTotal,n.maxTotal]);for(let s of n.displayBreakdown)if(Kb(s))t.push(...Lb(s,1));continue}i.push(n.kind==="validation-errors"?` ${n.nodeNameDisplay} skipped (validation errors)`:` ${n.nodeNameDisplay} not billed`)}return{billed:t,unpriced:i}},W1=(e)=>{let t=[["Total",e.expected,e.worstCase]];if(e.bestCase!=null)t.push(["Best case",e.bestCase,""]);if(e.perItemExpected!=null)t.push(["Per item",e.perItemExpected,e.perItemWorstCase??""]);return t},h1=(e,t)=>{let{billed:i,unpriced:n}=b1(e.nodes),s=W1(e.total),o=Z1([["Item","Expected","Maximum"],...i,...s]),r=o.slice(0,1+i.length),g=o.slice(1+i.length),a=[`Cost estimate for ${t} ${e.dataset.itemCount} item${e.dataset.itemCount===1?"":"s"}`,"",...r];if(i.length===0)a.push(" (no billed nodes)");if(a.push("",...g),n.length>0)a.push("","Not billed",...n);if(e.isInternalPricing===!0)a.push("","Internal-team pricing.");return a.push("",e.disclaimer),a.join(`
|
|
254
|
+
`)};async function Mb(e,t){let i=await ps({client:e,...t}),n=await e.pipelines.estimateCost({pipelineId:i.pipelineId,...t.itemLimit===void 0?{}:{itemLimit:t.itemLimit}});return{output:h1(n,i.name)}}var $b=require("crypto"),FI=require("fs"),ar=require("fs/promises"),_e=require("path"),f1=262144,y1=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}),V1=async(e,t)=>{let i=_e.relative(t,e);if(i===""||i===".."||i.startsWith(`..${_e.sep}`)||_e.isAbsolute(i))return;let n=i.split(_e.sep);for(let s=1;s<n.length;s+=1){let o=_e.join(t,...n.slice(0,s)),r=await ar.lstat(o);Z(!r.isSymbolicLink(),`Report file ${e} is inside the symbolic link ${o}; select a path that does not traverse symbolic links.`)}},B1=async(e,t,i)=>{let n=_e.resolve(i,e);await V1(n,t);let s;try{s=await ar.open(n,FI.constants.O_RDONLY|FI.constants.O_NOFOLLOW)}catch(o){throw Z(!(o instanceof Error&&("code"in o)&&o.code==="ELOOP"),`Report file ${n} is a symbolic link; select the file it points to directly.`),o}try{let o=await s.stat();return Z(o.isFile(),`Report file ${n} is not a regular file.`),Z(o.size>0,`Report file ${n} is empty.`),Z(o.size<=f1,`Report file ${n} is ${o.size} bytes; the limit is 256 KiB.`),{handle:s,absolutePath:n,size:o.size}}catch(o){throw await s.close(),o}},G1=async(e,t,i)=>{let n=await B1(e,t,i);try{let s=await n.handle.readFile();Z(s.byteLength===n.size,`${n.absolutePath} changed while it was being read.`);try{return y1.decode(s)}catch{throw Error(`Report file ${n.absolutePath} is not valid UTF-8.`)}}finally{await n.handle.close()}},R1=async(e,t)=>{if(t)return!0;if(e.prompt===void 0)return!1;let i=(await e.prompt("Send this report to Toloka? [y/N] ")).trim().toLowerCase();return i==="y"||i==="yes"};async function qb(e){let{analytics:t,io:i}=e;Z(t.issueReportingEnabled,"Issue reporting is disabled. Re-run with TOLOKA_TELEMETRY=1.");let n=await G1(e.path,e.sourceRoot,e.cwd);if(i.stdout("Issue report preview:"),i.stdout(""),i.stdout(n.replace(/(?![\t\n])(?!\r\n)(?:\p{Cc}|\p{Bidi_Control})/gu,(o)=>`\\u${o.charCodeAt(0).toString(16).padStart(4,"0")}`)),i.stdout(""),i.stdout(`Authored by: ${e.authoredBy}`),i.stdout(`Platform: ${e.platform}`),i.stdout(""),!await R1(i,e.confirm))return i.stderr("Refusing to submit without confirmation in a non-interactive environment. Pass --confirm after reviewing the preview above."),1;let s=$b.randomUUID();return await t.submitIssueReport({reportId:s,reportText:n,authoredBy:e.authoredBy,platform:e.platform}),i.stdout(`Submitted issue report: ${s}`),0}var w1=["Credentials resolve in this order, highest first:"," 1. --api-key / --base-url"," 2. POTATO_API_KEY / POTATO_BASE_URL"," 3. the file written by toloka login",`The platform defaults to ${Mt}.`].join(`
|
|
255
|
+
`),F1=(e)=>{if(e!=="human"&&e!=="agent")throw new ct('Expected "human" or "agent".');return e},Et=(e)=>{let t=Number(e);if(!Number.isInteger(t)||t<=0)throw new ct("Expected a positive integer.");return t},HI=(e)=>{if(e==="failed")return 1;if(e==="timedOut")return 2;return 0},It=async(e,t)=>{if(e.sourceRoot!==void 0)return Zs.resolve(e.sourceRoot);let i=process.cwd(),n=await fm(i);if(n===void 0||n===i)return i;return t.stderr(`Using project root ${n} (found from ${i}).`),n},eW=(e)=>e.sourceRoot===void 0?process.cwd():Zs.resolve(e.sourceRoot),sW=async(e,t)=>{let{found:i,warning:n}=await zn(t.environment,e.apiKey??t.environment.POTATO_API_KEY);if(n!==void 0)t.io.stderr(n);return i?.credentials},As=async(e,t)=>{if(t?.shouldIdentify!==!0)return;try{t.identifyCurrentUser(await e.me())}catch{}},z=async(e,t)=>{let i=await It(e,t.io),n=await Ge(i),s=await sW(e,t),o=ol(e,n,t.environment,s),r=t.injectedClient??Ct({apiKey:o.apiKey,baseUrl:o.baseUrl});return await As(r,t.analytics),{sourceRoot:i,client:r,baseUrl:o.baseUrl,state:n,stored:s,...o.projectId===void 0?{}:{projectId:o.projectId}}},tW=(e,t,i,n)=>xi({flags:e,environment:t.environment,stored:i,...n===void 0?{}:{state:n}});function H1(e){let t=new Ci("toloka"),i={value:0},n=e.runChecks??qa,s=async(C,u=n)=>{let A=new AbortController,b,W=(V)=>{b=V,A.abort()},h=()=>W(130),y=()=>W(143);process.on("SIGINT",h),process.on("SIGTERM",y);try{return{result:await u({...C,signal:A.signal}),...b===void 0?{}:{interruptedExitCode:b}}}finally{process.off("SIGINT",h),process.off("SIGTERM",y)}},o=!1;t.description("Preview. Build and operate Toloka pipeline projects from TypeScript source. The public API may change.").version(De,"-v, --version","output the current version").option("--source-root <directory>","project root; discovered from the working directory when omitted").option("--api-key <key>","API key for this command only").option("--base-url <url>","platform base URL for this command only").option("--project-id <id>","target project; overrides toloka.json").addHelpText("after",`
|
|
256
|
+
${w1}`).configureOutput({writeOut:(C)=>e.io.stdout(C.replace(/\n$/u,"")),writeErr:(C)=>e.io.stderr(C.replace(/\n$/u,""))}).exitOverride();let r=()=>t.opts();t.hook("postAction",async(C,u)=>{if(o)return;let A=[];for(let h=u;h!==null;h=h.parent)A.push(h.name());if(A.includes("init")||A.includes("help")||A.includes("report")||A.includes("url")||A.includes("version"))return;let b=await It(r(),e.io),W=await sZ(b).catch(()=>{return});if(W===void 0)return;o=!0,e.io.stderr(W)}),t.command("version").description("print the current CLI version").action(()=>e.io.stdout(De)),t.command("login").description("store an API key for this machine after verifying it").action(async()=>{let C=await Mm({...r().apiKey===void 0?{}:{apiKey:r().apiKey},...r().baseUrl===void 0?{}:{baseUrl:r().baseUrl},...e.io.prompt===void 0?{}:{prompt:e.io.prompt},write:e.io.stdout,environment:e.environment});e.io.stdout(C.output);try{let u=await Jm(e.environment);if(u===void 0)return;let A=e.injectedClient??Ct(u);await As(A,e.analytics)}catch{}}),t.command("logout").description("remove stored credentials from this machine").action(async()=>{let C=await $m(e.environment);e.io.stdout(C.output)}),t.command("auth-status").alias("whoami").description("show which platform and key the CLI would use").option("--show-token","print the API key instead of masking it",!1).action(async(C)=>{let u=r(),A=await zn(e.environment,u.apiKey??e.environment.POTATO_API_KEY),b=A.found?.credentials,W=await It(u,e.io),h=await Ge(W),y=tW(u,e,b,h),V=e.injectedClient,B=await ep({environment:e.environment,showToken:C.showToken,credentialLookup:A,...u.apiKey===void 0?{}:{flagApiKey:u.apiKey},...u.baseUrl===void 0?{}:{flagBaseUrl:u.baseUrl},...V===void 0?{}:{probe:()=>V},...y===void 0?{}:{project:y}});if(e.io.stdout(B.output),!B.authenticated){i.value=1;return}try{let F=ol(u,h,e.environment,b),w=e.injectedClient??Ct({apiKey:F.apiKey,baseUrl:F.baseUrl});await As(w,e.analytics)}catch{}});let g=t.command("project").description("select and manage the current platform project");g.command("list").option("--limit <n>","maximum projects to list",Et).description("list remote projects this key can see").action(async(C)=>{let u=r(),{client:A,stored:b,state:W}=await z(u,e),h=tW(u,e,b,W);await zm({client:A,io:e.io,...h===void 0?{}:{context:h},...C.limit===void 0?{}:{limit:C.limit}})}),g.command("add").argument("[alias]","local name for this project").argument("[projectId]","platform project id").description("register a live project and select it").action(async(C,u)=>{let A=r(),b=await St(e.environment),W=e.injectedClient??Ct(b.credentials);await jm({environment:e.environment,flags:A,client:W,io:e.io,afterPreflight:async()=>As(W,e.analytics),...C===void 0?{}:{alias:C},...u===void 0?{}:{projectId:u}})}),g.command("switch").argument("<alias>","local project alias").description("select a registered project").action(async(C)=>{await Dm({environment:e.environment,flags:r(),alias:C,io:e.io})}),g.command("current").description("show the project this command would use").action(async()=>{let C=r(),u=await sW(C,e),A=await It(C,e.io),b=await Ge(A);if(_m({flags:C,environment:e.environment,stored:u,...b===void 0?{}:{state:b},io:e.io}).project===void 0)i.value=1}),g.command("url").description("print the current project URL").action(async()=>{let{baseUrl:C,client:u,projectId:A}=await z(r(),e);Z(A,M);let b=await u.projects.get({projectId:A}),W=new URL(`/teams/${encodeURIComponent(b.teamId)}/projects/${encodeURIComponent(b.id)}`,C);e.io.stdout(W.href)}),g.command("remove").argument("<alias>","local project alias").description("forget a local project alias").action(async(C)=>{await Qm({environment:e.environment,flags:r(),alias:C,io:e.io})}),g.command("create").argument("[alias]","local name for the new project").option("--name <name>","platform project name").option("--team-id <id>","team that owns the project").description("create a live project and select it").action(async(C,u)=>{let A=r(),b=await St(e.environment),W=e.injectedClient??Ct(b.credentials),h=await It(A,e.io);await Km({environment:e.environment,flags:A,client:W,io:e.io,sourceRoot:h,afterPreflight:async()=>As(W,e.analytics),...C===void 0?{}:{alias:C},...u.name===void 0?{}:{name:u.name},...u.teamId===void 0?{}:{teamId:u.teamId}})}),t.command("init").description("initialize this project directory and install the agent bootstrap").action(async()=>{let C=r(),u=eW(C),A=await Ge(u),b=xi({flags:C,environment:e.environment,...A===void 0?{}:{state:A}}),W=await nZ(u,b===void 0?{}:{projectId:b.id});if(e.io.stdout(W.output),W.warning!==void 0)e.io.stderr(W.warning)}),t.command("import").argument("[projectId]","existing project to write into source; defaults to the selected project").option("-f, --force","replace an existing pipelines/ directory",!1).description("generate TypeScript source from a live project").action(async(C,u)=>{let{sourceRoot:A,client:b,projectId:W}=await z(r(),e),h=C??W;Z(h,M);let y=await fZ(b,{sourceRoot:A,projectId:h,...u?.force===!0?{force:!0}:{}});e.io.stdout(y.output)}),t.command("plan").description("show what apply would change").action(async()=>{let{sourceRoot:C,client:u,projectId:A}=await z(r(),e),b=await yZ(u,{sourceRoot:C,...A===void 0?{}:{projectId:A}});e.io.stdout(b.output)}),t.command("validate").description("run platform spec validation and report matching checks").action(async()=>{let{sourceRoot:C,client:u,projectId:A}=await z(r(),e),b=await GZ(u,{sourceRoot:C,...A===void 0?{}:{projectId:A}});if(e.io.stdout(b.output),!b.valid)i.value=1}),t.command("check").argument("[pipeline]","pipeline source directory or name").option("--node <node>","check one code or human-work node by name or id").option("--json","print the structured check report",!1).option("--watch","rerun checks when project files change",!1).description("run the complete local source, type, and test gate").action(async(C,u)=>{let A=await It(r(),e.io),b={environment:e.environment,sourceRoot:A,...C===void 0?{}:{pipeline:C},...u.node===void 0?{}:{node:u.node},...u.json?{json:!0}:{}},W=async(B)=>{let F=e.environment[On];if(F===void 0)e.io.stdout(B);else await iW.writeFile(F,B,"utf8")},h=e.runChecks===void 0&&e.environment[On]===void 0?el:n;if(u.watch){let B=new AbortController,F=()=>B.abort();process.on("SIGINT",F),process.on("SIGTERM",F);try{await Pm(b,async(w)=>{await W(w.output),i.value=w.exitCode},void 0,B.signal)}finally{process.off("SIGINT",F),process.off("SIGTERM",F)}return}let{result:y,interruptedExitCode:V}=await s(b,h);await W(y.output),i.value=V??y.exitCode}),t.command("apply").description("check source, then make the platform match it").action(async()=>{let C=await It(r(),e.io),{result:u,interruptedExitCode:A}=await s({sourceRoot:C,environment:e.environment});if(e.io.stdout(u.output),A!==void 0){i.value=A;return}if(u.exitCode!==0){i.value=u.exitCode;return}Z(u.source,"Passing checks must return project source");let{client:b,projectId:W}=await z(r(),e),h=await BZ(b,{sourceRoot:C,source:u.source,...W===void 0?{}:{projectId:W}});e.io.stdout(h.output)}),t.command("secret").description("manage project secrets").command("set").argument("<name>","secret name referenced by a code node").option("--from-env <variable>","read the value from this environment variable instead of stdin").description("set a secret value without writing it to disk").action(async(C,u)=>{let{client:A,projectId:b}=await z(r(),e);Z(b,M);let W=u.fromEnv===void 0?(await e.io.readStdin()).replace(/\r?\n$/u,""):e.environment[u.fromEnv];Z(W!==void 0,`Missing secret value. Set ${u.fromEnv??"the named environment variable"} or pipe it to stdin.`);try{let h=await XZ(A,{projectId:b,name:C,value:W});e.io.stdout(h.output)}catch{e.io.stderr(`Failed to set secret ${C}.`),i.value=1}});let l=t.command("base-model").description("inspect the global base model catalog");l.command("list").option("--json","print JSON",!1).description("list base models").action(async(C)=>{let{client:u}=await z(r(),e);await xZ(u,{json:C.json},e.io)}),l.command("get").argument("<id>","base model ID").option("--json","print JSON",!1).description("show one base model").action(async(C,u)=>{let{client:A}=await z(r(),e);await JZ(A,{id:eI(C),json:u.json},e.io)});let I=t.command("model").description("manage project Models and immutable versions");I.command("list").option("--json","print JSON",!1).description("list Models owned by the selected project").action(async(C)=>{let{client:u,projectId:A}=await z(r(),e);Z(A,M),await EZ(u,{projectId:A,json:C.json},e.io)}),I.command("get").argument("<name-or-id>","project Model name or ID").option("--json","print JSON",!1).description("show one project Model").action(async(C,u)=>{let{client:A,projectId:b}=await z(r(),e);Z(b,M),await UZ(A,{projectId:b,nameOrId:C,json:u.json},e.io)}),I.command("versions").argument("<name-or-id>","project Model name or ID").option("--json","print JSON",!1).description("list immutable versions of a model").action(async(C,u)=>{let{client:A,projectId:b}=await z(r(),e);Z(b,M),await OZ(A,{projectId:b,nameOrId:C,json:u.json},e.io)}),I.command("create").argument("<name>","new Model name").requiredOption("--base <id>","base model ID").option("--description <text>","Model description").option("--json","print JSON",!1).description("create project Model metadata without a Model Version").action(async(C,u)=>{let{client:A,projectId:b}=await z(r(),e);Z(b,M),await TZ(A,{projectId:b,name:C,description:u.description,baseModelId:eI(u.base),json:u.json},e.io)}),I.command("archive").option("--json","print JSON",!1).argument("<name-or-id>","project Model name or ID").description("archive a project Model").action(async(C,u)=>{let{client:A,projectId:b}=await z(r(),e);Z(b,M),await zZ(A,{projectId:b,nameOrId:C,json:u.json},e.io)});let d=t.command("dataset").description("inspect and move dataset catalog and rows");d.command("list").description("list live datasets in the selected project").action(async()=>{let{client:C,projectId:u}=await z(r(),e);Z(u,M);let A=await YZ(C,{projectId:u});e.io.stdout(A.output)}),d.command("fields").argument("<name>","dataset name or id").description("print field declarations inferred from uploaded rows").action(async(C)=>{let{sourceRoot:u,client:A,projectId:b}=await z(r(),e),W=await PZ(A,{sourceRoot:u,datasetName:C,...b===void 0?{}:{projectId:b}});e.io.stdout(W.output)}),d.command("load").argument("<name>","dataset name or id").requiredOption("--out <file>","JSONL file to write").option("--limit <n>","how many rows to keep after download",Et).option("--timeout <ms>","how long to wait for the export",Et).description("download live dataset rows into a JSONL file").action(async(C,u)=>{let{sourceRoot:A,client:b,projectId:W}=await z(r(),e),h=await NZ(b,{sourceRoot:A,datasetName:C,outPath:Zs.resolve(u.out),...W===void 0?{}:{projectId:W},...u.limit===void 0?{}:{limit:u.limit},...u.timeout===void 0?{}:{timeoutMs:u.timeout}});e.io.stdout(h.output)}),d.command("upload").argument("<name>","dataset name or id").argument("<file>","JSON array, JSONL, or CSV file").description("append rows to a dataset").action(async(C,u)=>{let{sourceRoot:A,client:b,projectId:W}=await z(r(),e),h=await kZ(b,{sourceRoot:A,datasetName:C,filePath:Zs.resolve(u),...W===void 0?{}:{projectId:W}});if(e.io.stdout(h.output),h.warning!==void 0)e.io.stderr(h.warning)});let p="pipeline name or id; required unless a TTY picker can choose among several",c=t.command("pipeline").description("operate on a live pipeline in the selected project");c.command("list").option("--limit <n>","maximum pipelines to list",Et).description("list live pipelines in the selected project").action(async(C)=>{let{client:u,projectId:A,state:b}=await z(r(),e);Z(A,M);let W=await Ub({client:u,projectId:A,state:b,...C.limit===void 0?{}:{limit:C.limit}});e.io.stdout(W.output)}),c.command("run").argument("[name]",p).option("--wait","wait for the run to reach a terminal state",!1).option("--timeout <ms>","how long to wait",Et).description("start a run on a deployed pipeline").action(async(C,u)=>{let{client:A,state:b,projectId:W}=await z(r(),e);Z(W,M);let h=await zb(A,{projectId:W,state:b,...C===void 0?{}:{pipeline:C},wait:u.wait,...u.timeout===void 0?{}:{timeoutMs:u.timeout},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(h.output),i.value=HI(h.outcome)}),c.command("status").argument("[name]",p).description("report the latest run's state and item counts").action(async(C)=>{let{client:u,state:A,projectId:b}=await z(r(),e);Z(b,M);let W=await Db(u,{projectId:b,state:A,...C===void 0?{}:{pipeline:C},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(W.output),i.value=HI(W.outcome)}),c.command("runs").argument("[name]",p).option("--limit <n>","how many runs to list",Et).description("list recent runs").action(async(C,u)=>{let{client:A,state:b,projectId:W}=await z(r(),e);Z(W,M);let h=await jb(A,{projectId:W,state:b,...C===void 0?{}:{pipeline:C},...u.limit===void 0?{}:{limit:u.limit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(h.output)}),c.command("cost").argument("[name]",p).option("--item-limit <n>","cap how many items to price",Et).description("forecast what a run of this pipeline would bill").action(async(C,u)=>{let{client:A,state:b,projectId:W}=await z(r(),e);Z(W,M);let h=await Mb(A,{projectId:W,state:b,...C===void 0?{}:{pipeline:C},...u.itemLimit===void 0?{}:{itemLimit:u.itemLimit},...e.io.select===void 0?{}:{select:e.io.select}});e.io.stdout(h.output)}),c.command("cancel").argument("<runId>","run to cancel").description("request cancellation of a run").action(async(C)=>{let{client:u}=await z(r(),e),A=await Qb(u,{runId:C});e.io.stdout(A.output)}),c.command("results").argument("<runId>","run to read").option("--limit <n>","how many items to scan",Et).option("--failed","only report failed items",!1).description("report a run's items").action(async(C,u)=>{let{client:A}=await z(r(),e),b=await _b(A,{runId:C,failedOnly:u.failed,...u.limit===void 0?{}:{limit:u.limit}});e.io.stdout(b.output),i.value=HI(b.outcome)}),t.command("status").description("report project health: live counts and pending source changes").action(async()=>{let{sourceRoot:C,client:u,projectId:A}=await z(r(),e);Z(A,M);let b=await VZ(u,{sourceRoot:C,projectId:A});e.io.stdout(b.output)}),t.command("report").argument("<markdownPath>","path to a UTF-8 Markdown report").option("--authored-by <who>","human or agent",F1,"human").option("--confirm","confirm submission in a non-interactive environment",!1).description("preview and send an issue report to Toloka through PostHog").action(async(C,u)=>{Z(e.analytics,"Issue reporting requires CLI analytics.");let A=eW(r()),b=r().baseUrl??e.environment.POTATO_BASE_URL??bt(e.environment)??Mt;i.value=await qb({path:C,authoredBy:u.authoredBy,platform:new URL(b).origin,confirm:u.confirm,sourceRoot:A,cwd:process.cwd(),analytics:e.analytics,io:e.io})});let m=t.command("skill").description("discover bundled agent skills and install them into .agents/skills");return m.command("list").option("--json","print Skill Descriptors with their status as JSON",!1).description("list bundled skills as not-installed, current, or stale").action(async(C)=>{let u=await It(r(),e.io);await _A({sourceRoot:u,json:C.json,io:e.io})}),m.command("search").argument("<query>","text matched case-insensitively against id, name, description, and tags").option("--json","print matching Skill Descriptors with their status as JSON",!1).description("find bundled skills for a task").action(async(C,u)=>{let A=await It(r(),e.io);await KA({sourceRoot:A,query:C,json:u.json,io:e.io})}),m.command("install").argument("<skillId>","skill id from toloka skill list").option("-f, --force","replace an existing .agents/skills/<skillId> directory",!1).description("copy one bundled skill into .agents/skills/<skillId>").action(async(C,u)=>{let A=await It(r(),e.io);await LA({sourceRoot:A,skillId:C,force:u.force,io:e.io})}),{program:t,exitCode:i}}var v1=async()=>{process.stdin.setEncoding("utf8");let e=[];for await(let t of process.stdin)e.push(String(t));return e.join("")},k1=async(e)=>{process.stdout.write(e);let t=process.stdin.isRaw;process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.setEncoding("utf8");let{promise:i,resolve:n,reject:s}=Promise.withResolvers(),o="",r=()=>{process.stdin.off("data",I),process.stdin.off("end",a),process.stdin.off("error",l),process.stdin.setRawMode(t),process.stdin.pause()},g=()=>{r(),process.stdout.write(`
|
|
257
|
+
`)},a=()=>{g(),s(Error("Standard input closed before an API key was entered."))},l=(d)=>{g(),s(d)},I=(d)=>{for(let p of d){if(p==="\r"||p===`
|
|
258
|
+
`){g(),n(o);return}if(p==="\x03"||p==="\x04"){g(),s(Error(p==="\x03"?"Canceled.":"Standard input closed before an API key was entered."));return}if(p==="\x7F"||p==="\b"){if(o.length>0)o=o.slice(0,-1),process.stdout.write("\b \b");continue}o+=p,process.stdout.write("*")}};process.stdin.on("data",I),process.stdin.once("end",a),process.stdin.once("error",l);try{return await i}finally{r()}},P1=async(e,t={})=>{if(t.mask===!0)return k1(e);let i=nW.createInterface({input:process.stdin,output:process.stdout,terminal:!0});try{return await i.question(e)}finally{i.close()}},Y1=()=>({stdout:(e)=>console.log(e),stderr:(e)=>console.error(e),readStdin:v1,...process.stdin.isTTY?{prompt:P1,select:Eb}:{}}),N1=async(e,t,i,n)=>{try{await e.parseAsync([...i],{from:"user"});let s=t.value;return{code:s,outcome:s===0?"succeeded":"failed"}}catch(s){if(s instanceof dt){let o=s.exitCode===0?0:1;return{code:o,outcome:o===0?"succeeded":"usage_error",error:s}}return n.stderr(rs(s)),{code:1,outcome:"failed",error:s}}};async function oW(e,t=process.env,i=Y1(),n,s,o){let r=t[On]===void 0?s??gZ({environment:t}):void 0,{program:g,exitCode:a}=H1({environment:t,io:i,...r===void 0?{}:{analytics:r},...n===void 0?{}:{injectedClient:n},...o===void 0?{}:{runChecks:o}}),l=Date.now(),I=await N1(g,a,e,i);if(r!==void 0)try{r.captureCommand({command:rZ(e),durationMs:Date.now()-l,exitCode:I.code,outcome:I.outcome,...I.error===void 0?{}:{error:I.error}}),await r.shutdown()}catch{}return I.code}oW(process.argv.slice(2)).then((e)=>{process.exitCode=e},(e)=>{console.error(e),process.exitCode=1});})
|