halfcode-compiler.xnl 0.2.5 → 0.2.6

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.
@@ -1,2 +1,2 @@
1
- import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-BxwHmx6r.js";
1
+ import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-t2lJrIJe.js";
2
2
  export { ObjectOperationContractError, applicationAssemblyPackage, assertExecuteObjectOperationRequest, assertObjectOperationCall, assertObjectOperationCatalog, assertObjectOperationDefinition, loadApplicationAssembly, resolveApplicationAssembly, resourceRefToFqn };
@@ -167,7 +167,7 @@ interface ResourceRecord extends ResourceDescriptor {
167
167
  sourceShape: SourceShape;
168
168
  logicalPath: string;
169
169
  documentUri: string;
170
- format: "xnl";
170
+ format: "xnl" | "markdown";
171
171
  node: ResourceNode;
172
172
  }
173
173
  interface ResourceKindContract {
@@ -1,4 +1,4 @@
1
- import { a as ResourceDescriptor } from "./index-DihSfO7X.js";
1
+ import { a as ResourceDescriptor } from "./index-CEJBgfBZ.js";
2
2
  //#region ../resource-projection/src/index.d.ts
3
3
  interface ResourceRegistry {
4
4
  readonly byKind: ReadonlyMap<string, readonly ResourceDescriptor[]>;
@@ -1,5 +1,5 @@
1
1
  import { t as ApplicationAssembly } from "./index-Cqh9pEBa.js";
2
- import { t as ResourceRegistry } from "./index-DjvNDidT.js";
2
+ import { t as ResourceRegistry } from "./index-DkqggaxV.js";
3
3
  //#region ../compiler-skill/src/index.d.ts
4
4
  interface SkillDescriptor {
5
5
  name: string;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { A as ObjectTargets, B as applicationAssemblyPackage, C as ObjectOperationDefinition, D as ObjectOperationTargetDeclaration, E as ObjectOperationOwnerKind, F as ResourceSource, G as loadApplicationAssembly, H as assertObjectOperationCall, I as SkillCapsuleDependency, K as resolveApplicationAssembly, L as SkillCapsuleResource, M as ResolveApplicationAssemblyOptions, N as ResolvedAssemblyPortBinding, O as ObjectTargetKindDefinition, P as ResourceInclude, R as TextMaterial, S as ObjectOperationContractError, T as ObjectOperationHandler, U as assertObjectOperationCatalog, V as assertExecuteObjectOperationRequest, W as assertObjectOperationDefinition, _ as ObjectInvocationMode, a as AssemblyResource, b as ObjectOperationCatalog, c as BusinessObjectSopResource, d as ExecuteObjectOperationRequest, f as JsonObject, g as ObjectInvocation, h as LoadApplicationAssemblyOptions, i as AssemblyPortBinding, j as PageObjectResource, k as ObjectTargetRef, l as CodeBinding, m as JsonValue, n as ApplicationScope, o as AuthoringModuleDescriptor, p as JsonPrimitive, q as resourceRefToFqn, r as AssemblyPort, s as BusinessObjectResource, t as ApplicationAssembly, u as ContractedCallableResource, v as ObjectOperationBehavior, w as ObjectOperationEffect, x as ObjectOperationConfig, y as ObjectOperationCall, z as TextResource } from "./index-Cqh9pEBa.js";
2
- import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-DihSfO7X.js";
3
- import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-UAvFx3m-.js";
4
- import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-D7UtYNm7.js";
2
+ import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-CEJBgfBZ.js";
3
+ import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-zEONBZ_o.js";
4
+ import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-X6R_4lMW.js";
5
5
  //#region src/bundled-system-skills.d.ts
6
6
  declare function loadHalfcodeResourceDslSystemSkillModule(): AuthoringModuleDescriptor;
7
7
  declare function loadHalfcodeResourceDslSystemSkillPlan(): Promise<SkillCapsuleDistributionPlan>;
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, l as loadCodePackageModule, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError } from "./src-BGFskWEk.js";
2
- import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-BxwHmx6r.js";
1
+ import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, l as loadCodePackageModule, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError } from "./src-DvYk6l4v.js";
2
+ import { a as assertObjectOperationCatalog, c as resolveApplicationAssembly, i as assertObjectOperationCall, l as resourceRefToFqn, n as applicationAssemblyPackage, o as assertObjectOperationDefinition, r as assertExecuteObjectOperationRequest, s as loadApplicationAssembly, t as ObjectOperationContractError } from "./src-t2lJrIJe.js";
3
3
  import "./application-assembly.js";
4
4
  import { composeLayeredResourceRegistry, resolveEffectiveResourceContentIdentities } from "./resource-core.js";
5
- import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-BJ5cQQ7P.js";
5
+ import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-m2ZrS5dQ.js";
6
6
  import { fileURLToPath } from "node:url";
7
7
  //#region src/bundled-system-skills.ts
8
8
  function loadHalfcodeResourceDslSystemSkillModule() {
@@ -1,4 +1,4 @@
1
- import { a as ResourceDescriptor, c as ResourceKindContract } from "./index-DihSfO7X.js";
1
+ import { a as ResourceDescriptor, c as ResourceKindContract } from "./index-CEJBgfBZ.js";
2
2
  //#region ../kind-definition/src/index.d.ts
3
3
  interface KindDefinition extends ResourceDescriptor, ResourceKindContract {
4
4
  kind: "KindDefinition";
@@ -1,4 +1,4 @@
1
- import { G as EffectiveResourceRegistry, L as ResourceDigestContribution, P as ResourceContentIdentity, n as LoadedResourceTree, o as ResourceDiagnostic } from "./index-DihSfO7X.js";
1
+ import { G as EffectiveResourceRegistry, L as ResourceDigestContribution, P as ResourceContentIdentity, n as LoadedResourceTree, o as ResourceDiagnostic } from "./index-CEJBgfBZ.js";
2
2
  //#region ../resource-core/src/composition-error.d.ts
3
3
  declare class ResourceCompositionError extends Error {
4
4
  readonly diagnostics: readonly ResourceDiagnostic[];
@@ -1,3 +1,3 @@
1
- import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-DihSfO7X.js";
2
- import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-UAvFx3m-.js";
1
+ import { A as admitCodePackages, B as createResourceContentIdentity, C as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, D as LoadCodePackageModuleInput, E as CodePackageLoadError, F as ResourceDependencyEdge, G as EffectiveResourceRegistry, H as ComposeLayeredResourceRegistryInput, I as ResourceDependencySnapshot, J as ResourceOrigin, K as ResourceLayerDescriptor, L as ResourceDigestContribution, M as BuildResourceDependencySnapshotInput, N as CreateResourceContentIdentityInput, O as LoadedCodePackageModule, P as ResourceContentIdentity, Q as Sha256Digest, R as SnapshotResource, S as validateResourceTree, T as CodePackageExportContract, U as EffectiveKindDefinition, V as sha256Digest, W as EffectiveResourceEntry, X as ResourceTombstoneOrigin, Y as ResourceTombstone, Z as composeLayeredResourceRegistry, _ as ResourceValue, a as ResourceDescriptor, b as SourceShape, c as ResourceKindContract, d as ResourceRecord, f as ResourceRegistry, g as ResourceValidationError, h as ResourceTreeBuildResult, i as RegisteredKindDefinition, j as loadCodePackageModule, k as admitCodePackageExports, l as ResourceMetadata, m as ResourceTree, n as LoadedResourceTree, o as ResourceDiagnostic, p as ResourceScalar, q as ResourceLayerInput, r as LoadedResourceTreeBuildResult, s as ResourceIdentity, t as LoadResourceTreeOptions, u as ResourceNode, v as ResourceValueList, w as CodePackageBinding, x as loadResourceTree, y as ResourceValueMap, z as buildResourceDependencySnapshot } from "./index-CEJBgfBZ.js";
2
+ import { i as ResourceCompositionError, n as ResourceLayerContentIdentityInput, r as resolveEffectiveResourceContentIdentities, t as ResolveEffectiveResourceContentIdentitiesInput } from "./resource-core-zEONBZ_o.js";
3
3
  export { BuildResourceDependencySnapshotInput, CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, type CodePackageBinding, type CodePackageExportContract, CodePackageLoadError, ComposeLayeredResourceRegistryInput, CreateResourceContentIdentityInput, EffectiveKindDefinition, EffectiveResourceEntry, EffectiveResourceRegistry, type LoadCodePackageModuleInput, LoadResourceTreeOptions, type LoadedCodePackageModule, LoadedResourceTree, LoadedResourceTreeBuildResult, RegisteredKindDefinition, ResolveEffectiveResourceContentIdentitiesInput, ResourceCompositionError, ResourceContentIdentity, ResourceDependencyEdge, ResourceDependencySnapshot, ResourceDescriptor, ResourceDiagnostic, ResourceDigestContribution, ResourceIdentity, ResourceKindContract, ResourceLayerContentIdentityInput, ResourceLayerDescriptor, ResourceLayerInput, ResourceMetadata, ResourceNode, ResourceOrigin, ResourceRecord, ResourceRegistry, ResourceScalar, ResourceTombstone, ResourceTombstoneOrigin, ResourceTree, ResourceTreeBuildResult, ResourceValidationError, ResourceValue, ResourceValueList, ResourceValueMap, type Sha256Digest, SnapshotResource, SourceShape, admitCodePackageExports, admitCodePackages, buildResourceDependencySnapshot, composeLayeredResourceRegistry, createResourceContentIdentity, loadCodePackageModule, loadResourceTree, resolveEffectiveResourceContentIdentities, sha256Digest, validateResourceTree };
@@ -1,4 +1,4 @@
1
- import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, g as markEffectiveRegistryAuthentic, h as isEffectiveRegistryAuthentic, i as readonlyMap, l as loadCodePackageModule, m as effectiveRegistryLayerBindings, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError, u as isLoadedResourceTreeAuthentic, v as compareCodeUnits, y as digestCanonical } from "./src-BGFskWEk.js";
1
+ import { _ as ResourceCompositionError, a as CODE_PACKAGE_ENTRY_CONTRIBUTION_KEY, c as admitCodePackages, d as buildResourceDependencySnapshot, f as createResourceContentIdentity, g as markEffectiveRegistryAuthentic, h as isEffectiveRegistryAuthentic, i as readonlyMap, l as loadCodePackageModule, m as effectiveRegistryLayerBindings, n as loadResourceTree, o as CodePackageLoadError, p as sha256Digest, r as validateResourceTree, s as admitCodePackageExports, t as ResourceValidationError, u as isLoadedResourceTreeAuthentic, v as compareCodeUnits, y as digestCanonical } from "./src-DvYk6l4v.js";
2
2
  //#region ../resource-core/src/layered-registry.ts
3
3
  function composeLayeredResourceRegistry(input) {
4
4
  const diagnostics = [];
@@ -1,2 +1,2 @@
1
- import { n as resourceProjectionPackage, t as ResourceRegistry } from "./index-DjvNDidT.js";
1
+ import { n as resourceProjectionPackage, t as ResourceRegistry } from "./index-DkqggaxV.js";
2
2
  export { ResourceRegistry, resourceProjectionPackage };
@@ -1,3 +1,3 @@
1
1
  import { I as SkillCapsuleDependency } from "./index-Cqh9pEBa.js";
2
- import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-D7UtYNm7.js";
2
+ import { S as skillCapsuleDistributionProjection, _ as applySkillCapsuleDistributionPlan, a as PlannedSkillCapsule, b as compilerSkillPackage, c as SkillCapsuleContentDigest, d as SkillCapsuleDistributionReceipt, f as SkillCapsuleIdentity, g as SkillReference, h as SkillDescriptor, i as PlanSkillCapsuleDistributionInput, l as SkillCapsuleDistributionError, m as SkillCapsuleProvenanceManifest, n as CompileResourceSkillCapsuleInput, o as PlannedSkillFile, p as SkillCapsulePlan, r as CompileSkillCapsuleInput, s as SkillCapsuleApplyStep, t as ApplySkillCapsuleDistributionOptions, u as SkillCapsuleDistributionPlan, v as compileResourceSkillCapsule, x as planSkillCapsuleDistribution, y as compileSkillCapsule } from "./index-X6R_4lMW.js";
3
3
  export { ApplySkillCapsuleDistributionOptions, CompileResourceSkillCapsuleInput, CompileSkillCapsuleInput, PlanSkillCapsuleDistributionInput, PlannedSkillCapsule, PlannedSkillFile, SkillCapsuleApplyStep, SkillCapsuleContentDigest, type SkillCapsuleDependency, SkillCapsuleDistributionError, SkillCapsuleDistributionPlan, SkillCapsuleDistributionReceipt, SkillCapsuleIdentity, SkillCapsulePlan, SkillCapsuleProvenanceManifest, SkillDescriptor, SkillReference, applySkillCapsuleDistributionPlan, compileResourceSkillCapsule, compileSkillCapsule, compilerSkillPackage, planSkillCapsuleDistribution, skillCapsuleDistributionProjection };
@@ -1,2 +1,2 @@
1
- import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-BJ5cQQ7P.js";
1
+ import { a as compilerSkillPackage, i as compileSkillCapsule, n as applySkillCapsuleDistributionPlan, o as planSkillCapsuleDistribution, r as compileResourceSkillCapsule, s as skillCapsuleDistributionProjection, t as SkillCapsuleDistributionError } from "./src-m2ZrS5dQ.js";
2
2
  export { SkillCapsuleDistributionError, applySkillCapsuleDistributionPlan, compileResourceSkillCapsule, compileSkillCapsule, compilerSkillPackage, planSkillCapsuleDistribution, skillCapsuleDistributionProjection };
@@ -1,6 +1,7 @@
1
1
  import { n as wordToString, t as parseXnl } from "./dist-Bkv7YeVi.js";
2
2
  import { mkdtemp, readFile, readdir, realpath, rm, stat, writeFile } from "node:fs/promises";
3
3
  import { dirname, extname, isAbsolute, join, posix, relative, resolve, sep } from "node:path";
4
+ import { parse } from "yaml";
4
5
  import { createHash } from "node:crypto";
5
6
  import { tmpdir } from "node:os";
6
7
  import { pathToFileURL } from "node:url";
@@ -417,6 +418,12 @@ function normalizeCodePackageBinding(record) {
417
418
  diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_SHAPE_INVALID", record.documentUri, `Resource '${record.resourceId}' does not use the code-package source shape.`));
418
419
  return { diagnostics };
419
420
  }
421
+ const declaredEntry = stringValue(record.node.properties.entry);
422
+ const declaredRuntime = stringValue(record.node.properties.runtime);
423
+ const declaredModuleUri = declaredEntry ? normalizeModuleUri(`vfs://./${declaredEntry}`) : void 0;
424
+ if (!declaredEntry) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_ENTRY_DECLARATION_MISSING", record.documentUri, `CodePackage resource '${record.resourceId}' requires a manifest entry.`));
425
+ else if (!declaredModuleUri) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_ENTRY_DECLARATION_INVALID", record.documentUri, `CodePackage resource '${record.resourceId}' has an invalid manifest entry.`));
426
+ if (!declaredRuntime) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_RUNTIME_MISSING", record.documentUri, `CodePackage resource '${record.resourceId}' requires a manifest runtime.`));
420
427
  const node = record.node.subdomains.CodeBinding;
421
428
  if (!node || node.tag !== "CodeBinding") {
422
429
  diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_BINDING_MISSING", record.documentUri, `CodePackage resource '${record.resourceId}' requires one CodeBinding.`));
@@ -429,6 +436,7 @@ function normalizeCodePackageBinding(record) {
429
436
  const rawExport = node.properties.export;
430
437
  const exportName = stringValue(rawExport);
431
438
  if (rawExport !== void 0 && (!exportName || !/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(exportName))) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_EXPORT_INVALID", record.documentUri, `CodePackage resource '${record.resourceId}' has an invalid named export binding.`));
439
+ if (moduleUri && declaredModuleUri && moduleUri !== declaredModuleUri) diagnostics.push(diagnostic("RESOURCE_CODE_PACKAGE_ENTRY_BINDING_MISMATCH", record.documentUri, `CodePackage resource '${record.resourceId}' manifest entry and CodeBinding.module must identify the same package-local module.`));
432
440
  if (diagnostics.length > 0 || !moduleUri) return { diagnostics: stableDiagnostics(diagnostics) };
433
441
  return {
434
442
  binding: Object.freeze({
@@ -733,7 +741,7 @@ async function loadCatalog(catalog, manifestDir, context) {
733
741
  });
734
742
  continue;
735
743
  }
736
- const records = await loadXnlRecords(file, catalog.shape, context, definition.documentCardinality);
744
+ const records = await loadResourceRecords(file, catalog.shape, context, definition.documentCardinality);
737
745
  for (const record of records) {
738
746
  if (record.kind !== catalog.kind) {
739
747
  context.diagnostics.push(kindMismatch(record.kind, catalog.kind, record.documentUri));
@@ -761,17 +769,17 @@ async function catalogFiles(catalog, manifestDir, context) {
761
769
  }
762
770
  if (catalog.shape === "single-file") {
763
771
  if (catalog.entry) {
764
- if (!isPlainEntry(catalog.entry) || !catalog.entry.toLowerCase().endsWith(".xnl")) {
772
+ if (!isPlainEntry(catalog.entry) || !isSingleFileExtension(catalog.entry)) {
765
773
  context.diagnostics.push({
766
774
  code: "RESOURCE_CATALOG_ENTRY_INVALID",
767
775
  location: catalog.location,
768
- message: "A single-file catalog entry must be a plain XNL filename."
776
+ message: "A single-file catalog entry must be a plain XNL or Markdown filename."
769
777
  });
770
778
  return [];
771
779
  }
772
780
  return [join(root, catalog.entry)];
773
781
  }
774
- return entries.filter((entry) => entry.isFile() && entry.name.toLowerCase().endsWith(".xnl")).sort((left, right) => compareCodeUnits(left.name, right.name)).map((entry) => join(root, entry.name));
782
+ return entries.filter((entry) => entry.isFile() && isSingleFileExtension(entry.name)).sort((left, right) => compareCodeUnits(left.name, right.name)).map((entry) => join(root, entry.name));
775
783
  }
776
784
  if (!catalog.entry || !isPlainEntry(catalog.entry)) {
777
785
  context.diagnostics.push({
@@ -786,6 +794,111 @@ async function catalogFiles(catalog, manifestDir, context) {
786
794
  async function loadXnlRecord(filePath, sourceShape, context) {
787
795
  return (await loadXnlRecords(filePath, sourceShape, context, "one"))[0];
788
796
  }
797
+ async function loadResourceRecords(filePath, sourceShape, context, documentCardinality) {
798
+ if (extname(filePath).toLowerCase() !== ".md") return loadXnlRecords(filePath, sourceShape, context, documentCardinality);
799
+ if (sourceShape !== "single-file" || documentCardinality !== "one") {
800
+ context.diagnostics.push({
801
+ code: "RESOURCE_MARKDOWN_SOURCE_SHAPE_INVALID",
802
+ location: documentUriFor(context.rootDir, filePath),
803
+ message: "Markdown resource authority requires a single-file catalog with documentCardinality one."
804
+ });
805
+ return [];
806
+ }
807
+ const record = await loadMarkdownRecord(filePath, context);
808
+ return record ? [record] : [];
809
+ }
810
+ async function loadMarkdownRecord(filePath, context) {
811
+ const documentUri = documentUriFor(context.rootDir, filePath);
812
+ const authority = await readAuthorityFile(filePath, documentUri, context);
813
+ if (!authority) return void 0;
814
+ const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u.exec(authority.source);
815
+ if (!match) {
816
+ context.diagnostics.push({
817
+ code: "RESOURCE_MARKDOWN_FRONTMATTER_INVALID",
818
+ location: documentUri,
819
+ message: "Markdown resource authority requires a closed YAML frontmatter block at the start of the file."
820
+ });
821
+ return;
822
+ }
823
+ let parsed;
824
+ try {
825
+ parsed = parse(match[1] ?? "");
826
+ } catch (error) {
827
+ context.diagnostics.push({
828
+ code: "RESOURCE_MARKDOWN_FRONTMATTER_INVALID",
829
+ location: documentUri,
830
+ message: `Invalid Markdown resource frontmatter: ${error instanceof Error ? error.message : String(error)}`
831
+ });
832
+ return;
833
+ }
834
+ if (!isPlainObject(parsed)) {
835
+ context.diagnostics.push({
836
+ code: "RESOURCE_MARKDOWN_FRONTMATTER_INVALID",
837
+ location: documentUri,
838
+ message: "Markdown resource frontmatter must be a YAML object."
839
+ });
840
+ return;
841
+ }
842
+ const metadataValue = parsed.metadata;
843
+ const specValue = parsed.spec;
844
+ const kind = stringField(parsed.kind);
845
+ const apiVersion = stringField(parsed.apiVersion);
846
+ const metadataObject = isPlainObject(metadataValue) ? metadataValue : void 0;
847
+ const resourceId = metadataObject ? stringField(metadataObject.fqn) : void 0;
848
+ if (!kind || !apiVersion || !resourceId || specValue !== void 0 && !isPlainObject(specValue)) {
849
+ context.diagnostics.push({
850
+ code: "RESOURCE_MARKDOWN_METADATA_INVALID",
851
+ location: documentUri,
852
+ message: "Markdown resource frontmatter requires apiVersion, kind, metadata.fqn and an optional object spec."
853
+ });
854
+ return;
855
+ }
856
+ let properties;
857
+ try {
858
+ properties = Object.freeze(normalizeExternalMap(specValue ?? {}));
859
+ } catch (error) {
860
+ context.diagnostics.push({
861
+ code: "RESOURCE_MARKDOWN_METADATA_INVALID",
862
+ location: documentUri,
863
+ message: `Markdown resource spec is not JSON-compatible: ${error instanceof Error ? error.message : String(error)}`
864
+ });
865
+ return;
866
+ }
867
+ const version = metadataObject ? stringField(metadataObject.version) : void 0;
868
+ const lifecycle = metadataObject ? stringField(metadataObject.lifecycle) : void 0;
869
+ const name = metadataObject ? stringField(metadataObject.name) : void 0;
870
+ const description = stringField(properties.description);
871
+ const node = Object.freeze({
872
+ tag: kind,
873
+ resourceId,
874
+ metadata: Object.freeze({
875
+ apiVersion,
876
+ ...version ? { version } : {}
877
+ }),
878
+ properties,
879
+ body: Object.freeze([]),
880
+ subdomains: Object.freeze({})
881
+ });
882
+ const record = Object.freeze({
883
+ kind,
884
+ resourceId,
885
+ fqn: resourceId,
886
+ ...name ? { name } : {},
887
+ ...description ? { description } : {},
888
+ metadata: Object.freeze({
889
+ apiVersion,
890
+ ...lifecycle ? { lifecycle } : {},
891
+ ...version ? { version } : {}
892
+ }),
893
+ sourceShape: "single-file",
894
+ logicalPath: relative(context.rootDir, filePath).split(sep).join("/"),
895
+ documentUri,
896
+ format: "markdown",
897
+ node
898
+ });
899
+ context.recordAuthorityDigests.set(record, authority.authorityDigest);
900
+ return record;
901
+ }
789
902
  async function loadXnlRecords(filePath, sourceShape, context, documentCardinality) {
790
903
  const documentUri = documentUriFor(context.rootDir, filePath);
791
904
  const authority = await readAuthorityFile(filePath, documentUri, context);
@@ -1120,6 +1233,28 @@ function isDocumentCardinality(value) {
1120
1233
  function isPlainEntry(value) {
1121
1234
  return Boolean(value) && !value.includes("/") && !value.includes("\\") && !value.includes("..");
1122
1235
  }
1236
+ function isSingleFileExtension(value) {
1237
+ const extension = extname(value).toLowerCase();
1238
+ return extension === ".xnl" || extension === ".md";
1239
+ }
1240
+ function isPlainObject(value) {
1241
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
1242
+ const prototype = Object.getPrototypeOf(value);
1243
+ return prototype === Object.prototype || prototype === null;
1244
+ }
1245
+ function stringField(value) {
1246
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
1247
+ }
1248
+ function normalizeExternalMap(value) {
1249
+ return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, normalizeExternalValue(child)]));
1250
+ }
1251
+ function normalizeExternalValue(value) {
1252
+ if (value === null || typeof value === "string" || typeof value === "boolean") return value;
1253
+ if (typeof value === "number" && Number.isFinite(value)) return value;
1254
+ if (Array.isArray(value)) return Object.freeze(value.map(normalizeExternalValue));
1255
+ if (isPlainObject(value)) return Object.freeze(normalizeExternalMap(value));
1256
+ throw new TypeError(`unsupported value ${Object.prototype.toString.call(value)}`);
1257
+ }
1123
1258
  function asString(value) {
1124
1259
  return typeof value === "string" && value.trim() ? value : void 0;
1125
1260
  }
@@ -1,4 +1,4 @@
1
- import { l as resourceRefToFqn, u as resolveObjectOperationCompilation } from "./src-BxwHmx6r.js";
1
+ import { l as resourceRefToFqn, u as resolveObjectOperationCompilation } from "./src-t2lJrIJe.js";
2
2
  import { c as unsafeUnicodeCodeUnitIssue, i as planResourceMappings, o as safePathLexicalIssue, r as parseResourceMappings, t as ResourceMappingPathError } from "./src-25wZPUyX.js";
3
3
  import { lstat, mkdir, mkdtemp, readFile, readdir, rename, rm, writeFile } from "node:fs/promises";
4
4
  import { basename, dirname, join, posix, resolve } from "node:path";
@@ -1,4 +1,4 @@
1
- import { n as loadResourceTree } from "./src-BGFskWEk.js";
1
+ import { n as loadResourceTree } from "./src-DvYk6l4v.js";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { dirname, join } from "node:path";
4
4
  import { parse } from "yaml";
@@ -26,7 +26,7 @@
26
26
  )>
27
27
  ```
28
28
 
29
- catalog 只描述组织,不复制每个 descriptor 的内容。`shape` 取 `single-file|directory|manifest`;后两者必须声明目录入口 `entry`。`single-file` 缺省扫描 `root` 下全部 `.xnl` 文件,也可以用可选 `entry = "<name>.xnl"` 精确选择同目录中的一个 authority 文件;该 entry 必须是无路径片段的 XNL 文件名。loader 用根 tag/`#id` 确认 kind/identity。
29
+ catalog 只描述组织,不复制每个 descriptor 的内容。`shape` 取 `single-file|directory|manifest|code-package`;后三者必须声明目录入口 `entry`。`single-file` 缺省扫描 `root` 下全部 `.xnl` 与 `.md` 文件,也可以用可选 `entry = "<name>.xnl|<name>.md"` 精确选择同目录中的一个 authority 文件。XNL 用根 tag/`#id` 确认 kind/identity;Markdown 用文件开头的 YAML frontmatter `kind` 与 `metadata.fqn` 确认,完整文件 bytes 是内容身份 authority
30
30
 
31
31
  ## KindDefinition
32
32
 
@@ -75,6 +75,37 @@ descriptor 根 tag 直接使用 kind,`#id` 是资源 FQN。唯一概念进入
75
75
 
76
76
  通用资源外壳只规定 identity、metadata channel、members/subdomains 和 provenance。各 Kind 的稳定领域字段及其 requiredness 由对应 `KindDefinition` 或 consumer contract 收窄;缺失的可选字段不会被填成空字符串。
77
77
 
78
+ 文本资源可以直接使用 Markdown 单文件 authority,无需配对 XNL descriptor:
79
+
80
+ ```markdown
81
+ ---
82
+ apiVersion: demo.resources/v1
83
+ kind: ApplicationSOP
84
+ metadata:
85
+ fqn: Demo.ApplicationSOP.Search
86
+ version: 1.0.0
87
+ spec:
88
+ description: 执行搜索并返回结构化结果
89
+ ---
90
+
91
+ 这里是 SOP 正文。
92
+ ```
93
+
94
+ frontmatter 只规范化 identity、metadata 与 JSON-compatible `spec`;正文不会被解释为 dependency 或额外 metadata。
95
+
96
+ `code-package` descriptor 还必须声明 `entry` 与 `runtime`,并保留显式 CodeBinding:
97
+
98
+ ```xnl
99
+ <CodePackage #demo.code_package.functions apiVersion="halfcode.resources/v1" version="1.0.0" {
100
+ entry = "bundle/index.js"
101
+ runtime = "bun"
102
+ } (
103
+ <CodeBinding { module = "vfs://./bundle/index.js" }>
104
+ )>
105
+ ```
106
+
107
+ `entry` 必须是 package-local `.js|.mjs` 相对路径,并与 `CodeBinding.module` 精确一致;`runtime` 是非空 target-neutral runtime identifier。
108
+
78
109
  允许 forest 的 Kind 仍逐根执行同样的 kind、identity 与 `apiVersion` 校验。例如 Decision Kind 可以显式声明:
79
110
 
80
111
  ```xnl
@@ -6,7 +6,7 @@ kind 与 identity 来自文件根 tag 和 `#id`。目录名、文件名和 catal
6
6
 
7
7
  ## 两种定义形态
8
8
 
9
- - 单文件 definition:任意描述性 `.xnl` 文件名,文件内有一个语义根。
9
+ - 单文件 definition:任意描述性 `.xnl` 或 `.md` 文件名;XNL 文件内有一个语义根,Markdown 由 frontmatter 声明 Kind/FQN 并由正文承载文本内容。
10
10
  - 目录 bundle:入口固定为 `manifest.xnl`,域文件使用描述性 `.xnl` 文件名。
11
11
 
12
12
  目录 bundle 示例:
@@ -40,7 +40,7 @@ loader 为每个 normalized descriptor 附加只读 provenance:
40
40
  ## 扫描边界
41
41
 
42
42
  - 默认目录入口仅为 `manifest.xnl`。
43
- - `single-file` catalog 缺省扫描 root 下全部 `.xnl`;声明 `entry = "name.xnl"` 时只加载该文件,便于多个不同 Kind 共用一个物理目录。
43
+ - `single-file` catalog 缺省扫描 root 下全部 `.xnl` 与 `.md`;声明 `entry = "name.xnl|name.md"` 时只加载该文件,便于多个不同 Kind 共用一个物理目录。
44
44
  - 非入口 `.xnl` 文件只能作为显式域/物料被入口引用,不能被重复注册为第二资源。
45
45
  - 多根文档必须由 KindDefinition 显式授权;loader 不根据文件名或根数量猜测 forest 语义。
46
46
  - catalog root 必须是 `vfs://` URI。
@@ -72,8 +72,8 @@ const projection = {
72
72
  "skillVersion": "1.0.0",
73
73
  "capsuleRelativePath": "references/.halfcode/provenance.json",
74
74
  "targetRelativePath": "sys-halfcode-resource-dsl/references/.halfcode/provenance.json",
75
- "contentDigest": "sha256:6d4441289b54bc78c29991819dfad6321a54d138f6991062da0449941e82773f",
76
- "contentBase64": "ewogICJmb3JtYXQiOiAiaGFsZmNvZGUuc2tpbGwtcHJvdmVuYW5jZS92MSIsCiAgImdlbmVyYXRlZEJ5IjogImhhbGZjb2RlLnNraWxsLWRpc3RyaWJ1dGlvbi92MSIsCiAgInNvdXJjZSI6IHsKICAgICJmcW4iOiAiSGFsZmNvZGUuUmVzb3VyY2VEc2wuU2tpbGwuU3lzdGVtIiwKICAgICJhcGlWZXJzaW9uIjogImhhbGZjb2RlLnJlc291cmNlcy92MSIsCiAgICAidmVyc2lvbiI6ICIxLjAuMCIKICB9LAogICJwYXlsb2FkRmlsZXMiOiBbCiAgICB7CiAgICAgICJwYXRoIjogIlNLSUxMLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2Ojg4Yjc2YzA4YmE2MzAzYmFiNmFhNmMyYTZmNzcxNjU4ZWRkYjA3ZDk3MmNlM2Y5NzQzMDViNTI3MDhhODlmMjIiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJmdW5jdGlvbnMvYnVuZGxlLmpzIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjZkMDU3MWJiM2ExZWQ1Njk0YzMxMmNlNmUxNmY3NDQ0YTI3YTc1ZDQ3YmE3ODAzMTU3NTY4YTMxNDhkNmEzZmQiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJmdW5jdGlvbnMvcmVnaXN0cnkuanNvbiIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5NzE1NGEwNGEwMmZhNzExYzU1NTUzM2YzYWY5NjdjM2JjNWRiZTE1ZjRhZmQwMDEzZTdmY2YxNzcxMTJhNWU0IgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAib2JqZWN0cy9idW5kbGUuanMiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6NTQ1MDU5ODQ0OGQ2NzAzODdmYjkwNjJlMDI0MzlmNmFlMjIzYTYxNWU4MDVmNzgwNzk0N2FhN2E1ZmI1Njc4OSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm9iamVjdHMvcmVnaXN0cnkuanNvbiIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjpjOTUzYWEyOWFjOTY0Y2E1N2RkODZlZWZkMmZmMDkzOGZkMTQ2N2M3ZDNjMGE0NmRmYWJmMTYxMjhmNjhkODA5IgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZG9jdW1lbnRzLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjUzN2JmMWRkNmQyYjhjZWFiOGU1ZTI1Yzg5NTcyZWFjMzNjMjA2MjU4Y2VjZDM4ZGNkNzhjMDIwOTU2MjI0YTgiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9mdW5jdGlvbi54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6Y2FjOTZjNDdiMThmMGMyZWFiNTFiODU2MTdhZTFiMTM1OGU1ZWRiNTdjYWNkOTQzYmRiOTE0OTVmZmZjZDk5YyIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL2luZGV4Lm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjFhYWRiOTAxODllZGY2MTEyNjZlYTI3MTNlYWU2MGNiOGYxOTMyYjE4YmVlMGU2MThjYWZhZmY5OWViMjUyOGYiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9raW5kLWRlZmluaXRpb24ueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjRhYjA3NTM5OGE1NDAyZGUzNDQ3OWY2MmY2ODhjNmJhMzU0NmU0MWQ2MjJhYjQzYjMzNWFjZTNiNGFjOThmNTgiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9yZXNvdXJjZS1tYXBwaW5ncy54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6MTg2MGVmOTY5YWExY2VkZjg2YzlmZTVkMGVmNDkzY2QwZGExZjI4NTk5MTUyOGVmYmNiYzUxZWUxMTc5ZTk0NCIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3Jlc291cmNlLXBhY2thZ2UueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjYxYmZlYzRjZmQ4OTcwNjQ5Mzg5NzVlMzFlNmZhYThjOGI5MWRkYzEyNzVhZDFhODFkZDg3M2Q5YjU2MTI1YjUiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9za2lsbC1jYXBzdWxlLWF1dGhvcmluZy54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6OTZlMWQxYzRlMjRkNzQyODUzYTYwMTU5NDQ3NDhlMzc2NTNmMDE3NTEyNTViOWNmZjliMmJhNTQzYzQ3YjlhYyIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3NraWxsLWNhcHN1bGUtZGV2b3BzLnhubCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5YTdmMmY4MzAxYTBjOGNhYWI4NmQzNjRkNWY4NGI5NzgwN2NhYTMxYzQzZWUxOTcxNjk2MmM4NzcwY2MzNjVjIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZXhhbXBsZXMvc2tpbGwtY2Fwc3VsZS1raW5kLWRlZmluaXRpb24ueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjI2ZTUzNTgxNjcwOWY4ZThjMmJkZTczOTJkMTRhYTY5NWU0ODM5ZTNhMmZlZjBmZWEwNDQ1MTA3ZThmNWEwZWEiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9za2lsbC1jYXBzdWxlLXJlc291cmNlLWRzbC54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6YzM2Y2IyZTlhY2Y5N2MyOGI1NWYxZWZkM2JiY2E4NDZiNmZiMmQ3M2ZlNGUxNTM2NzhkZmJmZDcwNTM4MmYxNSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3NraWxsLWNhcHN1bGUtcnVuLnhubCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjphM2RkMTU2MzA3NTNjOTg0Y2QzMjM1YzZmMzQyODY3NjFhOGI3OGE4YzRiNzgxYzQwNzE5ZjNkYjY5ZTgyYjQxIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZmlsZXMubWQiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6OWVmNzRhZjBhMThmMmMwZmEzMzYzYTVmMGFjNDBhYzdjNzRmMWIwYzVhZmE2MWUyZjJlYzEzMDQ5OTk4MzY2YyIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2luZGV4Lm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjE3YTg3YWFmNzczM2M2NDU3OWQ4MDEzNGE2NzAyOTlmNTRiYTQ0NjZlZGY5NDYwZWE3ZTJiNGZhMDkxNDIzYjMiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9sYW5ndWFnZS5tZCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5NWNlOTQ4NjAxZTM3ZWZmMGI4MDBhNmE2MDUxZTMyOTYxMmQxZjliY2U3NjczMGU1NzUxM2IwYzQ1NDc1MWMwIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvbWlncmF0aW9uLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OmVhOTc4ZmEyZmU1ZjU3ZDM5ZTBkYmRiOWUwNWIzNTc5OTM0NTFmM2YyYWI4NDQ3Y2I1YjZmYzE3Mzg5Mzg3Y2EiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9wcm9qZWN0aW9ucy5tZCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjpjYjA5YzQ0YTMxNWZkZDc3ZjdlZWI0ZDFlZWU5NjU1OTRmNWYwMmZkYTVhNmRlYTk3ZWE4MGZkOTViNjIzOWQwIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvc2tpbGwtY2Fwc3VsZXMubWQiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6Y2VhYTA3NzYxZWM1NDA1NzE2ZGMxYjJmZWExZTVmOTU1M2M1OWM5NDA0ZGEwODYwYjIzNjk4NjEwYzFjNDE0NCIKICAgIH0KICBdCn0K"
75
+ "contentDigest": "sha256:8c988d0476e08fad62cffb55eca87b563698586bd040a5e64903d1d281460581",
76
+ "contentBase64": "ewogICJmb3JtYXQiOiAiaGFsZmNvZGUuc2tpbGwtcHJvdmVuYW5jZS92MSIsCiAgImdlbmVyYXRlZEJ5IjogImhhbGZjb2RlLnNraWxsLWRpc3RyaWJ1dGlvbi92MSIsCiAgInNvdXJjZSI6IHsKICAgICJmcW4iOiAiSGFsZmNvZGUuUmVzb3VyY2VEc2wuU2tpbGwuU3lzdGVtIiwKICAgICJhcGlWZXJzaW9uIjogImhhbGZjb2RlLnJlc291cmNlcy92MSIsCiAgICAidmVyc2lvbiI6ICIxLjAuMCIKICB9LAogICJwYXlsb2FkRmlsZXMiOiBbCiAgICB7CiAgICAgICJwYXRoIjogIlNLSUxMLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2Ojg4Yjc2YzA4YmE2MzAzYmFiNmFhNmMyYTZmNzcxNjU4ZWRkYjA3ZDk3MmNlM2Y5NzQzMDViNTI3MDhhODlmMjIiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJmdW5jdGlvbnMvYnVuZGxlLmpzIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjZkMDU3MWJiM2ExZWQ1Njk0YzMxMmNlNmUxNmY3NDQ0YTI3YTc1ZDQ3YmE3ODAzMTU3NTY4YTMxNDhkNmEzZmQiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJmdW5jdGlvbnMvcmVnaXN0cnkuanNvbiIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5NzE1NGEwNGEwMmZhNzExYzU1NTUzM2YzYWY5NjdjM2JjNWRiZTE1ZjRhZmQwMDEzZTdmY2YxNzcxMTJhNWU0IgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAib2JqZWN0cy9idW5kbGUuanMiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6NTQ1MDU5ODQ0OGQ2NzAzODdmYjkwNjJlMDI0MzlmNmFlMjIzYTYxNWU4MDVmNzgwNzk0N2FhN2E1ZmI1Njc4OSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogIm9iamVjdHMvcmVnaXN0cnkuanNvbiIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjpjOTUzYWEyOWFjOTY0Y2E1N2RkODZlZWZkMmZmMDkzOGZkMTQ2N2M3ZDNjMGE0NmRmYWJmMTYxMjhmNjhkODA5IgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZG9jdW1lbnRzLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OmE2NDI3YjMyMGU2Zjk4NmM0MzRhODZmMzFjZDI2NWI2NmUyNWIzMDk3NTNkMmRhMTk0YmQ0OTM1YWFiM2NlMzkiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9mdW5jdGlvbi54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6Y2FjOTZjNDdiMThmMGMyZWFiNTFiODU2MTdhZTFiMTM1OGU1ZWRiNTdjYWNkOTQzYmRiOTE0OTVmZmZjZDk5YyIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL2luZGV4Lm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjFhYWRiOTAxODllZGY2MTEyNjZlYTI3MTNlYWU2MGNiOGYxOTMyYjE4YmVlMGU2MThjYWZhZmY5OWViMjUyOGYiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9raW5kLWRlZmluaXRpb24ueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjRhYjA3NTM5OGE1NDAyZGUzNDQ3OWY2MmY2ODhjNmJhMzU0NmU0MWQ2MjJhYjQzYjMzNWFjZTNiNGFjOThmNTgiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9yZXNvdXJjZS1tYXBwaW5ncy54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6MTg2MGVmOTY5YWExY2VkZjg2YzlmZTVkMGVmNDkzY2QwZGExZjI4NTk5MTUyOGVmYmNiYzUxZWUxMTc5ZTk0NCIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3Jlc291cmNlLXBhY2thZ2UueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjYxYmZlYzRjZmQ4OTcwNjQ5Mzg5NzVlMzFlNmZhYThjOGI5MWRkYzEyNzVhZDFhODFkZDg3M2Q5YjU2MTI1YjUiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9za2lsbC1jYXBzdWxlLWF1dGhvcmluZy54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6OTZlMWQxYzRlMjRkNzQyODUzYTYwMTU5NDQ3NDhlMzc2NTNmMDE3NTEyNTViOWNmZjliMmJhNTQzYzQ3YjlhYyIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3NraWxsLWNhcHN1bGUtZGV2b3BzLnhubCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5YTdmMmY4MzAxYTBjOGNhYWI4NmQzNjRkNWY4NGI5NzgwN2NhYTMxYzQzZWUxOTcxNjk2MmM4NzcwY2MzNjVjIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZXhhbXBsZXMvc2tpbGwtY2Fwc3VsZS1raW5kLWRlZmluaXRpb24ueG5sIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjI2ZTUzNTgxNjcwOWY4ZThjMmJkZTczOTJkMTRhYTY5NWU0ODM5ZTNhMmZlZjBmZWEwNDQ1MTA3ZThmNWEwZWEiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9leGFtcGxlcy9za2lsbC1jYXBzdWxlLXJlc291cmNlLWRzbC54bmwiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6YzM2Y2IyZTlhY2Y5N2MyOGI1NWYxZWZkM2JiY2E4NDZiNmZiMmQ3M2ZlNGUxNTM2NzhkZmJmZDcwNTM4MmYxNSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2V4YW1wbGVzL3NraWxsLWNhcHN1bGUtcnVuLnhubCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjphM2RkMTU2MzA3NTNjOTg0Y2QzMjM1YzZmMzQyODY3NjFhOGI3OGE4YzRiNzgxYzQwNzE5ZjNkYjY5ZTgyYjQxIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvZmlsZXMubWQiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6NjQyYWY1ZGNiZmZhMDYxMTI4NzZmNjU0YjRjZDVlN2U4NjQ5ODE2NzQ4NGZkNDJjOTRjZjI1ZDE3MzllMmU5NSIKICAgIH0sCiAgICB7CiAgICAgICJwYXRoIjogInJlZmVyZW5jZXMvcmVzb3VyY2UtZHNsL2luZGV4Lm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OjE3YTg3YWFmNzczM2M2NDU3OWQ4MDEzNGE2NzAyOTlmNTRiYTQ0NjZlZGY5NDYwZWE3ZTJiNGZhMDkxNDIzYjMiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9sYW5ndWFnZS5tZCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1Njo5NWNlOTQ4NjAxZTM3ZWZmMGI4MDBhNmE2MDUxZTMyOTYxMmQxZjliY2U3NjczMGU1NzUxM2IwYzQ1NDc1MWMwIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvbWlncmF0aW9uLm1kIiwKICAgICAgImNvbnRlbnREaWdlc3QiOiAic2hhMjU2OmVhOTc4ZmEyZmU1ZjU3ZDM5ZTBkYmRiOWUwNWIzNTc5OTM0NTFmM2YyYWI4NDQ3Y2I1YjZmYzE3Mzg5Mzg3Y2EiCiAgICB9LAogICAgewogICAgICAicGF0aCI6ICJyZWZlcmVuY2VzL3Jlc291cmNlLWRzbC9wcm9qZWN0aW9ucy5tZCIsCiAgICAgICJjb250ZW50RGlnZXN0IjogInNoYTI1NjpjYjA5YzQ0YTMxNWZkZDc3ZjdlZWI0ZDFlZWU5NjU1OTRmNWYwMmZkYTVhNmRlYTk3ZWE4MGZkOTViNjIzOWQwIgogICAgfSwKICAgIHsKICAgICAgInBhdGgiOiAicmVmZXJlbmNlcy9yZXNvdXJjZS1kc2wvc2tpbGwtY2Fwc3VsZXMubWQiLAogICAgICAiY29udGVudERpZ2VzdCI6ICJzaGEyNTY6Y2VhYTA3NzYxZWM1NDA1NzE2ZGMxYjJmZWExZTVmOTU1M2M1OWM5NDA0ZGEwODYwYjIzNjk4NjEwYzFjNDE0NCIKICAgIH0KICBdCn0K"
77
77
  },
78
78
  {
79
79
  "skillFqn": "Halfcode.ResourceDsl.Skill.System",
@@ -81,8 +81,8 @@ const projection = {
81
81
  "skillVersion": "1.0.0",
82
82
  "capsuleRelativePath": "references/resource-dsl/documents.md",
83
83
  "targetRelativePath": "sys-halfcode-resource-dsl/references/resource-dsl/documents.md",
84
- "contentDigest": "sha256:537bf1dd6d2b8ceab8e5e25c89572eac33c206258cecd38dcd78c020956224a8",
85
- "contentBase64": "IyBkb2N1bWVudHMKCjxmcW4+SGFsZmNvZGUuUmVzb3VyY2VEc2wuV2lraS5kb2N1bWVudHM8L2Zxbj4KPGtpbmQ+V2lraVBhZ2U8L2tpbmQ+CjxkZXNjcmlwdGlvbj5SZXNvdXJjZSBkb2N1bWVudHMsIHBhY2thZ2UgY2F0YWxvZ3MgYW5kIEtpbmREZWZpbml0aW9uIGNvbnRyYWN0cy48L2Rlc2NyaXB0aW9uPgoKIyBSZXNvdXJjZSBEb2N1bWVudCBGYW1pbGllcwoKIyMgUmVzb3VyY2VQYWNrYWdlIOS4jiBDYXRhbG9ncwoK5LiA5LiqIHBhY2thZ2Ug5pyJ5LiU5Y+q5pyJ5LiA5LiqIGBSZXNvdXJjZVBhY2thZ2VgIGF1dGhvcml0eSByb29044CC5a6D5oul5pyJ5ZSv5LiAIGBDYXRhbG9nc2Ag5a2Q5Z+f77yb5q+P5LiqIGBDYXRhbG9nYCDlo7DmmI7kuIDnp43otYTmupDnmoTpgLvovpHmoLnkuI7nm67lvZXlhaXlj6PvvJoKCmBgYHhubAo8UmVzb3VyY2VQYWNrYWdlICNkZW1vLnJlc291cmNlX3dvcmtmbG93LmF1dGhvcmluZyBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIkFjdGl2ZSIKICBkZXNjcmlwdGlvbiA9ICJEZW1vIGF1dGhvcmluZyByZXNvdXJjZSBwYWNrYWdlIgp9ICgKICA8Q2F0YWxvZ3MgWwogICAgPENhdGFsb2cgI2tpbmRfZGVmaW5pdGlvbnMgewogICAgICBraW5kID0gIktpbmREZWZpbml0aW9uIgogICAgICBzaGFwZSA9ICJkaXJlY3RvcnkiCiAgICAgIHJvb3QgPSAidmZzOi8vLi9LaW5kRGVmaW5pdGlvbnMvIgogICAgICBlbnRyeSA9ICJtYW5pZmVzdC54bmwiCiAgICB9PgogICAgPENhdGFsb2cgI2Z1bmN0aW9ucyB7CiAgICAgIGtpbmQgPSAiRnVuY3Rpb24iCiAgICAgIHNoYXBlID0gImRpcmVjdG9yeSIKICAgICAgcm9vdCA9ICJ2ZnM6Ly8uL0Z1bmN0aW9ucy8iCiAgICAgIGVudHJ5ID0gIm1hbmlmZXN0LnhubCIKICAgIH0+CiAgXT4KKT4KYGBgCgpjYXRhbG9nIOWPquaPj+i/sOe7hOe7h++8jOS4jeWkjeWItuavj+S4qiBkZXNjcmlwdG9yIOeahOWGheWuueOAgmBzaGFwZWAg5Y+WIGBzaW5nbGUtZmlsZXxkaXJlY3Rvcnl8bWFuaWZlc3Rg77yb5ZCO5Lik6ICF5b+F6aG75aOw5piO55uu5b2V5YWl5Y+jIGBlbnRyeWDjgIJgc2luZ2xlLWZpbGVgIOe8uuecgeaJq+aPjyBgcm9vdGAg5LiL5YWo6YOoIGAueG5sYCDmlofku7bvvIzkuZ/lj6/ku6XnlKjlj6/pgIkgYGVudHJ5ID0gIjxuYW1lPi54bmwiYCDnsr7noa7pgInmi6nlkIznm67lvZXkuK3nmoTkuIDkuKogYXV0aG9yaXR5IOaWh+S7tu+8m+ivpSBlbnRyeSDlv4XpobvmmK/ml6Dot6/lvoTniYfmrrXnmoQgWE5MIOaWh+S7tuWQjeOAgmxvYWRlciDnlKjmoLkgdGFnL2AjaWRgIOehruiupCBraW5kL2lkZW50aXR544CCCgojIyBLaW5kRGVmaW5pdGlvbgoKYEtpbmREZWZpbml0aW9uYCDlo7DmmI4gc291cmNlIHNoYXBlIOS4jiBkZXNjcmlwdG9yIGNvbnRyYWN077yaCgpgYGB4bmwKPEtpbmREZWZpbml0aW9uICNoYWxmY29kZS5yZXNvdXJjZV9raW5kLkZ1bmN0aW9uIGFwaVZlcnNpb249ImhhbGZjb2RlLnJlc291cmNlcy92MSIgdmVyc2lvbj0iMS4wLjAiIHsKICBsaWZlY3ljbGUgPSAiU3RhYmxlIgogIHNvdXJjZVNoYXBlcyA9IFsic2luZ2xlLWZpbGUiICJkaXJlY3RvcnkiXQogIGN1cnJlbnRBcGlWZXJzaW9uID0gImhhbGZjb2RlLnJlc291cmNlcy92MSIKICBzdXBwb3J0ZWRBcGlWZXJzaW9ucyA9IFsiaGFsZmNvZGUucmVzb3VyY2VzL3YxIl0KfSAoCiAgPERlc2NyaXB0b3JDb250cmFjdCAoCiAgICA8SWRlbnRpdHkgeyByZXF1aXJlZCA9IHRydWUgZm9ybSA9ICJmcW4iIH0+CiAgICA8Q29kZUJpbmRpbmcgeyBwcm9wZXJ0eSA9ICJzcmMiIHNjaGVtZSA9ICJ2ZnMiIGV4cG9ydEZyYWdtZW50UmVxdWlyZWQgPSB0cnVlIH0+CiAgICA8SW5zdHJ1Y3Rpb24geyByZXF1aXJlZCA9IGZhbHNlIHNvdXJjZSA9ICJpbmxpbmUtb3ItdmZzIiB9PgogICk+Cik+CmBgYAoKYGN1cnJlbnRBcGlWZXJzaW9uYCDmmK/mlrDotYTmupDlkozov4Hnp7vnm67moIfniYjmnKzvvIxgc3VwcG9ydGVkQXBpVmVyc2lvbnNgIOaYryBsb2FkZXIg5Y+v55u05o6l6K+75Y+W55qE5YW85a656ZuG5ZCI77yM5LiU5b+F6aG75YyF5ZCrIGN1cnJlbnTjgILmnKrnn6XniYjmnKzlv4XpobvlhYjnu4/ov4fosIPnlKjmlrnlnKjku6PnoIHkvqfms6jlhoznmoTnoa7lrprmgKcgbWlncmF0aW9u77yM5YaN5Lqk57uZIGxvYWRlcu+8m+WPr+aJp+ihjOi9rOaNouS4jeWGmeWFpSBYTkzjgIIKCmBkb2N1bWVudENhcmRpbmFsaXR5YCDnvLrnnIHkuLogYCJvbmUiYOOAguWPquaciSBgc291cmNlU2hhcGVzID0gWyJzaW5nbGUtZmlsZSJdYCDnmoQgS2luZCDlj6/ku6Xlo7DmmI4gYGRvY3VtZW50Q2FyZGluYWxpdHkgPSAibWFueSJg77yM6KGo56S65LiA5LiqIGF1dGhvcml0eSDmlofmoaPlhYHorrjljIXlkKvlpJrkuKrlubbliJfnmoTlkIwgS2luZCDmoLnvvJvlroPkuI3mmK/lr7nmiYDmnIkgWE5MIOaWh+S7tuaUvuWuveaguee6puadn+OAggoKS2luZCBjb250cmFjdCDlj6/ku6XmjInoh6rouqvor63kuYnnuqbmnZ8gbGlmZWN5Y2xl44CBZGVzY3JpcHRpb27jgIFpbnN0cnVjdGlvbuOAgWNvZGUgYmluZGluZyDkuI4gaW5jbHVkZXPvvJvpmaQgYCNpZGAg5ZKMIGBhcGlWZXJzaW9uYCDlpJbvvIzov5nkupvlrZfmrrXpg73kuI3mmK/pgJrnlKggbG9hZGVyIOW8uuWKoOe7meaJgOaciSBLaW5kIOeahOWFseWQjOimgeaxguOAggoK5Yqg6L295oiQ5Yqf5ZCO77yMY29uc3VtZXIg5LuOIGBSZXNvdXJjZVRyZWUucmVnaXN0cnkua2luZERlZmluaXRpb25zYCDmjIkgYHJlc291cmNlS2luZGAg5Y+W5b6X6KeE6IyD5YyWIGNvbnRyYWN044CC6K+lIHByb2plY3Rpb24g5YyF5ZCrIHZlcnNpb27jgIFzb3VyY2Ugc2hhcGXjgIFjYXJkaW5hbGl0eeOAgXJlcXVpcmVkIGZpbGVzIOS7peWPiiBLaW5kRGVmaW5pdGlvbiDoh6rouqvnmoQgYHJlc291cmNlSWRgL2Bkb2N1bWVudFVyaWAgcHJvdmVuYW5jZe+8m0tpbmREZWZpbml0aW9uIOS4jea3t+WFpeS4muWKoei1hOa6kOeahCBgcmVnaXN0cnkuYnlLaW5kYOOAggoKIyMgUmVzb3VyY2UgZGVzY3JpcHRvcgoKZGVzY3JpcHRvciDmoLkgdGFnIOebtOaOpeS9v+eUqCBraW5k77yMYCNpZGAg5piv6LWE5rqQIEZRTuOAguWUr+S4gOamguW/tei/m+WFpSBgKClg77yb6YeN5aSN5oiQ5ZGY6L+b5YWlIGBbXWDvvJoKCmBgYHhubAo8RnVuY3Rpb24gI2RlbW8ucmVzb3VyY2Vfd29ya2Zsb3cucHJlcGFyZV9kYXRhIGFwaVZlcnNpb249ImhhbGZjb2RlLnJlc291cmNlcy92MSIgdmVyc2lvbj0iMS4wLjAiIHsKICBsaWZlY3ljbGUgPSAiQWN0aXZlIgogIHRpdGxlID0gIlByZXBhcmUgd29ya2Zsb3cgZGF0YSIKfSAoCiAgPEluc3RydWN0aW9uID9pbnN0cnVjdGlvbj4KICDmjqXmlLbovpPlhaXlubbkuqfnlJ/kuIvmuLggcHJvY2VkdXJlIOaJgOmcgOeahOinhOiMg+aVsOaNruOAggogIDwvP2luc3RydWN0aW9uPgogIDxDb2RlQmluZGluZyB7CiAgICBzcmMgPSAidmZzOi8vQC9hcHBzL2RlbW8tcmVzb3VyY2Utd29ya2Zsb3ctYXV0aG9yaW5nL3NyYy9wcm9jZWR1cmVzLnRzI3ByZXBhcmVQcm9jZWR1cmUiCiAgfT4KKT4KYGBgCgrpgJrnlKjotYTmupDlpJblo7Plj6rop4TlrpogaWRlbnRpdHnjgIFtZXRhZGF0YSBjaGFubmVs44CBbWVtYmVycy9zdWJkb21haW5zIOWSjCBwcm92ZW5hbmNl44CC5ZCEIEtpbmQg55qE56iz5a6a6aKG5Z+f5a2X5q615Y+K5YW2IHJlcXVpcmVkbmVzcyDnlLHlr7nlupQgYEtpbmREZWZpbml0aW9uYCDmiJYgY29uc3VtZXIgY29udHJhY3Qg5pS256qE77yb57y65aSx55qE5Y+v6YCJ5a2X5q615LiN5Lya6KKr5aGr5oiQ56m65a2X56ym5Liy44CCCgrlhYHorrggZm9yZXN0IOeahCBLaW5kIOS7jemAkOagueaJp+ihjOWQjOagt+eahCBraW5k44CBaWRlbnRpdHkg5LiOIGBhcGlWZXJzaW9uYCDmoKHpqozjgILkvovlpoIgRGVjaXNpb24gS2luZCDlj6/ku6XmmL7lvI/lo7DmmI7vvJoKCmBgYHhubAo8S2luZERlZmluaXRpb24gI2NvZHVtZW50LnJlc291cmNlX2tpbmQuRGVjaXNpb24gYXBpVmVyc2lvbj0iaGFsZmNvZGUucmVzb3VyY2VzL3YxIiB2ZXJzaW9uPSIxLjAuMCIgewogIGxpZmVjeWNsZSA9ICJTdGFibGUiCiAgc291cmNlU2hhcGVzID0gWyJzaW5nbGUtZmlsZSJdCiAgY3VycmVudEFwaVZlcnNpb24gPSAiY29kdW1lbnQudGVjaC92MWFscGhhMSIKICBzdXBwb3J0ZWRBcGlWZXJzaW9ucyA9IFsiY29kdW1lbnQudGVjaC92MWFscGhhMSJdCiAgZG9jdW1lbnRDYXJkaW5hbGl0eSA9ICJtYW55Igp9PgpgYGAKCuWvueW6lCBhdXRob3JpdHkg5paH5Lu25Y+v5Lul5pyJ5aSa5Liq5bm25YiXIGA8RGVjaXNpb24gLi4uPmAg5qC544CC5q+P5Liq5qC55b2S5LiA5YyW5Li654us56uLIHJlc291cmNlIHJlY29yZO+8jOW5tuWFseS6q+ivpeaWh+S7tueahCBgZG9jdW1lbnRVcmlgIHByb3ZlbmFuY2XvvJvph43lpI0gYCNpZGDjgIHmt7flkIjmoLkga2luZCDmiJbkuI3lj5fmlK/mjIHnmoTniYjmnKzku43mmK/plJnor6/jgIIKCiMjIFJlc291cmNlTWFwcGluZ3MKCm1hcHBpbmcg5qC55oul5pyJ5aSa5Liq5ZSv5LiAIGNvbGxlY3Rpb24gc3ViZG9tYWlu77ybY29sbGVjdGlvbiDnmoQgYFtdYCDmib/ovb3ph43lpI3mnaHnm67vvJoKCmBgYHhubAo8UmVzb3VyY2VNYXBwaW5ncyAjZGVtby5yZXNvdXJjZV93b3JrZmxvdy5tYXBwaW5ncyBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiAoCiAgPFJlZmVyZW5jZVRhcmdldHMgWwogICAgPFJlZmVyZW5jZVRhcmdldCAjZnVuY3Rpb25fZGVwZW5kZW5jeSB7CiAgICAgIGZyb21LaW5kID0gIkZ1bmN0aW9uIgogICAgICBmaWVsZCA9ICJkZXBlbmRzT24iCiAgICAgIHRhcmdldEtpbmQgPSAiRnVuY3Rpb24iCiAgICB9PgogIF0+CiAgPENhbGxhYmxlQXJ0aWZhY3RzIFsKICAgIDxDYWxsYWJsZUFydGlmYWN0ICNmdW5jdGlvbl9jYWxsYWJsZSB7CiAgICAgIGtpbmQgPSAiRnVuY3Rpb24iCiAgICAgIGJpbmRpbmcgPSAiQ29kZUJpbmRpbmcuc3JjIgogICAgfT4KICBdPgogIDxTb3VyY2VSb290cyBbCiAgICA8U291cmNlUm9vdCAjYXV0aG9yaW5nIHsKICAgICAgdXJpID0gInZmczovL0AvYXBwcy9kZW1vLXJlc291cmNlLXdvcmtmbG93LWF1dGhvcmluZy9yZXNvdXJjZXMvIgogICAgfT4KICBdPgopPgpgYGAKCm1hcHBpbmcga2V5IOaYr+aYvuW8j+WxnuaAp+aIliBgI2lkYO+8jOS4jeW+l+aKiueUqOaIt+aVsOaNruWKqOaAgeaLvOi/myB0YWcg5ZCN44CCCg=="
84
+ "contentDigest": "sha256:a6427b320e6f986c434a86f31cd265b66e25b309753d2da194bd4935aab3ce39",
85
+ "contentBase64": "IyBkb2N1bWVudHMKCjxmcW4+SGFsZmNvZGUuUmVzb3VyY2VEc2wuV2lraS5kb2N1bWVudHM8L2Zxbj4KPGtpbmQ+V2lraVBhZ2U8L2tpbmQ+CjxkZXNjcmlwdGlvbj5SZXNvdXJjZSBkb2N1bWVudHMsIHBhY2thZ2UgY2F0YWxvZ3MgYW5kIEtpbmREZWZpbml0aW9uIGNvbnRyYWN0cy48L2Rlc2NyaXB0aW9uPgoKIyBSZXNvdXJjZSBEb2N1bWVudCBGYW1pbGllcwoKIyMgUmVzb3VyY2VQYWNrYWdlIOS4jiBDYXRhbG9ncwoK5LiA5LiqIHBhY2thZ2Ug5pyJ5LiU5Y+q5pyJ5LiA5LiqIGBSZXNvdXJjZVBhY2thZ2VgIGF1dGhvcml0eSByb29044CC5a6D5oul5pyJ5ZSv5LiAIGBDYXRhbG9nc2Ag5a2Q5Z+f77yb5q+P5LiqIGBDYXRhbG9nYCDlo7DmmI7kuIDnp43otYTmupDnmoTpgLvovpHmoLnkuI7nm67lvZXlhaXlj6PvvJoKCmBgYHhubAo8UmVzb3VyY2VQYWNrYWdlICNkZW1vLnJlc291cmNlX3dvcmtmbG93LmF1dGhvcmluZyBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIkFjdGl2ZSIKICBkZXNjcmlwdGlvbiA9ICJEZW1vIGF1dGhvcmluZyByZXNvdXJjZSBwYWNrYWdlIgp9ICgKICA8Q2F0YWxvZ3MgWwogICAgPENhdGFsb2cgI2tpbmRfZGVmaW5pdGlvbnMgewogICAgICBraW5kID0gIktpbmREZWZpbml0aW9uIgogICAgICBzaGFwZSA9ICJkaXJlY3RvcnkiCiAgICAgIHJvb3QgPSAidmZzOi8vLi9LaW5kRGVmaW5pdGlvbnMvIgogICAgICBlbnRyeSA9ICJtYW5pZmVzdC54bmwiCiAgICB9PgogICAgPENhdGFsb2cgI2Z1bmN0aW9ucyB7CiAgICAgIGtpbmQgPSAiRnVuY3Rpb24iCiAgICAgIHNoYXBlID0gImRpcmVjdG9yeSIKICAgICAgcm9vdCA9ICJ2ZnM6Ly8uL0Z1bmN0aW9ucy8iCiAgICAgIGVudHJ5ID0gIm1hbmlmZXN0LnhubCIKICAgIH0+CiAgXT4KKT4KYGBgCgpjYXRhbG9nIOWPquaPj+i/sOe7hOe7h++8jOS4jeWkjeWItuavj+S4qiBkZXNjcmlwdG9yIOeahOWGheWuueOAgmBzaGFwZWAg5Y+WIGBzaW5nbGUtZmlsZXxkaXJlY3Rvcnl8bWFuaWZlc3R8Y29kZS1wYWNrYWdlYO+8m+WQjuS4ieiAheW/hemhu+WjsOaYjuebruW9leWFpeWPoyBgZW50cnlg44CCYHNpbmdsZS1maWxlYCDnvLrnnIHmiavmj48gYHJvb3RgIOS4i+WFqOmDqCBgLnhubGAg5LiOIGAubWRgIOaWh+S7tu+8jOS5n+WPr+S7peeUqOWPr+mAiSBgZW50cnkgPSAiPG5hbWU+LnhubHw8bmFtZT4ubWQiYCDnsr7noa7pgInmi6nlkIznm67lvZXkuK3nmoTkuIDkuKogYXV0aG9yaXR5IOaWh+S7tuOAglhOTCDnlKjmoLkgdGFnL2AjaWRgIOehruiupCBraW5kL2lkZW50aXR577ybTWFya2Rvd24g55So5paH5Lu25byA5aS055qEIFlBTUwgZnJvbnRtYXR0ZXIgYGtpbmRgIOS4jiBgbWV0YWRhdGEuZnFuYCDnoa7orqTvvIzlrozmlbTmlofku7YgYnl0ZXMg5piv5YaF5a656Lqr5Lu9IGF1dGhvcml0eeOAggoKIyMgS2luZERlZmluaXRpb24KCmBLaW5kRGVmaW5pdGlvbmAg5aOw5piOIHNvdXJjZSBzaGFwZSDkuI4gZGVzY3JpcHRvciBjb250cmFjdO+8mgoKYGBgeG5sCjxLaW5kRGVmaW5pdGlvbiAjaGFsZmNvZGUucmVzb3VyY2Vfa2luZC5GdW5jdGlvbiBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIlN0YWJsZSIKICBzb3VyY2VTaGFwZXMgPSBbInNpbmdsZS1maWxlIiAiZGlyZWN0b3J5Il0KICBjdXJyZW50QXBpVmVyc2lvbiA9ICJoYWxmY29kZS5yZXNvdXJjZXMvdjEiCiAgc3VwcG9ydGVkQXBpVmVyc2lvbnMgPSBbImhhbGZjb2RlLnJlc291cmNlcy92MSJdCn0gKAogIDxEZXNjcmlwdG9yQ29udHJhY3QgKAogICAgPElkZW50aXR5IHsgcmVxdWlyZWQgPSB0cnVlIGZvcm0gPSAiZnFuIiB9PgogICAgPENvZGVCaW5kaW5nIHsgcHJvcGVydHkgPSAic3JjIiBzY2hlbWUgPSAidmZzIiBleHBvcnRGcmFnbWVudFJlcXVpcmVkID0gdHJ1ZSB9PgogICAgPEluc3RydWN0aW9uIHsgcmVxdWlyZWQgPSBmYWxzZSBzb3VyY2UgPSAiaW5saW5lLW9yLXZmcyIgfT4KICApPgopPgpgYGAKCmBjdXJyZW50QXBpVmVyc2lvbmAg5piv5paw6LWE5rqQ5ZKM6L+B56e755uu5qCH54mI5pys77yMYHN1cHBvcnRlZEFwaVZlcnNpb25zYCDmmK8gbG9hZGVyIOWPr+ebtOaOpeivu+WPlueahOWFvOWuuembhuWQiO+8jOS4lOW/hemhu+WMheWQqyBjdXJyZW5044CC5pyq55+l54mI5pys5b+F6aG75YWI57uP6L+H6LCD55So5pa55Zyo5Luj56CB5L6n5rOo5YaM55qE56Gu5a6a5oCnIG1pZ3JhdGlvbu+8jOWGjeS6pOe7mSBsb2FkZXLvvJvlj6/miafooYzovazmjaLkuI3lhpnlhaUgWE5M44CCCgpgZG9jdW1lbnRDYXJkaW5hbGl0eWAg57y655yB5Li6IGAib25lImDjgILlj6rmnIkgYHNvdXJjZVNoYXBlcyA9IFsic2luZ2xlLWZpbGUiXWAg55qEIEtpbmQg5Y+v5Lul5aOw5piOIGBkb2N1bWVudENhcmRpbmFsaXR5ID0gIm1hbnkiYO+8jOihqOekuuS4gOS4qiBhdXRob3JpdHkg5paH5qGj5YWB6K645YyF5ZCr5aSa5Liq5bm25YiX55qE5ZCMIEtpbmQg5qC577yb5a6D5LiN5piv5a+55omA5pyJIFhOTCDmlofku7bmlL7lrr3moLnnuqbmnZ/jgIIKCktpbmQgY29udHJhY3Qg5Y+v5Lul5oyJ6Ieq6Lqr6K+t5LmJ57qm5p2fIGxpZmVjeWNsZeOAgWRlc2NyaXB0aW9u44CBaW5zdHJ1Y3Rpb27jgIFjb2RlIGJpbmRpbmcg5LiOIGluY2x1ZGVz77yb6ZmkIGAjaWRgIOWSjCBgYXBpVmVyc2lvbmAg5aSW77yM6L+Z5Lqb5a2X5q616YO95LiN5piv6YCa55SoIGxvYWRlciDlvLrliqDnu5nmiYDmnIkgS2luZCDnmoTlhbHlkIzopoHmsYLjgIIKCuWKoOi9veaIkOWKn+WQju+8jGNvbnN1bWVyIOS7jiBgUmVzb3VyY2VUcmVlLnJlZ2lzdHJ5LmtpbmREZWZpbml0aW9uc2Ag5oyJIGByZXNvdXJjZUtpbmRgIOWPluW+l+inhOiMg+WMliBjb250cmFjdOOAguivpSBwcm9qZWN0aW9uIOWMheWQqyB2ZXJzaW9u44CBc291cmNlIHNoYXBl44CBY2FyZGluYWxpdHnjgIFyZXF1aXJlZCBmaWxlcyDku6Xlj4ogS2luZERlZmluaXRpb24g6Ieq6Lqr55qEIGByZXNvdXJjZUlkYC9gZG9jdW1lbnRVcmlgIHByb3ZlbmFuY2XvvJtLaW5kRGVmaW5pdGlvbiDkuI3mt7flhaXkuJrliqHotYTmupDnmoQgYHJlZ2lzdHJ5LmJ5S2luZGDjgIIKCiMjIFJlc291cmNlIGRlc2NyaXB0b3IKCmRlc2NyaXB0b3Ig5qC5IHRhZyDnm7TmjqXkvb/nlKgga2luZO+8jGAjaWRgIOaYr+i1hOa6kCBGUU7jgILllK/kuIDmpoLlv7Xov5vlhaUgYCgpYO+8m+mHjeWkjeaIkOWRmOi/m+WFpSBgW11g77yaCgpgYGB4bmwKPEZ1bmN0aW9uICNkZW1vLnJlc291cmNlX3dvcmtmbG93LnByZXBhcmVfZGF0YSBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIkFjdGl2ZSIKICB0aXRsZSA9ICJQcmVwYXJlIHdvcmtmbG93IGRhdGEiCn0gKAogIDxJbnN0cnVjdGlvbiA/aW5zdHJ1Y3Rpb24+CiAg5o6l5pS26L6T5YWl5bm25Lqn55Sf5LiL5ri4IHByb2NlZHVyZSDmiYDpnIDnmoTop4TojIPmlbDmja7jgIIKICA8Lz9pbnN0cnVjdGlvbj4KICA8Q29kZUJpbmRpbmcgewogICAgc3JjID0gInZmczovL0AvYXBwcy9kZW1vLXJlc291cmNlLXdvcmtmbG93LWF1dGhvcmluZy9zcmMvcHJvY2VkdXJlcy50cyNwcmVwYXJlUHJvY2VkdXJlIgogIH0+Cik+CmBgYAoK6YCa55So6LWE5rqQ5aSW5aOz5Y+q6KeE5a6aIGlkZW50aXR544CBbWV0YWRhdGEgY2hhbm5lbOOAgW1lbWJlcnMvc3ViZG9tYWlucyDlkowgcHJvdmVuYW5jZeOAguWQhCBLaW5kIOeahOeos+WumumihuWfn+Wtl+auteWPiuWFtiByZXF1aXJlZG5lc3Mg55Sx5a+55bqUIGBLaW5kRGVmaW5pdGlvbmAg5oiWIGNvbnN1bWVyIGNvbnRyYWN0IOaUtueqhO+8m+e8uuWkseeahOWPr+mAieWtl+auteS4jeS8muiiq+Whq+aIkOepuuWtl+espuS4suOAggoK5paH5pys6LWE5rqQ5Y+v5Lul55u05o6l5L2/55SoIE1hcmtkb3duIOWNleaWh+S7tiBhdXRob3JpdHnvvIzml6DpnIDphY3lr7kgWE5MIGRlc2NyaXB0b3LvvJoKCmBgYG1hcmtkb3duCi0tLQphcGlWZXJzaW9uOiBkZW1vLnJlc291cmNlcy92MQpraW5kOiBBcHBsaWNhdGlvblNPUAptZXRhZGF0YToKICBmcW46IERlbW8uQXBwbGljYXRpb25TT1AuU2VhcmNoCiAgdmVyc2lvbjogMS4wLjAKc3BlYzoKICBkZXNjcmlwdGlvbjog5omn6KGM5pCc57Si5bm26L+U5Zue57uT5p6E5YyW57uT5p6cCi0tLQoK6L+Z6YeM5pivIFNPUCDmraPmlofjgIIKYGBgCgpmcm9udG1hdHRlciDlj6rop4TojIPljJYgaWRlbnRpdHnjgIFtZXRhZGF0YSDkuI4gSlNPTi1jb21wYXRpYmxlIGBzcGVjYO+8m+ato+aWh+S4jeS8muiiq+ino+mHiuS4uiBkZXBlbmRlbmN5IOaIlumineWkliBtZXRhZGF0YeOAggoKYGNvZGUtcGFja2FnZWAgZGVzY3JpcHRvciDov5jlv4Xpobvlo7DmmI4gYGVudHJ5YCDkuI4gYHJ1bnRpbWVg77yM5bm25L+d55WZ5pi+5byPIENvZGVCaW5kaW5n77yaCgpgYGB4bmwKPENvZGVQYWNrYWdlICNkZW1vLmNvZGVfcGFja2FnZS5mdW5jdGlvbnMgYXBpVmVyc2lvbj0iaGFsZmNvZGUucmVzb3VyY2VzL3YxIiB2ZXJzaW9uPSIxLjAuMCIgewogIGVudHJ5ID0gImJ1bmRsZS9pbmRleC5qcyIKICBydW50aW1lID0gImJ1biIKfSAoCiAgPENvZGVCaW5kaW5nIHsgbW9kdWxlID0gInZmczovLy4vYnVuZGxlL2luZGV4LmpzIiB9PgopPgpgYGAKCmBlbnRyeWAg5b+F6aG75pivIHBhY2thZ2UtbG9jYWwgYC5qc3wubWpzYCDnm7jlr7not6/lvoTvvIzlubbkuI4gYENvZGVCaW5kaW5nLm1vZHVsZWAg57K+56Gu5LiA6Ie077ybYHJ1bnRpbWVgIOaYr+mdnuepuiB0YXJnZXQtbmV1dHJhbCBydW50aW1lIGlkZW50aWZpZXLjgIIKCuWFgeiuuCBmb3Jlc3Qg55qEIEtpbmQg5LuN6YCQ5qC55omn6KGM5ZCM5qC355qEIGtpbmTjgIFpZGVudGl0eSDkuI4gYGFwaVZlcnNpb25gIOagoemqjOOAguS+i+WmgiBEZWNpc2lvbiBLaW5kIOWPr+S7peaYvuW8j+WjsOaYju+8mgoKYGBgeG5sCjxLaW5kRGVmaW5pdGlvbiAjY29kdW1lbnQucmVzb3VyY2Vfa2luZC5EZWNpc2lvbiBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiIHZlcnNpb249IjEuMC4wIiB7CiAgbGlmZWN5Y2xlID0gIlN0YWJsZSIKICBzb3VyY2VTaGFwZXMgPSBbInNpbmdsZS1maWxlIl0KICBjdXJyZW50QXBpVmVyc2lvbiA9ICJjb2R1bWVudC50ZWNoL3YxYWxwaGExIgogIHN1cHBvcnRlZEFwaVZlcnNpb25zID0gWyJjb2R1bWVudC50ZWNoL3YxYWxwaGExIl0KICBkb2N1bWVudENhcmRpbmFsaXR5ID0gIm1hbnkiCn0+CmBgYAoK5a+55bqUIGF1dGhvcml0eSDmlofku7blj6/ku6XmnInlpJrkuKrlubbliJcgYDxEZWNpc2lvbiAuLi4+YCDmoLnjgILmr4/kuKrmoLnlvZLkuIDljJbkuLrni6znq4sgcmVzb3VyY2UgcmVjb3Jk77yM5bm25YWx5Lqr6K+l5paH5Lu255qEIGBkb2N1bWVudFVyaWAgcHJvdmVuYW5jZe+8m+mHjeWkjSBgI2lkYOOAgea3t+WQiOaguSBraW5kIOaIluS4jeWPl+aUr+aMgeeahOeJiOacrOS7jeaYr+mUmeivr+OAggoKIyMgUmVzb3VyY2VNYXBwaW5ncwoKbWFwcGluZyDmoLnmi6XmnInlpJrkuKrllK/kuIAgY29sbGVjdGlvbiBzdWJkb21haW7vvJtjb2xsZWN0aW9uIOeahCBgW11gIOaJv+i9vemHjeWkjeadoeebru+8mgoKYGBgeG5sCjxSZXNvdXJjZU1hcHBpbmdzICNkZW1vLnJlc291cmNlX3dvcmtmbG93Lm1hcHBpbmdzIGFwaVZlcnNpb249ImhhbGZjb2RlLnJlc291cmNlcy92MSIgdmVyc2lvbj0iMS4wLjAiICgKICA8UmVmZXJlbmNlVGFyZ2V0cyBbCiAgICA8UmVmZXJlbmNlVGFyZ2V0ICNmdW5jdGlvbl9kZXBlbmRlbmN5IHsKICAgICAgZnJvbUtpbmQgPSAiRnVuY3Rpb24iCiAgICAgIGZpZWxkID0gImRlcGVuZHNPbiIKICAgICAgdGFyZ2V0S2luZCA9ICJGdW5jdGlvbiIKICAgIH0+CiAgXT4KICA8Q2FsbGFibGVBcnRpZmFjdHMgWwogICAgPENhbGxhYmxlQXJ0aWZhY3QgI2Z1bmN0aW9uX2NhbGxhYmxlIHsKICAgICAga2luZCA9ICJGdW5jdGlvbiIKICAgICAgYmluZGluZyA9ICJDb2RlQmluZGluZy5zcmMiCiAgICB9PgogIF0+CiAgPFNvdXJjZVJvb3RzIFsKICAgIDxTb3VyY2VSb290ICNhdXRob3JpbmcgewogICAgICB1cmkgPSAidmZzOi8vQC9hcHBzL2RlbW8tcmVzb3VyY2Utd29ya2Zsb3ctYXV0aG9yaW5nL3Jlc291cmNlcy8iCiAgICB9PgogIF0+Cik+CmBgYAoKbWFwcGluZyBrZXkg5piv5pi+5byP5bGe5oCn5oiWIGAjaWRg77yM5LiN5b6X5oqK55So5oi35pWw5o2u5Yqo5oCB5ou86L+bIHRhZyDlkI3jgIIK"
86
86
  },
87
87
  {
88
88
  "skillFqn": "Halfcode.ResourceDsl.Skill.System",
@@ -180,8 +180,8 @@ const projection = {
180
180
  "skillVersion": "1.0.0",
181
181
  "capsuleRelativePath": "references/resource-dsl/files.md",
182
182
  "targetRelativePath": "sys-halfcode-resource-dsl/references/resource-dsl/files.md",
183
- "contentDigest": "sha256:9ef74af0a18f2c0fa3363a5f0ac40ac7c74f1b0c5afa61e2f2ec13049998366c",
184
- "contentBase64": "IyBmaWxlcwoKPGZxbj5IYWxmY29kZS5SZXNvdXJjZURzbC5XaWtpLmZpbGVzPC9mcW4+CjxraW5kPldpa2lQYWdlPC9raW5kPgo8ZGVzY3JpcHRpb24+UmVzb3VyY2Ugc291cmNlIHNoYXBlcywgVkZTIGNvbnRhaW5tZW50IGFuZCBmaWxlIHByb3ZlbmFuY2UuPC9kZXNjcmlwdGlvbj4KCiMgRmlsZXMgQW5kIEJ1bmRsZXMKCiMjIOWGheWuueS4uuecn+a6kAoKa2luZCDkuI4gaWRlbnRpdHkg5p2l6Ieq5paH5Lu25qC5IHRhZyDlkowgYCNpZGDjgILnm67lvZXlkI3jgIHmlofku7blkI3lkowgY2F0YWxvZyDot6/lvoTlj6rmmK/luIPlsYDvvJvmiavmj4/lmajkuI3lvpfpgJrov4flkI7nvIDmiJbnm67lvZXlkI3ooaXlhpnotYTmupDor63kuYnjgIIKCiMjIOS4pOenjeWumuS5ieW9ouaAgQoKLSDljZXmlofku7YgZGVmaW5pdGlvbu+8muS7u+aEj+aPj+i/sOaApyBgLnhubGAg5paH5Lu25ZCN77yM5paH5Lu25YaF5pyJ5LiA5Liq6K+t5LmJ5qC544CCCi0g55uu5b2VIGJ1bmRsZe+8muWFpeWPo+WbuuWumuS4uiBgbWFuaWZlc3QueG5sYO+8jOWfn+aWh+S7tuS9v+eUqOaPj+i/sOaApyBgLnhubGAg5paH5Lu25ZCN44CCCgrnm67lvZUgYnVuZGxlIOekuuS+i++8mgoKYGBgdGV4dApGdW5jdGlvbnMvCiAgUHJlcGFyZURhdGEvCiAgICBtYW5pZmVzdC54bmwgICAgICAgIyA8RnVuY3Rpb24gI2RlbW8ucmVzb3VyY2Vfd29ya2Zsb3cucHJlcGFyZV9kYXRhIC4uLj4KICAgIGluc3RydWN0aW9uLm1kICAgICAjIENvZGVCaW5kaW5nL0luc3RydWN0aW9uIOW8leeUqOeahCBtYXRlcmlhbApgYGAKCmBtYW5pZmVzdC54bmxgIOeahOagueWGs+WumiBidW5kbGUga2luZCDkuI4gaWRlbnRpdHnjgILni6znq4vlrZDln5/lj6/ku6Xku44gbWFuaWZlc3Qg55qEIGAoKWAg5Y6f5qC35aSW5o+Q5Li65ZCM5Z6L5Z+f5paH5Lu277yb5aSW5o+Q5LiN5pS55Y+YIGxvZ2ljYWwgcmVmc+OAggoKIyMg5Y2V5paH5Lu2IGZvcmVzdAoK5Y2V5paH5Lu26buY6K6k5Y+q5pyJ5LiA5Liq6K+t5LmJ5qC544CC5LuF5b2T5a+55bqUIGBLaW5kRGVmaW5pdGlvbmAg5ZCM5pe25aOw5piOIGBzb3VyY2VTaGFwZXMgPSBbInNpbmdsZS1maWxlIl1gIOS4jiBgZG9jdW1lbnRDYXJkaW5hbGl0eSA9ICJtYW55ImAg5pe277yM5ZCM5LiA5LiqIGAueG5sYCBhdXRob3JpdHkg5paH5Lu25omN5Y+v5Lul5YyF5ZCr5aSa5Liq5bm25YiX5qC544CCCgpmb3Jlc3Qg55qE5q+P5Liq5qC55piv54us56uL6LWE5rqQ77yM5b+F6aG75L2/55So5ZCM5LiAIEtpbmTvvIzlhbfmnInni6znq4sgYCNpZGDvvIzlubbpgJrov4for6UgS2luZCDnmoTniYjmnKzlpZHnuqbjgIJgUmVzb3VyY2VQYWNrYWdlYOOAgWNhdGFsb2fjgIFLaW5kRGVmaW5pdGlvbiDkuI7nm67lvZUgYnVuZGxlIOWFpeWPo+Wni+e7iOS/neaMgeWNleagueOAggoKIyMgUHJvdmVuYW5jZSDkuI4gbG9naWNhbCBwYXRoCgpsb2FkZXIg5Li65q+P5LiqIG5vcm1hbGl6ZWQgZGVzY3JpcHRvciDpmYTliqDlj6ror7sgcHJvdmVuYW5jZe+8mgoKLSBgZG9jdW1lbnRVcmlg77ya5Yqg6L29IGF1dGhvcml0eSDmlofmoaPnmoQgY2Fub25pY2FsIFZGUyBVUknvvJsKLSBgbG9naWNhbFBhdGhg77ya55u45a+5IHBhY2thZ2UgY2F0YWxvZyByb290IOeahOmAu+i+kei3r+W+hO+8mwotIGBwYWNrYWdlSWRg77ya5LuOIGBSZXNvdXJjZVBhY2thZ2UgI2lkYCDmtL7nlJ/vvJsKLSBgcmVzb3VyY2VJZGDvvJrmnaXoh6ogZGVzY3JpcHRvciDmoLkgYCNpZGDjgIIKCui/meS6m+Wtl+auteeUsSBsb2FkZXIg5oul5pyJ77yMYXV0aG9yIOS4jeWcqCBkZXNjcmlwdG9yIOS4remHjeWkjemFjee9ruOAgmNvbnN1bWVyIOWPr+S7peiusOW9lSBwcm92ZW5hbmNlIOeUqOS6juiviuaWre+8jOS9huS4jeW+l+S/ruaUueWQjuWPjeWGmSBYTkzjgIIKCiMjIOaJq+aPj+i+ueeVjAoKLSDpu5jorqTnm67lvZXlhaXlj6Pku4XkuLogYG1hbmlmZXN0LnhubGDjgIIKLSBgc2luZ2xlLWZpbGVgIGNhdGFsb2cg57y655yB5omr5o+PIHJvb3Qg5LiL5YWo6YOoIGAueG5sYO+8m+WjsOaYjiBgZW50cnkgPSAibmFtZS54bmwiYCDml7blj6rliqDovb3or6Xmlofku7bvvIzkvr/kuo7lpJrkuKrkuI3lkIwgS2luZCDlhbHnlKjkuIDkuKrniannkIbnm67lvZXjgIIKLSDpnZ7lhaXlj6MgYC54bmxgIOaWh+S7tuWPquiDveS9nOS4uuaYvuW8j+Wfny/nianmlpnooqvlhaXlj6PlvJXnlKjvvIzkuI3og73ooqvph43lpI3ms6jlhozkuLrnrKzkuozotYTmupDjgIIKLSDlpJrmoLnmlofmoaPlv4XpobvnlLEgS2luZERlZmluaXRpb24g5pi+5byP5o6I5p2D77ybbG9hZGVyIOS4jeagueaNruaWh+S7tuWQjeaIluagueaVsOmHj+eMnOa1iyBmb3Jlc3Qg6K+t5LmJ44CCCi0gY2F0YWxvZyByb290IOW/hemhu+aYryBgdmZzOi8vYCBVUknjgIIKLSByZXNvdXJjZS1jb3JlIOi0n+i0oyBVUkkg6Kej5p6Q44CB6L6555WM5qOA5p+l5ZKM6YeN5aSNIGlkZW50aXR5IOiviuaWre+8m2NvbnN1bWVyIOS4jeiHquihjOaJq+aPj+ejgeebmOOAggo="
183
+ "contentDigest": "sha256:642af5dcbffa06112876f654b4cd5e7e86498167484fd42c94cf25d1739e2e95",
184
+ "contentBase64": "IyBmaWxlcwoKPGZxbj5IYWxmY29kZS5SZXNvdXJjZURzbC5XaWtpLmZpbGVzPC9mcW4+CjxraW5kPldpa2lQYWdlPC9raW5kPgo8ZGVzY3JpcHRpb24+UmVzb3VyY2Ugc291cmNlIHNoYXBlcywgVkZTIGNvbnRhaW5tZW50IGFuZCBmaWxlIHByb3ZlbmFuY2UuPC9kZXNjcmlwdGlvbj4KCiMgRmlsZXMgQW5kIEJ1bmRsZXMKCiMjIOWGheWuueS4uuecn+a6kAoKa2luZCDkuI4gaWRlbnRpdHkg5p2l6Ieq5paH5Lu25qC5IHRhZyDlkowgYCNpZGDjgILnm67lvZXlkI3jgIHmlofku7blkI3lkowgY2F0YWxvZyDot6/lvoTlj6rmmK/luIPlsYDvvJvmiavmj4/lmajkuI3lvpfpgJrov4flkI7nvIDmiJbnm67lvZXlkI3ooaXlhpnotYTmupDor63kuYnjgIIKCiMjIOS4pOenjeWumuS5ieW9ouaAgQoKLSDljZXmlofku7YgZGVmaW5pdGlvbu+8muS7u+aEj+aPj+i/sOaApyBgLnhubGAg5oiWIGAubWRgIOaWh+S7tuWQje+8m1hOTCDmlofku7blhoXmnInkuIDkuKror63kuYnmoLnvvIxNYXJrZG93biDnlLEgZnJvbnRtYXR0ZXIg5aOw5piOIEtpbmQvRlFOIOW5tueUseato+aWh+aJv+i9veaWh+acrOWGheWuueOAggotIOebruW9lSBidW5kbGXvvJrlhaXlj6Plm7rlrprkuLogYG1hbmlmZXN0LnhubGDvvIzln5/mlofku7bkvb/nlKjmj4/ov7DmgKcgYC54bmxgIOaWh+S7tuWQjeOAggoK55uu5b2VIGJ1bmRsZSDnpLrkvovvvJoKCmBgYHRleHQKRnVuY3Rpb25zLwogIFByZXBhcmVEYXRhLwogICAgbWFuaWZlc3QueG5sICAgICAgICMgPEZ1bmN0aW9uICNkZW1vLnJlc291cmNlX3dvcmtmbG93LnByZXBhcmVfZGF0YSAuLi4+CiAgICBpbnN0cnVjdGlvbi5tZCAgICAgIyBDb2RlQmluZGluZy9JbnN0cnVjdGlvbiDlvJXnlKjnmoQgbWF0ZXJpYWwKYGBgCgpgbWFuaWZlc3QueG5sYCDnmoTmoLnlhrPlrpogYnVuZGxlIGtpbmQg5LiOIGlkZW50aXR544CC54us56uL5a2Q5Z+f5Y+v5Lul5LuOIG1hbmlmZXN0IOeahCBgKClgIOWOn+agt+WkluaPkOS4uuWQjOWei+Wfn+aWh+S7tu+8m+WkluaPkOS4jeaUueWPmCBsb2dpY2FsIHJlZnPjgIIKCiMjIOWNleaWh+S7tiBmb3Jlc3QKCuWNleaWh+S7tum7mOiupOWPquacieS4gOS4quivreS5ieagueOAguS7heW9k+WvueW6lCBgS2luZERlZmluaXRpb25gIOWQjOaXtuWjsOaYjiBgc291cmNlU2hhcGVzID0gWyJzaW5nbGUtZmlsZSJdYCDkuI4gYGRvY3VtZW50Q2FyZGluYWxpdHkgPSAibWFueSJgIOaXtu+8jOWQjOS4gOS4qiBgLnhubGAgYXV0aG9yaXR5IOaWh+S7tuaJjeWPr+S7peWMheWQq+WkmuS4quW5tuWIl+agueOAggoKZm9yZXN0IOeahOavj+S4quagueaYr+eLrOeri+i1hOa6kO+8jOW/hemhu+S9v+eUqOWQjOS4gCBLaW5k77yM5YW35pyJ54us56uLIGAjaWRg77yM5bm26YCa6L+H6K+lIEtpbmQg55qE54mI5pys5aWR57qm44CCYFJlc291cmNlUGFja2FnZWDjgIFjYXRhbG9n44CBS2luZERlZmluaXRpb24g5LiO55uu5b2VIGJ1bmRsZSDlhaXlj6Plp4vnu4jkv53mjIHljZXmoLnjgIIKCiMjIFByb3ZlbmFuY2Ug5LiOIGxvZ2ljYWwgcGF0aAoKbG9hZGVyIOS4uuavj+S4qiBub3JtYWxpemVkIGRlc2NyaXB0b3Ig6ZmE5Yqg5Y+q6K+7IHByb3ZlbmFuY2XvvJoKCi0gYGRvY3VtZW50VXJpYO+8muWKoOi9vSBhdXRob3JpdHkg5paH5qGj55qEIGNhbm9uaWNhbCBWRlMgVVJJ77ybCi0gYGxvZ2ljYWxQYXRoYO+8muebuOWvuSBwYWNrYWdlIGNhdGFsb2cgcm9vdCDnmoTpgLvovpHot6/lvoTvvJsKLSBgcGFja2FnZUlkYO+8muS7jiBgUmVzb3VyY2VQYWNrYWdlICNpZGAg5rS+55Sf77ybCi0gYHJlc291cmNlSWRg77ya5p2l6IeqIGRlc2NyaXB0b3Ig5qC5IGAjaWRg44CCCgrov5nkupvlrZfmrrXnlLEgbG9hZGVyIOaLpeacie+8jGF1dGhvciDkuI3lnKggZGVzY3JpcHRvciDkuK3ph43lpI3phY3nva7jgIJjb25zdW1lciDlj6/ku6XorrDlvZUgcHJvdmVuYW5jZSDnlKjkuo7or4rmlq3vvIzkvYbkuI3lvpfkv67mlLnlkI7lj43lhpkgWE5M44CCCgojIyDmiavmj4/ovrnnlYwKCi0g6buY6K6k55uu5b2V5YWl5Y+j5LuF5Li6IGBtYW5pZmVzdC54bmxg44CCCi0gYHNpbmdsZS1maWxlYCBjYXRhbG9nIOe8uuecgeaJq+aPjyByb290IOS4i+WFqOmDqCBgLnhubGAg5LiOIGAubWRg77yb5aOw5piOIGBlbnRyeSA9ICJuYW1lLnhubHxuYW1lLm1kImAg5pe25Y+q5Yqg6L296K+l5paH5Lu277yM5L6/5LqO5aSa5Liq5LiN5ZCMIEtpbmQg5YWx55So5LiA5Liq54mp55CG55uu5b2V44CCCi0g6Z2e5YWl5Y+jIGAueG5sYCDmlofku7blj6rog73kvZzkuLrmmL7lvI/ln58v54mp5paZ6KKr5YWl5Y+j5byV55So77yM5LiN6IO96KKr6YeN5aSN5rOo5YaM5Li656ys5LqM6LWE5rqQ44CCCi0g5aSa5qC55paH5qGj5b+F6aG755SxIEtpbmREZWZpbml0aW9uIOaYvuW8j+aOiOadg++8m2xvYWRlciDkuI3moLnmja7mlofku7blkI3miJbmoLnmlbDph4/njJzmtYsgZm9yZXN0IOivreS5ieOAggotIGNhdGFsb2cgcm9vdCDlv4XpobvmmK8gYHZmczovL2AgVVJJ44CCCi0gcmVzb3VyY2UtY29yZSDotJ/otKMgVVJJIOino+aekOOAgei+ueeVjOajgOafpeWSjOmHjeWkjSBpZGVudGl0eSDor4rmlq3vvJtjb25zdW1lciDkuI3oh6rooYzmiavmj4/no4Hnm5jjgIIK"
185
185
  },
186
186
  {
187
187
  "skillFqn": "Halfcode.ResourceDsl.Skill.System",
@@ -229,10 +229,10 @@ const projection = {
229
229
  "contentBase64": "IyBza2lsbC1jYXBzdWxlcwoKPGZxbj5IYWxmY29kZS5SZXNvdXJjZURzbC5XaWtpLnNraWxsLWNhcHN1bGVzPC9mcW4+CjxraW5kPldpa2lQYWdlPC9raW5kPgo8ZGVzY3JpcHRpb24+U2tpbGxDYXBzdWxlIGRlcGVuZGVuY2llcywgZGV0ZXJtaW5pc3RpYyBwbGFucyBhbmQgYXRvbWljIGRpc3RyaWJ1dGlvbi48L2Rlc2NyaXB0aW9uPgoKIyBTa2lsbENhcHN1bGUgRGVwZW5kZW5jaWVzIEFuZCBEaXN0cmlidXRpb24KCiMjIElkZW50aXR5IGF1dGhvcml0eQoK5paw55qEIGBTa2lsbENhcHN1bGVgIGRlc2NyaXB0b3Ig55SxIFhOTCDmoLnoioLngrnni6zljaAgRlFO44CBY29uc3VtZXItZmFjaW5nIGBuYW1lYOOAgWBhcGlWZXJzaW9uYCDkuI4gYHZlcnNpb25g44CCYFNLSUxMLm1ldGFkYXRhLnlhbWxgIOWPquS/neWtmCB0aXRsZS9kZXNjcmlwdGlvbiDnrYnlkYjnjrDlrZfmrrXvvIzkuI3ph43lpI0gbmFtZS92ZXJzaW9u77ybYXNzZW1ibHkg5Lya5oqKIGNhbm9uaWNhbCBYTkwgbmFtZS92ZXJzaW9uIOaKleW9see7meaooeadv+OAguiLpSBkZXNjcmlwdG9yIOW3suWjsOaYjiBgbmFtZWAg6ICMIFlBTUwg5LuN6YeN5aSN6K+l5a2X5q6177yMYXNzZW1ibHkg5ZyoIGNvbXBpbGVyIOWGmeWFpeWJjeS7pSBgU0tJTExfQ0FQU1VMRV9OQU1FX0RVUExJQ0FURWAg5aSx6LSl44CC5Y6G5Y+yIGRlc2NyaXB0b3Ig5pyq5aOw5piOIFhOTCBuYW1lIOaXtu+8jOaXouaciSBZQU1MIG5hbWUg5LiOIEZRTiDlsL7mrrUgZmFsbGJhY2sg57un57ut5YW85a6577yb5paw6LWE5rqQ5LiN5b6X6YeH55So6K+l5YW85a656Lev5b6E44CCCgpYTkwgYHZlcnNpb25gIOS5n+aYryBjYXBzdWxlIGlkZW50aXR5IOS4jiBkZXBlbmRlbmN5IGJpbmRpbmcg55qE5ZSv5LiAIHZlcnNpb24gYXV0aG9yaXR544CC5Y6G5Y+yIFlBTUwg6Iul5LuN5bimIGB2ZXJzaW9uYO+8jOW/hemhu+S4jiBYTkwg5Lil5qC855u4562J77yM5ZCm5YiZIGFzc2VtYmx5IOS7pSBgU0tJTExfQ0FQU1VMRV9WRVJTSU9OX0NPTkZMSUNUYCDlpLHotKXjgIIKCmBgYHhubAo8U2tpbGxDYXBzdWxlICNleGFtcGxlLnJlc291cmNlX2xpZmVjeWNsZS5za2lsbC5hdXRob3JpbmcKICBhcGlWZXJzaW9uPSJoYWxmY29kZS5yZXNvdXJjZXMvdjEiCiAgdmVyc2lvbj0iMS4wLjAiIHsKICBuYW1lID0gImV4YW1wbGUtcmVzb3VyY2UtYXV0aG9yaW5nIgogIGRlc2NyaXB0aW9uID0gIkdlbmVyaWMgcmVzb3VyY2UgYXV0aG9yaW5nIG9wZXJhdGlvbnMuIgp9ICgKICA8U2tpbGxNZXRhZGF0YSB7IGhyZWYgPSAidmZzOi8vLi9TS0lMTC5tZXRhZGF0YS55YW1sIiBmb3JtYXQgPSAieWFtbCIgfT4KICA8VGVtcGxhdGUgeyBocmVmID0gInZmczovLy4vU0tJTEwudGVtcGxhdGUuZWpzIiBmb3JtYXQgPSAiZWpzIiB9PgopPgpgYGAKCuWvueW6lCBZQU1MIOWPquS/neWtmOWRiOeOsOWtl+aute+8mgoKYGBgeWFtbAp0aXRsZTogRXhhbXBsZSBSZXNvdXJjZSBBdXRob3JpbmcKZGVzY3JpcHRpb246IEdlbmVyaWMgcmVzb3VyY2UgYXV0aG9yaW5nIG9wZXJhdGlvbnMuCmBgYAoKIyMgYFNraWxsRGVwZW5kZW5jaWVzYCDkuI4gYEluY2x1ZGVzYAoK5Lik56eN5YWz57O75LiN5Y+v5LqS5o2i77yM5Lmf5LiN5YGa5ZCN56ew5oiW5paH5pys5o6o5pat77yaCgotIGBTa2lsbERlcGVuZGVuY2llcy9Ta2lsbERlcGVuZGVuY3lgIOWjsOaYjuWQjOS4gOS4qiBgQXBwbGljYXRpb25Bc3NlbWJseS5ieUZxbmAgcmVzb3VyY2UgdW5pdmVyc2Ug5Lit55qEIHNpYmxpbmcgYFNraWxsQ2Fwc3VsZWDjgIJgcmVmYCDlv4XpobvmmK8gYHJlc291cmNlOi8vPEZRTj5g77yM55uu5qCHIGtpbmQg5b+F6aG75pivIGBTa2lsbENhcHN1bGVg77yMYHZlcnNpb25gIOaYr+W/heWhq+eahOeyvuehriBiaW5kaW5n77yb5b2T5YmN54mI5pys5LiN6Kej6YeKIHNlbXZlciByYW5nZeOAggotIGBJbmNsdWRlcy9JbmNsdWRlYCDpgInmi6nopoHnvJblhaXlvZPliY0gY2Fwc3VsZSDnmoQgRnVuY3Rpb27jgIFQcm9tcHRGcmFnbWVudCDnrYnmma7pgJrotYTmupDjgILljbPkvr/kuIDkuKogSW5jbHVkZSDlhpnkuoYgYGtpbmQgPSAiU2tpbGxDYXBzdWxlImDvvIxwbGFubmVyIOS5n+S4jeS8muaKiuWug+aPkOWNh+S4uiBzaWJsaW5nIGRlcGVuZGVuY3njgIIKCmBgYHhubAo8U2tpbGxEZXBlbmRlbmNpZXMgWwogIDxTa2lsbERlcGVuZGVuY3kgewogICAgcmVmID0gInJlc291cmNlOi8vZXhhbXBsZS5yZXNvdXJjZV9saWZlY3ljbGUuc2tpbGwucmVzb3VyY2VfZHNsIgogICAgdmVyc2lvbiA9ICIxLjAuMCIKICB9PgpdPgo8SW5jbHVkZXMgWwogIDxJbmNsdWRlIHsKICAgIGtpbmQgPSAiUHJvbXB0RnJhZ21lbnQiCiAgICByZWYgPSAicmVzb3VyY2U6Ly9leGFtcGxlLnJlc291cmNlX2xpZmVjeWNsZS5wcm9tcHQuYXV0aG9yaW5nX3ByZWx1ZGUiCiAgfT4KXT4KYGBgCgrnvLrlpLHnm67moIfjgIHplJnor68ga2luZOOAgemHjeWkjSBkZXBlbmRlbmN544CB57K+56Gu54mI5pys5LiN5Yy56YWN5ZKMIGN5Y2xlIOmDveS8miBmYWlsIGNsb3NlZOOAguS+nei1luino+aekOWPquivu+WPluaXouaciSBhcHBsaWNhdGlvbiBhc3NlbWJsee+8jOS4jeWIm+W7uuesrOS6jOS7vSBjYXRhbG9nIOaIliBzY2FubmVy44CCCgojIyDlm5sgU2tpbGwgY2Fub25pY2FsIHRvcG9sb2d5Cgrop4TojIPnpLrkvovkvb/nlKjkuI7lhbfkvZPkuqflk4Hml6DlhbPnmoTlm5vkuKogU2tpbGzvvJoKCmBgYHRleHQKcmVzb3VyY2UgRFNMIC0+IGF1dGhvcmluZyAtPiBkZXZvcHMvcm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgcnVuIC0+IGRldm9wcy9yb290CmBgYAoKLSBgZGV2b3BzL3Jvb3RgIOaYvuW8j+S+nei1liBgYXV0aG9yaW5nYCDkuI4gYHJ1bmDvvJsKLSBgYXV0aG9yaW5nYCDmmL7lvI/kvp3otZblhbHkuqsgYHJlc291cmNlIERTTGDvvJsKLSBgcnVuYCDkuI4gYHJlc291cmNlIERTTGAg5rKh5pyJIHNpYmxpbmcgZGVwZW5kZW5jeeOAggoK5a6M5pW0IGRlc2NyaXB0b3Ig5YiG5Yir5L2N5LqOIFtza2lsbC1jYXBzdWxlLWRldm9wcy54bmxdKGV4YW1wbGVzL3NraWxsLWNhcHN1bGUtZGV2b3BzLnhubCnjgIFbc2tpbGwtY2Fwc3VsZS1hdXRob3JpbmcueG5sXShleGFtcGxlcy9za2lsbC1jYXBzdWxlLWF1dGhvcmluZy54bmwp44CBW3NraWxsLWNhcHN1bGUtcnVuLnhubF0oZXhhbXBsZXMvc2tpbGwtY2Fwc3VsZS1ydW4ueG5sKSDlkowgW3NraWxsLWNhcHN1bGUtcmVzb3VyY2UtZHNsLnhubF0oZXhhbXBsZXMvc2tpbGwtY2Fwc3VsZS1yZXNvdXJjZS1kc2wueG5sKeOAguWPr+WKoOi9veOAgeWPr+inhOWIkueahCBidW5kbGUgZml4dHVyZSDkvY3kuo4gYGFwcHMvZGVtby1yZXNvdXJjZS13b3JrZmxvdy1hdXRob3JpbmcvcmVzb3VyY2VzLXhubC9Ta2lsbENhcHN1bGVzL1RvcG9sb2d5KmDjgILmiYDmnIkgY29uc3VtZXIgbmFtZSDkuI4gdmVyc2lvbiDpg73nlLEgWE5MIOWjsOaYju+8jGRlcGVuZGVuY3kg57uR5a6aIGAxLjAuMGDvvIxZQU1MIOS4jemHjeWkjSBpZGVudGl0eSDlrZfmrrXjgIIKCiMjIERldGVybWluaXN0aWMgcGxhbiDkuI4gYXRvbWljIGFwcGx5CgpgcGxhblNraWxsQ2Fwc3VsZURpc3RyaWJ1dGlvbmAg5LiOIGBhcHBseVNraWxsQ2Fwc3VsZURpc3RyaWJ1dGlvblBsYW5gIOaYr+S4pOS4queLrOeri+mYtuaute+8mgoKMS4gcGxhbm5lciDku47mmL7lvI8gcm9vdHMg6Kej5p6Q5Lyg6YCS6Zet5YyF77yM5oyJ5Zu65a6aIGNvZGUtdW5pdCDpobrluo/nlJ/miJAgZGVwZW5kZW5jeS1maXJzdCB0b3BvbG9nee+8mwoyLiBwbGFubmVyIOivu+WPluaJgOaciSBnZW5lcmF0ZWQvbWFwcGVkIGJ5dGVz77yM5bm25bCGIGNhbm9uaWNhbCBieXRlcyDkv53lrZjkuLrkuI3lj6/lj5jjgIHlj6/luo/liJfljJbnmoQgYGNvbnRlbnRCYXNlNjRgIGF1dGhvcml0ee+8m+WFvOWuueWtl+autSBgY29udGVudGAg5q+P5qyh6K+75Y+W5Y+q6L+U5Zue5paw55qEIGRlZmVuc2l2ZSBjb3B577ybCjMuIHBsYW5uZXIg5a+55omA5pyJ5Lya6L+b5YWlIFNLSUxML3JlZmVyZW5jZS9jYWxsYWJsZSBieXRlcyDnmoTotYTmupDpm4blkIjmjIkgRlFOIOS9v+eUqOWbuuWumiBVVEYtMTYgY29kZS11bml0IGNvbXBhcmF0b3Ig5o6S5bqP77yM5bm25a+55a6M5pW0IGNsb3N1cmUg5YGa6YeN5aSNIG91dHB1dCBuYW1l44CB55u45ZCMIHRhcmdldCDkuI7mlofku7Yv55uu5b2VIHByZWZpeCBjb2xsaXNpb24gcHJlZmxpZ2h077ybCjQuIHBsYW4g5L+d5a2YIHZlcnNpb25lZCBjb250ZW50L2NhcHN1bGUvY2xvc3VyZSBkaWdlc3TvvIzkuJTkuI3lkKvnu53lr7not6/lvoTjgIHml7bpl7TmiLPmiJblh73mlbDlr7nosaHvvJtwbGFuIOaIkOWKn+aIluWksei0pemDveS4jeWGmeebruaghyByb29077ybCjUuIGFwcGxpZXIg5YWIIGZhaWwtY2xvc2VkIOagoemqjOmdnuepuiByb290c+OAgXJvb3Qg5Y+v6L6+55qE5a6M5pW06Zet5YyF44CBY2Fub25pY2FsIGJhc2U2NCDkuI7lhajpg6ggZGlnZXN077yM5YaN5ZyoIGNhbGxlciDmj5DkvpvnmoQgYG91dHB1dFJvb3RgIOWQjOeItuebruW9lSBzdGFnZeOAgXJlYWRiYWNr77yM5LulIGJhY2t1cC9yZW5hbWUvcm9sbGJhY2sg5oiQ57uE5YiH5o2i44CCCgrmr4/kuKogcGxhbm5lZCBjYXBzdWxlIOi/mOW/hemhu+WMheWQq+WbuuWumui3r+W+hCBgcmVmZXJlbmNlcy8uaGFsZmNvZGUvcHJvdmVuYW5jZS5qc29uYOOAguivpeaWh+S7tueUsSBjb21waWxlciDnlJ/miJDvvIzkuI3nlLHmqKHmnb/nu7TmiqTvvJvlroPorrDlvZUgYGhhbGZjb2RlLnNraWxsLXByb3ZlbmFuY2UvdjFgIGZvcm1hdOOAgWBoYWxmY29kZS5za2lsbC1kaXN0cmlidXRpb24vdjFgIGdlbmVyYXRvcuOAgVNraWxsQ2Fwc3VsZSBYTkwg55qEIEZRTi9hcGlWZXJzaW9uL3ZlcnNpb27vvIzku6Xlj4rpmaToh6rouqvku6XlpJblhajpg6ggcGF5bG9hZCBmaWxlcyDnmoQgY2Fub25pY2FsIHBhdGgvY29udGVudCBkaWdlc3TjgIJtYW5pZmVzdCDoh6rouqvkvZzkuLrmma7pgJogcGxhbm5lZCBmaWxlIOi/m+WFpSBjYXBzdWxlL2Nsb3N1cmUgZGlnZXN077yM5Zug5q2k5LiN6ZyA6KaB6Ieq5byV55So5pGY6KaB44CCYXBwbGllciDkvJrlnKjku7vkvZXnm67moIflhpnlhaXliY3ku44gcGxhbiDph43lu7rlubYgZXhhY3Qg5qCh6aqM6L+Z5LqbIGZhY3Rz44CCCgpgYGB0cwpjb25zdCBwbGFuID0gYXdhaXQgcGxhblNraWxsQ2Fwc3VsZURpc3RyaWJ1dGlvbih7CiAgYXNzZW1ibHksCiAgcm9vdFNraWxsRnFuczogWyJleGFtcGxlLnJlc291cmNlX2xpZmVjeWNsZS5za2lsbC5kZXZvcHMiXSwKfSkKCmF3YWl0IGFwcGx5U2tpbGxDYXBzdWxlRGlzdHJpYnV0aW9uUGxhbihwbGFuLCB7IG91dHB1dFJvb3QgfSkKYGBgCgpIYWxmY29kZSDlj6rmi6XmnInpgJrnlKggcmVzb3VyY2UgZGVwZW5kZW5jeeOAgXBsYW4g5LiOIGF0b21pYyBhcHBseSBjb250cmFjdO+8m+ebruaghyByb29044CB5a6J6KOF5L2N572u44CB55Sf5ZG95ZGo5pyf6Zi25q615ZKM5Y2H57qn562W55Wl6YO955SxIGNhbGxlci9ob3N0IOWGs+WumuOAgmNvbXBpbGVyIOS4jeaOqOWvvOi/meS6myBwb2xpY3nvvIzkuZ/kuI3miorlroPku6zlhpnov5votYTmupAgYXV0aG9yaXR544CCCgojIyBDb25zdW1lciBSZXNvdXJjZSBEU0wgU2tpbGwKCmBkb2NzL3Jlc291cmNlLWRzbC9tYW5pZmVzdC54bmxgIOWwhuacrOebruW9leeahCBjYW5vbmljYWwg5paH5qGj55m76K6w5Li6IFJlc291cmNlUGFja2FnZS9XaWtpUGFnZSByZXNvdXJjZXPvvIzlubblo7DmmI4gYEhhbGZjb2RlLlJlc291cmNlRHNsLlNraWxsLlN5c3RlbWDjgIJjb21waWxlciDku47ov5nkupvljp/lp4vmlofmoaPnlJ/miJAgYHN5cy1oYWxmY29kZS1yZXNvdXJjZS1kc2xAMS4wLjBgIOeahCByZWZlcmVuY2Vz77ybYFNLSUxMLm1kYCDlj6rmj5DkvpvmuJDov5vliqDovb3pobrluo/vvIzkuI3lpI3liLbop4TojIPmraPmlofvvIzkuZ/kuI3ljIXlkKvku5PlupPnu7TmiqTlkb3ku6TmiJYgaG9zdCDlronoo4Xmk43kvZzjgILku5PlupPnu7TmiqTogIXnu6fnu63kvb/nlKggYHNraWxscy9mcmFtZXdvcmstcmVzb3VyY2UtZHNsYO+8jOS4pOiAheiBjOi0o+S4jeWPr+S6kuaNouOAggoK5pei5pyJIGBjb21waWxlU2tpbGxDYXBzdWxlYOOAgWBjb21waWxlUmVzb3VyY2VTa2lsbENhcHN1bGVgIOS4jiBgU2tpbGxDYXBzdWxlUGxhbmAg5L+d5oyB5YW85a6544CC5pawIHBsYW5uZXIvYXBwbGllciDlkoznsbvlnovku44gcGFja2FnZSByb290IOWPiiBgaGFsZmNvZGUtY29tcGlsZXIueG5sL3NraWxsLWNhcHN1bGVgIGFkZGl0aXZlIOWvvOWHuuOAggo="
230
230
  }
231
231
  ],
232
- "capsuleDigest": "sha256:b247b8c787fe102900d24355b161159e259f5d3d3adb33a19b3772eff9808401"
232
+ "capsuleDigest": "sha256:de0d03ff0d60f824eb4b34cb3417e660135d231ffe84d530cb61bd5e5d6eaed3"
233
233
  }
234
234
  ],
235
- "closureDigest": "sha256:d393bdadf05cfa13ba0a497495136aaec8eed7499e3fbbd087985f360045bafc"
235
+ "closureDigest": "sha256:4d0b9cd96b326b85b9681e9ec4f0ce3fda11b92cd0c68c46ac474e5b7f460fd7"
236
236
  }
237
237
 
238
238
  function hydrateFile(file) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "halfcode-compiler.xnl",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Compile XNL-described applications into runtime-ready skill capsules.",
5
5
  "type": "module",
6
6
  "private": false,