@takuhon/core 0.8.2 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -0
- package/dist/index.js +9214 -10
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../takuhon.schema.json","../src/schema.ts","../src/validate.ts","../src/normalize.ts","../src/locale-tag.ts","../src/resolve-locale.ts","../src/jsonld.ts","../src/export.ts","../src/privacy-filter.ts","../src/migrations/_chain.ts","../src/migrations/v0.1.0-to-v0.2.0.ts","../src/migrations/v0.2.0-to-v0.3.0.ts","../src/migrations/v0.3.0-to-v0.4.0.ts","../src/migrations/index.ts","../src/migrate.ts","../src/storage-interface.ts","../src/index.ts"],"sourcesContent":["{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://takuhon.example/schemas/0.4.0/takuhon.schema.json\",\n \"title\": \"Takuhon Profile\",\n \"description\": \"Portable profile data format consumed by @takuhon/core. The canonical contract for profile content authored as takuhon.json.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"schemaVersion\",\n \"profile\",\n \"links\",\n \"careers\",\n \"projects\",\n \"skills\",\n \"contact\",\n \"settings\",\n \"meta\"\n ],\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[a-zA-Z0-9.-]+)?$\",\n \"description\": \"Semantic version of the takuhon schema this document conforms to.\"\n },\n \"profile\": { \"$ref\": \"#/$defs/Profile\" },\n \"links\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Link\" }\n },\n \"careers\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Career\" }\n },\n \"projects\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Project\" }\n },\n \"skills\": {\n \"type\": \"array\",\n \"maxItems\": 200,\n \"items\": { \"$ref\": \"#/$defs/Skill\" }\n },\n \"certifications\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Certification\" }\n },\n \"memberships\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Membership\" }\n },\n \"volunteering\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Volunteering\" }\n },\n \"honors\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Honor\" }\n },\n \"education\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"$ref\": \"#/$defs/Education\" }\n },\n \"publications\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Publication\" }\n },\n \"languages\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"$ref\": \"#/$defs/Language\" }\n },\n \"courses\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Course\" }\n },\n \"patents\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Patent\" }\n },\n \"testScores\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"$ref\": \"#/$defs/TestScore\" }\n },\n \"recommendations\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Recommendation\" }\n },\n \"contact\": { \"$ref\": \"#/$defs/Contact\" },\n \"settings\": { \"$ref\": \"#/$defs/Settings\" },\n \"meta\": { \"$ref\": \"#/$defs/Meta\" }\n },\n \"$defs\": {\n \"LocaleTag\": {\n \"type\": \"string\",\n \"minLength\": 2,\n \"maxLength\": 35,\n \"pattern\": \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\",\n \"description\": \"BCP-47 language tag (e.g., 'en', 'ja', 'zh-Hant', 'pt-BR').\"\n },\n \"Iso3166Alpha2\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Z]{2}$\",\n \"description\": \"ISO 3166-1 alpha-2 country code (uppercase, two letters).\"\n },\n \"YearMonth\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]{4}-(0[1-9]|1[0-2])$\",\n \"description\": \"Year-month in 'YYYY-MM' format (Gregorian calendar).\"\n },\n \"IsoDateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"ISO 8601 date-time (e.g., 2026-05-11T12:34:56Z).\"\n },\n \"Url\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"maxLength\": 2048\n },\n \"Email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"maxLength\": 254\n },\n \"Slug\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"pattern\": \"^[a-z0-9][a-z0-9-]*$\",\n \"description\": \"URL-safe identifier (lowercase alphanumerics and hyphens, must start with alphanumeric).\"\n },\n \"LocalizedTitle\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"propertyNames\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"\n },\n \"additionalProperties\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 200\n },\n \"description\": \"Map of BCP-47 locale tag to short title-like string (max 200 chars per value).\"\n },\n \"LocalizedBody\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"propertyNames\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"\n },\n \"additionalProperties\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 5000\n },\n \"description\": \"Map of BCP-47 locale tag to body-length string (max 5000 chars per value).\"\n },\n \"LinkType\": {\n \"type\": \"string\",\n \"enum\": [\n \"website\",\n \"blog\",\n \"github\",\n \"gitlab\",\n \"linkedin\",\n \"x\",\n \"mastodon\",\n \"bluesky\",\n \"instagram\",\n \"youtube\",\n \"threads\",\n \"facebook\",\n \"email\",\n \"rss\",\n \"custom\"\n ],\n \"description\": \"Identifies the kind of link. 'custom' requires iconUrl.\"\n },\n \"Profile\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"displayName\"],\n \"properties\": {\n \"displayName\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"tagline\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"bio\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"avatar\": { \"$ref\": \"#/$defs/Avatar\" },\n \"location\": { \"$ref\": \"#/$defs/Address\" }\n }\n },\n \"Avatar\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"url\"],\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\",\n \"maxLength\": 2048,\n \"description\": \"URL or path to the avatar image.\"\n },\n \"alt\": { \"$ref\": \"#/$defs/LocalizedTitle\" }\n }\n },\n \"Address\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"country\": { \"$ref\": \"#/$defs/Iso3166Alpha2\" },\n \"region\": { \"type\": \"string\", \"maxLength\": 100 },\n \"locality\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"display\": { \"$ref\": \"#/$defs/LocalizedTitle\" }\n }\n },\n \"Link\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"id\", \"type\", \"url\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"type\": { \"$ref\": \"#/$defs/LinkType\" },\n \"label\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"featured\": { \"type\": \"boolean\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 },\n \"iconUrl\": { \"$ref\": \"#/$defs/Url\" }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": { \"type\": { \"const\": \"custom\" } },\n \"required\": [\"type\"]\n },\n \"then\": {\n \"properties\": { \"iconUrl\": { \"$ref\": \"#/$defs/Url\" } },\n \"required\": [\"iconUrl\"]\n }\n }\n ]\n },\n \"Career\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"organization\", \"role\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"organization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"role\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }]\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"location\": { \"$ref\": \"#/$defs/Address\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Project\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 50 }\n },\n \"relatedCareerId\": { \"$ref\": \"#/$defs/Slug\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }]\n },\n \"highlighted\": { \"type\": \"boolean\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Skill\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"label\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"label\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 },\n \"category\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"description\": \"Recommended values (extensible): programming, design, business, communication, language, music, art, sports, other.\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Contact\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"email\": { \"$ref\": \"#/$defs/Email\" },\n \"showEmail\": { \"type\": \"boolean\", \"default\": false },\n \"formUrl\": { \"$ref\": \"#/$defs/Url\" }\n }\n },\n \"Settings\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"defaultLocale\", \"availableLocales\"],\n \"properties\": {\n \"defaultLocale\": { \"$ref\": \"#/$defs/LocaleTag\" },\n \"fallbackLocale\": { \"$ref\": \"#/$defs/LocaleTag\" },\n \"availableLocales\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 50,\n \"uniqueItems\": true,\n \"items\": { \"$ref\": \"#/$defs/LocaleTag\" }\n },\n \"theme\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"description\": \"UI theme identifier. 'default' is the built-in theme; adapters may add more.\"\n },\n \"showPoweredBy\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Display the 'Powered by takuhon' attribution in the rendered profile.\"\n },\n \"enableJsonLd\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Emit Schema.org JSON-LD on the rendered profile page.\"\n },\n \"enableApi\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Expose the public read API endpoints (GET /api/profile, /api/jsonld, /api/schema, /takuhon.json).\"\n },\n \"enableAnalytics\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Opt-in flag for first-party analytics. Default is false to keep takuhon privacy-respecting by default.\"\n }\n }\n },\n \"Meta\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"contentLicense\"],\n \"properties\": {\n \"createdAt\": { \"$ref\": \"#/$defs/IsoDateTime\" },\n \"updatedAt\": { \"$ref\": \"#/$defs/IsoDateTime\" },\n \"generator\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"description\": \"Tool that produced this document (e.g. 'Takuhon', 'create-takuhon@0.1.0').\"\n },\n \"contentLicense\": { \"$ref\": \"#/$defs/ContentLicense\" },\n \"privacy\": { \"$ref\": \"#/$defs/MetaPrivacy\" }\n }\n },\n \"ContentLicense\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"spdxId\"],\n \"properties\": {\n \"spdxId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"description\": \"SPDX identifier (e.g., 'CC-BY-4.0', 'CC0-1.0') or 'Proprietary'. No default; the profile owner must choose explicitly.\"\n },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"attribution\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 200 },\n \"url\": { \"$ref\": \"#/$defs/Url\" }\n }\n },\n \"rights\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000,\n \"description\": \"Free-form rights statement (used when spdxId='Proprietary' or for additional notices).\"\n }\n }\n },\n \"MetaPrivacy\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"description\": \"Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/admin/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.\",\n \"properties\": {\n \"hideCredentialIds\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"When true (default), strip certifications[*].credentialId from public responses.\"\n },\n \"hideEducationGrades\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"When true (default), strip education[*].grade from public responses.\"\n }\n }\n },\n \"Certification\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"issuingOrganization\", \"issueDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"issuingOrganization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"issueDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"expirationDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }],\n \"description\": \"null = explicitly 'no expiration'. Omit if unknown/unstated.\"\n },\n \"credentialId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"description\": \"License or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds.\"\n },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Membership\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"organization\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"organization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"role\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }],\n \"description\": \"null = ongoing. Omit if unknown.\"\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Volunteering\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"organization\", \"role\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"organization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"role\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"cause\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }]\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Honor\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"issuer\", \"date\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"issuer\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Education\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"institution\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"institution\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"degree\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"fieldOfStudy\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"grade\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 50,\n \"description\": \"Free-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades.\"\n },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }],\n \"description\": \"null = currently enrolled.\"\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Publication\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"date\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"publisher\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"doi\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 200,\n \"description\": \"DOI identifier (e.g. '10.1145/3548643.3548644'). The full URL goes in 'url'.\"\n },\n \"coAuthors\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 },\n \"description\": \"Co-author names in original script. Excludes the profile owner.\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Language\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"language\", \"proficiency\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"language\": { \"$ref\": \"#/$defs/LocaleTag\" },\n \"displayName\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"proficiency\": {\n \"type\": \"string\",\n \"enum\": [\"native\", \"fluent\", \"professional\", \"intermediate\", \"basic\"],\n \"description\": \"LinkedIn-compatible 5-level proficiency.\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Course\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"provider\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"courseNumber\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 50 },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"completionDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"certificateUrl\": { \"$ref\": \"#/$defs/Url\" },\n \"relatedEducationId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to an education[].id (e.g. for university coursework).\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Patent\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"patentNumber\", \"status\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"patentNumber\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 },\n \"office\": {\n \"type\": \"string\",\n \"maxLength\": 100,\n \"description\": \"Patent office name (e.g. 'USPTO', 'JPO', 'EPO').\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\", \"issued\", \"expired\", \"abandoned\"]\n },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"filingDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"grantDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"coInventors\": {\n \"type\": \"array\",\n \"maxItems\": 20,\n \"items\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 }\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"TestScore\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"score\", \"date\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"score\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 50,\n \"description\": \"Free-form score string (e.g. '112 / 120', '330', 'N1 Pass', or a percentile). The validator does not interpret its contents.\"\n },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"relatedEducationId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to an education[].id (e.g. for a university course exam).\"\n },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Recommendation\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"body\", \"author\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"body\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"author\": { \"$ref\": \"#/$defs/RecommendationAuthor\" },\n \"relationship\": {\n \"$ref\": \"#/$defs/LocalizedTitle\",\n \"description\": \"How the recommender relates to the profile owner (e.g. 'managed directly', 'worked together').\"\n },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"relatedCareerId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to a careers[].id (the position the recommendation pertains to).\"\n },\n \"relatedEducationId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to an education[].id (e.g. a recommendation from a professor).\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"RecommendationAuthor\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"description\": \"Recommender's name, in its original script. Owner-curated; takuhon does not verify it.\"\n },\n \"headline\": {\n \"$ref\": \"#/$defs/LocalizedTitle\",\n \"description\": \"Recommender's title / role / organization at the time of the recommendation.\"\n },\n \"url\": {\n \"$ref\": \"#/$defs/Url\",\n \"description\": \"Link to the recommender's profile, for external verification by the reader.\"\n }\n }\n }\n }\n}\n","/**\n * Re-exports the canonical JSON Schema for takuhon profiles.\n *\n * The schema source of truth lives at `packages/core/takuhon.schema.json`\n * (also distributed via the `@takuhon/core/schema.json` sub-path). This module\n * is the convenient ESM-side entry point for consumers that want to feed it\n * directly to a JSON Schema validator (e.g. Ajv) without a filesystem read.\n */\n\nimport schemaJson from '../takuhon.schema.json' with { type: 'json' };\n\nexport const schema = schemaJson;\nexport type Schema = typeof schemaJson;\n","/**\n * Schema validation for takuhon profile documents.\n *\n * Compiles the canonical {@link import('../takuhon.schema.json')} once at module\n * load and exposes a Result-style {@link validate} that returns either the\n * narrowed {@link Takuhon} value or a list of structured {@link ValidationError}s.\n * The validator is the canonical correctness boundary inside `@takuhon/core`:\n * `normalize` (commit 3) and the API layer (commit 11+) both rely on this\n * function to know the shape they are working with.\n *\n * Design notes:\n * - Returns a discriminated union rather than throwing so callers (CLI,\n * normalize, RFC 7807 Problem Details adapters) can route errors however they\n * like without paying for stack capture on every failure.\n * - Errors carry the RFC 6901 JSON Pointer of the offending value plus the\n * failing Ajv keyword, so consumers can render messages or look up the\n * relevant Spec section without leaking Ajv-specific types.\n * - The Ajv 2020 build is used because the schema declares\n * `$schema: \"https://json-schema.org/draft/2020-12/schema\"`.\n */\n\nimport type { ErrorObject } from 'ajv';\nimport Ajv2020 from 'ajv/dist/2020.js';\nimport addFormats from 'ajv-formats';\n\nimport { schema } from './schema.js';\nimport type { Takuhon } from './types.js';\n\n/**\n * Schema versions this build of `@takuhon/core` accepts directly.\n *\n * The migration registry (Phase 1 commit 6+) will translate older `schemaVersion`\n * values into the current one before validation runs, so this list reflects the\n * versions whose JSON Schema this package literally bundles, not the full\n * support window seen by end users.\n */\nexport const SUPPORTED_SCHEMA_VERSIONS = ['0.1.0', '0.2.0', '0.3.0', '0.4.0'] as const;\n\n/**\n * A single validation failure.\n *\n * The shape is intentionally schema-agnostic: an API layer can adapt it into an\n * RFC 7807 Problem Details payload, a CLI can render the message, and a future\n * spec-section lookup table can join on {@link pointer} to surface\n * documentation references. A `specSection` field will be added in a later\n * commit; this minimal surface is what commit 2 ships.\n */\nexport interface ValidationError {\n /** RFC 6901 JSON Pointer to the offending value, e.g. `\"/links/4/iconUrl\"`. */\n pointer: string;\n /** Human-readable failure description (sourced from Ajv when available). */\n message: string;\n /**\n * The schema keyword that failed: `'required'`, `'enum'`, `'pattern'`,\n * `'additionalProperties'`, `'format'`, `'maxItems'`, `'maxLength'`, etc.\n * The value `'schemaVersion'` is reserved for documents whose\n * `schemaVersion` lies outside {@link SUPPORTED_SCHEMA_VERSIONS}.\n */\n keyword: string;\n /** JSON Pointer into the schema for the failing rule, e.g. `\"#/$defs/Link/required\"`. */\n schemaPointer?: string;\n}\n\n/** Result of {@link validate}. Narrow on `ok` to access `data` or `errors`. */\nexport type ValidationResult =\n | { ok: true; data: Takuhon }\n | { ok: false; errors: ValidationError[] };\n\nconst ajv = new Ajv2020({\n allErrors: true,\n strict: true,\n});\naddFormats(ajv);\n\n// Per design decision #5 we skip `JSONSchemaType<Takuhon>` and let Ajv compile\n// the schema object as-is; the `<Takuhon>` type argument only records the\n// validated result type for downstream narrowing.\nconst compiled = ajv.compile<Takuhon>(schema);\n\n/**\n * Validate an arbitrary value against the bundled takuhon schema.\n *\n * @param data unknown JSON-like value (typically parsed from a `takuhon.json` file)\n * @returns A discriminated result. On success `data` is narrowed to {@link Takuhon};\n * on failure `errors` is a non-empty list of {@link ValidationError}s.\n */\nexport function validate(data: unknown): ValidationResult {\n // Pre-Ajv gate: reject anything that is not a plain object so callers get a\n // clearer top-level error than Ajv's cascade of \"must be object\" / property\n // failures when handed an array, null, or a primitive.\n if (typeof data !== 'object' || data === null || Array.isArray(data)) {\n return {\n ok: false,\n errors: [\n {\n pointer: '',\n message: 'takuhon.json must be a JSON object.',\n keyword: 'type',\n },\n ],\n };\n }\n\n // Pre-Ajv gate: reject documents whose schemaVersion sits outside the\n // supported window with a dedicated keyword. Migration (commit 6+) will\n // translate older versions into the current one before reaching this point.\n const candidate = data as { schemaVersion?: unknown };\n if (typeof candidate.schemaVersion === 'string' && !isSupportedVersion(candidate.schemaVersion)) {\n return {\n ok: false,\n errors: [\n {\n pointer: '/schemaVersion',\n message: `schemaVersion \"${candidate.schemaVersion}\" is not in the supported window (${SUPPORTED_SCHEMA_VERSIONS.join(\n ', ',\n )}).`,\n keyword: 'schemaVersion',\n },\n ],\n };\n }\n\n if (compiled(data)) {\n // The schema marks several top-level arrays as optional for back-compat\n // (the nine added in 0.2.0, `testScores` in 0.3.0, and `recommendations`\n // in 0.4.0). The TypeScript `Takuhon` shape requires them so\n // downstream code never has to check for `undefined`. We clone the\n // caller's input before coercing so a successful validate() never\n // mutates the original — callers can keep referencing the value they\n // passed in. JS preserves insertion order, so new keys land at the end\n // of the cloned object; `normalize()` is responsible for canonical\n // field order.\n const cloned = JSON.parse(JSON.stringify(data)) as Takuhon;\n coerceMissingArrays(cloned);\n\n // Post-Ajv check: `languages[].language` uniqueness. JSON Schema\n // `uniqueItems` only catches whole-object duplicates and cannot enforce\n // by-key uniqueness, so we walk the array here and reject duplicates as\n // a synthetic ValidationError.\n const duplicate = findDuplicateLanguage(cloned.languages);\n if (duplicate !== undefined) {\n return {\n ok: false,\n errors: [\n {\n pointer: `/languages/${duplicate.index}/language`,\n message: `Duplicate languages[].language value \"${duplicate.tag}\" — each entry must declare a unique BCP-47 tag.`,\n keyword: 'uniqueItems',\n },\n ],\n };\n }\n\n return { ok: true, data: cloned };\n }\n\n return {\n ok: false,\n errors: (compiled.errors ?? []).map(toValidationError),\n };\n}\n\nconst COERCED_ARRAY_KEYS = [\n 'certifications',\n 'memberships',\n 'volunteering',\n 'honors',\n 'education',\n 'publications',\n 'languages',\n 'courses',\n 'patents',\n 'testScores',\n 'recommendations',\n] as const;\n\nfunction coerceMissingArrays(data: Takuhon): void {\n const bag = data as unknown as Record<string, unknown>;\n for (const key of COERCED_ARRAY_KEYS) {\n if (!Array.isArray(bag[key])) {\n bag[key] = [];\n }\n }\n}\n\nfunction findDuplicateLanguage(\n languages: Takuhon['languages'],\n): { index: number; tag: string } | undefined {\n const seen = new Map<string, number>();\n for (let i = 0; i < languages.length; i++) {\n const entry = languages[i];\n if (entry === undefined) continue;\n const key = entry.language.toLowerCase();\n if (seen.has(key)) return { index: i, tag: entry.language };\n seen.set(key, i);\n }\n return undefined;\n}\n\nfunction isSupportedVersion(value: string): boolean {\n return (SUPPORTED_SCHEMA_VERSIONS as readonly string[]).includes(value);\n}\n\nfunction toValidationError(err: ErrorObject): ValidationError {\n let pointer = err.instancePath;\n\n if (err.keyword === 'required') {\n const missing = (err.params as { missingProperty?: unknown }).missingProperty;\n if (typeof missing === 'string') {\n pointer = `${err.instancePath}/${escapePointerSegment(missing)}`;\n }\n } else if (err.keyword === 'additionalProperties') {\n const extra = (err.params as { additionalProperty?: unknown }).additionalProperty;\n if (typeof extra === 'string') {\n pointer = `${err.instancePath}/${escapePointerSegment(extra)}`;\n }\n }\n\n return {\n pointer,\n message: err.message ?? 'Validation failed.',\n keyword: err.keyword,\n schemaPointer: err.schemaPath ? err.schemaPath : undefined,\n };\n}\n\n/** Escape a JSON Pointer segment per RFC 6901 (~ becomes ~0, / becomes ~1). */\nfunction escapePointerSegment(segment: string): string {\n return segment.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","/**\n * Canonicalize a {@link Takuhon} document into the form downstream consumers\n * (`@takuhon/api`, `@takuhon/ui`, `@takuhon/jsonld`) can rely on without\n * re-checking shape invariants.\n *\n * Two transformations only:\n * - **Empty-entry cleanup** on every localized field (`LocalizedTitle` /\n * `LocalizedBody`): entries whose string value is empty or whitespace-only\n * are removed so that locale fallback works field-by-field. When the\n * cleanup leaves an optional localized map empty, the map itself is\n * removed (the schema requires `minProperties: 1`).\n * - **Stable sort by `order`** on every list field (`links`, `careers`,\n * `projects`, `skills`). Items without an `order` move to the end while\n * preserving their original relative position (ES2019 stable sort).\n *\n * Design notes:\n * - The input is deep-cloned via `structuredClone`; the original is never\n * mutated. Callers may safely keep a reference to the value they passed in.\n * - `normalize` does *not* canonicalize BCP-47 tag casing nor trim string\n * content. The first is covered by the schema's `propertyNames` pattern and\n * `resolveLocale`'s case-insensitive lookup; the second would silently rewrite\n * author input and is out of scope for Phase 1.\n * - `normalize(normalize(x))` deep-equals `normalize(x)` (idempotent), and the\n * output re-validates against `takuhon.schema.json`. Both invariants are\n * enforced by the unit tests.\n */\n\nimport type {\n LocalizedBody,\n LocalizedTitle,\n Takuhon,\n NormalizedTakuhon,\n Profile,\n} from './types.js';\n\n/**\n * Return a normalized copy of `data`.\n *\n * @param data A takuhon document that has already passed {@link validate}.\n * @returns A new {@link NormalizedTakuhon} with localized empties dropped and\n * list fields sorted by `order`.\n */\nexport function normalize(data: Takuhon): NormalizedTakuhon {\n // A takuhon document is structurally pure JSON (string/number/boolean/null +\n // plain objects / arrays — no Date, Map, Set, BigInt, or functions), so a\n // round-trip through JSON gives an equivalent deep clone without depending\n // on `structuredClone`'s global type declaration (which moves between TS\n // `lib.es2022.d.ts` and `lib.dom.d.ts` across TypeScript major releases).\n const out = JSON.parse(JSON.stringify(data)) as Takuhon;\n\n // Defensive: the schema marks several top-level arrays as optional for\n // back-compat (the nine added in 0.2.0, `testScores` in 0.3.0, and\n // `recommendations` in 0.4.0), so a stored older profile read from KV after\n // an upgrade may arrive here without them. The TypeScript `Takuhon` shape\n // requires them; coerce missing values to `[]` so downstream iteration\n // never trips on `undefined`. Idempotent: arrays already present are left\n // untouched.\n const bag = out as unknown as Record<string, unknown>;\n for (const key of NORMALIZED_ARRAYS) {\n if (!Array.isArray(bag[key])) {\n bag[key] = [];\n }\n }\n\n normalizeProfile(out.profile);\n\n for (const link of out.links) {\n cleanOptionalLocalized(link, 'label');\n }\n out.links = stableSortByOrder(out.links);\n\n for (const career of out.careers) {\n cleanRequiredLocalized(career.organization);\n cleanRequiredLocalized(career.role);\n cleanOptionalLocalized(career, 'description');\n }\n out.careers = stableSortByOrder(out.careers);\n\n for (const project of out.projects) {\n cleanRequiredLocalized(project.title);\n cleanOptionalLocalized(project, 'description');\n }\n out.projects = stableSortByOrder(out.projects);\n\n out.skills = stableSortByOrder(out.skills);\n\n for (const cert of out.certifications) {\n cleanRequiredLocalized(cert.title);\n cleanRequiredLocalized(cert.issuingOrganization);\n }\n out.certifications = stableSortByOrder(out.certifications);\n\n for (const m of out.memberships) {\n cleanRequiredLocalized(m.organization);\n cleanOptionalLocalized(m, 'role');\n cleanOptionalLocalized(m, 'description');\n }\n out.memberships = stableSortByOrder(out.memberships);\n\n for (const v of out.volunteering) {\n cleanRequiredLocalized(v.organization);\n cleanRequiredLocalized(v.role);\n cleanOptionalLocalized(v, 'cause');\n cleanOptionalLocalized(v, 'description');\n }\n out.volunteering = stableSortByOrder(out.volunteering);\n\n for (const h of out.honors) {\n cleanRequiredLocalized(h.title);\n cleanRequiredLocalized(h.issuer);\n cleanOptionalLocalized(h, 'description');\n }\n out.honors = stableSortByOrder(out.honors);\n\n for (const e of out.education) {\n cleanRequiredLocalized(e.institution);\n cleanOptionalLocalized(e, 'degree');\n cleanOptionalLocalized(e, 'fieldOfStudy');\n cleanOptionalLocalized(e, 'description');\n }\n out.education = stableSortByOrder(out.education);\n\n for (const p of out.publications) {\n cleanRequiredLocalized(p.title);\n cleanOptionalLocalized(p, 'publisher');\n cleanOptionalLocalized(p, 'description');\n }\n out.publications = stableSortByOrder(out.publications);\n\n for (const l of out.languages) {\n cleanOptionalLocalized(l, 'displayName');\n }\n out.languages = stableSortByOrder(out.languages);\n\n for (const c of out.courses) {\n cleanRequiredLocalized(c.title);\n cleanOptionalLocalized(c, 'provider');\n cleanOptionalLocalized(c, 'description');\n }\n out.courses = stableSortByOrder(out.courses);\n\n for (const p of out.patents) {\n cleanRequiredLocalized(p.title);\n cleanOptionalLocalized(p, 'description');\n }\n out.patents = stableSortByOrder(out.patents);\n\n for (const t of out.testScores) {\n cleanRequiredLocalized(t.title);\n cleanOptionalLocalized(t, 'description');\n }\n out.testScores = stableSortByOrder(out.testScores);\n\n for (const r of out.recommendations) {\n cleanRequiredLocalized(r.body);\n cleanOptionalLocalized(r, 'relationship');\n cleanOptionalLocalized(r.author, 'headline');\n }\n out.recommendations = stableSortByOrder(out.recommendations);\n\n return out;\n}\n\nfunction normalizeProfile(profile: Profile): void {\n cleanRequiredLocalized(profile.displayName);\n cleanOptionalLocalized(profile, 'tagline');\n cleanOptionalLocalized(profile, 'bio');\n if (profile.avatar) {\n cleanOptionalLocalized(profile.avatar, 'alt');\n }\n if (profile.location) {\n cleanOptionalLocalized(profile.location, 'locality');\n cleanOptionalLocalized(profile.location, 'display');\n }\n}\n\n/** Remove empty / whitespace-only entries from a required localized map in place. */\nfunction cleanRequiredLocalized(map: LocalizedTitle | LocalizedBody): void {\n for (const key of Object.keys(map)) {\n const value = map[key];\n if (value === undefined || value.trim() === '') {\n delete map[key];\n }\n }\n}\n\n/**\n * Remove empty / whitespace-only entries from an optional localized map. When\n * the resulting map is empty, the property is removed from its parent so the\n * document remains schema-valid (`LocalizedTitle` / `LocalizedBody` require\n * `minProperties: 1`).\n */\nfunction cleanOptionalLocalized<\n K extends string,\n T extends Partial<Record<K, LocalizedTitle | LocalizedBody>>,\n>(parent: T, key: K): void {\n const map = parent[key];\n if (!map) return;\n for (const k of Object.keys(map)) {\n const value = map[k];\n if (value === undefined || value.trim() === '') {\n delete map[k];\n }\n }\n if (Object.keys(map).length === 0) {\n delete parent[key];\n }\n}\n\n/** Stable sort items by ascending `order`; entries without `order` go last. */\nfunction stableSortByOrder<T extends { order?: number }>(items: T[]): T[] {\n return items.slice().sort((a, b) => {\n const ao = a.order ?? Number.POSITIVE_INFINITY;\n const bo = b.order ?? Number.POSITIVE_INFINITY;\n return ao - bo;\n });\n}\n\nconst NORMALIZED_ARRAYS = [\n 'certifications',\n 'memberships',\n 'volunteering',\n 'honors',\n 'education',\n 'publications',\n 'languages',\n 'courses',\n 'patents',\n 'testScores',\n 'recommendations',\n] as const;\n","/**\n * BCP-47 locale-tag helpers shared by `normalize()` and `resolveLocale()`.\n *\n * These functions intentionally do not depend on `Intl.Locale`: the schema's\n * `propertyNames` pattern already guarantees structural validity for tags that\n * have passed validation, so this module only needs string-level operations\n * (case-insensitive lookup, primary-subtag fallback, simple regex shape check).\n * Keeping the implementation dependency-free also avoids platform differences\n * between Node, Workers, and modern browsers.\n */\n\n/** Same shape as `takuhon.schema.json`'s `propertyNames` for localized maps. */\nconst BCP47_PATTERN = /^[a-zA-Z]{2,3}(-[a-zA-Z0-9]+)*$/;\n\n/**\n * Return whether a string has the structural shape of a BCP-47 tag accepted\n * by `takuhon.schema.json`. This is a syntactic check only — `'zz'` passes\n * because it matches the regex even though it is not a registered subtag.\n * Semantic validity (registered language / region) is intentionally out of\n * scope; consumers that want it should compose `Intl.Locale` on top.\n */\nexport function isValidBcp47(tag: string): boolean {\n return BCP47_PATTERN.test(tag);\n}\n\n/**\n * Expand a tag into a list of progressively shorter candidates by dropping\n * trailing subtags, e.g. `'zh-Hant-TW' → ['zh-Hant-TW', 'zh-Hant', 'zh']`.\n * Returns the input unchanged for single-subtag inputs (`'en' → ['en']`),\n * and returns `[]` for tags that do not match the BCP-47 shape.\n */\nexport function expandRegional(tag: string): string[] {\n if (!isValidBcp47(tag)) return [];\n const parts = tag.split('-');\n const out: string[] = [];\n for (let i = parts.length; i >= 1; i--) {\n out.push(parts.slice(0, i).join('-'));\n }\n return out;\n}\n\n/** Compare two locale tags ignoring ASCII case (`'EN-us'` matches `'en-US'`). */\nexport function localeMatches(a: string, b: string): boolean {\n return a.toLowerCase() === b.toLowerCase();\n}\n\n/**\n * Look up a value from a locale-keyed map ignoring ASCII case.\n *\n * BCP-47 tags use canonical casing (`zh-Hant`, `pt-BR`) but the spec asks for\n * case-insensitive comparison so consumers can query with `EN-us` or `EN-US`\n * regardless of how the document was authored.\n */\nexport function lookupCaseInsensitive<T>(\n map: Record<string, T> | undefined,\n key: string,\n): T | undefined {\n if (!map) return undefined;\n const direct = map[key];\n if (direct !== undefined) return direct;\n const lower = key.toLowerCase();\n for (const k of Object.keys(map)) {\n if (k.toLowerCase() === lower) return map[k];\n }\n return undefined;\n}\n","/**\n * Reduce a multi-locale {@link Takuhon} document to a single requested locale.\n *\n * Builds a flat candidate chain from the function arguments and `data.settings`,\n * expanding each entry's regional subtag (e.g. `'en-US' → ['en-US', 'en']`),\n * deduplicating case-insensitively, then walks the chain **per field**. The\n * first candidate whose value is non-blank wins for that field; an empty entry\n * (`\"\"` / whitespace-only) falls through to the next candidate just like a\n * missing entry. This matches the spec semantics in [api.md §3.4] where empty\n * values are equivalent to absence.\n *\n * Design notes:\n * - Function arguments (`locale`, `fallbackLocale`) take precedence over\n * `settings.*`, in line with the spec's 7-tier list: HTTP-derived locales\n * (#1-#4) are resolved upstream by `@takuhon/api` and arrive here as\n * `locale` / `fallbackLocale`; `settings.defaultLocale` (#5),\n * `settings.fallbackLocale` (#6), and `settings.availableLocales[0]` (#7)\n * fill the tail.\n * - Invalid tags (`'zz_invalid'`, `'_'`, etc.) are silently dropped rather\n * than throwing. Resolution is best-effort: throwing on a malformed\n * `?lang=` query would push error handling responsibilities back into the\n * API layer for a recoverable case.\n * - A final rescue step appends every `availableLocales` entry so a request\n * with no matching candidate still produces a populated document. If even\n * that fails (only possible for hand-crafted inputs that bypassed\n * `validate`), required strings fall back to `''` and the caller's tests\n * catch the document-level regression.\n * - `resolvedLocale` records the tag that produced `profile.displayName`,\n * which is the field most consumers expose as the canonical locale of the\n * response (e.g. `meta.locale` in API responses, `<html lang>` in UI).\n */\n\nimport { expandRegional, isValidBcp47, lookupCaseInsensitive } from './locale-tag.js';\nimport type {\n Address,\n Avatar,\n Career,\n Certification,\n Course,\n Education,\n Honor,\n Language,\n Link,\n LocaleTag,\n LocalizedAddress,\n LocalizedAvatar,\n LocalizedBody,\n LocalizedCareer,\n LocalizedCertification,\n LocalizedCourse,\n LocalizedEducation,\n LocalizedHonor,\n LocalizedLanguage,\n LocalizedLink,\n LocalizedMembership,\n LocalizedPatent,\n LocalizedProfile,\n LocalizedProject,\n LocalizedPublication,\n LocalizedRecommendation,\n LocalizedRecommendationAuthor,\n LocalizedTakuhon,\n LocalizedTestScore,\n LocalizedTitle,\n LocalizedVolunteering,\n Membership,\n Patent,\n Profile,\n Project,\n Publication,\n Recommendation,\n RecommendationAuthor,\n Takuhon,\n TestScore,\n Volunteering,\n} from './types.js';\n\n/**\n * Resolve a takuhon document to a single locale.\n *\n * @param data A takuhon document (validated; ideally normalized first).\n * @param locale Caller-resolved request locale (e.g. from `?lang=` or\n * `Accept-Language`). Invalid tags are ignored.\n * @param fallbackLocale Caller-supplied secondary candidate when `locale`\n * misses. Invalid tags are ignored.\n */\nexport function resolveLocale(\n data: Takuhon,\n locale?: string,\n fallbackLocale?: string,\n): LocalizedTakuhon {\n const candidates = buildCandidates(data, locale, fallbackLocale);\n const displayPick = pickLocalizedWithTag(data.profile.displayName, candidates);\n\n return {\n schemaVersion: data.schemaVersion,\n profile: resolveProfile(data.profile, candidates, displayPick?.value ?? ''),\n links: data.links.map((l) => resolveLink(l, candidates)),\n careers: data.careers.map((c) => resolveCareer(c, candidates)),\n projects: data.projects.map((p) => resolveProject(p, candidates)),\n skills: data.skills,\n certifications: data.certifications.map((c) => resolveCertification(c, candidates)),\n memberships: data.memberships.map((m) => resolveMembership(m, candidates)),\n volunteering: data.volunteering.map((v) => resolveVolunteering(v, candidates)),\n honors: data.honors.map((h) => resolveHonor(h, candidates)),\n education: data.education.map((e) => resolveEducation(e, candidates)),\n publications: data.publications.map((p) => resolvePublication(p, candidates)),\n languages: data.languages.map((l) => resolveLanguage(l, candidates)),\n courses: data.courses.map((c) => resolveCourse(c, candidates)),\n patents: data.patents.map((p) => resolvePatent(p, candidates)),\n testScores: data.testScores.map((t) => resolveTestScore(t, candidates)),\n recommendations: data.recommendations.map((r) => resolveRecommendation(r, candidates)),\n contact: data.contact,\n settings: data.settings,\n meta: data.meta,\n resolvedLocale: displayPick?.tag ?? candidates[0] ?? '',\n };\n}\n\nfunction buildCandidates(\n data: Takuhon,\n locale: string | undefined,\n fallbackLocale: string | undefined,\n): LocaleTag[] {\n const raw: string[] = [];\n if (locale !== undefined) raw.push(...expandRegional(locale));\n if (fallbackLocale !== undefined) raw.push(...expandRegional(fallbackLocale));\n raw.push(...expandRegional(data.settings.defaultLocale));\n if (data.settings.fallbackLocale !== undefined) {\n raw.push(...expandRegional(data.settings.fallbackLocale));\n }\n for (const tag of data.settings.availableLocales) {\n raw.push(...expandRegional(tag));\n }\n return dedupCaseInsensitive(raw);\n}\n\nfunction dedupCaseInsensitive(tags: string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const tag of tags) {\n if (!isValidBcp47(tag)) continue;\n const lower = tag.toLowerCase();\n if (seen.has(lower)) continue;\n seen.add(lower);\n out.push(tag);\n }\n return out;\n}\n\nfunction pickLocalizedWithTag(\n field: LocalizedTitle | LocalizedBody | undefined,\n candidates: LocaleTag[],\n): { value: string; tag: LocaleTag } | undefined {\n if (!field) return undefined;\n for (const tag of candidates) {\n const hit = lookupCaseInsensitive(field, tag);\n if (hit !== undefined && hit.trim() !== '') {\n return { value: hit, tag };\n }\n }\n return undefined;\n}\n\nfunction pickLocalized(\n field: LocalizedTitle | LocalizedBody | undefined,\n candidates: LocaleTag[],\n): string | undefined {\n return pickLocalizedWithTag(field, candidates)?.value;\n}\n\nfunction resolveProfile(\n profile: Profile,\n candidates: LocaleTag[],\n displayName: string,\n): LocalizedProfile {\n const out: LocalizedProfile = { displayName };\n\n const tagline = pickLocalized(profile.tagline, candidates);\n if (tagline !== undefined) out.tagline = tagline;\n\n const bio = pickLocalized(profile.bio, candidates);\n if (bio !== undefined) out.bio = bio;\n\n if (profile.avatar) out.avatar = resolveAvatar(profile.avatar, candidates);\n if (profile.location) out.location = resolveAddress(profile.location, candidates);\n\n return out;\n}\n\nfunction resolveAvatar(avatar: Avatar, candidates: LocaleTag[]): LocalizedAvatar {\n const out: LocalizedAvatar = { url: avatar.url };\n const alt = pickLocalized(avatar.alt, candidates);\n if (alt !== undefined) out.alt = alt;\n return out;\n}\n\nfunction resolveAddress(address: Address, candidates: LocaleTag[]): LocalizedAddress {\n const out: LocalizedAddress = {};\n if (address.country !== undefined) out.country = address.country;\n if (address.region !== undefined) out.region = address.region;\n const locality = pickLocalized(address.locality, candidates);\n if (locality !== undefined) out.locality = locality;\n const display = pickLocalized(address.display, candidates);\n if (display !== undefined) out.display = display;\n return out;\n}\n\nfunction resolveLink(link: Link, candidates: LocaleTag[]): LocalizedLink {\n const label = pickLocalized(link.label, candidates);\n if (link.type === 'custom') {\n const out: LocalizedLink = {\n id: link.id,\n type: 'custom',\n url: link.url,\n iconUrl: link.iconUrl,\n };\n if (label !== undefined) out.label = label;\n if (link.featured !== undefined) out.featured = link.featured;\n if (link.order !== undefined) out.order = link.order;\n return out;\n }\n const out: LocalizedLink = {\n id: link.id,\n type: link.type,\n url: link.url,\n };\n if (label !== undefined) out.label = label;\n if (link.featured !== undefined) out.featured = link.featured;\n if (link.order !== undefined) out.order = link.order;\n if (link.iconUrl !== undefined) out.iconUrl = link.iconUrl;\n return out;\n}\n\nfunction resolveCareer(career: Career, candidates: LocaleTag[]): LocalizedCareer {\n const out: LocalizedCareer = {\n id: career.id,\n organization: pickLocalized(career.organization, candidates) ?? '',\n role: pickLocalized(career.role, candidates) ?? '',\n startDate: career.startDate,\n };\n const description = pickLocalized(career.description, candidates);\n if (description !== undefined) out.description = description;\n if (career.endDate !== undefined) out.endDate = career.endDate;\n if (career.isCurrent !== undefined) out.isCurrent = career.isCurrent;\n if (career.url !== undefined) out.url = career.url;\n if (career.order !== undefined) out.order = career.order;\n if (career.location) out.location = resolveAddress(career.location, candidates);\n return out;\n}\n\nfunction resolveProject(project: Project, candidates: LocaleTag[]): LocalizedProject {\n const out: LocalizedProject = {\n id: project.id,\n title: pickLocalized(project.title, candidates) ?? '',\n };\n const description = pickLocalized(project.description, candidates);\n if (description !== undefined) out.description = description;\n if (project.url !== undefined) out.url = project.url;\n if (project.tags !== undefined) out.tags = project.tags;\n if (project.relatedCareerId !== undefined) out.relatedCareerId = project.relatedCareerId;\n if (project.startDate !== undefined) out.startDate = project.startDate;\n if (project.endDate !== undefined) out.endDate = project.endDate;\n if (project.highlighted !== undefined) out.highlighted = project.highlighted;\n if (project.order !== undefined) out.order = project.order;\n return out;\n}\n\nfunction resolveCertification(\n cert: Certification,\n candidates: LocaleTag[],\n): LocalizedCertification {\n const out: LocalizedCertification = {\n id: cert.id,\n title: pickLocalized(cert.title, candidates) ?? '',\n issuingOrganization: pickLocalized(cert.issuingOrganization, candidates) ?? '',\n issueDate: cert.issueDate,\n };\n if (cert.expirationDate !== undefined) out.expirationDate = cert.expirationDate;\n if (cert.credentialId !== undefined) out.credentialId = cert.credentialId;\n if (cert.url !== undefined) out.url = cert.url;\n if (cert.order !== undefined) out.order = cert.order;\n return out;\n}\n\nfunction resolveMembership(membership: Membership, candidates: LocaleTag[]): LocalizedMembership {\n const out: LocalizedMembership = {\n id: membership.id,\n organization: pickLocalized(membership.organization, candidates) ?? '',\n startDate: membership.startDate,\n };\n const role = pickLocalized(membership.role, candidates);\n if (role !== undefined) out.role = role;\n const description = pickLocalized(membership.description, candidates);\n if (description !== undefined) out.description = description;\n if (membership.endDate !== undefined) out.endDate = membership.endDate;\n if (membership.isCurrent !== undefined) out.isCurrent = membership.isCurrent;\n if (membership.url !== undefined) out.url = membership.url;\n if (membership.order !== undefined) out.order = membership.order;\n return out;\n}\n\nfunction resolveVolunteering(v: Volunteering, candidates: LocaleTag[]): LocalizedVolunteering {\n const out: LocalizedVolunteering = {\n id: v.id,\n organization: pickLocalized(v.organization, candidates) ?? '',\n role: pickLocalized(v.role, candidates) ?? '',\n startDate: v.startDate,\n };\n const cause = pickLocalized(v.cause, candidates);\n if (cause !== undefined) out.cause = cause;\n const description = pickLocalized(v.description, candidates);\n if (description !== undefined) out.description = description;\n if (v.endDate !== undefined) out.endDate = v.endDate;\n if (v.isCurrent !== undefined) out.isCurrent = v.isCurrent;\n if (v.url !== undefined) out.url = v.url;\n if (v.order !== undefined) out.order = v.order;\n return out;\n}\n\nfunction resolveHonor(honor: Honor, candidates: LocaleTag[]): LocalizedHonor {\n const out: LocalizedHonor = {\n id: honor.id,\n title: pickLocalized(honor.title, candidates) ?? '',\n issuer: pickLocalized(honor.issuer, candidates) ?? '',\n date: honor.date,\n };\n const description = pickLocalized(honor.description, candidates);\n if (description !== undefined) out.description = description;\n if (honor.url !== undefined) out.url = honor.url;\n if (honor.order !== undefined) out.order = honor.order;\n return out;\n}\n\nfunction resolveEducation(edu: Education, candidates: LocaleTag[]): LocalizedEducation {\n const out: LocalizedEducation = {\n id: edu.id,\n institution: pickLocalized(edu.institution, candidates) ?? '',\n startDate: edu.startDate,\n };\n const degree = pickLocalized(edu.degree, candidates);\n if (degree !== undefined) out.degree = degree;\n const fieldOfStudy = pickLocalized(edu.fieldOfStudy, candidates);\n if (fieldOfStudy !== undefined) out.fieldOfStudy = fieldOfStudy;\n const description = pickLocalized(edu.description, candidates);\n if (description !== undefined) out.description = description;\n if (edu.grade !== undefined) out.grade = edu.grade;\n if (edu.endDate !== undefined) out.endDate = edu.endDate;\n if (edu.isCurrent !== undefined) out.isCurrent = edu.isCurrent;\n if (edu.url !== undefined) out.url = edu.url;\n if (edu.order !== undefined) out.order = edu.order;\n return out;\n}\n\nfunction resolvePublication(pub: Publication, candidates: LocaleTag[]): LocalizedPublication {\n const out: LocalizedPublication = {\n id: pub.id,\n title: pickLocalized(pub.title, candidates) ?? '',\n date: pub.date,\n };\n const publisher = pickLocalized(pub.publisher, candidates);\n if (publisher !== undefined) out.publisher = publisher;\n const description = pickLocalized(pub.description, candidates);\n if (description !== undefined) out.description = description;\n if (pub.url !== undefined) out.url = pub.url;\n if (pub.doi !== undefined) out.doi = pub.doi;\n if (pub.coAuthors !== undefined) out.coAuthors = pub.coAuthors;\n if (pub.order !== undefined) out.order = pub.order;\n return out;\n}\n\nfunction resolveLanguage(lang: Language, candidates: LocaleTag[]): LocalizedLanguage {\n const out: LocalizedLanguage = {\n id: lang.id,\n language: lang.language,\n proficiency: lang.proficiency,\n };\n const displayName = pickLocalized(lang.displayName, candidates);\n if (displayName !== undefined) out.displayName = displayName;\n if (lang.order !== undefined) out.order = lang.order;\n return out;\n}\n\nfunction resolveCourse(course: Course, candidates: LocaleTag[]): LocalizedCourse {\n const out: LocalizedCourse = {\n id: course.id,\n title: pickLocalized(course.title, candidates) ?? '',\n };\n const provider = pickLocalized(course.provider, candidates);\n if (provider !== undefined) out.provider = provider;\n if (course.courseNumber !== undefined) out.courseNumber = course.courseNumber;\n const description = pickLocalized(course.description, candidates);\n if (description !== undefined) out.description = description;\n if (course.completionDate !== undefined) out.completionDate = course.completionDate;\n if (course.certificateUrl !== undefined) out.certificateUrl = course.certificateUrl;\n if (course.relatedEducationId !== undefined) out.relatedEducationId = course.relatedEducationId;\n if (course.order !== undefined) out.order = course.order;\n return out;\n}\n\nfunction resolvePatent(patent: Patent, candidates: LocaleTag[]): LocalizedPatent {\n const out: LocalizedPatent = {\n id: patent.id,\n title: pickLocalized(patent.title, candidates) ?? '',\n patentNumber: patent.patentNumber,\n status: patent.status,\n };\n if (patent.office !== undefined) out.office = patent.office;\n const description = pickLocalized(patent.description, candidates);\n if (description !== undefined) out.description = description;\n if (patent.filingDate !== undefined) out.filingDate = patent.filingDate;\n if (patent.grantDate !== undefined) out.grantDate = patent.grantDate;\n if (patent.url !== undefined) out.url = patent.url;\n if (patent.coInventors !== undefined) out.coInventors = patent.coInventors;\n if (patent.order !== undefined) out.order = patent.order;\n return out;\n}\n\nfunction resolveTestScore(testScore: TestScore, candidates: LocaleTag[]): LocalizedTestScore {\n const out: LocalizedTestScore = {\n id: testScore.id,\n title: pickLocalized(testScore.title, candidates) ?? '',\n score: testScore.score,\n date: testScore.date,\n };\n const description = pickLocalized(testScore.description, candidates);\n if (description !== undefined) out.description = description;\n if (testScore.relatedEducationId !== undefined) {\n out.relatedEducationId = testScore.relatedEducationId;\n }\n if (testScore.url !== undefined) out.url = testScore.url;\n if (testScore.order !== undefined) out.order = testScore.order;\n return out;\n}\n\nfunction resolveRecommendation(\n recommendation: Recommendation,\n candidates: LocaleTag[],\n): LocalizedRecommendation {\n const out: LocalizedRecommendation = {\n id: recommendation.id,\n body: pickLocalized(recommendation.body, candidates) ?? '',\n author: resolveRecommendationAuthor(recommendation.author, candidates),\n };\n const relationship = pickLocalized(recommendation.relationship, candidates);\n if (relationship !== undefined) out.relationship = relationship;\n if (recommendation.date !== undefined) out.date = recommendation.date;\n if (recommendation.relatedCareerId !== undefined) {\n out.relatedCareerId = recommendation.relatedCareerId;\n }\n if (recommendation.relatedEducationId !== undefined) {\n out.relatedEducationId = recommendation.relatedEducationId;\n }\n if (recommendation.order !== undefined) out.order = recommendation.order;\n return out;\n}\n\nfunction resolveRecommendationAuthor(\n author: RecommendationAuthor,\n candidates: LocaleTag[],\n): LocalizedRecommendationAuthor {\n const out: LocalizedRecommendationAuthor = { name: author.name };\n const headline = pickLocalized(author.headline, candidates);\n if (headline !== undefined) out.headline = headline;\n if (author.url !== undefined) out.url = author.url;\n return out;\n}\n","/**\n * Generate Schema.org JSON-LD from a {@link LocalizedTakuhon} document.\n *\n * Emits a `ProfilePage` whose `mainEntity` is the `Person` described by the\n * input. Mapping rules follow the published schema.org mapping spec; the\n * relevant invariants are exercised by the unit tests.\n *\n * Design notes:\n * - Input is the output of `resolveLocale()`, so every localized field is\n * already a single string. No locale fallback happens here.\n * - All optional keys are omitted (not set to `null` / `undefined`) when their\n * source value is absent or empty, so consumers can shallow-merge or\n * `JSON.stringify` the result without post-processing.\n * - The canonical URL surfaced as `ProfilePage.url`, `Person.@id`, and\n * `Person.url` is derived from a single `links[]` entry: `type: 'website'`\n * with `featured: true`. The first match wins (stable after `normalize()`).\n * When no such link exists the three URL-bearing keys are omitted entirely;\n * no placeholder is fabricated.\n * - `profile.tagline` is intentionally not surfaced. `description` carries\n * `profile.bio` only, matching the spec exemplar. Phase 2 may revisit.\n * - `contact.email` is surfaced only when `contact.showEmail === true`\n * (privacy by default).\n * - URLs pass through verbatim. Relative paths in the input remain relative\n * in the output; absolutization is the API/UI layer's responsibility.\n * - Field insertion order on each emitted object is fixed so\n * `JSON.stringify(result)` is deterministic for a given input.\n */\n\nimport type {\n Contact,\n LinkType,\n LocalizedAddress,\n LocalizedAvatar,\n LocalizedCareer,\n LocalizedCertification,\n LocalizedCourse,\n LocalizedEducation,\n LocalizedHonor,\n LocalizedLanguage,\n LocalizedLink,\n LocalizedMembership,\n LocalizedPatent,\n LocalizedProject,\n LocalizedPublication,\n LocalizedTakuhon,\n LocalizedVolunteering,\n Skill,\n} from './types.js';\n\n/**\n * `links[].type` values that count as identity-bearing for the purpose of\n * `Person.sameAs`. `email`, `rss`, and `custom` are excluded: they either\n * carry no identity assertion (`custom`) or are not a profile URL on a\n * third-party platform (`email`, `rss`).\n */\nconst SAMEAS_IDENTITY_TYPES: ReadonlySet<LinkType> = new Set<LinkType>([\n 'github',\n 'gitlab',\n 'linkedin',\n 'x',\n 'mastodon',\n 'bluesky',\n 'instagram',\n 'youtube',\n 'threads',\n 'facebook',\n 'website',\n 'blog',\n]);\n\n/**\n * Build the `Person` JSON-LD object for `data`.\n *\n * @param data A locale-resolved takuhon document.\n * @returns A Schema.org `Person` object. `@context` is included so the\n * returned object is valid as a standalone JSON-LD document.\n */\nexport function generatePersonJsonLd(data: LocalizedTakuhon): object {\n const person = buildPerson(data, deriveCanonicalUrl(data));\n return { '@context': 'https://schema.org', ...person };\n}\n\n/**\n * Build the `ProfilePage` JSON-LD object for `data`, with `Person` inlined\n * as `mainEntity`.\n *\n * @param data A locale-resolved takuhon document.\n */\nexport function generateProfilePageJsonLd(data: LocalizedTakuhon): object {\n const canonicalUrl = deriveCanonicalUrl(data);\n const person = buildPerson(data, canonicalUrl);\n\n const out: Record<string, unknown> = {};\n out['@context'] = 'https://schema.org';\n out['@type'] = 'ProfilePage';\n if (canonicalUrl !== undefined) out.url = canonicalUrl;\n out.inLanguage = data.resolvedLocale;\n if (data.meta.createdAt !== undefined) out.dateCreated = data.meta.createdAt;\n if (data.meta.updatedAt !== undefined) out.dateModified = data.meta.updatedAt;\n if (data.profile.avatar !== undefined) out.primaryImageOfPage = data.profile.avatar.url;\n out.mainEntity = person;\n return out;\n}\n\n/**\n * Build the array of JSON-LD objects to embed in a single\n * `<script type=\"application/ld+json\">` tag.\n *\n * Phase 1 emits a single-element array containing the `ProfilePage`; the\n * `Person` is inlined there as `mainEntity`. The array shape leaves room\n * for later additions (e.g. `WebSite`) without changing the public surface.\n */\nexport function generateJsonLd(data: LocalizedTakuhon): object[] {\n return [generateProfilePageJsonLd(data)];\n}\n\nfunction deriveCanonicalUrl(data: LocalizedTakuhon): string | undefined {\n const featured = data.links.find((l) => l.type === 'website' && l.featured === true);\n return featured?.url;\n}\n\nfunction buildPerson(data: LocalizedTakuhon, canonicalUrl: string | undefined): object {\n const {\n profile,\n careers,\n projects,\n links,\n skills,\n contact,\n certifications,\n memberships,\n volunteering,\n honors,\n education,\n publications,\n languages,\n courses,\n patents,\n } = data;\n\n const out: Record<string, unknown> = {};\n out['@type'] = 'Person';\n if (canonicalUrl !== undefined) out['@id'] = `${canonicalUrl}#person`;\n out.name = profile.displayName;\n if (profile.bio !== undefined) out.description = profile.bio;\n\n const image = buildImage(profile.avatar);\n if (image !== undefined) out.image = image;\n\n if (canonicalUrl !== undefined) out.url = canonicalUrl;\n\n const { current, past } = partitionCareers(careers);\n const roleFields = buildCurrentRoleFields(current);\n if (roleFields.jobTitle !== undefined) out.jobTitle = roleFields.jobTitle;\n if (roleFields.worksFor !== undefined) out.worksFor = roleFields.worksFor;\n\n const address = buildAddress(profile.location);\n if (address !== undefined) out.address = address;\n\n const email = buildEmail(contact);\n if (email !== undefined) out.email = email;\n\n const knowsAbout = buildKnowsAbout(skills);\n if (knowsAbout !== undefined) out.knowsAbout = knowsAbout;\n\n const knowsLanguage = buildKnowsLanguage(languages);\n if (knowsLanguage !== undefined) out.knowsLanguage = knowsLanguage;\n\n const hasCredential = buildCredentials(certifications);\n if (hasCredential !== undefined) out.hasCredential = hasCredential;\n\n const memberOf = buildMemberOf(memberships);\n if (memberOf !== undefined) out.memberOf = memberOf;\n\n const alumniOf = buildAlumniOf(education);\n if (alumniOf !== undefined) out.alumniOf = alumniOf;\n\n const award = buildAwards(honors);\n if (award !== undefined) out.award = award;\n\n const sameAs = buildSameAs(links);\n if (sameAs !== undefined) out.sameAs = sameAs;\n\n const subjectOf = [\n ...buildPastRoles(past),\n ...buildProjects(projects),\n ...buildVolunteeringRoles(volunteering),\n ...buildPublications(publications),\n ...buildCourses(courses),\n ...buildPatentWorks(patents),\n ];\n if (subjectOf.length > 0) out.subjectOf = subjectOf;\n\n return out;\n}\n\nfunction buildImage(avatar: LocalizedAvatar | undefined): object | undefined {\n if (!avatar) return undefined;\n const out: Record<string, unknown> = {};\n out['@type'] = 'ImageObject';\n out.url = avatar.url;\n if (avatar.alt !== undefined) out.caption = avatar.alt;\n return out;\n}\n\nfunction buildAddress(location: LocalizedAddress | undefined): object | undefined {\n if (!location) return undefined;\n const hasAny =\n location.country !== undefined ||\n location.region !== undefined ||\n location.locality !== undefined;\n if (!hasAny) return undefined;\n // `location.display` is intentionally not surfaced: it is a UI-facing\n // pre-formatted string and would duplicate the structured fields here.\n const out: Record<string, unknown> = {};\n out['@type'] = 'PostalAddress';\n if (location.country !== undefined) out.addressCountry = location.country;\n if (location.region !== undefined) out.addressRegion = location.region;\n if (location.locality !== undefined) out.addressLocality = location.locality;\n return out;\n}\n\nfunction partitionCareers(careers: LocalizedCareer[]): {\n current: LocalizedCareer[];\n past: LocalizedCareer[];\n} {\n const current: LocalizedCareer[] = [];\n const past: LocalizedCareer[] = [];\n for (const c of careers) {\n if (c.isCurrent === true) current.push(c);\n else past.push(c);\n }\n return { current, past };\n}\n\nfunction buildCurrentRoleFields(current: LocalizedCareer[]): {\n jobTitle?: string;\n worksFor?: object;\n} {\n const head = current[0];\n if (head === undefined) return {};\n const out: { jobTitle?: string; worksFor?: object } = {};\n if (head.role !== '') out.jobTitle = head.role;\n out.worksFor = buildWorksFor(head);\n return out;\n}\n\nfunction buildWorksFor(career: LocalizedCareer): object {\n const out: Record<string, unknown> = {};\n out['@type'] = 'Organization';\n out.name = career.organization;\n if (career.url !== undefined) out.url = career.url;\n return out;\n}\n\nfunction buildPastRoles(past: LocalizedCareer[]): object[] {\n return past.map((c) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'WorkRole';\n out.name = c.role;\n out.memberOf = { '@type': 'Organization', name: c.organization };\n out.startDate = c.startDate;\n // `null` denotes an unbounded position; omit so the published JSON-LD\n // does not carry an explicit `null`.\n if (c.endDate !== undefined && c.endDate !== null) out.endDate = c.endDate;\n return out;\n });\n}\n\nfunction buildProjects(projects: LocalizedProject[]): object[] {\n return projects.map((p) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'CreativeWork';\n out.name = p.title;\n if (p.url !== undefined) out.url = p.url;\n if (p.startDate !== undefined) out.datePublished = p.startDate;\n if (p.tags !== undefined && p.tags.length > 0) out.about = p.tags;\n return out;\n });\n}\n\nfunction buildSameAs(links: LocalizedLink[]): string[] | undefined {\n const out = links.filter((l) => SAMEAS_IDENTITY_TYPES.has(l.type)).map((l) => l.url);\n return out.length === 0 ? undefined : out;\n}\n\nfunction buildKnowsAbout(skills: Skill[]): string[] | undefined {\n if (skills.length === 0) return undefined;\n return skills.map((s) => s.label);\n}\n\nfunction buildEmail(contact: Contact): string | undefined {\n if (contact.showEmail !== true) return undefined;\n if (typeof contact.email !== 'string' || contact.email.length === 0) return undefined;\n return contact.email;\n}\n\nfunction buildKnowsLanguage(languages: LocalizedLanguage[]): string[] | undefined {\n if (languages.length === 0) return undefined;\n return languages.map((l) => l.language);\n}\n\nfunction buildCredentials(certifications: LocalizedCertification[]): object[] | undefined {\n if (certifications.length === 0) return undefined;\n return certifications.map((c) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'EducationalOccupationalCredential';\n if (c.title !== '') out.name = c.title;\n out.credentialCategory = 'certification';\n if (c.issuingOrganization !== '') {\n out.recognizedBy = {\n '@type': 'Organization',\n name: c.issuingOrganization,\n };\n }\n out.dateCreated = c.issueDate;\n if (c.expirationDate !== undefined && c.expirationDate !== null) {\n out.expires = c.expirationDate;\n }\n if (c.credentialId !== undefined) out.identifier = c.credentialId;\n if (c.url !== undefined) out.url = c.url;\n return out;\n });\n}\n\nfunction buildMemberOf(memberships: LocalizedMembership[]): object[] | undefined {\n if (memberships.length === 0) return undefined;\n // Schema.org Role wrapper pattern: the outer OrganizationRole\n // carries the role/date metadata; the inner `memberOf` Organization names the\n // body itself.\n return memberships.map((m) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'OrganizationRole';\n if (m.role !== undefined) out.roleName = m.role;\n out.startDate = m.startDate;\n if (m.endDate !== undefined && m.endDate !== null) out.endDate = m.endDate;\n if (m.description !== undefined) out.description = m.description;\n const org: Record<string, unknown> = { '@type': 'Organization', name: m.organization };\n if (m.url !== undefined) org.url = m.url;\n out.memberOf = org;\n return out;\n });\n}\n\nfunction buildAlumniOf(education: LocalizedEducation[]): object[] | undefined {\n if (education.length === 0) return undefined;\n // Schema.org Role wrapper pattern: outer OrganizationRole carries date +\n // concatenated degree/fieldOfStudy as roleName; inner `alumniOf` names\n // the EducationalOrganization.\n return education.map((e) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'OrganizationRole';\n const roleName = composeRoleName(e.degree, e.fieldOfStudy);\n if (roleName !== undefined) out.roleName = roleName;\n out.startDate = e.startDate;\n if (e.endDate !== undefined && e.endDate !== null) out.endDate = e.endDate;\n const description = composeEducationDescription(e.description, e.grade);\n if (description !== undefined) out.description = description;\n const org: Record<string, unknown> = {\n '@type': 'EducationalOrganization',\n name: e.institution,\n };\n if (e.url !== undefined) org.url = e.url;\n out.alumniOf = org;\n return out;\n });\n}\n\nfunction composeRoleName(\n degree: string | undefined,\n fieldOfStudy: string | undefined,\n): string | undefined {\n if (degree === undefined && fieldOfStudy === undefined) return undefined;\n if (degree !== undefined && fieldOfStudy !== undefined) return `${degree} (${fieldOfStudy})`;\n return degree ?? fieldOfStudy;\n}\n\nfunction composeEducationDescription(\n description: string | undefined,\n grade: string | undefined,\n): string | undefined {\n // `grade` may have already been stripped by the API privacy filter; if it\n // reaches us, prepend a labelled line to the description.\n if (grade !== undefined && description !== undefined) return `Grade: ${grade}. ${description}`;\n if (grade !== undefined) return `Grade: ${grade}`;\n return description;\n}\n\nfunction buildAwards(honors: LocalizedHonor[]): string[] | undefined {\n if (honors.length === 0) return undefined;\n return honors.map((h) => `${h.title} (${h.issuer}, ${h.date})`);\n}\n\nfunction buildVolunteeringRoles(volunteering: LocalizedVolunteering[]): object[] {\n return volunteering.map((v) => {\n const out: Record<string, unknown> = {};\n // Schema.org `VolunteerRole` is a pending property; we use the stable\n // `Role` type with `roleName` so indexers without VolunteerRole support\n // still read meaningful data.\n out['@type'] = 'Role';\n out.roleName = v.role;\n out.startDate = v.startDate;\n if (v.endDate !== undefined && v.endDate !== null) out.endDate = v.endDate;\n const description = composeVolunteeringDescription(v.cause, v.description);\n if (description !== undefined) out.description = description;\n const org: Record<string, unknown> = { '@type': 'Organization', name: v.organization };\n if (v.url !== undefined) org.url = v.url;\n out.memberOf = org;\n return out;\n });\n}\n\nfunction composeVolunteeringDescription(\n cause: string | undefined,\n description: string | undefined,\n): string | undefined {\n if (cause !== undefined && description !== undefined) return `Cause: ${cause}. ${description}`;\n if (cause !== undefined) return `Cause: ${cause}`;\n return description;\n}\n\nfunction buildPublications(publications: LocalizedPublication[]): object[] {\n return publications.map((p) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'ScholarlyArticle';\n out.name = p.title;\n if (p.publisher !== undefined) {\n out.publisher = { '@type': 'Organization', name: p.publisher };\n }\n out.datePublished = p.date;\n if (p.url !== undefined) out.url = p.url;\n if (p.doi !== undefined) {\n out.identifier = { '@type': 'PropertyValue', propertyID: 'DOI', value: p.doi };\n }\n if (p.coAuthors !== undefined && p.coAuthors.length > 0) {\n out.author = p.coAuthors.map((name) => ({ '@type': 'Person', name }));\n }\n return out;\n });\n}\n\nfunction buildCourses(courses: LocalizedCourse[]): object[] {\n return courses.map((c) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'Course';\n out.name = c.title;\n if (c.provider !== undefined) {\n out.provider = { '@type': 'Organization', name: c.provider };\n }\n if (c.courseNumber !== undefined) out.courseCode = c.courseNumber;\n if (c.certificateUrl !== undefined) out.url = c.certificateUrl;\n if (c.completionDate !== undefined) {\n // Schema.org Course has no direct date property; dates live on\n // CourseInstance via hasCourseInstance.\n out.hasCourseInstance = {\n '@type': 'CourseInstance',\n endDate: c.completionDate,\n };\n }\n return out;\n });\n}\n\nfunction buildPatentWorks(patents: LocalizedPatent[]): object[] {\n return patents.map((p) => {\n const out: Record<string, unknown> = {};\n // Schema.org Patent is not in the released vocabulary; emit CreativeWork\n // with additionalType pointing at the pending Patent URL so consumers\n // that recognize it can specialize, while others fall back gracefully.\n out['@type'] = 'CreativeWork';\n out.additionalType = 'https://schema.org/Patent';\n out.name = p.title;\n out.identifier = p.patentNumber;\n if (p.office !== undefined) {\n out.publisher = { '@type': 'Organization', name: p.office };\n }\n out.creativeWorkStatus = p.status;\n if (p.grantDate !== undefined) {\n out.datePublished = p.grantDate;\n } else if (p.filingDate !== undefined) {\n out.dateCreated = p.filingDate;\n }\n if (p.url !== undefined) out.url = p.url;\n if (p.coInventors !== undefined && p.coInventors.length > 0) {\n out.author = p.coInventors.map((name) => ({ '@type': 'Person', name }));\n }\n return out;\n });\n}\n","/**\n * Export and import for takuhon profile documents.\n *\n * {@link exportTakuhon} serialises a {@link Takuhon} document into a transport\n * form ({@link ExportedTakuhon}) that can be persisted to a file, an API\n * response, or any other byte-oriented sink. {@link importTakuhon} is the\n * inverse: it validates the input and returns a {@link Takuhon}.\n *\n * Scope of these helpers (deliberately narrow):\n * - Pure, in-memory data transforms — no I/O, no storage adapter coupling.\n * - {@link importTakuhon} **does not** auto-migrate older `schemaVersion`\n * values. Cross-version handling belongs to the CLI / API layer, which\n * composes `importTakuhon` + {@link migrateTakuhon} + storage adapters as\n * spelled out in operational-lifecycle §5.3.\n * - Round-trip equivalence (operational-lifecycle §5.1) is preserved up to\n * the documented `meta.updatedAt` exception.\n *\n * Asset embedding (Base64) and backup creation are out of scope here; both\n * are the storage / API layer's responsibility.\n */\n\nimport type { Takuhon } from './types.js';\nimport { validate, type ValidationError } from './validate.js';\n\n/**\n * Structural alias of {@link Takuhon}: the transport form is the document\n * itself. A wrapping envelope (e.g. `{ format, version, data, hash }`) is\n * intentionally avoided in Phase 1 — adding one later would be a breaking\n * change to the `GET /api/admin/export` response shape and would require a major\n * version bump of `@takuhon/core`.\n */\nexport type ExportedTakuhon = Takuhon;\n\n/** Options for {@link exportTakuhon}. */\nexport interface ExportOptions {\n /**\n * When `true` (default), `meta.updatedAt` is overwritten with the current\n * ISO-8601 timestamp. Set to `false` for byte-for-byte reproducible\n * exports (e.g. roundtrip tests).\n *\n * Round-trip equivalence per operational-lifecycle §5.1 explicitly lists\n * `meta.updatedAt` as the allowed exception.\n */\n updateTimestamp?: boolean;\n}\n\n/**\n * Thrown by {@link importTakuhon} when the input fails schema validation\n * (including an unsupported `schemaVersion`). The `errors` field carries\n * the same {@link ValidationError} list that `validate()` would have\n * returned, so the API layer can map them onto RFC 7807.\n */\nexport class ImportError extends Error {\n readonly errors?: ValidationError[];\n\n constructor(message: string, options?: { cause?: unknown; errors?: ValidationError[] }) {\n super(message, { cause: options?.cause });\n this.name = 'ImportError';\n this.errors = options?.errors;\n }\n}\n\n/**\n * Serialise a {@link Takuhon} into its transport form. The input is\n * deep-cloned via `JSON.parse(JSON.stringify(...))`; the original is never\n * mutated.\n */\nexport function exportTakuhon(data: Takuhon, options: ExportOptions = {}): ExportedTakuhon {\n const out = JSON.parse(JSON.stringify(data)) as ExportedTakuhon;\n if (options.updateTimestamp !== false) {\n out.meta = { ...out.meta, updatedAt: new Date().toISOString() };\n }\n return out;\n}\n\n/**\n * Validate an {@link ExportedTakuhon} and return it as a {@link Takuhon}.\n *\n * On schema validation failure (including an unsupported `schemaVersion`)\n * throws an {@link ImportError} with the structured `errors` attached. The\n * input is not mutated. The return value is a deep clone, so subsequent\n * caller mutations cannot reach back into the supplied document.\n *\n * Cross-version inputs (older `schemaVersion`) are out of scope: callers\n * (CLI / API layer) should run {@link migrateTakuhon} before calling this.\n */\nexport function importTakuhon(data: ExportedTakuhon): Takuhon {\n const result = validate(data);\n if (!result.ok) {\n throw new ImportError('imported document failed schema validation', { errors: result.errors });\n }\n return JSON.parse(JSON.stringify(result.data)) as Takuhon;\n}\n","/**\n * Public-endpoint privacy filter for takuhon profile documents.\n *\n * Strips fields that the spec's privacy posture marks as opt-in for public\n * exposure, before the document reaches a public reader (a public API\n * response, a statically built page, …). The filter is deliberately\n * conservative: when `meta.privacy` is absent the most restrictive\n * interpretation applies (everything sensitive is hidden), and the operator\n * must explicitly opt into disclosure by setting the relevant flag to\n * `false`.\n *\n * This lives in `@takuhon/core` because it is a pure transform over the core\n * document types with no transport coupling, so every public surface — the\n * API layer, the CLI's `build`, future renderers — applies the exact same\n * projection. `@takuhon/api` re-exports it for backwards compatibility.\n *\n * Fields filtered:\n *\n * - `certifications[*].credentialId` — hidden when\n * `meta.privacy.hideCredentialIds !== false` (default true).\n * - `education[*].grade` — hidden when\n * `meta.privacy.hideEducationGrades !== false` (default true).\n * - `contact.email` — hidden when `contact.showEmail !== true`.\n *\n * `patents[*].patentNumber` is **not** filtered. Patent numbers are public\n * records (issued patents are published by the granting office) and Spec\n * §6.21 explicitly excludes them from the privacy block.\n *\n * Behavior:\n *\n * - Pure function. The input is never mutated; a shallow-copied result is\n * returned with only the touched arrays / objects replaced.\n * - When no filter applies (every flag opts into disclosure), the original\n * reference is returned as-is so callers can compare by identity.\n * - Admin endpoints (`/api/admin/*`, including `/api/admin/export`) MUST NOT\n * call this helper — they always serve the full document to authenticated\n * callers.\n */\n\nimport type { LocalizedTakuhon, Takuhon } from './types.js';\n\n/**\n * Union of the two profile shapes that traverse the public path. The fields\n * the filter touches (`certifications[*].credentialId`, `education[*].grade`,\n * `contact.email`) are structurally identical between {@link Takuhon} and\n * {@link LocalizedTakuhon}, so the same logic applies to either shape.\n */\ntype FilterableProfile = Takuhon | LocalizedTakuhon;\n\n/**\n * Return a privacy-filtered copy of `profile` suitable for public responses.\n *\n * @param profile Either a raw {@link Takuhon} or a locale-resolved\n * {@link LocalizedTakuhon}. The output preserves the input's\n * exact shape.\n */\nexport function applyPublicPrivacyFilter<T extends FilterableProfile>(profile: T): T {\n const hideCredentialIds = profile.meta.privacy?.hideCredentialIds !== false;\n const hideEducationGrades = profile.meta.privacy?.hideEducationGrades !== false;\n const allowEmail = profile.contact.showEmail === true;\n\n const stripCertifications = hideCredentialIds && hasAnyCredentialId(profile);\n const stripEducation = hideEducationGrades && hasAnyGrade(profile);\n const stripEmail = !allowEmail && profile.contact.email !== undefined;\n\n if (!stripCertifications && !stripEducation && !stripEmail) {\n return profile;\n }\n\n const out: FilterableProfile = { ...profile };\n\n if (stripCertifications) {\n out.certifications = profile.certifications.map(stripCredentialId) as T['certifications'];\n }\n\n if (stripEducation) {\n out.education = profile.education.map(stripGrade) as T['education'];\n }\n\n if (stripEmail) {\n const { email: _omit, ...rest } = profile.contact;\n out.contact = rest;\n }\n\n return out as T;\n}\n\nfunction hasAnyCredentialId(profile: FilterableProfile): boolean {\n return profile.certifications.some((c) => c.credentialId !== undefined);\n}\n\nfunction hasAnyGrade(profile: FilterableProfile): boolean {\n return profile.education.some((e) => e.grade !== undefined);\n}\n\nfunction stripCredentialId<T extends { credentialId?: string }>(item: T): T {\n if (item.credentialId === undefined) return item;\n const { credentialId: _omit, ...rest } = item;\n return rest as T;\n}\n\nfunction stripGrade<T extends { grade?: string }>(item: T): T {\n if (item.grade === undefined) return item;\n const { grade: _omit, ...rest } = item;\n return rest as T;\n}\n","/**\n * Module-private chain-building helper for the migration registry.\n *\n * Not re-exported from `@takuhon/core`'s public surface: the algorithm is an\n * implementation detail of {@link migrateTakuhon}, and adding it to the\n * public API would freeze its signature under semver. Unit tests import\n * this file directly to exercise the chain logic against synthetic\n * fixtures.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\n/**\n * Build a forward chain of migrations from `from` to `to`. Returns `[]`\n * when `from === to`, or `null` when no chain exists or a cycle is\n * encountered. The walk is linear (one outgoing edge per `from`); a\n * visited-set guards against cycles introduced by misconfigured registries.\n */\nexport function findMigrationChain(\n from: string,\n to: string,\n registry: readonly Migration<Takuhon, Takuhon>[],\n): Migration<Takuhon, Takuhon>[] | null {\n if (from === to) return [];\n const byFrom = new Map<string, Migration<Takuhon, Takuhon>>();\n for (const m of registry) byFrom.set(m.from, m);\n const chain: Migration<Takuhon, Takuhon>[] = [];\n const visited = new Set<string>([from]);\n let cur = from;\n while (cur !== to) {\n const next = byFrom.get(cur);\n if (!next) return null;\n if (visited.has(next.to)) return null;\n chain.push(next);\n visited.add(next.to);\n cur = next.to;\n }\n return chain;\n}\n","/**\n * Forward migration from schema 0.1.0 to 0.2.0.\n *\n * Adds nine new top-level array fields (`certifications` / `memberships` /\n * `volunteering` / `honors` / `education` / `publications` / `languages` /\n * `courses` / `patents`) and the `meta.privacy` opt-out block. The\n * transformation is additive: existing fields pass through untouched and no\n * 0.1.x value is dropped.\n *\n * Conditional spread is intentional. The 0.1.x schema closes the document\n * root (`additionalProperties: false`), so a validated 0.1.x profile cannot\n * carry pre-existing values at the new keys. The migration nevertheless\n * runs on `unknown`-shaped input that may not have been validated yet — a\n * stored profile authored ahead of time with forward-compatible 0.2.0 keys,\n * an import file from a downstream consumer, etc. Preserving any value\n * already present at these keys prevents data loss in those paths.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\nexport const v0_1_0_to_v0_2_0: Migration<Takuhon, Takuhon> = {\n from: '0.1.0',\n to: '0.2.0',\n migrate(data: Takuhon): Takuhon {\n const partial = data as Partial<Takuhon>;\n return {\n ...data,\n schemaVersion: '0.2.0',\n certifications: partial.certifications ?? [],\n memberships: partial.memberships ?? [],\n volunteering: partial.volunteering ?? [],\n honors: partial.honors ?? [],\n education: partial.education ?? [],\n publications: partial.publications ?? [],\n languages: partial.languages ?? [],\n courses: partial.courses ?? [],\n patents: partial.patents ?? [],\n };\n },\n};\n","/**\n * Forward migration from schema 0.2.0 to 0.3.0.\n *\n * Adds the `testScores` top-level array (standardized test / exam scores,\n * LinkedIn `Test_Scores.csv` equivalent). The transformation is additive:\n * existing fields pass through untouched and no 0.2.x value is dropped.\n *\n * Conditional spread mirrors `v0.1.0-to-v0.2.0`. The 0.2.x schema closes the\n * document root (`additionalProperties: false`), so a validated 0.2.x profile\n * cannot carry a pre-existing `testScores` value. The migration nevertheless\n * runs on `unknown`-shaped input that may not have been validated yet — a\n * stored profile authored ahead of time with a forward-compatible 0.3.0 key,\n * an import file from a downstream consumer, etc. Preserving any value already\n * present at `testScores` prevents data loss in those paths.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\nexport const v0_2_0_to_v0_3_0: Migration<Takuhon, Takuhon> = {\n from: '0.2.0',\n to: '0.3.0',\n migrate(data: Takuhon): Takuhon {\n const partial = data as Partial<Takuhon>;\n return {\n ...data,\n schemaVersion: '0.3.0',\n testScores: partial.testScores ?? [],\n };\n },\n};\n","/**\n * Forward migration from schema 0.3.0 to 0.4.0.\n *\n * Adds the `recommendations` top-level array (owner-curated testimonials, the\n * LinkedIn `Recommendations_Received.csv` equivalent). The transformation is\n * additive: existing fields pass through untouched and no 0.3.x value is\n * dropped.\n *\n * Conditional spread mirrors the earlier migrations. The 0.3.x schema closes\n * the document root (`additionalProperties: false`), so a validated 0.3.x\n * profile cannot carry a pre-existing `recommendations` value. The migration\n * nevertheless runs on `unknown`-shaped input that may not have been validated\n * yet — a stored profile authored ahead of time with a forward-compatible\n * 0.4.0 key, an import file from a downstream consumer, etc. Preserving any\n * value already present at `recommendations` prevents data loss in those paths.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\nexport const v0_3_0_to_v0_4_0: Migration<Takuhon, Takuhon> = {\n from: '0.3.0',\n to: '0.4.0',\n migrate(data: Takuhon): Takuhon {\n const partial = data as Partial<Takuhon>;\n return {\n ...data,\n schemaVersion: '0.4.0',\n recommendations: partial.recommendations ?? [],\n };\n },\n};\n","/**\n * Forward migration registry for `@takuhon/core`.\n *\n * Each migration is a pure function from a takuhon document at version `from`\n * to one at version `to`. The registry is consulted by {@link migrateTakuhon}\n * to build a chain when the requested target is more than one step away\n * (`0.1.0 → 0.3.0` is composed of `0.1.0→0.2.0` and `0.2.0→0.3.0`).\n *\n * Authoring conventions:\n * - File name: `vX.Y.Z-to-vA.B.C.ts`\n * - Pure function: must not mutate input, must not perform I/O\n * - Forward only: downgrades are not provided; recovery is via the backup\n * restore path (operational-lifecycle §4)\n * - Each entry ships with a unit test: sample input/output, idempotency\n * when applicable, and schema-pass against the target version's schema\n *\n * The chain-building algorithm lives in `_chain.ts` and is intentionally\n * not re-exported from `@takuhon/core` — it is an implementation detail of\n * {@link migrateTakuhon}.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport { v0_1_0_to_v0_2_0 } from './v0.1.0-to-v0.2.0.js';\nimport { v0_2_0_to_v0_3_0 } from './v0.2.0-to-v0.3.0.js';\nimport { v0_3_0_to_v0_4_0 } from './v0.3.0-to-v0.4.0.js';\n\n/**\n * A forward migration entry. `from` and `to` are semver strings matching\n * the `schemaVersion` field of the input and output documents. `migrate`\n * is pure: it must not mutate `data`.\n */\nexport interface Migration<From, To> {\n from: string;\n to: string;\n migrate(data: From): To;\n}\n\n/**\n * Forward migrations bundled with this build of `@takuhon/core`.\n *\n * Entries are listed in the order they would chain for forward migration\n * (`0.1.0 → 0.2.0 → 0.3.0 → ...`). {@link migrateTakuhon} consults this\n * array to build the chain between a source `schemaVersion` and a target.\n */\nexport const migrations: readonly Migration<Takuhon, Takuhon>[] = [\n v0_1_0_to_v0_2_0,\n v0_2_0_to_v0_3_0,\n v0_3_0_to_v0_4_0,\n];\n","/**\n * Forward migration entry point for takuhon documents.\n *\n * {@link migrateTakuhon} composes a chain of {@link Migration} entries from\n * the registry (`./migrations`) and applies them in order. The registry\n * currently ships the `0.1.0 → 0.2.0`, `0.2.0 → 0.3.0`, and `0.3.0 → 0.4.0`\n * forward migrations; a request whose source has no chain to the target\n * throws {@link MigrationError}.\n *\n * Scope (deliberately narrow, mirroring `export.ts`):\n * - Pure data transform — no I/O, no backup creation, no storage write.\n * - Backup-before-migrate (operational-lifecycle §3.1) is the storage /\n * API layer's responsibility; this function only transforms the\n * in-memory document.\n * - Forward only (operational-lifecycle §2.4); downgrade is via restore.\n */\n\nimport { findMigrationChain } from './migrations/_chain.js';\nimport { migrations } from './migrations/index.js';\nimport type { Takuhon } from './types.js';\n\n/**\n * Thrown by {@link migrateTakuhon} when no forward chain connects the\n * source `schemaVersion` to `targetVersion`. The message includes both\n * versions so the API layer can surface an actionable RFC 7807 problem.\n */\nexport class MigrationError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'MigrationError';\n }\n}\n\n/**\n * Migrate a takuhon document forward to `targetVersion`. Returns a deep\n * clone; the input is never mutated, even when a migration throws.\n *\n * @throws {MigrationError} when no forward chain exists from\n * `data.schemaVersion` to `targetVersion`.\n */\nexport function migrateTakuhon(data: Takuhon, targetVersion: string): Takuhon {\n const sourceVersion = data.schemaVersion;\n if (sourceVersion === targetVersion) {\n return JSON.parse(JSON.stringify(data)) as Takuhon;\n }\n const chain = findMigrationChain(sourceVersion, targetVersion, migrations);\n if (!chain) {\n throw new MigrationError(`No migration path from ${sourceVersion} to ${targetVersion}`);\n }\n let current: Takuhon = JSON.parse(JSON.stringify(data)) as Takuhon;\n for (const step of chain) {\n current = step.migrate(current);\n }\n return current;\n}\n","/**\n * Persistence contracts for takuhon profile documents and binary assets.\n *\n * Adapters (KV / R2 / filesystem / SQLite / …) implement these interfaces to\n * plug into `@takuhon/api`. All methods are async; failures surface as\n * exceptions in the {@link StorageError} family so the API layer can map them\n * onto RFC 7807 problem details.\n *\n * Design notes:\n * - `version` is an opaque ETag-like token (UUID, hash, monotonic counter —\n * the adapter chooses). It powers HTTP `If-Match` style optimistic locking\n * and is unrelated to {@link Takuhon.schemaVersion}, which describes the\n * document's data-model version.\n * - `getProfile()` returns a raw {@link Takuhon}, not a normalized or\n * locale-resolved one. Normalization and locale resolution belong to the\n * API / render layer; storage only persists.\n * - `saveProfile(data, ifMatch?)` rejects with {@link ConflictError} when\n * `ifMatch` is supplied and does not equal the current stored version.\n * When `ifMatch` is omitted, the adapter's policy decides whether to\n * overwrite unconditionally; per-implementation docs spell this out.\n * - `TakuhonAssetStorage` is intentionally a separate interface so deployments\n * that don't host user-uploaded media (e.g. static export) can omit it.\n * - The naming standardises on the lowercase \"Takuhon\" word (cf.\n * {@link Takuhon}, {@link LocalizedTakuhon}, `normalize`, `validate`) even\n * where upstream documents write \"Takuhon\".\n */\n\nimport type { Takuhon } from './types.js';\n\n/**\n * Persistence contract for the single profile document of a takuhon instance.\n *\n * Implementations: Cloudflare KV (Phase 3), filesystem (Phase 3+), in-memory\n * test doubles, and future SQL adapters.\n */\nexport interface TakuhonStorage {\n /**\n * Read the current profile document and its opaque version token.\n *\n * @throws {NotFoundError} when no profile has been saved yet.\n */\n getProfile(): Promise<{ data: Takuhon; version: string }>;\n\n /**\n * Replace the profile document. The returned `version` is the new opaque\n * token to supply as the next `ifMatch`.\n *\n * @param data the document to persist (raw, not normalized)\n * @param ifMatch when set, the adapter rejects the write unless the\n * current stored version equals this token\n * @throws {ConflictError} when `ifMatch` is supplied and does not equal\n * the current stored version\n */\n saveProfile(data: Takuhon, ifMatch?: string): Promise<{ version: string }>;\n\n /**\n * Remove the profile document. Idempotent: no error when nothing is stored.\n */\n deleteProfile(): Promise<void>;\n}\n\n/**\n * Metadata for a stored binary asset, returned by {@link TakuhonAssetStorage}.\n *\n * `url` is the relative path used inside the document (`/assets/...`);\n * `publicUrl` is the absolute URL a browser can fetch. The two are kept\n * distinct because adapters may serve assets from a different host than the\n * profile (e.g. Cloudflare R2 + custom CDN).\n */\nexport interface AssetRecord {\n id: string;\n url: string;\n publicUrl: string;\n mimeType: string;\n size: number;\n width?: number;\n height?: number;\n /** ISO-8601 timestamp. */\n createdAt?: string;\n}\n\n/**\n * Caller hints for {@link TakuhonAssetStorage.putAsset}. Both fields are\n * optional; when omitted, the adapter falls back to the `File` / `Blob`\n * metadata. Adapters are responsible for magic-byte verification, EXIF\n * stripping, and dimension limits — callers must not pre-process.\n */\nexport interface AssetOptions {\n filename?: string;\n contentType?: string;\n}\n\n/**\n * Persistence contract for binary assets (avatars, project images, …).\n *\n * `listAssets()` is unbounded by design for the MVP; later phases may\n * introduce paginated semantics with a different return shape. `getPublicUrl()`\n * takes only an `assetId` today; a future options object (e.g. `expiresIn`\n * for signed URLs) would be added in a backward-compatible way.\n */\nexport interface TakuhonAssetStorage {\n putAsset(file: File | Blob, options?: AssetOptions): Promise<AssetRecord>;\n /** @throws {NotFoundError} when no asset exists for `assetId`. */\n getPublicUrl(assetId: string): Promise<string>;\n /** Idempotent: no error when the asset is already absent. */\n deleteAsset(assetId: string): Promise<void>;\n listAssets(): Promise<AssetRecord[]>;\n}\n\n/**\n * Base class for errors thrown by storage adapters. Catch this to handle\n * any storage-layer failure uniformly; check `instanceof` of a subclass\n * (e.g. {@link NotFoundError}, {@link ConflictError}) to discriminate.\n */\nexport class StorageError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'StorageError';\n }\n}\n\n/** Thrown when a requested resource (profile or asset) does not exist. */\nexport class NotFoundError extends StorageError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'NotFoundError';\n }\n}\n\n/**\n * Thrown when an optimistic-locking precondition fails: the caller supplied\n * an `ifMatch` token that does not equal the current stored version.\n *\n * `currentVersion` (when set) carries the actual current version so the\n * caller can decide between refetch-and-retry and surfacing a 409 to the\n * end user without an extra round trip.\n */\nexport class ConflictError extends StorageError {\n readonly currentVersion?: string;\n\n constructor(message: string, options?: { currentVersion?: string; cause?: unknown }) {\n super(message, { cause: options?.cause });\n this.name = 'ConflictError';\n this.currentVersion = options?.currentVersion;\n }\n}\n","/**\n * @takuhon/core — canonical JSON Schema, hand-written TypeScript types,\n * Ajv-backed validation, document normalization, and locale resolution for\n * takuhon profile data.\n *\n * Public surface (Phase 1):\n * - {@link schema}: the JSON Schema 2020-12 contract bundled with this build.\n * - {@link SCHEMA_VERSION}: the version of that schema (matches the `$id`).\n * - {@link validate} / {@link ValidationResult} / {@link ValidationError} /\n * {@link SUPPORTED_SCHEMA_VERSIONS}: Result-style validator backed by Ajv.\n * - {@link normalize} / {@link NormalizedTakuhon}: canonicalize a validated\n * document (sort lists by `order`, drop blank localized entries).\n * - {@link resolveLocale} / {@link LocalizedTakuhon}: collapse a multi-locale\n * document to a single requested locale with BCP-47 regional fallback.\n * - {@link generateJsonLd} / {@link generatePersonJsonLd} /\n * {@link generateProfilePageJsonLd}: emit Schema.org JSON-LD\n * (`ProfilePage` wrapping `Person`) from a locale-resolved document.\n * - {@link TakuhonStorage} / {@link TakuhonAssetStorage}: persistence contracts\n * for adapters (KV / R2 / filesystem / SQLite / …), with the\n * {@link StorageError} / {@link NotFoundError} / {@link ConflictError}\n * exception family for optimistic-locking and not-found signalling.\n * - {@link exportTakuhon} / {@link importTakuhon} / {@link ExportOptions} /\n * {@link ExportedTakuhon} / {@link ImportError}: roundtrip-stable\n * serialisation for transport (file, API response, …).\n * - {@link migrateTakuhon} / {@link Migration} / {@link migrations} /\n * {@link MigrationError}: forward-only migration registry, chaining\n * `0.1.0 → 0.2.0 → 0.3.0 → 0.4.0`.\n * - Domain types: {@link Takuhon} and its constituent shapes (`Profile`,\n * `Settings`, `Career`, `Project`, `Link` discriminated union, etc.).\n */\n\nexport { schema } from './schema.js';\nexport type { Schema } from './schema.js';\n\nexport { SUPPORTED_SCHEMA_VERSIONS, validate } from './validate.js';\nexport type { ValidationError, ValidationResult } from './validate.js';\n\nexport { normalize } from './normalize.js';\nexport { resolveLocale } from './resolve-locale.js';\nexport { generateJsonLd, generatePersonJsonLd, generateProfilePageJsonLd } from './jsonld.js';\n\nexport { ImportError, exportTakuhon, importTakuhon } from './export.js';\nexport type { ExportOptions, ExportedTakuhon } from './export.js';\n\nexport { applyPublicPrivacyFilter } from './privacy-filter.js';\n\nexport { MigrationError, migrateTakuhon } from './migrate.js';\nexport { migrations } from './migrations/index.js';\nexport type { Migration } from './migrations/index.js';\n\nexport { ConflictError, NotFoundError, StorageError } from './storage-interface.js';\nexport type {\n AssetOptions,\n AssetRecord,\n TakuhonAssetStorage,\n TakuhonStorage,\n} from './storage-interface.js';\n\nexport type {\n Address,\n Avatar,\n Career,\n Certification,\n Contact,\n ContentLicense,\n ContentLicenseAttribution,\n Course,\n Education,\n Honor,\n Iso3166Alpha2,\n IsoDateTime,\n Language,\n LanguageProficiency,\n Link,\n LinkBuiltin,\n LinkCustom,\n LinkType,\n LocaleTag,\n LocalizedAddress,\n LocalizedAvatar,\n LocalizedBody,\n LocalizedCareer,\n LocalizedCertification,\n LocalizedCourse,\n LocalizedEducation,\n LocalizedHonor,\n LocalizedLanguage,\n LocalizedLink,\n LocalizedLinkBuiltin,\n LocalizedLinkCustom,\n LocalizedMembership,\n LocalizedPatent,\n LocalizedProfile,\n LocalizedProject,\n LocalizedPublication,\n LocalizedRecommendation,\n LocalizedRecommendationAuthor,\n LocalizedTakuhon,\n LocalizedTestScore,\n LocalizedTitle,\n LocalizedVolunteering,\n Membership,\n Meta,\n MetaPrivacy,\n NormalizedTakuhon,\n Patent,\n PatentStatus,\n Profile,\n Project,\n Publication,\n Recommendation,\n RecommendationAuthor,\n Settings,\n Skill,\n Slug,\n Takuhon,\n TestScore,\n Volunteering,\n YearMonth,\n} from './types.js';\n\n/**\n * Version of the takuhon schema bundled with this build of `@takuhon/core`.\n * A takuhon profile document's `schemaVersion` field must be migrate-compatible\n * with this version. See operational-lifecycle docs for the migration policy.\n */\nexport const SCHEMA_VERSION = '0.4.0';\n"],"mappings":"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","names":["out"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/formats.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/equal.ts","../src/generated/takuhon-validator.cjs","../takuhon.schema.json","../src/schema.ts","../src/validate.ts","../src/normalize.ts","../src/locale-tag.ts","../src/resolve-locale.ts","../src/jsonld.ts","../src/export.ts","../src/privacy-filter.ts","../src/migrations/_chain.ts","../src/migrations/v0.1.0-to-v0.2.0.ts","../src/migrations/v0.2.0-to-v0.3.0.ts","../src/migrations/v0.3.0-to-v0.4.0.ts","../src/migrations/index.ts","../src/migrate.ts","../src/storage-interface.ts","../src/index.ts"],"sourcesContent":["// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator<string>,\n compare: FormatCompare<string>\n): FormatDefinition<string> {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\":\n /^(?:[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,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\":\n /^(?:(?:[^\\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,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n 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,\n email:\n /^[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,\n hostname:\n /^(?=.{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,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n 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)$/,\n 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,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: {type: \"number\", validate: validateInt32},\n // signed 64 bit integer\n int64: {type: \"number\", validate: validateInt64},\n // C-type float\n float: {type: \"number\", validate: validateNumber},\n // C-type double\n double: {type: \"number\", validate: validateNumber},\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\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,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\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,\n compareIsoDateTime\n ),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email:\n /^[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,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) return true\n // leap second\n const utcMin = min - tzM * tzSign\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0)\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61\n }\n}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) return undefined\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf()\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf()\n if (!(t1 && t2)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n const res = compareDate(d1, d2)\n if (res === undefined) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[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\n\nfunction uri(str: string): boolean {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","/* eslint-disable */\n// AUTO-GENERATED by scripts/generate-validator.mjs — do not edit by hand.\n// Standalone Ajv validator for takuhon.schema.json (no runtime eval).\n\"use strict\";module.exports = validate20;module.exports.default = validate20;const schema31 = {\"$schema\":\"https://json-schema.org/draft/2020-12/schema\",\"$id\":\"https://takuhon.example/schemas/0.4.0/takuhon.schema.json\",\"title\":\"Takuhon Profile\",\"description\":\"Portable profile data format consumed by @takuhon/core. The canonical contract for profile content authored as takuhon.json.\",\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"schemaVersion\",\"profile\",\"links\",\"careers\",\"projects\",\"skills\",\"contact\",\"settings\",\"meta\"],\"properties\":{\"schemaVersion\":{\"type\":\"string\",\"pattern\":\"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[a-zA-Z0-9.-]+)?$\",\"description\":\"Semantic version of the takuhon schema this document conforms to.\"},\"profile\":{\"$ref\":\"#/$defs/Profile\"},\"links\":{\"type\":\"array\",\"maxItems\":100,\"items\":{\"$ref\":\"#/$defs/Link\"}},\"careers\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"$ref\":\"#/$defs/Career\"}},\"projects\":{\"type\":\"array\",\"maxItems\":100,\"items\":{\"$ref\":\"#/$defs/Project\"}},\"skills\":{\"type\":\"array\",\"maxItems\":200,\"items\":{\"$ref\":\"#/$defs/Skill\"}},\"certifications\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"$ref\":\"#/$defs/Certification\"}},\"memberships\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"$ref\":\"#/$defs/Membership\"}},\"volunteering\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"$ref\":\"#/$defs/Volunteering\"}},\"honors\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"$ref\":\"#/$defs/Honor\"}},\"education\":{\"type\":\"array\",\"maxItems\":30,\"items\":{\"$ref\":\"#/$defs/Education\"}},\"publications\":{\"type\":\"array\",\"maxItems\":100,\"items\":{\"$ref\":\"#/$defs/Publication\"}},\"languages\":{\"type\":\"array\",\"maxItems\":30,\"items\":{\"$ref\":\"#/$defs/Language\"}},\"courses\":{\"type\":\"array\",\"maxItems\":100,\"items\":{\"$ref\":\"#/$defs/Course\"}},\"patents\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"$ref\":\"#/$defs/Patent\"}},\"testScores\":{\"type\":\"array\",\"maxItems\":30,\"items\":{\"$ref\":\"#/$defs/TestScore\"}},\"recommendations\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"$ref\":\"#/$defs/Recommendation\"}},\"contact\":{\"$ref\":\"#/$defs/Contact\"},\"settings\":{\"$ref\":\"#/$defs/Settings\"},\"meta\":{\"$ref\":\"#/$defs/Meta\"}},\"$defs\":{\"LocaleTag\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":35,\"pattern\":\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\",\"description\":\"BCP-47 language tag (e.g., 'en', 'ja', 'zh-Hant', 'pt-BR').\"},\"Iso3166Alpha2\":{\"type\":\"string\",\"pattern\":\"^[A-Z]{2}$\",\"description\":\"ISO 3166-1 alpha-2 country code (uppercase, two letters).\"},\"YearMonth\":{\"type\":\"string\",\"pattern\":\"^[0-9]{4}-(0[1-9]|1[0-2])$\",\"description\":\"Year-month in 'YYYY-MM' format (Gregorian calendar).\"},\"IsoDateTime\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"ISO 8601 date-time (e.g., 2026-05-11T12:34:56Z).\"},\"Url\":{\"type\":\"string\",\"format\":\"uri\",\"maxLength\":2048},\"Email\":{\"type\":\"string\",\"format\":\"email\",\"maxLength\":254},\"Slug\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"pattern\":\"^[a-z0-9][a-z0-9-]*$\",\"description\":\"URL-safe identifier (lowercase alphanumerics and hyphens, must start with alphanumeric).\"},\"LocalizedTitle\":{\"type\":\"object\",\"minProperties\":1,\"propertyNames\":{\"type\":\"string\",\"pattern\":\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},\"additionalProperties\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":200},\"description\":\"Map of BCP-47 locale tag to short title-like string (max 200 chars per value).\"},\"LocalizedBody\":{\"type\":\"object\",\"minProperties\":1,\"propertyNames\":{\"type\":\"string\",\"pattern\":\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},\"additionalProperties\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":5000},\"description\":\"Map of BCP-47 locale tag to body-length string (max 5000 chars per value).\"},\"LinkType\":{\"type\":\"string\",\"enum\":[\"website\",\"blog\",\"github\",\"gitlab\",\"linkedin\",\"x\",\"mastodon\",\"bluesky\",\"instagram\",\"youtube\",\"threads\",\"facebook\",\"email\",\"rss\",\"custom\"],\"description\":\"Identifies the kind of link. 'custom' requires iconUrl.\"},\"Profile\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"displayName\"],\"properties\":{\"displayName\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"tagline\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"bio\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"avatar\":{\"$ref\":\"#/$defs/Avatar\"},\"location\":{\"$ref\":\"#/$defs/Address\"}}},\"Avatar\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"url\"],\"properties\":{\"url\":{\"type\":\"string\",\"format\":\"uri-reference\",\"maxLength\":2048,\"description\":\"URL or path to the avatar image.\"},\"alt\":{\"$ref\":\"#/$defs/LocalizedTitle\"}}},\"Address\":{\"type\":\"object\",\"additionalProperties\":true,\"properties\":{\"country\":{\"$ref\":\"#/$defs/Iso3166Alpha2\"},\"region\":{\"type\":\"string\",\"maxLength\":100},\"locality\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"display\":{\"$ref\":\"#/$defs/LocalizedTitle\"}}},\"Link\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"id\",\"type\",\"url\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"type\":{\"$ref\":\"#/$defs/LinkType\"},\"label\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"featured\":{\"type\":\"boolean\"},\"order\":{\"type\":\"integer\",\"minimum\":0},\"iconUrl\":{\"$ref\":\"#/$defs/Url\"}},\"allOf\":[{\"if\":{\"properties\":{\"type\":{\"const\":\"custom\"}},\"required\":[\"type\"]},\"then\":{\"properties\":{\"iconUrl\":{\"$ref\":\"#/$defs/Url\"}},\"required\":[\"iconUrl\"]}}]},\"Career\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"organization\",\"role\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"organization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"role\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}]},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"location\":{\"$ref\":\"#/$defs/Address\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Project\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"tags\":{\"type\":\"array\",\"maxItems\":30,\"items\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50}},\"relatedCareerId\":{\"$ref\":\"#/$defs/Slug\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}]},\"highlighted\":{\"type\":\"boolean\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Skill\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"label\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"label\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100},\"category\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"description\":\"Recommended values (extensible): programming, design, business, communication, language, music, art, sports, other.\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Contact\":{\"type\":\"object\",\"additionalProperties\":true,\"properties\":{\"email\":{\"$ref\":\"#/$defs/Email\"},\"showEmail\":{\"type\":\"boolean\",\"default\":false},\"formUrl\":{\"$ref\":\"#/$defs/Url\"}}},\"Settings\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"defaultLocale\",\"availableLocales\"],\"properties\":{\"defaultLocale\":{\"$ref\":\"#/$defs/LocaleTag\"},\"fallbackLocale\":{\"$ref\":\"#/$defs/LocaleTag\"},\"availableLocales\":{\"type\":\"array\",\"minItems\":1,\"maxItems\":50,\"uniqueItems\":true,\"items\":{\"$ref\":\"#/$defs/LocaleTag\"}},\"theme\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"description\":\"UI theme identifier. 'default' is the built-in theme; adapters may add more.\"},\"showPoweredBy\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Display the 'Powered by takuhon' attribution in the rendered profile.\"},\"enableJsonLd\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Emit Schema.org JSON-LD on the rendered profile page.\"},\"enableApi\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Expose the public read API endpoints (GET /api/profile, /api/jsonld, /api/schema, /takuhon.json).\"},\"enableAnalytics\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Opt-in flag for first-party analytics. Default is false to keep takuhon privacy-respecting by default.\"}}},\"Meta\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"contentLicense\"],\"properties\":{\"createdAt\":{\"$ref\":\"#/$defs/IsoDateTime\"},\"updatedAt\":{\"$ref\":\"#/$defs/IsoDateTime\"},\"generator\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100,\"description\":\"Tool that produced this document (e.g. 'Takuhon', 'create-takuhon@0.1.0').\"},\"contentLicense\":{\"$ref\":\"#/$defs/ContentLicense\"},\"privacy\":{\"$ref\":\"#/$defs/MetaPrivacy\"}}},\"ContentLicense\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"spdxId\"],\"properties\":{\"spdxId\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"description\":\"SPDX identifier (e.g., 'CC-BY-4.0', 'CC0-1.0') or 'Proprietary'. No default; the profile owner must choose explicitly.\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"attribution\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"name\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":200},\"url\":{\"$ref\":\"#/$defs/Url\"}}},\"rights\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":1000,\"description\":\"Free-form rights statement (used when spdxId='Proprietary' or for additional notices).\"}}},\"MetaPrivacy\":{\"type\":\"object\",\"additionalProperties\":true,\"description\":\"Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/admin/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.\",\"properties\":{\"hideCredentialIds\":{\"type\":\"boolean\",\"default\":true,\"description\":\"When true (default), strip certifications[*].credentialId from public responses.\"},\"hideEducationGrades\":{\"type\":\"boolean\",\"default\":true,\"description\":\"When true (default), strip education[*].grade from public responses.\"}}},\"Certification\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"issuingOrganization\",\"issueDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"issuingOrganization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"issueDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"expirationDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}],\"description\":\"null = explicitly 'no expiration'. Omit if unknown/unstated.\"},\"credentialId\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100,\"description\":\"License or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds.\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Membership\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"organization\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"organization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"role\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}],\"description\":\"null = ongoing. Omit if unknown.\"},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Volunteering\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"organization\",\"role\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"organization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"role\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"cause\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}]},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Honor\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"issuer\",\"date\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"issuer\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Education\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"institution\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"institution\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"degree\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"fieldOfStudy\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"grade\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50,\"description\":\"Free-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades.\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}],\"description\":\"null = currently enrolled.\"},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Publication\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"date\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"publisher\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"doi\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":200,\"description\":\"DOI identifier (e.g. '10.1145/3548643.3548644'). The full URL goes in 'url'.\"},\"coAuthors\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100},\"description\":\"Co-author names in original script. Excludes the profile owner.\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Language\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"language\",\"proficiency\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"language\":{\"$ref\":\"#/$defs/LocaleTag\"},\"displayName\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"proficiency\":{\"type\":\"string\",\"enum\":[\"native\",\"fluent\",\"professional\",\"intermediate\",\"basic\"],\"description\":\"LinkedIn-compatible 5-level proficiency.\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Course\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"provider\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"courseNumber\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"completionDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"certificateUrl\":{\"$ref\":\"#/$defs/Url\"},\"relatedEducationId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to an education[].id (e.g. for university coursework).\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Patent\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"patentNumber\",\"status\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"patentNumber\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100},\"office\":{\"type\":\"string\",\"maxLength\":100,\"description\":\"Patent office name (e.g. 'USPTO', 'JPO', 'EPO').\"},\"status\":{\"type\":\"string\",\"enum\":[\"pending\",\"issued\",\"expired\",\"abandoned\"]},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"filingDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"grantDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"coInventors\":{\"type\":\"array\",\"maxItems\":20,\"items\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100}},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"TestScore\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"score\",\"date\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"score\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50,\"description\":\"Free-form score string (e.g. '112 / 120', '330', 'N1 Pass', or a percentile). The validator does not interpret its contents.\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"relatedEducationId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to an education[].id (e.g. for a university course exam).\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"Recommendation\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"body\",\"author\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"body\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"author\":{\"$ref\":\"#/$defs/RecommendationAuthor\"},\"relationship\":{\"$ref\":\"#/$defs/LocalizedTitle\",\"description\":\"How the recommender relates to the profile owner (e.g. 'managed directly', 'worked together').\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"relatedCareerId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to a careers[].id (the position the recommendation pertains to).\"},\"relatedEducationId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to an education[].id (e.g. a recommendation from a professor).\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}},\"RecommendationAuthor\":{\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100,\"description\":\"Recommender's name, in its original script. Owner-curated; takuhon does not verify it.\"},\"headline\":{\"$ref\":\"#/$defs/LocalizedTitle\",\"description\":\"Recommender's title / role / organization at the time of the recommendation.\"},\"url\":{\"$ref\":\"#/$defs/Url\",\"description\":\"Link to the recommender's profile, for external verification by the reader.\"}}}}};const func1 = Object.prototype.hasOwnProperty;const pattern4 = new RegExp(\"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[a-zA-Z0-9.-]+)?$\", \"u\");const schema32 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"displayName\"],\"properties\":{\"displayName\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"tagline\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"bio\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"avatar\":{\"$ref\":\"#/$defs/Avatar\"},\"location\":{\"$ref\":\"#/$defs/Address\"}}};const schema33 = {\"type\":\"object\",\"minProperties\":1,\"propertyNames\":{\"type\":\"string\",\"pattern\":\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},\"additionalProperties\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":200},\"description\":\"Map of BCP-47 locale tag to short title-like string (max 200 chars per value).\"};const schema35 = {\"type\":\"object\",\"minProperties\":1,\"propertyNames\":{\"type\":\"string\",\"pattern\":\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},\"additionalProperties\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":5000},\"description\":\"Map of BCP-47 locale tag to body-length string (max 5000 chars per value).\"};const pattern5 = new RegExp(\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\", \"u\");const func2 = require(\"ajv/dist/runtime/ucs2length\").default;const schema36 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"url\"],\"properties\":{\"url\":{\"type\":\"string\",\"format\":\"uri-reference\",\"maxLength\":2048,\"description\":\"URL or path to the avatar image.\"},\"alt\":{\"$ref\":\"#/$defs/LocalizedTitle\"}}};const formats0 = /^(?:[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 validate22(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate22.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.url === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"url\"},message:\"must have required property '\"+\"url\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.url !== undefined){let data0 = data.url;if(typeof data0 === \"string\"){if(func2(data0) > 2048){const err1 = {instancePath:instancePath+\"/url\",schemaPath:\"#/properties/url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(!(formats0.test(data0))){const err2 = {instancePath:instancePath+\"/url\",schemaPath:\"#/properties/url/format\",keyword:\"format\",params:{format: \"uri-reference\"},message:\"must match format \\\"\"+\"uri-reference\"+\"\\\"\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}else {const err3 = {instancePath:instancePath+\"/url\",schemaPath:\"#/properties/url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.alt !== undefined){let data1 = data.alt;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err4 = {instancePath:instancePath+\"/alt\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}for(const key0 in data1){const _errs7 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err5 = {instancePath:instancePath+\"/alt\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/alt\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid2 = _errs7 === errors;if(!valid2){const err7 = {instancePath:instancePath+\"/alt\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err8 = {instancePath:instancePath+\"/alt/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(func2(data2) < 1){const err9 = {instancePath:instancePath+\"/alt/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/alt/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath:instancePath+\"/alt\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}}else {const err12 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}validate22.errors = vErrors;return errors === 0;}validate22.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema38 = {\"type\":\"object\",\"additionalProperties\":true,\"properties\":{\"country\":{\"$ref\":\"#/$defs/Iso3166Alpha2\"},\"region\":{\"type\":\"string\",\"maxLength\":100},\"locality\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"display\":{\"$ref\":\"#/$defs/LocalizedTitle\"}}};const schema39 = {\"type\":\"string\",\"pattern\":\"^[A-Z]{2}$\",\"description\":\"ISO 3166-1 alpha-2 country code (uppercase, two letters).\"};const pattern9 = new RegExp(\"^[A-Z]{2}$\", \"u\");function validate24(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate24.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.country !== undefined){let data0 = data.country;if(typeof data0 === \"string\"){if(!pattern9.test(data0)){const err0 = {instancePath:instancePath+\"/country\",schemaPath:\"#/$defs/Iso3166Alpha2/pattern\",keyword:\"pattern\",params:{pattern: \"^[A-Z]{2}$\"},message:\"must match pattern \\\"\"+\"^[A-Z]{2}$\"+\"\\\"\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}else {const err1 = {instancePath:instancePath+\"/country\",schemaPath:\"#/$defs/Iso3166Alpha2/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data.region !== undefined){let data1 = data.region;if(typeof data1 === \"string\"){if(func2(data1) > 100){const err2 = {instancePath:instancePath+\"/region\",schemaPath:\"#/properties/region/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}else {const err3 = {instancePath:instancePath+\"/region\",schemaPath:\"#/properties/region/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.locality !== undefined){let data2 = data.locality;if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){if(Object.keys(data2).length < 1){const err4 = {instancePath:instancePath+\"/locality\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}for(const key0 in data2){const _errs10 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err5 = {instancePath:instancePath+\"/locality\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/locality\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid3 = _errs10 === errors;if(!valid3){const err7 = {instancePath:instancePath+\"/locality\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}for(const key1 in data2){let data3 = data2[key1];if(typeof data3 === \"string\"){if(func2(data3) > 200){const err8 = {instancePath:instancePath+\"/locality/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(func2(data3) < 1){const err9 = {instancePath:instancePath+\"/locality/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/locality/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath:instancePath+\"/locality\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.display !== undefined){let data4 = data.display;if(data4 && typeof data4 == \"object\" && !Array.isArray(data4)){if(Object.keys(data4).length < 1){const err12 = {instancePath:instancePath+\"/display\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}for(const key2 in data4){const _errs18 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err13 = {instancePath:instancePath+\"/display\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/display\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}var valid6 = _errs18 === errors;if(!valid6){const err15 = {instancePath:instancePath+\"/display\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}for(const key3 in data4){let data5 = data4[key3];if(typeof data5 === \"string\"){if(func2(data5) > 200){const err16 = {instancePath:instancePath+\"/display/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if(func2(data5) < 1){const err17 = {instancePath:instancePath+\"/display/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/display/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}}else {const err19 = {instancePath:instancePath+\"/display\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}}else {const err20 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}validate24.errors = vErrors;return errors === 0;}validate24.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};function validate21(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate21.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.displayName === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"displayName\"},message:\"must have required property '\"+\"displayName\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.displayName !== undefined){let data0 = data.displayName;if(data0 && typeof data0 == \"object\" && !Array.isArray(data0)){if(Object.keys(data0).length < 1){const err1 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}for(const key0 in data0){const _errs5 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err2 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}else {const err3 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}var valid2 = _errs5 === errors;if(!valid2){const err4 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}for(const key1 in data0){let data1 = data0[key1];if(typeof data1 === \"string\"){if(func2(data1) > 200){const err5 = {instancePath:instancePath+\"/displayName/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(func2(data1) < 1){const err6 = {instancePath:instancePath+\"/displayName/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/displayName/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}}else {const err8 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.tagline !== undefined){let data2 = data.tagline;if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){if(Object.keys(data2).length < 1){const err9 = {instancePath:instancePath+\"/tagline\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}for(const key2 in data2){const _errs13 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err10 = {instancePath:instancePath+\"/tagline\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}else {const err11 = {instancePath:instancePath+\"/tagline\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}var valid5 = _errs13 === errors;if(!valid5){const err12 = {instancePath:instancePath+\"/tagline\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}for(const key3 in data2){let data3 = data2[key3];if(typeof data3 === \"string\"){if(func2(data3) > 200){const err13 = {instancePath:instancePath+\"/tagline/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(func2(data3) < 1){const err14 = {instancePath:instancePath+\"/tagline/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}else {const err15 = {instancePath:instancePath+\"/tagline/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}}else {const err16 = {instancePath:instancePath+\"/tagline\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.bio !== undefined){let data4 = data.bio;if(data4 && typeof data4 == \"object\" && !Array.isArray(data4)){if(Object.keys(data4).length < 1){const err17 = {instancePath:instancePath+\"/bio\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}for(const key4 in data4){const _errs21 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err18 = {instancePath:instancePath+\"/bio\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}else {const err19 = {instancePath:instancePath+\"/bio\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var valid8 = _errs21 === errors;if(!valid8){const err20 = {instancePath:instancePath+\"/bio\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}for(const key5 in data4){let data5 = data4[key5];if(typeof data5 === \"string\"){if(func2(data5) > 5000){const err21 = {instancePath:instancePath+\"/bio/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}if(func2(data5) < 1){const err22 = {instancePath:instancePath+\"/bio/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}else {const err23 = {instancePath:instancePath+\"/bio/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}}else {const err24 = {instancePath:instancePath+\"/bio\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.avatar !== undefined){if(!(validate22(data.avatar, {instancePath:instancePath+\"/avatar\",parentData:data,parentDataProperty:\"avatar\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate22.errors : vErrors.concat(validate22.errors);errors = vErrors.length;}}if(data.location !== undefined){if(!(validate24(data.location, {instancePath:instancePath+\"/location\",parentData:data,parentDataProperty:\"location\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate24.errors : vErrors.concat(validate24.errors);errors = vErrors.length;}}}else {const err25 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}validate21.errors = vErrors;return errors === 0;}validate21.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema42 = {\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"id\",\"type\",\"url\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"type\":{\"$ref\":\"#/$defs/LinkType\"},\"label\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"featured\":{\"type\":\"boolean\"},\"order\":{\"type\":\"integer\",\"minimum\":0},\"iconUrl\":{\"$ref\":\"#/$defs/Url\"}},\"allOf\":[{\"if\":{\"properties\":{\"type\":{\"const\":\"custom\"}},\"required\":[\"type\"]},\"then\":{\"properties\":{\"iconUrl\":{\"$ref\":\"#/$defs/Url\"}},\"required\":[\"iconUrl\"]}}]};const schema43 = {\"type\":\"string\",\"format\":\"uri\",\"maxLength\":2048};const schema44 = {\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"pattern\":\"^[a-z0-9][a-z0-9-]*$\",\"description\":\"URL-safe identifier (lowercase alphanumerics and hyphens, must start with alphanumeric).\"};const schema45 = {\"type\":\"string\",\"enum\":[\"website\",\"blog\",\"github\",\"gitlab\",\"linkedin\",\"x\",\"mastodon\",\"bluesky\",\"instagram\",\"youtube\",\"threads\",\"facebook\",\"email\",\"rss\",\"custom\"],\"description\":\"Identifies the kind of link. 'custom' requires iconUrl.\"};const formats2 = require(\"ajv-formats/dist/formats\").fullFormats.uri;const pattern12 = new RegExp(\"^[a-z0-9][a-z0-9-]*$\", \"u\");function validate27(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate27.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}const _errs2 = errors;let valid1 = true;const _errs3 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){let missing0;if((data.type === undefined) && (missing0 = \"type\")){const err0 = {};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.type !== undefined){if(\"custom\" !== data.type){const err1 = {};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}}}var _valid0 = _errs3 === errors;errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}if(_valid0){const _errs5 = errors;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.iconUrl === undefined){const err2 = {instancePath,schemaPath:\"#/allOf/0/then/required\",keyword:\"required\",params:{missingProperty: \"iconUrl\"},message:\"must have required property '\"+\"iconUrl\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.iconUrl !== undefined){let data1 = data.iconUrl;if(typeof data1 === \"string\"){if(func2(data1) > 2048){const err3 = {instancePath:instancePath+\"/iconUrl\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!(formats2(data1))){const err4 = {instancePath:instancePath+\"/iconUrl\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+\"/iconUrl\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}}var _valid0 = _errs5 === errors;valid1 = _valid0;if(valid1){var props0 = {};props0.iconUrl = true;props0.type = true;}}if(!valid1){const err6 = {instancePath,schemaPath:\"#/allOf/0/if\",keyword:\"if\",params:{failingKeyword: \"then\"},message:\"must match \\\"then\\\" schema\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err7 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(data.type === undefined){const err8 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"type\"},message:\"must have required property '\"+\"type\"+\"'\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(data.url === undefined){const err9 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"url\"},message:\"must have required property '\"+\"url\"+\"'\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}for(const key0 in data){if(!(((((((key0 === \"id\") || (key0 === \"type\")) || (key0 === \"label\")) || (key0 === \"url\")) || (key0 === \"featured\")) || (key0 === \"order\")) || (key0 === \"iconUrl\"))){const err10 = {instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data.id !== undefined){let data2 = data.id;if(typeof data2 === \"string\"){if(func2(data2) > 64){const err11 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(func2(data2) < 1){const err12 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(!pattern12.test(data2)){const err13 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.type !== undefined){let data3 = data.type;if(typeof data3 !== \"string\"){const err15 = {instancePath:instancePath+\"/type\",schemaPath:\"#/$defs/LinkType/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(!(((((((((((((((data3 === \"website\") || (data3 === \"blog\")) || (data3 === \"github\")) || (data3 === \"gitlab\")) || (data3 === \"linkedin\")) || (data3 === \"x\")) || (data3 === \"mastodon\")) || (data3 === \"bluesky\")) || (data3 === \"instagram\")) || (data3 === \"youtube\")) || (data3 === \"threads\")) || (data3 === \"facebook\")) || (data3 === \"email\")) || (data3 === \"rss\")) || (data3 === \"custom\"))){const err16 = {instancePath:instancePath+\"/type\",schemaPath:\"#/$defs/LinkType/enum\",keyword:\"enum\",params:{allowedValues: schema45.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.label !== undefined){let data4 = data.label;if(data4 && typeof data4 == \"object\" && !Array.isArray(data4)){if(Object.keys(data4).length < 1){const err17 = {instancePath:instancePath+\"/label\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}for(const key1 in data4){const _errs19 = errors;if(typeof key1 === \"string\"){if(!pattern5.test(key1)){const err18 = {instancePath:instancePath+\"/label\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key1};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}else {const err19 = {instancePath:instancePath+\"/label\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key1};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var valid9 = _errs19 === errors;if(!valid9){const err20 = {instancePath:instancePath+\"/label\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key1},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}for(const key2 in data4){let data5 = data4[key2];if(typeof data5 === \"string\"){if(func2(data5) > 200){const err21 = {instancePath:instancePath+\"/label/\" + key2.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}if(func2(data5) < 1){const err22 = {instancePath:instancePath+\"/label/\" + key2.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}else {const err23 = {instancePath:instancePath+\"/label/\" + key2.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}}else {const err24 = {instancePath:instancePath+\"/label\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.url !== undefined){let data6 = data.url;if(typeof data6 === \"string\"){if(func2(data6) > 2048){const err25 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}if(!(formats2(data6))){const err26 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}else {const err27 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}if(data.featured !== undefined){if(typeof data.featured !== \"boolean\"){const err28 = {instancePath:instancePath+\"/featured\",schemaPath:\"#/properties/featured/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}if(data.order !== undefined){let data8 = data.order;if(!(((typeof data8 == \"number\") && (!(data8 % 1) && !isNaN(data8))) && (isFinite(data8)))){const err29 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}if((typeof data8 == \"number\") && (isFinite(data8))){if(data8 < 0 || isNaN(data8)){const err30 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}if(data.iconUrl !== undefined){let data9 = data.iconUrl;if(typeof data9 === \"string\"){if(func2(data9) > 2048){const err31 = {instancePath:instancePath+\"/iconUrl\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}if(!(formats2(data9))){const err32 = {instancePath:instancePath+\"/iconUrl\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+\"/iconUrl\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}}else {const err34 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}validate27.errors = vErrors;return errors === 0;}validate27.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema49 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"organization\",\"role\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"organization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"role\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}]},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"location\":{\"$ref\":\"#/$defs/Address\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};const schema54 = {\"type\":\"string\",\"pattern\":\"^[0-9]{4}-(0[1-9]|1[0-2])$\",\"description\":\"Year-month in 'YYYY-MM' format (Gregorian calendar).\"};const pattern18 = new RegExp(\"^[0-9]{4}-(0[1-9]|1[0-2])$\", \"u\");function validate29(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate29.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.organization === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"organization\"},message:\"must have required property '\"+\"organization\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.role === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"role\"},message:\"must have required property '\"+\"role\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.startDate === undefined){const err3 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"startDate\"},message:\"must have required property '\"+\"startDate\"+\"'\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(func2(data0) < 1){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!pattern12.test(data0)){const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.organization !== undefined){let data1 = data.organization;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err8 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err9 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err11 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err12 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(func2(data2) < 1){const err13 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.role !== undefined){let data3 = data.role;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err16 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err17 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err19 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err20 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if(func2(data4) < 1){const err21 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}else {const err22 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}}else {const err23 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.description !== undefined){let data5 = data.description;if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){const err24 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}for(const key4 in data5){const _errs24 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err25 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}else {const err26 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}var valid9 = _errs24 === errors;if(!valid9){const err27 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}for(const key5 in data5){let data6 = data5[key5];if(typeof data6 === \"string\"){if(func2(data6) > 5000){const err28 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}if(func2(data6) < 1){const err29 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}else {const err30 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}else {const err31 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}if(data.startDate !== undefined){let data7 = data.startDate;if(typeof data7 === \"string\"){if(!pattern18.test(data7)){const err32 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}if(data.endDate !== undefined){let data8 = data.endDate;const _errs33 = errors;let valid12 = false;const _errs34 = errors;if(typeof data8 === \"string\"){if(!pattern18.test(data8)){const err34 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}var _valid0 = _errs34 === errors;valid12 = valid12 || _valid0;const _errs37 = errors;if(data8 !== null){const err36 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf/1/type\",keyword:\"type\",params:{type: \"null\"},message:\"must be null\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}var _valid0 = _errs37 === errors;valid12 = valid12 || _valid0;if(!valid12){const err37 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}else {errors = _errs33;if(vErrors !== null){if(_errs33){vErrors.length = _errs33;}else {vErrors = null;}}}}if(data.isCurrent !== undefined){if(typeof data.isCurrent !== \"boolean\"){const err38 = {instancePath:instancePath+\"/isCurrent\",schemaPath:\"#/properties/isCurrent/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}if(data.url !== undefined){let data10 = data.url;if(typeof data10 === \"string\"){if(func2(data10) > 2048){const err39 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}if(!(formats2(data10))){const err40 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}else {const err41 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}if(data.location !== undefined){if(!(validate24(data.location, {instancePath:instancePath+\"/location\",parentData:data,parentDataProperty:\"location\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate24.errors : vErrors.concat(validate24.errors);errors = vErrors.length;}}if(data.order !== undefined){let data12 = data.order;if(!(((typeof data12 == \"number\") && (!(data12 % 1) && !isNaN(data12))) && (isFinite(data12)))){const err42 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}if((typeof data12 == \"number\") && (isFinite(data12))){if(data12 < 0 || isNaN(data12)){const err43 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}}}}else {const err44 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}validate29.errors = vErrors;return errors === 0;}validate29.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema57 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"tags\":{\"type\":\"array\",\"maxItems\":30,\"items\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50}},\"relatedCareerId\":{\"$ref\":\"#/$defs/Slug\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}]},\"highlighted\":{\"type\":\"boolean\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate32(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate32.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.title === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"title\"},message:\"must have required property '\"+\"title\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err2 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(func2(data0) < 1){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!pattern12.test(data0)){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.title !== undefined){let data1 = data.title;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err6 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err7 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}else {const err8 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err9 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err10 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(func2(data2) < 1){const err11 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}else {const err12 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}else {const err13 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data.description !== undefined){let data3 = data.description;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err14 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err15 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}else {const err16 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err17 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 5000){const err18 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}if(func2(data4) < 1){const err19 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}else {const err20 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}}else {const err21 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data.url !== undefined){let data5 = data.url;if(typeof data5 === \"string\"){if(func2(data5) > 2048){const err22 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}if(!(formats2(data5))){const err23 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}else {const err24 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.tags !== undefined){let data6 = data.tags;if(Array.isArray(data6)){if(data6.length > 30){const err25 = {instancePath:instancePath+\"/tags\",schemaPath:\"#/properties/tags/maxItems\",keyword:\"maxItems\",params:{limit: 30},message:\"must NOT have more than 30 items\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}const len0 = data6.length;for(let i0=0; i0<len0; i0++){let data7 = data6[i0];if(typeof data7 === \"string\"){if(func2(data7) > 50){const err26 = {instancePath:instancePath+\"/tags/\" + i0,schemaPath:\"#/properties/tags/items/maxLength\",keyword:\"maxLength\",params:{limit: 50},message:\"must NOT have more than 50 characters\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}if(func2(data7) < 1){const err27 = {instancePath:instancePath+\"/tags/\" + i0,schemaPath:\"#/properties/tags/items/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}else {const err28 = {instancePath:instancePath+\"/tags/\" + i0,schemaPath:\"#/properties/tags/items/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}}else {const err29 = {instancePath:instancePath+\"/tags\",schemaPath:\"#/properties/tags/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}if(data.relatedCareerId !== undefined){let data8 = data.relatedCareerId;if(typeof data8 === \"string\"){if(func2(data8) > 64){const err30 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}if(func2(data8) < 1){const err31 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}if(!pattern12.test(data8)){const err32 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}if(data.startDate !== undefined){let data9 = data.startDate;if(typeof data9 === \"string\"){if(!pattern18.test(data9)){const err34 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.endDate !== undefined){let data10 = data.endDate;const _errs35 = errors;let valid13 = false;const _errs36 = errors;if(typeof data10 === \"string\"){if(!pattern18.test(data10)){const err36 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}else {const err37 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}var _valid0 = _errs36 === errors;valid13 = valid13 || _valid0;const _errs39 = errors;if(data10 !== null){const err38 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf/1/type\",keyword:\"type\",params:{type: \"null\"},message:\"must be null\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}var _valid0 = _errs39 === errors;valid13 = valid13 || _valid0;if(!valid13){const err39 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}else {errors = _errs35;if(vErrors !== null){if(_errs35){vErrors.length = _errs35;}else {vErrors = null;}}}}if(data.highlighted !== undefined){if(typeof data.highlighted !== \"boolean\"){const err40 = {instancePath:instancePath+\"/highlighted\",schemaPath:\"#/properties/highlighted/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}if(data.order !== undefined){let data12 = data.order;if(!(((typeof data12 == \"number\") && (!(data12 % 1) && !isNaN(data12))) && (isFinite(data12)))){const err41 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}if((typeof data12 == \"number\") && (isFinite(data12))){if(data12 < 0 || isNaN(data12)){const err42 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}}}else {const err43 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}validate32.errors = vErrors;return errors === 0;}validate32.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema65 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"label\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"label\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100},\"category\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"description\":\"Recommended values (extensible): programming, design, business, communication, language, music, art, sports, other.\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate34(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate34.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.label === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"label\"},message:\"must have required property '\"+\"label\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err2 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(func2(data0) < 1){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!pattern12.test(data0)){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.label !== undefined){let data1 = data.label;if(typeof data1 === \"string\"){if(func2(data1) > 100){const err6 = {instancePath:instancePath+\"/label\",schemaPath:\"#/properties/label/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}if(func2(data1) < 1){const err7 = {instancePath:instancePath+\"/label\",schemaPath:\"#/properties/label/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}else {const err8 = {instancePath:instancePath+\"/label\",schemaPath:\"#/properties/label/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.category !== undefined){let data2 = data.category;if(typeof data2 === \"string\"){if(func2(data2) > 64){const err9 = {instancePath:instancePath+\"/category\",schemaPath:\"#/properties/category/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(func2(data2) < 1){const err10 = {instancePath:instancePath+\"/category\",schemaPath:\"#/properties/category/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}else {const err11 = {instancePath:instancePath+\"/category\",schemaPath:\"#/properties/category/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.order !== undefined){let data3 = data.order;if(!(((typeof data3 == \"number\") && (!(data3 % 1) && !isNaN(data3))) && (isFinite(data3)))){const err12 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if((typeof data3 == \"number\") && (isFinite(data3))){if(data3 < 0 || isNaN(data3)){const err13 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}}}else {const err14 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}validate34.errors = vErrors;return errors === 0;}validate34.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema67 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"issuingOrganization\",\"issueDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"issuingOrganization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"issueDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"expirationDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}],\"description\":\"null = explicitly 'no expiration'. Omit if unknown/unstated.\"},\"credentialId\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100,\"description\":\"License or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds.\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate36(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate36.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.title === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"title\"},message:\"must have required property '\"+\"title\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.issuingOrganization === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"issuingOrganization\"},message:\"must have required property '\"+\"issuingOrganization\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.issueDate === undefined){const err3 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"issueDate\"},message:\"must have required property '\"+\"issueDate\"+\"'\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(func2(data0) < 1){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!pattern12.test(data0)){const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.title !== undefined){let data1 = data.title;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err8 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err9 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err11 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err12 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(func2(data2) < 1){const err13 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.issuingOrganization !== undefined){let data3 = data.issuingOrganization;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err16 = {instancePath:instancePath+\"/issuingOrganization\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err17 = {instancePath:instancePath+\"/issuingOrganization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/issuingOrganization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err19 = {instancePath:instancePath+\"/issuingOrganization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err20 = {instancePath:instancePath+\"/issuingOrganization/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if(func2(data4) < 1){const err21 = {instancePath:instancePath+\"/issuingOrganization/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}else {const err22 = {instancePath:instancePath+\"/issuingOrganization/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}}else {const err23 = {instancePath:instancePath+\"/issuingOrganization\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.issueDate !== undefined){let data5 = data.issueDate;if(typeof data5 === \"string\"){if(!pattern18.test(data5)){const err24 = {instancePath:instancePath+\"/issueDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}else {const err25 = {instancePath:instancePath+\"/issueDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data.expirationDate !== undefined){let data6 = data.expirationDate;const _errs25 = errors;let valid9 = false;const _errs26 = errors;if(typeof data6 === \"string\"){if(!pattern18.test(data6)){const err26 = {instancePath:instancePath+\"/expirationDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}else {const err27 = {instancePath:instancePath+\"/expirationDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}var _valid0 = _errs26 === errors;valid9 = valid9 || _valid0;const _errs29 = errors;if(data6 !== null){const err28 = {instancePath:instancePath+\"/expirationDate\",schemaPath:\"#/properties/expirationDate/anyOf/1/type\",keyword:\"type\",params:{type: \"null\"},message:\"must be null\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}var _valid0 = _errs29 === errors;valid9 = valid9 || _valid0;if(!valid9){const err29 = {instancePath:instancePath+\"/expirationDate\",schemaPath:\"#/properties/expirationDate/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}else {errors = _errs25;if(vErrors !== null){if(_errs25){vErrors.length = _errs25;}else {vErrors = null;}}}}if(data.credentialId !== undefined){let data7 = data.credentialId;if(typeof data7 === \"string\"){if(func2(data7) > 100){const err30 = {instancePath:instancePath+\"/credentialId\",schemaPath:\"#/properties/credentialId/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}if(func2(data7) < 1){const err31 = {instancePath:instancePath+\"/credentialId\",schemaPath:\"#/properties/credentialId/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}else {const err32 = {instancePath:instancePath+\"/credentialId\",schemaPath:\"#/properties/credentialId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data.url !== undefined){let data8 = data.url;if(typeof data8 === \"string\"){if(func2(data8) > 2048){const err33 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}if(!(formats2(data8))){const err34 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.order !== undefined){let data9 = data.order;if(!(((typeof data9 == \"number\") && (!(data9 % 1) && !isNaN(data9))) && (isFinite(data9)))){const err36 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}if((typeof data9 == \"number\") && (isFinite(data9))){if(data9 < 0 || isNaN(data9)){const err37 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}}}else {const err38 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}validate36.errors = vErrors;return errors === 0;}validate36.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema74 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"organization\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"organization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"role\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}],\"description\":\"null = ongoing. Omit if unknown.\"},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate38(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate38.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.organization === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"organization\"},message:\"must have required property '\"+\"organization\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.startDate === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"startDate\"},message:\"must have required property '\"+\"startDate\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(func2(data0) < 1){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!pattern12.test(data0)){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.organization !== undefined){let data1 = data.organization;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err7 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err8 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err10 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err11 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(func2(data2) < 1){const err12 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}else {const err13 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}}else {const err14 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.role !== undefined){let data3 = data.role;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err15 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err16 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}else {const err17 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err18 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err19 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if(func2(data4) < 1){const err20 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}else {const err21 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}}else {const err22 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.description !== undefined){let data5 = data.description;if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){const err23 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}for(const key4 in data5){const _errs24 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err24 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}else {const err25 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}var valid9 = _errs24 === errors;if(!valid9){const err26 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}for(const key5 in data5){let data6 = data5[key5];if(typeof data6 === \"string\"){if(func2(data6) > 5000){const err27 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}if(func2(data6) < 1){const err28 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}else {const err29 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}}else {const err30 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}if(data.startDate !== undefined){let data7 = data.startDate;if(typeof data7 === \"string\"){if(!pattern18.test(data7)){const err31 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}else {const err32 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data.endDate !== undefined){let data8 = data.endDate;const _errs33 = errors;let valid12 = false;const _errs34 = errors;if(typeof data8 === \"string\"){if(!pattern18.test(data8)){const err33 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}else {const err34 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}var _valid0 = _errs34 === errors;valid12 = valid12 || _valid0;const _errs37 = errors;if(data8 !== null){const err35 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf/1/type\",keyword:\"type\",params:{type: \"null\"},message:\"must be null\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}var _valid0 = _errs37 === errors;valid12 = valid12 || _valid0;if(!valid12){const err36 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}else {errors = _errs33;if(vErrors !== null){if(_errs33){vErrors.length = _errs33;}else {vErrors = null;}}}}if(data.isCurrent !== undefined){if(typeof data.isCurrent !== \"boolean\"){const err37 = {instancePath:instancePath+\"/isCurrent\",schemaPath:\"#/properties/isCurrent/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}if(data.url !== undefined){let data10 = data.url;if(typeof data10 === \"string\"){if(func2(data10) > 2048){const err38 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}if(!(formats2(data10))){const err39 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}else {const err40 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}if(data.order !== undefined){let data11 = data.order;if(!(((typeof data11 == \"number\") && (!(data11 % 1) && !isNaN(data11))) && (isFinite(data11)))){const err41 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}if((typeof data11 == \"number\") && (isFinite(data11))){if(data11 < 0 || isNaN(data11)){const err42 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}}}else {const err43 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}validate38.errors = vErrors;return errors === 0;}validate38.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema82 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"organization\",\"role\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"organization\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"role\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"cause\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}]},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate40(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate40.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.organization === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"organization\"},message:\"must have required property '\"+\"organization\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.role === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"role\"},message:\"must have required property '\"+\"role\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.startDate === undefined){const err3 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"startDate\"},message:\"must have required property '\"+\"startDate\"+\"'\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(func2(data0) < 1){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!pattern12.test(data0)){const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.organization !== undefined){let data1 = data.organization;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err8 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err9 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err11 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err12 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(func2(data2) < 1){const err13 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/organization/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath:instancePath+\"/organization\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.role !== undefined){let data3 = data.role;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err16 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err17 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err19 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err20 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if(func2(data4) < 1){const err21 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}else {const err22 = {instancePath:instancePath+\"/role/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}}else {const err23 = {instancePath:instancePath+\"/role\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.cause !== undefined){let data5 = data.cause;if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){const err24 = {instancePath:instancePath+\"/cause\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}for(const key4 in data5){const _errs24 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err25 = {instancePath:instancePath+\"/cause\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}else {const err26 = {instancePath:instancePath+\"/cause\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}var valid9 = _errs24 === errors;if(!valid9){const err27 = {instancePath:instancePath+\"/cause\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}for(const key5 in data5){let data6 = data5[key5];if(typeof data6 === \"string\"){if(func2(data6) > 200){const err28 = {instancePath:instancePath+\"/cause/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}if(func2(data6) < 1){const err29 = {instancePath:instancePath+\"/cause/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}else {const err30 = {instancePath:instancePath+\"/cause/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}else {const err31 = {instancePath:instancePath+\"/cause\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}if(data.description !== undefined){let data7 = data.description;if(data7 && typeof data7 == \"object\" && !Array.isArray(data7)){if(Object.keys(data7).length < 1){const err32 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}for(const key6 in data7){const _errs32 = errors;if(typeof key6 === \"string\"){if(!pattern5.test(key6)){const err33 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key6};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}else {const err34 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key6};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}var valid12 = _errs32 === errors;if(!valid12){const err35 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key6},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}for(const key7 in data7){let data8 = data7[key7];if(typeof data8 === \"string\"){if(func2(data8) > 5000){const err36 = {instancePath:instancePath+\"/description/\" + key7.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}if(func2(data8) < 1){const err37 = {instancePath:instancePath+\"/description/\" + key7.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}else {const err38 = {instancePath:instancePath+\"/description/\" + key7.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}}else {const err39 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}if(data.startDate !== undefined){let data9 = data.startDate;if(typeof data9 === \"string\"){if(!pattern18.test(data9)){const err40 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}else {const err41 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}if(data.endDate !== undefined){let data10 = data.endDate;const _errs41 = errors;let valid15 = false;const _errs42 = errors;if(typeof data10 === \"string\"){if(!pattern18.test(data10)){const err42 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}else {const err43 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}var _valid0 = _errs42 === errors;valid15 = valid15 || _valid0;const _errs45 = errors;if(data10 !== null){const err44 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf/1/type\",keyword:\"type\",params:{type: \"null\"},message:\"must be null\"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}var _valid0 = _errs45 === errors;valid15 = valid15 || _valid0;if(!valid15){const err45 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}else {errors = _errs41;if(vErrors !== null){if(_errs41){vErrors.length = _errs41;}else {vErrors = null;}}}}if(data.isCurrent !== undefined){if(typeof data.isCurrent !== \"boolean\"){const err46 = {instancePath:instancePath+\"/isCurrent\",schemaPath:\"#/properties/isCurrent/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}}if(data.url !== undefined){let data12 = data.url;if(typeof data12 === \"string\"){if(func2(data12) > 2048){const err47 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}if(!(formats2(data12))){const err48 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}}else {const err49 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}}if(data.order !== undefined){let data13 = data.order;if(!(((typeof data13 == \"number\") && (!(data13 % 1) && !isNaN(data13))) && (isFinite(data13)))){const err50 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}if((typeof data13 == \"number\") && (isFinite(data13))){if(data13 < 0 || isNaN(data13)){const err51 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}}}else {const err52 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}validate40.errors = vErrors;return errors === 0;}validate40.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema91 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"issuer\",\"date\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"issuer\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate42(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate42.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.title === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"title\"},message:\"must have required property '\"+\"title\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.issuer === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"issuer\"},message:\"must have required property '\"+\"issuer\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.date === undefined){const err3 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"date\"},message:\"must have required property '\"+\"date\"+\"'\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(func2(data0) < 1){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!pattern12.test(data0)){const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.title !== undefined){let data1 = data.title;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err8 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err9 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err11 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err12 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(func2(data2) < 1){const err13 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.issuer !== undefined){let data3 = data.issuer;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err16 = {instancePath:instancePath+\"/issuer\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err17 = {instancePath:instancePath+\"/issuer\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/issuer\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err19 = {instancePath:instancePath+\"/issuer\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err20 = {instancePath:instancePath+\"/issuer/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if(func2(data4) < 1){const err21 = {instancePath:instancePath+\"/issuer/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}else {const err22 = {instancePath:instancePath+\"/issuer/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}}else {const err23 = {instancePath:instancePath+\"/issuer\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.description !== undefined){let data5 = data.description;if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){const err24 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}for(const key4 in data5){const _errs24 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err25 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}else {const err26 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}var valid9 = _errs24 === errors;if(!valid9){const err27 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}for(const key5 in data5){let data6 = data5[key5];if(typeof data6 === \"string\"){if(func2(data6) > 5000){const err28 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}if(func2(data6) < 1){const err29 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}else {const err30 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}else {const err31 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}if(data.date !== undefined){let data7 = data.date;if(typeof data7 === \"string\"){if(!pattern18.test(data7)){const err32 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}if(data.url !== undefined){let data8 = data.url;if(typeof data8 === \"string\"){if(func2(data8) > 2048){const err34 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}if(!(formats2(data8))){const err35 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}else {const err36 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}if(data.order !== undefined){let data9 = data.order;if(!(((typeof data9 == \"number\") && (!(data9 % 1) && !isNaN(data9))) && (isFinite(data9)))){const err37 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}if((typeof data9 == \"number\") && (isFinite(data9))){if(data9 < 0 || isNaN(data9)){const err38 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}}}else {const err39 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}validate42.errors = vErrors;return errors === 0;}validate42.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema98 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"institution\",\"startDate\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"institution\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"degree\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"fieldOfStudy\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"grade\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50,\"description\":\"Free-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades.\"},\"startDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"endDate\":{\"anyOf\":[{\"$ref\":\"#/$defs/YearMonth\"},{\"type\":\"null\"}],\"description\":\"null = currently enrolled.\"},\"isCurrent\":{\"type\":\"boolean\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate44(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate44.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.institution === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"institution\"},message:\"must have required property '\"+\"institution\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.startDate === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"startDate\"},message:\"must have required property '\"+\"startDate\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(func2(data0) < 1){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!pattern12.test(data0)){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.institution !== undefined){let data1 = data.institution;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err7 = {instancePath:instancePath+\"/institution\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err8 = {instancePath:instancePath+\"/institution\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+\"/institution\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err10 = {instancePath:instancePath+\"/institution\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err11 = {instancePath:instancePath+\"/institution/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(func2(data2) < 1){const err12 = {instancePath:instancePath+\"/institution/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}else {const err13 = {instancePath:instancePath+\"/institution/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}}else {const err14 = {instancePath:instancePath+\"/institution\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.degree !== undefined){let data3 = data.degree;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err15 = {instancePath:instancePath+\"/degree\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err16 = {instancePath:instancePath+\"/degree\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}else {const err17 = {instancePath:instancePath+\"/degree\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err18 = {instancePath:instancePath+\"/degree\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err19 = {instancePath:instancePath+\"/degree/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if(func2(data4) < 1){const err20 = {instancePath:instancePath+\"/degree/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}else {const err21 = {instancePath:instancePath+\"/degree/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}}else {const err22 = {instancePath:instancePath+\"/degree\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.fieldOfStudy !== undefined){let data5 = data.fieldOfStudy;if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){const err23 = {instancePath:instancePath+\"/fieldOfStudy\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}for(const key4 in data5){const _errs24 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err24 = {instancePath:instancePath+\"/fieldOfStudy\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}else {const err25 = {instancePath:instancePath+\"/fieldOfStudy\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}var valid9 = _errs24 === errors;if(!valid9){const err26 = {instancePath:instancePath+\"/fieldOfStudy\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}for(const key5 in data5){let data6 = data5[key5];if(typeof data6 === \"string\"){if(func2(data6) > 200){const err27 = {instancePath:instancePath+\"/fieldOfStudy/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}if(func2(data6) < 1){const err28 = {instancePath:instancePath+\"/fieldOfStudy/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}else {const err29 = {instancePath:instancePath+\"/fieldOfStudy/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}}else {const err30 = {instancePath:instancePath+\"/fieldOfStudy\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}if(data.description !== undefined){let data7 = data.description;if(data7 && typeof data7 == \"object\" && !Array.isArray(data7)){if(Object.keys(data7).length < 1){const err31 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}for(const key6 in data7){const _errs32 = errors;if(typeof key6 === \"string\"){if(!pattern5.test(key6)){const err32 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key6};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key6};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}var valid12 = _errs32 === errors;if(!valid12){const err34 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key6},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}for(const key7 in data7){let data8 = data7[key7];if(typeof data8 === \"string\"){if(func2(data8) > 5000){const err35 = {instancePath:instancePath+\"/description/\" + key7.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}if(func2(data8) < 1){const err36 = {instancePath:instancePath+\"/description/\" + key7.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}else {const err37 = {instancePath:instancePath+\"/description/\" + key7.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}}else {const err38 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}if(data.grade !== undefined){let data9 = data.grade;if(typeof data9 === \"string\"){if(func2(data9) > 50){const err39 = {instancePath:instancePath+\"/grade\",schemaPath:\"#/properties/grade/maxLength\",keyword:\"maxLength\",params:{limit: 50},message:\"must NOT have more than 50 characters\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}if(func2(data9) < 1){const err40 = {instancePath:instancePath+\"/grade\",schemaPath:\"#/properties/grade/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}else {const err41 = {instancePath:instancePath+\"/grade\",schemaPath:\"#/properties/grade/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}if(data.startDate !== undefined){let data10 = data.startDate;if(typeof data10 === \"string\"){if(!pattern18.test(data10)){const err42 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}else {const err43 = {instancePath:instancePath+\"/startDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}}if(data.endDate !== undefined){let data11 = data.endDate;const _errs43 = errors;let valid15 = false;const _errs44 = errors;if(typeof data11 === \"string\"){if(!pattern18.test(data11)){const err44 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}}else {const err45 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}var _valid0 = _errs44 === errors;valid15 = valid15 || _valid0;const _errs47 = errors;if(data11 !== null){const err46 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf/1/type\",keyword:\"type\",params:{type: \"null\"},message:\"must be null\"};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}var _valid0 = _errs47 === errors;valid15 = valid15 || _valid0;if(!valid15){const err47 = {instancePath:instancePath+\"/endDate\",schemaPath:\"#/properties/endDate/anyOf\",keyword:\"anyOf\",params:{},message:\"must match a schema in anyOf\"};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}else {errors = _errs43;if(vErrors !== null){if(_errs43){vErrors.length = _errs43;}else {vErrors = null;}}}}if(data.isCurrent !== undefined){if(typeof data.isCurrent !== \"boolean\"){const err48 = {instancePath:instancePath+\"/isCurrent\",schemaPath:\"#/properties/isCurrent/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}}if(data.url !== undefined){let data13 = data.url;if(typeof data13 === \"string\"){if(func2(data13) > 2048){const err49 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}if(!(formats2(data13))){const err50 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}}else {const err51 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}if(data.order !== undefined){let data14 = data.order;if(!(((typeof data14 == \"number\") && (!(data14 % 1) && !isNaN(data14))) && (isFinite(data14)))){const err52 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}if((typeof data14 == \"number\") && (isFinite(data14))){if(data14 < 0 || isNaN(data14)){const err53 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}}}}else {const err54 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}validate44.errors = vErrors;return errors === 0;}validate44.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema107 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"date\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"publisher\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"doi\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":200,\"description\":\"DOI identifier (e.g. '10.1145/3548643.3548644'). The full URL goes in 'url'.\"},\"coAuthors\":{\"type\":\"array\",\"maxItems\":50,\"items\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100},\"description\":\"Co-author names in original script. Excludes the profile owner.\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate46(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate46.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.title === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"title\"},message:\"must have required property '\"+\"title\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.date === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"date\"},message:\"must have required property '\"+\"date\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(func2(data0) < 1){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!pattern12.test(data0)){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.title !== undefined){let data1 = data.title;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err7 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err8 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err10 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err11 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(func2(data2) < 1){const err12 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}else {const err13 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}}else {const err14 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.publisher !== undefined){let data3 = data.publisher;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err15 = {instancePath:instancePath+\"/publisher\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err16 = {instancePath:instancePath+\"/publisher\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}else {const err17 = {instancePath:instancePath+\"/publisher\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err18 = {instancePath:instancePath+\"/publisher\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err19 = {instancePath:instancePath+\"/publisher/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if(func2(data4) < 1){const err20 = {instancePath:instancePath+\"/publisher/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}else {const err21 = {instancePath:instancePath+\"/publisher/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}}else {const err22 = {instancePath:instancePath+\"/publisher\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.description !== undefined){let data5 = data.description;if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(Object.keys(data5).length < 1){const err23 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}for(const key4 in data5){const _errs24 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err24 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}else {const err25 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}var valid9 = _errs24 === errors;if(!valid9){const err26 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}for(const key5 in data5){let data6 = data5[key5];if(typeof data6 === \"string\"){if(func2(data6) > 5000){const err27 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}if(func2(data6) < 1){const err28 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}else {const err29 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}}else {const err30 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}if(data.date !== undefined){let data7 = data.date;if(typeof data7 === \"string\"){if(!pattern18.test(data7)){const err31 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}else {const err32 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data.url !== undefined){let data8 = data.url;if(typeof data8 === \"string\"){if(func2(data8) > 2048){const err33 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}if(!(formats2(data8))){const err34 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.doi !== undefined){let data9 = data.doi;if(typeof data9 === \"string\"){if(func2(data9) > 200){const err36 = {instancePath:instancePath+\"/doi\",schemaPath:\"#/properties/doi/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}if(func2(data9) < 1){const err37 = {instancePath:instancePath+\"/doi\",schemaPath:\"#/properties/doi/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}else {const err38 = {instancePath:instancePath+\"/doi\",schemaPath:\"#/properties/doi/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}if(data.coAuthors !== undefined){let data10 = data.coAuthors;if(Array.isArray(data10)){if(data10.length > 50){const err39 = {instancePath:instancePath+\"/coAuthors\",schemaPath:\"#/properties/coAuthors/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}const len0 = data10.length;for(let i0=0; i0<len0; i0++){let data11 = data10[i0];if(typeof data11 === \"string\"){if(func2(data11) > 100){const err40 = {instancePath:instancePath+\"/coAuthors/\" + i0,schemaPath:\"#/properties/coAuthors/items/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}if(func2(data11) < 1){const err41 = {instancePath:instancePath+\"/coAuthors/\" + i0,schemaPath:\"#/properties/coAuthors/items/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}else {const err42 = {instancePath:instancePath+\"/coAuthors/\" + i0,schemaPath:\"#/properties/coAuthors/items/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}}else {const err43 = {instancePath:instancePath+\"/coAuthors\",schemaPath:\"#/properties/coAuthors/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}}if(data.order !== undefined){let data12 = data.order;if(!(((typeof data12 == \"number\") && (!(data12 % 1) && !isNaN(data12))) && (isFinite(data12)))){const err44 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}if((typeof data12 == \"number\") && (isFinite(data12))){if(data12 < 0 || isNaN(data12)){const err45 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}}}}else {const err46 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}validate46.errors = vErrors;return errors === 0;}validate46.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema114 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"language\",\"proficiency\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"language\":{\"$ref\":\"#/$defs/LocaleTag\"},\"displayName\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"proficiency\":{\"type\":\"string\",\"enum\":[\"native\",\"fluent\",\"professional\",\"intermediate\",\"basic\"],\"description\":\"LinkedIn-compatible 5-level proficiency.\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};const schema116 = {\"type\":\"string\",\"minLength\":2,\"maxLength\":35,\"pattern\":\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\",\"description\":\"BCP-47 language tag (e.g., 'en', 'ja', 'zh-Hant', 'pt-BR').\"};function validate48(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate48.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.language === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"language\"},message:\"must have required property '\"+\"language\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.proficiency === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"proficiency\"},message:\"must have required property '\"+\"proficiency\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(func2(data0) < 1){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!pattern12.test(data0)){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.language !== undefined){let data1 = data.language;if(typeof data1 === \"string\"){if(func2(data1) > 35){const err7 = {instancePath:instancePath+\"/language\",schemaPath:\"#/$defs/LocaleTag/maxLength\",keyword:\"maxLength\",params:{limit: 35},message:\"must NOT have more than 35 characters\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(func2(data1) < 2){const err8 = {instancePath:instancePath+\"/language\",schemaPath:\"#/$defs/LocaleTag/minLength\",keyword:\"minLength\",params:{limit: 2},message:\"must NOT have fewer than 2 characters\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(!pattern5.test(data1)){const err9 = {instancePath:instancePath+\"/language\",schemaPath:\"#/$defs/LocaleTag/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/language\",schemaPath:\"#/$defs/LocaleTag/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data.displayName !== undefined){let data2 = data.displayName;if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){if(Object.keys(data2).length < 1){const err11 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}for(const key0 in data2){const _errs11 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err12 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}else {const err13 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var valid4 = _errs11 === errors;if(!valid4){const err14 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}for(const key1 in data2){let data3 = data2[key1];if(typeof data3 === \"string\"){if(func2(data3) > 200){const err15 = {instancePath:instancePath+\"/displayName/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(func2(data3) < 1){const err16 = {instancePath:instancePath+\"/displayName/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}else {const err17 = {instancePath:instancePath+\"/displayName/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}}else {const err18 = {instancePath:instancePath+\"/displayName\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.proficiency !== undefined){let data4 = data.proficiency;if(typeof data4 !== \"string\"){const err19 = {instancePath:instancePath+\"/proficiency\",schemaPath:\"#/properties/proficiency/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if(!(((((data4 === \"native\") || (data4 === \"fluent\")) || (data4 === \"professional\")) || (data4 === \"intermediate\")) || (data4 === \"basic\"))){const err20 = {instancePath:instancePath+\"/proficiency\",schemaPath:\"#/properties/proficiency/enum\",keyword:\"enum\",params:{allowedValues: schema114.properties.proficiency.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.order !== undefined){let data5 = data.order;if(!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))){const err21 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}if((typeof data5 == \"number\") && (isFinite(data5))){if(data5 < 0 || isNaN(data5)){const err22 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}}}else {const err23 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}validate48.errors = vErrors;return errors === 0;}validate48.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema118 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"provider\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"courseNumber\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"completionDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"certificateUrl\":{\"$ref\":\"#/$defs/Url\"},\"relatedEducationId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to an education[].id (e.g. for university coursework).\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate50(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate50.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.title === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"title\"},message:\"must have required property '\"+\"title\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err2 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(func2(data0) < 1){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!pattern12.test(data0)){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.title !== undefined){let data1 = data.title;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err6 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err7 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}else {const err8 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err9 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err10 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(func2(data2) < 1){const err11 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}else {const err12 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}else {const err13 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data.provider !== undefined){let data3 = data.provider;if(data3 && typeof data3 == \"object\" && !Array.isArray(data3)){if(Object.keys(data3).length < 1){const err14 = {instancePath:instancePath+\"/provider\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}for(const key2 in data3){const _errs16 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err15 = {instancePath:instancePath+\"/provider\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}else {const err16 = {instancePath:instancePath+\"/provider\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}var valid6 = _errs16 === errors;if(!valid6){const err17 = {instancePath:instancePath+\"/provider\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}for(const key3 in data3){let data4 = data3[key3];if(typeof data4 === \"string\"){if(func2(data4) > 200){const err18 = {instancePath:instancePath+\"/provider/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}if(func2(data4) < 1){const err19 = {instancePath:instancePath+\"/provider/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}else {const err20 = {instancePath:instancePath+\"/provider/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}}else {const err21 = {instancePath:instancePath+\"/provider\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data.courseNumber !== undefined){let data5 = data.courseNumber;if(typeof data5 === \"string\"){if(func2(data5) > 50){const err22 = {instancePath:instancePath+\"/courseNumber\",schemaPath:\"#/properties/courseNumber/maxLength\",keyword:\"maxLength\",params:{limit: 50},message:\"must NOT have more than 50 characters\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}if(func2(data5) < 1){const err23 = {instancePath:instancePath+\"/courseNumber\",schemaPath:\"#/properties/courseNumber/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}else {const err24 = {instancePath:instancePath+\"/courseNumber\",schemaPath:\"#/properties/courseNumber/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.description !== undefined){let data6 = data.description;if(data6 && typeof data6 == \"object\" && !Array.isArray(data6)){if(Object.keys(data6).length < 1){const err25 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}for(const key4 in data6){const _errs26 = errors;if(typeof key4 === \"string\"){if(!pattern5.test(key4)){const err26 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key4};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}else {const err27 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key4};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}var valid9 = _errs26 === errors;if(!valid9){const err28 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key4},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}for(const key5 in data6){let data7 = data6[key5];if(typeof data7 === \"string\"){if(func2(data7) > 5000){const err29 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}if(func2(data7) < 1){const err30 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}else {const err31 = {instancePath:instancePath+\"/description/\" + key5.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}}else {const err32 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data.completionDate !== undefined){let data8 = data.completionDate;if(typeof data8 === \"string\"){if(!pattern18.test(data8)){const err33 = {instancePath:instancePath+\"/completionDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}else {const err34 = {instancePath:instancePath+\"/completionDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}if(data.certificateUrl !== undefined){let data9 = data.certificateUrl;if(typeof data9 === \"string\"){if(func2(data9) > 2048){const err35 = {instancePath:instancePath+\"/certificateUrl\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}if(!(formats2(data9))){const err36 = {instancePath:instancePath+\"/certificateUrl\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}else {const err37 = {instancePath:instancePath+\"/certificateUrl\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}if(data.relatedEducationId !== undefined){let data10 = data.relatedEducationId;if(typeof data10 === \"string\"){if(func2(data10) > 64){const err38 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}if(func2(data10) < 1){const err39 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}if(!pattern12.test(data10)){const err40 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}else {const err41 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}if(data.order !== undefined){let data11 = data.order;if(!(((typeof data11 == \"number\") && (!(data11 % 1) && !isNaN(data11))) && (isFinite(data11)))){const err42 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}if((typeof data11 == \"number\") && (isFinite(data11))){if(data11 < 0 || isNaN(data11)){const err43 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}}}}else {const err44 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}validate50.errors = vErrors;return errors === 0;}validate50.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema126 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"patentNumber\",\"status\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"patentNumber\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100},\"office\":{\"type\":\"string\",\"maxLength\":100,\"description\":\"Patent office name (e.g. 'USPTO', 'JPO', 'EPO').\"},\"status\":{\"type\":\"string\",\"enum\":[\"pending\",\"issued\",\"expired\",\"abandoned\"]},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"filingDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"grantDate\":{\"$ref\":\"#/$defs/YearMonth\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"coInventors\":{\"type\":\"array\",\"maxItems\":20,\"items\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100}},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate52(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate52.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.title === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"title\"},message:\"must have required property '\"+\"title\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.patentNumber === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"patentNumber\"},message:\"must have required property '\"+\"patentNumber\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.status === undefined){const err3 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"status\"},message:\"must have required property '\"+\"status\"+\"'\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(func2(data0) < 1){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!pattern12.test(data0)){const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.title !== undefined){let data1 = data.title;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err8 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err9 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err11 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err12 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(func2(data2) < 1){const err13 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.patentNumber !== undefined){let data3 = data.patentNumber;if(typeof data3 === \"string\"){if(func2(data3) > 100){const err16 = {instancePath:instancePath+\"/patentNumber\",schemaPath:\"#/properties/patentNumber/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if(func2(data3) < 1){const err17 = {instancePath:instancePath+\"/patentNumber\",schemaPath:\"#/properties/patentNumber/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/patentNumber\",schemaPath:\"#/properties/patentNumber/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.office !== undefined){let data4 = data.office;if(typeof data4 === \"string\"){if(func2(data4) > 100){const err19 = {instancePath:instancePath+\"/office\",schemaPath:\"#/properties/office/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}else {const err20 = {instancePath:instancePath+\"/office\",schemaPath:\"#/properties/office/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.status !== undefined){let data5 = data.status;if(typeof data5 !== \"string\"){const err21 = {instancePath:instancePath+\"/status\",schemaPath:\"#/properties/status/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}if(!((((data5 === \"pending\") || (data5 === \"issued\")) || (data5 === \"expired\")) || (data5 === \"abandoned\"))){const err22 = {instancePath:instancePath+\"/status\",schemaPath:\"#/properties/status/enum\",keyword:\"enum\",params:{allowedValues: schema126.properties.status.enum},message:\"must be equal to one of the allowed values\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.description !== undefined){let data6 = data.description;if(data6 && typeof data6 == \"object\" && !Array.isArray(data6)){if(Object.keys(data6).length < 1){const err23 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}for(const key2 in data6){const _errs22 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err24 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}else {const err25 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}var valid6 = _errs22 === errors;if(!valid6){const err26 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}for(const key3 in data6){let data7 = data6[key3];if(typeof data7 === \"string\"){if(func2(data7) > 5000){const err27 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}if(func2(data7) < 1){const err28 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}else {const err29 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}}else {const err30 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}if(data.filingDate !== undefined){let data8 = data.filingDate;if(typeof data8 === \"string\"){if(!pattern18.test(data8)){const err31 = {instancePath:instancePath+\"/filingDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}else {const err32 = {instancePath:instancePath+\"/filingDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data.grantDate !== undefined){let data9 = data.grantDate;if(typeof data9 === \"string\"){if(!pattern18.test(data9)){const err33 = {instancePath:instancePath+\"/grantDate\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}else {const err34 = {instancePath:instancePath+\"/grantDate\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}if(data.url !== undefined){let data10 = data.url;if(typeof data10 === \"string\"){if(func2(data10) > 2048){const err35 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}if(!(formats2(data10))){const err36 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}else {const err37 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}if(data.coInventors !== undefined){let data11 = data.coInventors;if(Array.isArray(data11)){if(data11.length > 20){const err38 = {instancePath:instancePath+\"/coInventors\",schemaPath:\"#/properties/coInventors/maxItems\",keyword:\"maxItems\",params:{limit: 20},message:\"must NOT have more than 20 items\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}const len0 = data11.length;for(let i0=0; i0<len0; i0++){let data12 = data11[i0];if(typeof data12 === \"string\"){if(func2(data12) > 100){const err39 = {instancePath:instancePath+\"/coInventors/\" + i0,schemaPath:\"#/properties/coInventors/items/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}if(func2(data12) < 1){const err40 = {instancePath:instancePath+\"/coInventors/\" + i0,schemaPath:\"#/properties/coInventors/items/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}else {const err41 = {instancePath:instancePath+\"/coInventors/\" + i0,schemaPath:\"#/properties/coInventors/items/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}}else {const err42 = {instancePath:instancePath+\"/coInventors\",schemaPath:\"#/properties/coInventors/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}if(data.order !== undefined){let data13 = data.order;if(!(((typeof data13 == \"number\") && (!(data13 % 1) && !isNaN(data13))) && (isFinite(data13)))){const err43 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}if((typeof data13 == \"number\") && (isFinite(data13))){if(data13 < 0 || isNaN(data13)){const err44 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}}}}else {const err45 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}validate52.errors = vErrors;return errors === 0;}validate52.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema133 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"title\",\"score\",\"date\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"title\":{\"$ref\":\"#/$defs/LocalizedTitle\"},\"score\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":50,\"description\":\"Free-form score string (e.g. '112 / 120', '330', 'N1 Pass', or a percentile). The validator does not interpret its contents.\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"relatedEducationId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to an education[].id (e.g. for a university course exam).\"},\"description\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};function validate54(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate54.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.title === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"title\"},message:\"must have required property '\"+\"title\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.score === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"score\"},message:\"must have required property '\"+\"score\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.date === undefined){const err3 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"date\"},message:\"must have required property '\"+\"date\"+\"'\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(func2(data0) < 1){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!pattern12.test(data0)){const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.title !== undefined){let data1 = data.title;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err8 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err9 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err11 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err12 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(func2(data2) < 1){const err13 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/title/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath:instancePath+\"/title\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.score !== undefined){let data3 = data.score;if(typeof data3 === \"string\"){if(func2(data3) > 50){const err16 = {instancePath:instancePath+\"/score\",schemaPath:\"#/properties/score/maxLength\",keyword:\"maxLength\",params:{limit: 50},message:\"must NOT have more than 50 characters\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if(func2(data3) < 1){const err17 = {instancePath:instancePath+\"/score\",schemaPath:\"#/properties/score/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/score\",schemaPath:\"#/properties/score/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.date !== undefined){let data4 = data.date;if(typeof data4 === \"string\"){if(!pattern18.test(data4)){const err19 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}else {const err20 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.relatedEducationId !== undefined){let data5 = data.relatedEducationId;if(typeof data5 === \"string\"){if(func2(data5) > 64){const err21 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}if(func2(data5) < 1){const err22 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}if(!pattern12.test(data5)){const err23 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}else {const err24 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.description !== undefined){let data6 = data.description;if(data6 && typeof data6 == \"object\" && !Array.isArray(data6)){if(Object.keys(data6).length < 1){const err25 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}for(const key2 in data6){const _errs24 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err26 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}else {const err27 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}var valid8 = _errs24 === errors;if(!valid8){const err28 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}for(const key3 in data6){let data7 = data6[key3];if(typeof data7 === \"string\"){if(func2(data7) > 5000){const err29 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}if(func2(data7) < 1){const err30 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}else {const err31 = {instancePath:instancePath+\"/description/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}}else {const err32 = {instancePath:instancePath+\"/description\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data.url !== undefined){let data8 = data.url;if(typeof data8 === \"string\"){if(func2(data8) > 2048){const err33 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}if(!(formats2(data8))){const err34 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.order !== undefined){let data9 = data.order;if(!(((typeof data9 == \"number\") && (!(data9 % 1) && !isNaN(data9))) && (isFinite(data9)))){const err36 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}if((typeof data9 == \"number\") && (isFinite(data9))){if(data9 < 0 || isNaN(data9)){const err37 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}}}else {const err38 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}validate54.errors = vErrors;return errors === 0;}validate54.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema140 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"id\",\"body\",\"author\"],\"properties\":{\"id\":{\"$ref\":\"#/$defs/Slug\"},\"body\":{\"$ref\":\"#/$defs/LocalizedBody\"},\"author\":{\"$ref\":\"#/$defs/RecommendationAuthor\"},\"relationship\":{\"$ref\":\"#/$defs/LocalizedTitle\",\"description\":\"How the recommender relates to the profile owner (e.g. 'managed directly', 'worked together').\"},\"date\":{\"$ref\":\"#/$defs/YearMonth\"},\"relatedCareerId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to a careers[].id (the position the recommendation pertains to).\"},\"relatedEducationId\":{\"$ref\":\"#/$defs/Slug\",\"description\":\"Optional reference to an education[].id (e.g. a recommendation from a professor).\"},\"order\":{\"type\":\"integer\",\"minimum\":0}}};const schema143 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100,\"description\":\"Recommender's name, in its original script. Owner-curated; takuhon does not verify it.\"},\"headline\":{\"$ref\":\"#/$defs/LocalizedTitle\",\"description\":\"Recommender's title / role / organization at the time of the recommendation.\"},\"url\":{\"$ref\":\"#/$defs/Url\",\"description\":\"Link to the recommender's profile, for external verification by the reader.\"}}};function validate57(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate57.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.name === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"name\"},message:\"must have required property '\"+\"name\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.name !== undefined){let data0 = data.name;if(typeof data0 === \"string\"){if(func2(data0) > 100){const err1 = {instancePath:instancePath+\"/name\",schemaPath:\"#/properties/name/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(func2(data0) < 1){const err2 = {instancePath:instancePath+\"/name\",schemaPath:\"#/properties/name/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}else {const err3 = {instancePath:instancePath+\"/name\",schemaPath:\"#/properties/name/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.headline !== undefined){let data1 = data.headline;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err4 = {instancePath:instancePath+\"/headline\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}for(const key0 in data1){const _errs7 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err5 = {instancePath:instancePath+\"/headline\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/headline\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid2 = _errs7 === errors;if(!valid2){const err7 = {instancePath:instancePath+\"/headline\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 200){const err8 = {instancePath:instancePath+\"/headline/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(func2(data2) < 1){const err9 = {instancePath:instancePath+\"/headline/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}else {const err10 = {instancePath:instancePath+\"/headline/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath:instancePath+\"/headline\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.url !== undefined){let data3 = data.url;if(typeof data3 === \"string\"){if(func2(data3) > 2048){const err12 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(!(formats2(data3))){const err13 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}validate57.errors = vErrors;return errors === 0;}validate57.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};function validate56(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate56.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.id === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"id\"},message:\"must have required property '\"+\"id\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.body === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"body\"},message:\"must have required property '\"+\"body\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.author === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"author\"},message:\"must have required property '\"+\"author\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.id !== undefined){let data0 = data.id;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err3 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(func2(data0) < 1){const err4 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!pattern12.test(data0)){const err5 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/id\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.body !== undefined){let data1 = data.body;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(Object.keys(data1).length < 1){const err7 = {instancePath:instancePath+\"/body\",schemaPath:\"#/$defs/LocalizedBody/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}for(const key0 in data1){const _errs8 = errors;if(typeof key0 === \"string\"){if(!pattern5.test(key0)){const err8 = {instancePath:instancePath+\"/body\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+\"/body\",schemaPath:\"#/$defs/LocalizedBody/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid3 = _errs8 === errors;if(!valid3){const err10 = {instancePath:instancePath+\"/body\",schemaPath:\"#/$defs/LocalizedBody/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key0},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}for(const key1 in data1){let data2 = data1[key1];if(typeof data2 === \"string\"){if(func2(data2) > 5000){const err11 = {instancePath:instancePath+\"/body/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 5000},message:\"must NOT have more than 5000 characters\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(func2(data2) < 1){const err12 = {instancePath:instancePath+\"/body/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}else {const err13 = {instancePath:instancePath+\"/body/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedBody/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}}else {const err14 = {instancePath:instancePath+\"/body\",schemaPath:\"#/$defs/LocalizedBody/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.author !== undefined){if(!(validate57(data.author, {instancePath:instancePath+\"/author\",parentData:data,parentDataProperty:\"author\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate57.errors : vErrors.concat(validate57.errors);errors = vErrors.length;}}if(data.relationship !== undefined){let data4 = data.relationship;if(data4 && typeof data4 == \"object\" && !Array.isArray(data4)){if(Object.keys(data4).length < 1){const err15 = {instancePath:instancePath+\"/relationship\",schemaPath:\"#/$defs/LocalizedTitle/minProperties\",keyword:\"minProperties\",params:{limit: 1},message:\"must NOT have fewer than 1 properties\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}for(const key2 in data4){const _errs17 = errors;if(typeof key2 === \"string\"){if(!pattern5.test(key2)){const err16 = {instancePath:instancePath+\"/relationship\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\",propertyName:key2};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}else {const err17 = {instancePath:instancePath+\"/relationship\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",propertyName:key2};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var valid6 = _errs17 === errors;if(!valid6){const err18 = {instancePath:instancePath+\"/relationship\",schemaPath:\"#/$defs/LocalizedTitle/propertyNames\",keyword:\"propertyNames\",params:{propertyName: key2},message:\"property name must be valid\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}for(const key3 in data4){let data5 = data4[key3];if(typeof data5 === \"string\"){if(func2(data5) > 200){const err19 = {instancePath:instancePath+\"/relationship/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if(func2(data5) < 1){const err20 = {instancePath:instancePath+\"/relationship/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}else {const err21 = {instancePath:instancePath+\"/relationship/\" + key3.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),schemaPath:\"#/$defs/LocalizedTitle/additionalProperties/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}}else {const err22 = {instancePath:instancePath+\"/relationship\",schemaPath:\"#/$defs/LocalizedTitle/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.date !== undefined){let data6 = data.date;if(typeof data6 === \"string\"){if(!pattern18.test(data6)){const err23 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]{4}-(0[1-9]|1[0-2])$\"},message:\"must match pattern \\\"\"+\"^[0-9]{4}-(0[1-9]|1[0-2])$\"+\"\\\"\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}else {const err24 = {instancePath:instancePath+\"/date\",schemaPath:\"#/$defs/YearMonth/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.relatedCareerId !== undefined){let data7 = data.relatedCareerId;if(typeof data7 === \"string\"){if(func2(data7) > 64){const err25 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}if(func2(data7) < 1){const err26 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}if(!pattern12.test(data7)){const err27 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}else {const err28 = {instancePath:instancePath+\"/relatedCareerId\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}if(data.relatedEducationId !== undefined){let data8 = data.relatedEducationId;if(typeof data8 === \"string\"){if(func2(data8) > 64){const err29 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}if(func2(data8) < 1){const err30 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}if(!pattern12.test(data8)){const err31 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-z0-9][a-z0-9-]*$\"},message:\"must match pattern \\\"\"+\"^[a-z0-9][a-z0-9-]*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}else {const err32 = {instancePath:instancePath+\"/relatedEducationId\",schemaPath:\"#/$defs/Slug/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data.order !== undefined){let data9 = data.order;if(!(((typeof data9 == \"number\") && (!(data9 % 1) && !isNaN(data9))) && (isFinite(data9)))){const err33 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/type\",keyword:\"type\",params:{type: \"integer\"},message:\"must be integer\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}if((typeof data9 == \"number\") && (isFinite(data9))){if(data9 < 0 || isNaN(data9)){const err34 = {instancePath:instancePath+\"/order\",schemaPath:\"#/properties/order/minimum\",keyword:\"minimum\",params:{comparison: \">=\", limit: 0},message:\"must be >= 0\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}}}else {const err35 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}validate56.errors = vErrors;return errors === 0;}validate56.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema150 = {\"type\":\"object\",\"additionalProperties\":true,\"properties\":{\"email\":{\"$ref\":\"#/$defs/Email\"},\"showEmail\":{\"type\":\"boolean\",\"default\":false},\"formUrl\":{\"$ref\":\"#/$defs/Url\"}}};const schema151 = {\"type\":\"string\",\"format\":\"email\",\"maxLength\":254};const formats32 = /^[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;function validate60(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate60.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.email !== undefined){let data0 = data.email;if(typeof data0 === \"string\"){if(func2(data0) > 254){const err0 = {instancePath:instancePath+\"/email\",schemaPath:\"#/$defs/Email/maxLength\",keyword:\"maxLength\",params:{limit: 254},message:\"must NOT have more than 254 characters\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(!(formats32.test(data0))){const err1 = {instancePath:instancePath+\"/email\",schemaPath:\"#/$defs/Email/format\",keyword:\"format\",params:{format: \"email\"},message:\"must match format \\\"\"+\"email\"+\"\\\"\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}else {const err2 = {instancePath:instancePath+\"/email\",schemaPath:\"#/$defs/Email/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data.showEmail !== undefined){if(typeof data.showEmail !== \"boolean\"){const err3 = {instancePath:instancePath+\"/showEmail\",schemaPath:\"#/properties/showEmail/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.formUrl !== undefined){let data2 = data.formUrl;if(typeof data2 === \"string\"){if(func2(data2) > 2048){const err4 = {instancePath:instancePath+\"/formUrl\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!(formats2(data2))){const err5 = {instancePath:instancePath+\"/formUrl\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}else {const err6 = {instancePath:instancePath+\"/formUrl\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}}else {const err7 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}validate60.errors = vErrors;return errors === 0;}validate60.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema153 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"defaultLocale\",\"availableLocales\"],\"properties\":{\"defaultLocale\":{\"$ref\":\"#/$defs/LocaleTag\"},\"fallbackLocale\":{\"$ref\":\"#/$defs/LocaleTag\"},\"availableLocales\":{\"type\":\"array\",\"minItems\":1,\"maxItems\":50,\"uniqueItems\":true,\"items\":{\"$ref\":\"#/$defs/LocaleTag\"}},\"theme\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"description\":\"UI theme identifier. 'default' is the built-in theme; adapters may add more.\"},\"showPoweredBy\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Display the 'Powered by takuhon' attribution in the rendered profile.\"},\"enableJsonLd\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Emit Schema.org JSON-LD on the rendered profile page.\"},\"enableApi\":{\"type\":\"boolean\",\"default\":true,\"description\":\"Expose the public read API endpoints (GET /api/profile, /api/jsonld, /api/schema, /takuhon.json).\"},\"enableAnalytics\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Opt-in flag for first-party analytics. Default is false to keep takuhon privacy-respecting by default.\"}}};const func0 = require(\"ajv/dist/runtime/equal\").default;function validate62(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate62.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.defaultLocale === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"defaultLocale\"},message:\"must have required property '\"+\"defaultLocale\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.availableLocales === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"availableLocales\"},message:\"must have required property '\"+\"availableLocales\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.defaultLocale !== undefined){let data0 = data.defaultLocale;if(typeof data0 === \"string\"){if(func2(data0) > 35){const err2 = {instancePath:instancePath+\"/defaultLocale\",schemaPath:\"#/$defs/LocaleTag/maxLength\",keyword:\"maxLength\",params:{limit: 35},message:\"must NOT have more than 35 characters\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(func2(data0) < 2){const err3 = {instancePath:instancePath+\"/defaultLocale\",schemaPath:\"#/$defs/LocaleTag/minLength\",keyword:\"minLength\",params:{limit: 2},message:\"must NOT have fewer than 2 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!pattern5.test(data0)){const err4 = {instancePath:instancePath+\"/defaultLocale\",schemaPath:\"#/$defs/LocaleTag/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+\"/defaultLocale\",schemaPath:\"#/$defs/LocaleTag/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.fallbackLocale !== undefined){let data1 = data.fallbackLocale;if(typeof data1 === \"string\"){if(func2(data1) > 35){const err6 = {instancePath:instancePath+\"/fallbackLocale\",schemaPath:\"#/$defs/LocaleTag/maxLength\",keyword:\"maxLength\",params:{limit: 35},message:\"must NOT have more than 35 characters\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}if(func2(data1) < 2){const err7 = {instancePath:instancePath+\"/fallbackLocale\",schemaPath:\"#/$defs/LocaleTag/minLength\",keyword:\"minLength\",params:{limit: 2},message:\"must NOT have fewer than 2 characters\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(!pattern5.test(data1)){const err8 = {instancePath:instancePath+\"/fallbackLocale\",schemaPath:\"#/$defs/LocaleTag/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+\"/fallbackLocale\",schemaPath:\"#/$defs/LocaleTag/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.availableLocales !== undefined){let data2 = data.availableLocales;if(Array.isArray(data2)){if(data2.length > 50){const err10 = {instancePath:instancePath+\"/availableLocales\",schemaPath:\"#/properties/availableLocales/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(data2.length < 1){const err11 = {instancePath:instancePath+\"/availableLocales\",schemaPath:\"#/properties/availableLocales/minItems\",keyword:\"minItems\",params:{limit: 1},message:\"must NOT have fewer than 1 items\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}const len0 = data2.length;for(let i0=0; i0<len0; i0++){let data3 = data2[i0];if(typeof data3 === \"string\"){if(func2(data3) > 35){const err12 = {instancePath:instancePath+\"/availableLocales/\" + i0,schemaPath:\"#/$defs/LocaleTag/maxLength\",keyword:\"maxLength\",params:{limit: 35},message:\"must NOT have more than 35 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(func2(data3) < 2){const err13 = {instancePath:instancePath+\"/availableLocales/\" + i0,schemaPath:\"#/$defs/LocaleTag/minLength\",keyword:\"minLength\",params:{limit: 2},message:\"must NOT have fewer than 2 characters\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(!pattern5.test(data3)){const err14 = {instancePath:instancePath+\"/availableLocales/\" + i0,schemaPath:\"#/$defs/LocaleTag/pattern\",keyword:\"pattern\",params:{pattern: \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"},message:\"must match pattern \\\"\"+\"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"+\"\\\"\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}else {const err15 = {instancePath:instancePath+\"/availableLocales/\" + i0,schemaPath:\"#/$defs/LocaleTag/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}let i1 = data2.length;let j0;if(i1 > 1){outer0:for(;i1--;){for(j0 = i1; j0--;){if(func0(data2[i1], data2[j0])){const err16 = {instancePath:instancePath+\"/availableLocales\",schemaPath:\"#/properties/availableLocales/uniqueItems\",keyword:\"uniqueItems\",params:{i: i1, j: j0},message:\"must NOT have duplicate items (items ## \"+j0+\" and \"+i1+\" are identical)\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;break outer0;}}}}}else {const err17 = {instancePath:instancePath+\"/availableLocales\",schemaPath:\"#/properties/availableLocales/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data.theme !== undefined){let data4 = data.theme;if(typeof data4 === \"string\"){if(func2(data4) > 64){const err18 = {instancePath:instancePath+\"/theme\",schemaPath:\"#/properties/theme/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}if(func2(data4) < 1){const err19 = {instancePath:instancePath+\"/theme\",schemaPath:\"#/properties/theme/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}else {const err20 = {instancePath:instancePath+\"/theme\",schemaPath:\"#/properties/theme/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.showPoweredBy !== undefined){if(typeof data.showPoweredBy !== \"boolean\"){const err21 = {instancePath:instancePath+\"/showPoweredBy\",schemaPath:\"#/properties/showPoweredBy/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data.enableJsonLd !== undefined){if(typeof data.enableJsonLd !== \"boolean\"){const err22 = {instancePath:instancePath+\"/enableJsonLd\",schemaPath:\"#/properties/enableJsonLd/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.enableApi !== undefined){if(typeof data.enableApi !== \"boolean\"){const err23 = {instancePath:instancePath+\"/enableApi\",schemaPath:\"#/properties/enableApi/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.enableAnalytics !== undefined){if(typeof data.enableAnalytics !== \"boolean\"){const err24 = {instancePath:instancePath+\"/enableAnalytics\",schemaPath:\"#/properties/enableAnalytics/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}}else {const err25 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}validate62.errors = vErrors;return errors === 0;}validate62.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};const schema157 = {\"type\":\"object\",\"additionalProperties\":true,\"required\":[\"contentLicense\"],\"properties\":{\"createdAt\":{\"$ref\":\"#/$defs/IsoDateTime\"},\"updatedAt\":{\"$ref\":\"#/$defs/IsoDateTime\"},\"generator\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":100,\"description\":\"Tool that produced this document (e.g. 'Takuhon', 'create-takuhon@0.1.0').\"},\"contentLicense\":{\"$ref\":\"#/$defs/ContentLicense\"},\"privacy\":{\"$ref\":\"#/$defs/MetaPrivacy\"}}};const schema158 = {\"type\":\"string\",\"format\":\"date-time\",\"description\":\"ISO 8601 date-time (e.g., 2026-05-11T12:34:56Z).\"};const schema163 = {\"type\":\"object\",\"additionalProperties\":true,\"description\":\"Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/admin/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.\",\"properties\":{\"hideCredentialIds\":{\"type\":\"boolean\",\"default\":true,\"description\":\"When true (default), strip certifications[*].credentialId from public responses.\"},\"hideEducationGrades\":{\"type\":\"boolean\",\"default\":true,\"description\":\"When true (default), strip education[*].grade from public responses.\"}}};const formats36 = require(\"ajv-formats/dist/formats\").fullFormats[\"date-time\"];const schema160 = {\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"spdxId\"],\"properties\":{\"spdxId\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":64,\"description\":\"SPDX identifier (e.g., 'CC-BY-4.0', 'CC0-1.0') or 'Proprietary'. No default; the profile owner must choose explicitly.\"},\"url\":{\"$ref\":\"#/$defs/Url\"},\"attribution\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"name\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":200},\"url\":{\"$ref\":\"#/$defs/Url\"}}},\"rights\":{\"type\":\"string\",\"minLength\":1,\"maxLength\":1000,\"description\":\"Free-form rights statement (used when spdxId='Proprietary' or for additional notices).\"}}};function validate65(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate65.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.spdxId === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"spdxId\"},message:\"must have required property '\"+\"spdxId\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}for(const key0 in data){if(!((((key0 === \"spdxId\") || (key0 === \"url\")) || (key0 === \"attribution\")) || (key0 === \"rights\"))){const err1 = {instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data.spdxId !== undefined){let data0 = data.spdxId;if(typeof data0 === \"string\"){if(func2(data0) > 64){const err2 = {instancePath:instancePath+\"/spdxId\",schemaPath:\"#/properties/spdxId/maxLength\",keyword:\"maxLength\",params:{limit: 64},message:\"must NOT have more than 64 characters\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(func2(data0) < 1){const err3 = {instancePath:instancePath+\"/spdxId\",schemaPath:\"#/properties/spdxId/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}else {const err4 = {instancePath:instancePath+\"/spdxId\",schemaPath:\"#/properties/spdxId/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.url !== undefined){let data1 = data.url;if(typeof data1 === \"string\"){if(func2(data1) > 2048){const err5 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!(formats2(data1))){const err6 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.attribution !== undefined){let data2 = data.attribution;if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){for(const key1 in data2){if(!((key1 === \"name\") || (key1 === \"url\"))){const err8 = {instancePath:instancePath+\"/attribution\",schemaPath:\"#/properties/attribution/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key1},message:\"must NOT have additional properties\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data2.name !== undefined){let data3 = data2.name;if(typeof data3 === \"string\"){if(func2(data3) > 200){const err9 = {instancePath:instancePath+\"/attribution/name\",schemaPath:\"#/properties/attribution/properties/name/maxLength\",keyword:\"maxLength\",params:{limit: 200},message:\"must NOT have more than 200 characters\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(func2(data3) < 1){const err10 = {instancePath:instancePath+\"/attribution/name\",schemaPath:\"#/properties/attribution/properties/name/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}else {const err11 = {instancePath:instancePath+\"/attribution/name\",schemaPath:\"#/properties/attribution/properties/name/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data2.url !== undefined){let data4 = data2.url;if(typeof data4 === \"string\"){if(func2(data4) > 2048){const err12 = {instancePath:instancePath+\"/attribution/url\",schemaPath:\"#/$defs/Url/maxLength\",keyword:\"maxLength\",params:{limit: 2048},message:\"must NOT have more than 2048 characters\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(!(formats2(data4))){const err13 = {instancePath:instancePath+\"/attribution/url\",schemaPath:\"#/$defs/Url/format\",keyword:\"format\",params:{format: \"uri\"},message:\"must match format \\\"\"+\"uri\"+\"\\\"\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}else {const err14 = {instancePath:instancePath+\"/attribution/url\",schemaPath:\"#/$defs/Url/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath:instancePath+\"/attribution\",schemaPath:\"#/properties/attribution/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.rights !== undefined){let data5 = data.rights;if(typeof data5 === \"string\"){if(func2(data5) > 1000){const err16 = {instancePath:instancePath+\"/rights\",schemaPath:\"#/properties/rights/maxLength\",keyword:\"maxLength\",params:{limit: 1000},message:\"must NOT have more than 1000 characters\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if(func2(data5) < 1){const err17 = {instancePath:instancePath+\"/rights\",schemaPath:\"#/properties/rights/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+\"/rights\",schemaPath:\"#/properties/rights/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}}else {const err19 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}validate65.errors = vErrors;return errors === 0;}validate65.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};function validate64(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate64.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.contentLicense === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"contentLicense\"},message:\"must have required property '\"+\"contentLicense\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.createdAt !== undefined){let data0 = data.createdAt;if(typeof data0 === \"string\"){if(!(formats36.validate(data0))){const err1 = {instancePath:instancePath+\"/createdAt\",schemaPath:\"#/$defs/IsoDateTime/format\",keyword:\"format\",params:{format: \"date-time\"},message:\"must match format \\\"\"+\"date-time\"+\"\\\"\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}else {const err2 = {instancePath:instancePath+\"/createdAt\",schemaPath:\"#/$defs/IsoDateTime/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data.updatedAt !== undefined){let data1 = data.updatedAt;if(typeof data1 === \"string\"){if(!(formats36.validate(data1))){const err3 = {instancePath:instancePath+\"/updatedAt\",schemaPath:\"#/$defs/IsoDateTime/format\",keyword:\"format\",params:{format: \"date-time\"},message:\"must match format \\\"\"+\"date-time\"+\"\\\"\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}else {const err4 = {instancePath:instancePath+\"/updatedAt\",schemaPath:\"#/$defs/IsoDateTime/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.generator !== undefined){let data2 = data.generator;if(typeof data2 === \"string\"){if(func2(data2) > 100){const err5 = {instancePath:instancePath+\"/generator\",schemaPath:\"#/properties/generator/maxLength\",keyword:\"maxLength\",params:{limit: 100},message:\"must NOT have more than 100 characters\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(func2(data2) < 1){const err6 = {instancePath:instancePath+\"/generator\",schemaPath:\"#/properties/generator/minLength\",keyword:\"minLength\",params:{limit: 1},message:\"must NOT have fewer than 1 characters\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+\"/generator\",schemaPath:\"#/properties/generator/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.contentLicense !== undefined){if(!(validate65(data.contentLicense, {instancePath:instancePath+\"/contentLicense\",parentData:data,parentDataProperty:\"contentLicense\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate65.errors : vErrors.concat(validate65.errors);errors = vErrors.length;}}if(data.privacy !== undefined){let data4 = data.privacy;if(data4 && typeof data4 == \"object\" && !Array.isArray(data4)){if(data4.hideCredentialIds !== undefined){if(typeof data4.hideCredentialIds !== \"boolean\"){const err8 = {instancePath:instancePath+\"/privacy/hideCredentialIds\",schemaPath:\"#/$defs/MetaPrivacy/properties/hideCredentialIds/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data4.hideEducationGrades !== undefined){if(typeof data4.hideEducationGrades !== \"boolean\"){const err9 = {instancePath:instancePath+\"/privacy/hideEducationGrades\",schemaPath:\"#/$defs/MetaPrivacy/properties/hideEducationGrades/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}}else {const err10 = {instancePath:instancePath+\"/privacy\",schemaPath:\"#/$defs/MetaPrivacy/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}validate64.errors = vErrors;return errors === 0;}validate64.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};function validate20(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){/*# sourceURL=\"https://takuhon.example/schemas/0.4.0/takuhon.schema.json\" */;let vErrors = null;let errors = 0;const evaluated0 = validate20.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.schemaVersion === undefined){const err0 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"schemaVersion\"},message:\"must have required property '\"+\"schemaVersion\"+\"'\"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.profile === undefined){const err1 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"profile\"},message:\"must have required property '\"+\"profile\"+\"'\"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.links === undefined){const err2 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"links\"},message:\"must have required property '\"+\"links\"+\"'\"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.careers === undefined){const err3 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"careers\"},message:\"must have required property '\"+\"careers\"+\"'\"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.projects === undefined){const err4 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"projects\"},message:\"must have required property '\"+\"projects\"+\"'\"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(data.skills === undefined){const err5 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"skills\"},message:\"must have required property '\"+\"skills\"+\"'\"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(data.contact === undefined){const err6 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"contact\"},message:\"must have required property '\"+\"contact\"+\"'\"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}if(data.settings === undefined){const err7 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"settings\"},message:\"must have required property '\"+\"settings\"+\"'\"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(data.meta === undefined){const err8 = {instancePath,schemaPath:\"#/required\",keyword:\"required\",params:{missingProperty: \"meta\"},message:\"must have required property '\"+\"meta\"+\"'\"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}for(const key0 in data){if(!(func1.call(schema31.properties, key0))){const err9 = {instancePath,schemaPath:\"#/additionalProperties\",keyword:\"additionalProperties\",params:{additionalProperty: key0},message:\"must NOT have additional properties\"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.schemaVersion !== undefined){let data0 = data.schemaVersion;if(typeof data0 === \"string\"){if(!pattern4.test(data0)){const err10 = {instancePath:instancePath+\"/schemaVersion\",schemaPath:\"#/properties/schemaVersion/pattern\",keyword:\"pattern\",params:{pattern: \"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[a-zA-Z0-9.-]+)?$\"},message:\"must match pattern \\\"\"+\"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[a-zA-Z0-9.-]+)?$\"+\"\\\"\"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}else {const err11 = {instancePath:instancePath+\"/schemaVersion\",schemaPath:\"#/properties/schemaVersion/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.profile !== undefined){if(!(validate21(data.profile, {instancePath:instancePath+\"/profile\",parentData:data,parentDataProperty:\"profile\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);errors = vErrors.length;}}if(data.links !== undefined){let data2 = data.links;if(Array.isArray(data2)){if(data2.length > 100){const err12 = {instancePath:instancePath+\"/links\",schemaPath:\"#/properties/links/maxItems\",keyword:\"maxItems\",params:{limit: 100},message:\"must NOT have more than 100 items\"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}const len0 = data2.length;for(let i0=0; i0<len0; i0++){if(!(validate27(data2[i0], {instancePath:instancePath+\"/links/\" + i0,parentData:data2,parentDataProperty:i0,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate27.errors : vErrors.concat(validate27.errors);errors = vErrors.length;}}}else {const err13 = {instancePath:instancePath+\"/links\",schemaPath:\"#/properties/links/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data.careers !== undefined){let data4 = data.careers;if(Array.isArray(data4)){if(data4.length > 50){const err14 = {instancePath:instancePath+\"/careers\",schemaPath:\"#/properties/careers/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}const len1 = data4.length;for(let i1=0; i1<len1; i1++){if(!(validate29(data4[i1], {instancePath:instancePath+\"/careers/\" + i1,parentData:data4,parentDataProperty:i1,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate29.errors : vErrors.concat(validate29.errors);errors = vErrors.length;}}}else {const err15 = {instancePath:instancePath+\"/careers\",schemaPath:\"#/properties/careers/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.projects !== undefined){let data6 = data.projects;if(Array.isArray(data6)){if(data6.length > 100){const err16 = {instancePath:instancePath+\"/projects\",schemaPath:\"#/properties/projects/maxItems\",keyword:\"maxItems\",params:{limit: 100},message:\"must NOT have more than 100 items\"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}const len2 = data6.length;for(let i2=0; i2<len2; i2++){if(!(validate32(data6[i2], {instancePath:instancePath+\"/projects/\" + i2,parentData:data6,parentDataProperty:i2,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate32.errors : vErrors.concat(validate32.errors);errors = vErrors.length;}}}else {const err17 = {instancePath:instancePath+\"/projects\",schemaPath:\"#/properties/projects/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data.skills !== undefined){let data8 = data.skills;if(Array.isArray(data8)){if(data8.length > 200){const err18 = {instancePath:instancePath+\"/skills\",schemaPath:\"#/properties/skills/maxItems\",keyword:\"maxItems\",params:{limit: 200},message:\"must NOT have more than 200 items\"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}const len3 = data8.length;for(let i3=0; i3<len3; i3++){if(!(validate34(data8[i3], {instancePath:instancePath+\"/skills/\" + i3,parentData:data8,parentDataProperty:i3,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate34.errors : vErrors.concat(validate34.errors);errors = vErrors.length;}}}else {const err19 = {instancePath:instancePath+\"/skills\",schemaPath:\"#/properties/skills/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}if(data.certifications !== undefined){let data10 = data.certifications;if(Array.isArray(data10)){if(data10.length > 50){const err20 = {instancePath:instancePath+\"/certifications\",schemaPath:\"#/properties/certifications/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}const len4 = data10.length;for(let i4=0; i4<len4; i4++){if(!(validate36(data10[i4], {instancePath:instancePath+\"/certifications/\" + i4,parentData:data10,parentDataProperty:i4,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate36.errors : vErrors.concat(validate36.errors);errors = vErrors.length;}}}else {const err21 = {instancePath:instancePath+\"/certifications\",schemaPath:\"#/properties/certifications/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data.memberships !== undefined){let data12 = data.memberships;if(Array.isArray(data12)){if(data12.length > 50){const err22 = {instancePath:instancePath+\"/memberships\",schemaPath:\"#/properties/memberships/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}const len5 = data12.length;for(let i5=0; i5<len5; i5++){if(!(validate38(data12[i5], {instancePath:instancePath+\"/memberships/\" + i5,parentData:data12,parentDataProperty:i5,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate38.errors : vErrors.concat(validate38.errors);errors = vErrors.length;}}}else {const err23 = {instancePath:instancePath+\"/memberships\",schemaPath:\"#/properties/memberships/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.volunteering !== undefined){let data14 = data.volunteering;if(Array.isArray(data14)){if(data14.length > 50){const err24 = {instancePath:instancePath+\"/volunteering\",schemaPath:\"#/properties/volunteering/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}const len6 = data14.length;for(let i6=0; i6<len6; i6++){if(!(validate40(data14[i6], {instancePath:instancePath+\"/volunteering/\" + i6,parentData:data14,parentDataProperty:i6,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate40.errors : vErrors.concat(validate40.errors);errors = vErrors.length;}}}else {const err25 = {instancePath:instancePath+\"/volunteering\",schemaPath:\"#/properties/volunteering/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data.honors !== undefined){let data16 = data.honors;if(Array.isArray(data16)){if(data16.length > 50){const err26 = {instancePath:instancePath+\"/honors\",schemaPath:\"#/properties/honors/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}const len7 = data16.length;for(let i7=0; i7<len7; i7++){if(!(validate42(data16[i7], {instancePath:instancePath+\"/honors/\" + i7,parentData:data16,parentDataProperty:i7,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate42.errors : vErrors.concat(validate42.errors);errors = vErrors.length;}}}else {const err27 = {instancePath:instancePath+\"/honors\",schemaPath:\"#/properties/honors/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}if(data.education !== undefined){let data18 = data.education;if(Array.isArray(data18)){if(data18.length > 30){const err28 = {instancePath:instancePath+\"/education\",schemaPath:\"#/properties/education/maxItems\",keyword:\"maxItems\",params:{limit: 30},message:\"must NOT have more than 30 items\"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}const len8 = data18.length;for(let i8=0; i8<len8; i8++){if(!(validate44(data18[i8], {instancePath:instancePath+\"/education/\" + i8,parentData:data18,parentDataProperty:i8,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate44.errors : vErrors.concat(validate44.errors);errors = vErrors.length;}}}else {const err29 = {instancePath:instancePath+\"/education\",schemaPath:\"#/properties/education/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}if(data.publications !== undefined){let data20 = data.publications;if(Array.isArray(data20)){if(data20.length > 100){const err30 = {instancePath:instancePath+\"/publications\",schemaPath:\"#/properties/publications/maxItems\",keyword:\"maxItems\",params:{limit: 100},message:\"must NOT have more than 100 items\"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}const len9 = data20.length;for(let i9=0; i9<len9; i9++){if(!(validate46(data20[i9], {instancePath:instancePath+\"/publications/\" + i9,parentData:data20,parentDataProperty:i9,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);errors = vErrors.length;}}}else {const err31 = {instancePath:instancePath+\"/publications\",schemaPath:\"#/properties/publications/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}if(data.languages !== undefined){let data22 = data.languages;if(Array.isArray(data22)){if(data22.length > 30){const err32 = {instancePath:instancePath+\"/languages\",schemaPath:\"#/properties/languages/maxItems\",keyword:\"maxItems\",params:{limit: 30},message:\"must NOT have more than 30 items\"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}const len10 = data22.length;for(let i10=0; i10<len10; i10++){if(!(validate48(data22[i10], {instancePath:instancePath+\"/languages/\" + i10,parentData:data22,parentDataProperty:i10,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate48.errors : vErrors.concat(validate48.errors);errors = vErrors.length;}}}else {const err33 = {instancePath:instancePath+\"/languages\",schemaPath:\"#/properties/languages/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}if(data.courses !== undefined){let data24 = data.courses;if(Array.isArray(data24)){if(data24.length > 100){const err34 = {instancePath:instancePath+\"/courses\",schemaPath:\"#/properties/courses/maxItems\",keyword:\"maxItems\",params:{limit: 100},message:\"must NOT have more than 100 items\"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}const len11 = data24.length;for(let i11=0; i11<len11; i11++){if(!(validate50(data24[i11], {instancePath:instancePath+\"/courses/\" + i11,parentData:data24,parentDataProperty:i11,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate50.errors : vErrors.concat(validate50.errors);errors = vErrors.length;}}}else {const err35 = {instancePath:instancePath+\"/courses\",schemaPath:\"#/properties/courses/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.patents !== undefined){let data26 = data.patents;if(Array.isArray(data26)){if(data26.length > 50){const err36 = {instancePath:instancePath+\"/patents\",schemaPath:\"#/properties/patents/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}const len12 = data26.length;for(let i12=0; i12<len12; i12++){if(!(validate52(data26[i12], {instancePath:instancePath+\"/patents/\" + i12,parentData:data26,parentDataProperty:i12,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate52.errors : vErrors.concat(validate52.errors);errors = vErrors.length;}}}else {const err37 = {instancePath:instancePath+\"/patents\",schemaPath:\"#/properties/patents/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}if(data.testScores !== undefined){let data28 = data.testScores;if(Array.isArray(data28)){if(data28.length > 30){const err38 = {instancePath:instancePath+\"/testScores\",schemaPath:\"#/properties/testScores/maxItems\",keyword:\"maxItems\",params:{limit: 30},message:\"must NOT have more than 30 items\"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}const len13 = data28.length;for(let i13=0; i13<len13; i13++){if(!(validate54(data28[i13], {instancePath:instancePath+\"/testScores/\" + i13,parentData:data28,parentDataProperty:i13,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate54.errors : vErrors.concat(validate54.errors);errors = vErrors.length;}}}else {const err39 = {instancePath:instancePath+\"/testScores\",schemaPath:\"#/properties/testScores/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}if(data.recommendations !== undefined){let data30 = data.recommendations;if(Array.isArray(data30)){if(data30.length > 50){const err40 = {instancePath:instancePath+\"/recommendations\",schemaPath:\"#/properties/recommendations/maxItems\",keyword:\"maxItems\",params:{limit: 50},message:\"must NOT have more than 50 items\"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}const len14 = data30.length;for(let i14=0; i14<len14; i14++){if(!(validate56(data30[i14], {instancePath:instancePath+\"/recommendations/\" + i14,parentData:data30,parentDataProperty:i14,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate56.errors : vErrors.concat(validate56.errors);errors = vErrors.length;}}}else {const err41 = {instancePath:instancePath+\"/recommendations\",schemaPath:\"#/properties/recommendations/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}if(data.contact !== undefined){if(!(validate60(data.contact, {instancePath:instancePath+\"/contact\",parentData:data,parentDataProperty:\"contact\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate60.errors : vErrors.concat(validate60.errors);errors = vErrors.length;}}if(data.settings !== undefined){if(!(validate62(data.settings, {instancePath:instancePath+\"/settings\",parentData:data,parentDataProperty:\"settings\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate62.errors : vErrors.concat(validate62.errors);errors = vErrors.length;}}if(data.meta !== undefined){if(!(validate64(data.meta, {instancePath:instancePath+\"/meta\",parentData:data,parentDataProperty:\"meta\",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate64.errors : vErrors.concat(validate64.errors);errors = vErrors.length;}}}else {const err42 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}validate20.errors = vErrors;return errors === 0;}validate20.evaluated = {\"props\":true,\"dynamicProps\":false,\"dynamicItems\":false};","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://takuhon.example/schemas/0.4.0/takuhon.schema.json\",\n \"title\": \"Takuhon Profile\",\n \"description\": \"Portable profile data format consumed by @takuhon/core. The canonical contract for profile content authored as takuhon.json.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"schemaVersion\",\n \"profile\",\n \"links\",\n \"careers\",\n \"projects\",\n \"skills\",\n \"contact\",\n \"settings\",\n \"meta\"\n ],\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[a-zA-Z0-9.-]+)?$\",\n \"description\": \"Semantic version of the takuhon schema this document conforms to.\"\n },\n \"profile\": { \"$ref\": \"#/$defs/Profile\" },\n \"links\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Link\" }\n },\n \"careers\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Career\" }\n },\n \"projects\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Project\" }\n },\n \"skills\": {\n \"type\": \"array\",\n \"maxItems\": 200,\n \"items\": { \"$ref\": \"#/$defs/Skill\" }\n },\n \"certifications\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Certification\" }\n },\n \"memberships\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Membership\" }\n },\n \"volunteering\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Volunteering\" }\n },\n \"honors\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Honor\" }\n },\n \"education\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"$ref\": \"#/$defs/Education\" }\n },\n \"publications\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Publication\" }\n },\n \"languages\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"$ref\": \"#/$defs/Language\" }\n },\n \"courses\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": { \"$ref\": \"#/$defs/Course\" }\n },\n \"patents\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Patent\" }\n },\n \"testScores\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"$ref\": \"#/$defs/TestScore\" }\n },\n \"recommendations\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"$ref\": \"#/$defs/Recommendation\" }\n },\n \"contact\": { \"$ref\": \"#/$defs/Contact\" },\n \"settings\": { \"$ref\": \"#/$defs/Settings\" },\n \"meta\": { \"$ref\": \"#/$defs/Meta\" }\n },\n \"$defs\": {\n \"LocaleTag\": {\n \"type\": \"string\",\n \"minLength\": 2,\n \"maxLength\": 35,\n \"pattern\": \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\",\n \"description\": \"BCP-47 language tag (e.g., 'en', 'ja', 'zh-Hant', 'pt-BR').\"\n },\n \"Iso3166Alpha2\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Z]{2}$\",\n \"description\": \"ISO 3166-1 alpha-2 country code (uppercase, two letters).\"\n },\n \"YearMonth\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]{4}-(0[1-9]|1[0-2])$\",\n \"description\": \"Year-month in 'YYYY-MM' format (Gregorian calendar).\"\n },\n \"IsoDateTime\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"ISO 8601 date-time (e.g., 2026-05-11T12:34:56Z).\"\n },\n \"Url\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"maxLength\": 2048\n },\n \"Email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"maxLength\": 254\n },\n \"Slug\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"pattern\": \"^[a-z0-9][a-z0-9-]*$\",\n \"description\": \"URL-safe identifier (lowercase alphanumerics and hyphens, must start with alphanumeric).\"\n },\n \"LocalizedTitle\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"propertyNames\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"\n },\n \"additionalProperties\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 200\n },\n \"description\": \"Map of BCP-47 locale tag to short title-like string (max 200 chars per value).\"\n },\n \"LocalizedBody\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"propertyNames\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$\"\n },\n \"additionalProperties\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 5000\n },\n \"description\": \"Map of BCP-47 locale tag to body-length string (max 5000 chars per value).\"\n },\n \"LinkType\": {\n \"type\": \"string\",\n \"enum\": [\n \"website\",\n \"blog\",\n \"github\",\n \"gitlab\",\n \"linkedin\",\n \"x\",\n \"mastodon\",\n \"bluesky\",\n \"instagram\",\n \"youtube\",\n \"threads\",\n \"facebook\",\n \"email\",\n \"rss\",\n \"custom\"\n ],\n \"description\": \"Identifies the kind of link. 'custom' requires iconUrl.\"\n },\n \"Profile\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"displayName\"],\n \"properties\": {\n \"displayName\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"tagline\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"bio\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"avatar\": { \"$ref\": \"#/$defs/Avatar\" },\n \"location\": { \"$ref\": \"#/$defs/Address\" }\n }\n },\n \"Avatar\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"url\"],\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\",\n \"maxLength\": 2048,\n \"description\": \"URL or path to the avatar image.\"\n },\n \"alt\": { \"$ref\": \"#/$defs/LocalizedTitle\" }\n }\n },\n \"Address\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"country\": { \"$ref\": \"#/$defs/Iso3166Alpha2\" },\n \"region\": { \"type\": \"string\", \"maxLength\": 100 },\n \"locality\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"display\": { \"$ref\": \"#/$defs/LocalizedTitle\" }\n }\n },\n \"Link\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"id\", \"type\", \"url\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"type\": { \"$ref\": \"#/$defs/LinkType\" },\n \"label\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"featured\": { \"type\": \"boolean\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 },\n \"iconUrl\": { \"$ref\": \"#/$defs/Url\" }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": { \"type\": { \"const\": \"custom\" } },\n \"required\": [\"type\"]\n },\n \"then\": {\n \"properties\": { \"iconUrl\": { \"$ref\": \"#/$defs/Url\" } },\n \"required\": [\"iconUrl\"]\n }\n }\n ]\n },\n \"Career\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"organization\", \"role\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"organization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"role\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }]\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"location\": { \"$ref\": \"#/$defs/Address\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Project\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 30,\n \"items\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 50 }\n },\n \"relatedCareerId\": { \"$ref\": \"#/$defs/Slug\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }]\n },\n \"highlighted\": { \"type\": \"boolean\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Skill\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"label\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"label\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 },\n \"category\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"description\": \"Recommended values (extensible): programming, design, business, communication, language, music, art, sports, other.\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Contact\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"properties\": {\n \"email\": { \"$ref\": \"#/$defs/Email\" },\n \"showEmail\": { \"type\": \"boolean\", \"default\": false },\n \"formUrl\": { \"$ref\": \"#/$defs/Url\" }\n }\n },\n \"Settings\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"defaultLocale\", \"availableLocales\"],\n \"properties\": {\n \"defaultLocale\": { \"$ref\": \"#/$defs/LocaleTag\" },\n \"fallbackLocale\": { \"$ref\": \"#/$defs/LocaleTag\" },\n \"availableLocales\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 50,\n \"uniqueItems\": true,\n \"items\": { \"$ref\": \"#/$defs/LocaleTag\" }\n },\n \"theme\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"description\": \"UI theme identifier. 'default' is the built-in theme; adapters may add more.\"\n },\n \"showPoweredBy\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Display the 'Powered by takuhon' attribution in the rendered profile.\"\n },\n \"enableJsonLd\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Emit Schema.org JSON-LD on the rendered profile page.\"\n },\n \"enableApi\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Expose the public read API endpoints (GET /api/profile, /api/jsonld, /api/schema, /takuhon.json).\"\n },\n \"enableAnalytics\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"Opt-in flag for first-party analytics. Default is false to keep takuhon privacy-respecting by default.\"\n }\n }\n },\n \"Meta\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"contentLicense\"],\n \"properties\": {\n \"createdAt\": { \"$ref\": \"#/$defs/IsoDateTime\" },\n \"updatedAt\": { \"$ref\": \"#/$defs/IsoDateTime\" },\n \"generator\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"description\": \"Tool that produced this document (e.g. 'Takuhon', 'create-takuhon@0.1.0').\"\n },\n \"contentLicense\": { \"$ref\": \"#/$defs/ContentLicense\" },\n \"privacy\": { \"$ref\": \"#/$defs/MetaPrivacy\" }\n }\n },\n \"ContentLicense\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"spdxId\"],\n \"properties\": {\n \"spdxId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"description\": \"SPDX identifier (e.g., 'CC-BY-4.0', 'CC0-1.0') or 'Proprietary'. No default; the profile owner must choose explicitly.\"\n },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"attribution\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 200 },\n \"url\": { \"$ref\": \"#/$defs/Url\" }\n }\n },\n \"rights\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000,\n \"description\": \"Free-form rights statement (used when spdxId='Proprietary' or for additional notices).\"\n }\n }\n },\n \"MetaPrivacy\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"description\": \"Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/admin/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.\",\n \"properties\": {\n \"hideCredentialIds\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"When true (default), strip certifications[*].credentialId from public responses.\"\n },\n \"hideEducationGrades\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"When true (default), strip education[*].grade from public responses.\"\n }\n }\n },\n \"Certification\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"issuingOrganization\", \"issueDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"issuingOrganization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"issueDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"expirationDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }],\n \"description\": \"null = explicitly 'no expiration'. Omit if unknown/unstated.\"\n },\n \"credentialId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"description\": \"License or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds.\"\n },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Membership\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"organization\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"organization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"role\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }],\n \"description\": \"null = ongoing. Omit if unknown.\"\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Volunteering\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"organization\", \"role\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"organization\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"role\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"cause\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }]\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Honor\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"issuer\", \"date\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"issuer\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Education\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"institution\", \"startDate\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"institution\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"degree\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"fieldOfStudy\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"grade\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 50,\n \"description\": \"Free-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades.\"\n },\n \"startDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"endDate\": {\n \"anyOf\": [{ \"$ref\": \"#/$defs/YearMonth\" }, { \"type\": \"null\" }],\n \"description\": \"null = currently enrolled.\"\n },\n \"isCurrent\": { \"type\": \"boolean\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Publication\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"date\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"publisher\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"doi\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 200,\n \"description\": \"DOI identifier (e.g. '10.1145/3548643.3548644'). The full URL goes in 'url'.\"\n },\n \"coAuthors\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 },\n \"description\": \"Co-author names in original script. Excludes the profile owner.\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Language\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"language\", \"proficiency\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"language\": { \"$ref\": \"#/$defs/LocaleTag\" },\n \"displayName\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"proficiency\": {\n \"type\": \"string\",\n \"enum\": [\"native\", \"fluent\", \"professional\", \"intermediate\", \"basic\"],\n \"description\": \"LinkedIn-compatible 5-level proficiency.\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Course\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"provider\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"courseNumber\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 50 },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"completionDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"certificateUrl\": { \"$ref\": \"#/$defs/Url\" },\n \"relatedEducationId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to an education[].id (e.g. for university coursework).\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Patent\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"patentNumber\", \"status\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"patentNumber\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 },\n \"office\": {\n \"type\": \"string\",\n \"maxLength\": 100,\n \"description\": \"Patent office name (e.g. 'USPTO', 'JPO', 'EPO').\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\", \"issued\", \"expired\", \"abandoned\"]\n },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"filingDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"grantDate\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"coInventors\": {\n \"type\": \"array\",\n \"maxItems\": 20,\n \"items\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 100 }\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"TestScore\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"title\", \"score\", \"date\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"title\": { \"$ref\": \"#/$defs/LocalizedTitle\" },\n \"score\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 50,\n \"description\": \"Free-form score string (e.g. '112 / 120', '330', 'N1 Pass', or a percentile). The validator does not interpret its contents.\"\n },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"relatedEducationId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to an education[].id (e.g. for a university course exam).\"\n },\n \"description\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"url\": { \"$ref\": \"#/$defs/Url\" },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"Recommendation\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"id\", \"body\", \"author\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/Slug\" },\n \"body\": { \"$ref\": \"#/$defs/LocalizedBody\" },\n \"author\": { \"$ref\": \"#/$defs/RecommendationAuthor\" },\n \"relationship\": {\n \"$ref\": \"#/$defs/LocalizedTitle\",\n \"description\": \"How the recommender relates to the profile owner (e.g. 'managed directly', 'worked together').\"\n },\n \"date\": { \"$ref\": \"#/$defs/YearMonth\" },\n \"relatedCareerId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to a careers[].id (the position the recommendation pertains to).\"\n },\n \"relatedEducationId\": {\n \"$ref\": \"#/$defs/Slug\",\n \"description\": \"Optional reference to an education[].id (e.g. a recommendation from a professor).\"\n },\n \"order\": { \"type\": \"integer\", \"minimum\": 0 }\n }\n },\n \"RecommendationAuthor\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"description\": \"Recommender's name, in its original script. Owner-curated; takuhon does not verify it.\"\n },\n \"headline\": {\n \"$ref\": \"#/$defs/LocalizedTitle\",\n \"description\": \"Recommender's title / role / organization at the time of the recommendation.\"\n },\n \"url\": {\n \"$ref\": \"#/$defs/Url\",\n \"description\": \"Link to the recommender's profile, for external verification by the reader.\"\n }\n }\n }\n }\n}\n","/**\n * Re-exports the canonical JSON Schema for takuhon profiles.\n *\n * The schema source of truth lives at `packages/core/takuhon.schema.json`\n * (also distributed via the `@takuhon/core/schema.json` sub-path). This module\n * is the convenient ESM-side entry point for consumers that want to feed it\n * directly to a JSON Schema validator (e.g. Ajv) without a filesystem read.\n */\n\nimport schemaJson from '../takuhon.schema.json' with { type: 'json' };\n\nexport const schema = schemaJson;\nexport type Schema = typeof schemaJson;\n","/**\n * Schema validation for takuhon profile documents.\n *\n * Compiles the canonical {@link import('../takuhon.schema.json')} once at module\n * load and exposes a Result-style {@link validate} that returns either the\n * narrowed {@link Takuhon} value or a list of structured {@link ValidationError}s.\n * The validator is the canonical correctness boundary inside `@takuhon/core`:\n * `normalize` (commit 3) and the API layer (commit 11+) both rely on this\n * function to know the shape they are working with.\n *\n * Design notes:\n * - Returns a discriminated union rather than throwing so callers (CLI,\n * normalize, RFC 7807 Problem Details adapters) can route errors however they\n * like without paying for stack capture on every failure.\n * - Errors carry the RFC 6901 JSON Pointer of the offending value plus the\n * failing Ajv keyword, so consumers can render messages or look up the\n * relevant Spec section without leaking Ajv-specific types.\n * - The Ajv 2020 build is used because the schema declares\n * `$schema: \"https://json-schema.org/draft/2020-12/schema\"`.\n * - The validator is *precompiled* to standalone code at build time\n * (`scripts/generate-validator.mjs`) and imported here, so `validate()`\n * performs no runtime `new Function`/`eval`. That keeps it usable under a\n * strict CSP (`script-src 'self'`, no `'unsafe-eval'`) in the browser admin\n * SPA, and in other eval-restricted runtimes. Regenerate after any schema\n * change via `pnpm --filter @takuhon/core generate` (wired into `prebuild`).\n */\n\nimport type { ErrorObject } from 'ajv';\n\nimport validateTakuhon from './generated/takuhon-validator.cjs';\nimport type { Takuhon } from './types.js';\n\n/**\n * Schema versions this build of `@takuhon/core` accepts directly.\n *\n * The migration registry (Phase 1 commit 6+) will translate older `schemaVersion`\n * values into the current one before validation runs, so this list reflects the\n * versions whose JSON Schema this package literally bundles, not the full\n * support window seen by end users.\n */\nexport const SUPPORTED_SCHEMA_VERSIONS = ['0.1.0', '0.2.0', '0.3.0', '0.4.0'] as const;\n\n/**\n * A single validation failure.\n *\n * The shape is intentionally schema-agnostic: an API layer can adapt it into an\n * RFC 7807 Problem Details payload, a CLI can render the message, and a future\n * spec-section lookup table can join on {@link pointer} to surface\n * documentation references. A `specSection` field will be added in a later\n * commit; this minimal surface is what commit 2 ships.\n */\nexport interface ValidationError {\n /** RFC 6901 JSON Pointer to the offending value, e.g. `\"/links/4/iconUrl\"`. */\n pointer: string;\n /** Human-readable failure description (sourced from Ajv when available). */\n message: string;\n /**\n * The schema keyword that failed: `'required'`, `'enum'`, `'pattern'`,\n * `'additionalProperties'`, `'format'`, `'maxItems'`, `'maxLength'`, etc.\n * The value `'schemaVersion'` is reserved for documents whose\n * `schemaVersion` lies outside {@link SUPPORTED_SCHEMA_VERSIONS}.\n */\n keyword: string;\n /** JSON Pointer into the schema for the failing rule, e.g. `\"#/$defs/Link/required\"`. */\n schemaPointer?: string;\n}\n\n/** Result of {@link validate}. Narrow on `ok` to access `data` or `errors`. */\nexport type ValidationResult =\n | { ok: true; data: Takuhon }\n | { ok: false; errors: ValidationError[] };\n\n/**\n * Validate an arbitrary value against the bundled takuhon schema.\n *\n * @param data unknown JSON-like value (typically parsed from a `takuhon.json` file)\n * @returns A discriminated result. On success `data` is narrowed to {@link Takuhon};\n * on failure `errors` is a non-empty list of {@link ValidationError}s.\n */\nexport function validate(data: unknown): ValidationResult {\n // Pre-Ajv gate: reject anything that is not a plain object so callers get a\n // clearer top-level error than Ajv's cascade of \"must be object\" / property\n // failures when handed an array, null, or a primitive.\n if (typeof data !== 'object' || data === null || Array.isArray(data)) {\n return {\n ok: false,\n errors: [\n {\n pointer: '',\n message: 'takuhon.json must be a JSON object.',\n keyword: 'type',\n },\n ],\n };\n }\n\n // Pre-Ajv gate: reject documents whose schemaVersion sits outside the\n // supported window with a dedicated keyword. Migration (commit 6+) will\n // translate older versions into the current one before reaching this point.\n const candidate = data as { schemaVersion?: unknown };\n if (typeof candidate.schemaVersion === 'string' && !isSupportedVersion(candidate.schemaVersion)) {\n return {\n ok: false,\n errors: [\n {\n pointer: '/schemaVersion',\n message: `schemaVersion \"${candidate.schemaVersion}\" is not in the supported window (${SUPPORTED_SCHEMA_VERSIONS.join(\n ', ',\n )}).`,\n keyword: 'schemaVersion',\n },\n ],\n };\n }\n\n if (validateTakuhon(data)) {\n // The schema marks several top-level arrays as optional for back-compat\n // (the nine added in 0.2.0, `testScores` in 0.3.0, and `recommendations`\n // in 0.4.0). The TypeScript `Takuhon` shape requires them so\n // downstream code never has to check for `undefined`. We clone the\n // caller's input before coercing so a successful validate() never\n // mutates the original — callers can keep referencing the value they\n // passed in. JS preserves insertion order, so new keys land at the end\n // of the cloned object; `normalize()` is responsible for canonical\n // field order.\n const cloned = JSON.parse(JSON.stringify(data)) as Takuhon;\n coerceMissingArrays(cloned);\n\n // Post-Ajv check: `languages[].language` uniqueness. JSON Schema\n // `uniqueItems` only catches whole-object duplicates and cannot enforce\n // by-key uniqueness, so we walk the array here and reject duplicates as\n // a synthetic ValidationError.\n const duplicate = findDuplicateLanguage(cloned.languages);\n if (duplicate !== undefined) {\n return {\n ok: false,\n errors: [\n {\n pointer: `/languages/${duplicate.index}/language`,\n message: `Duplicate languages[].language value \"${duplicate.tag}\" — each entry must declare a unique BCP-47 tag.`,\n keyword: 'uniqueItems',\n },\n ],\n };\n }\n\n return { ok: true, data: cloned };\n }\n\n return {\n ok: false,\n errors: (validateTakuhon.errors ?? []).map(toValidationError),\n };\n}\n\nconst COERCED_ARRAY_KEYS = [\n 'certifications',\n 'memberships',\n 'volunteering',\n 'honors',\n 'education',\n 'publications',\n 'languages',\n 'courses',\n 'patents',\n 'testScores',\n 'recommendations',\n] as const;\n\nfunction coerceMissingArrays(data: Takuhon): void {\n const bag = data as unknown as Record<string, unknown>;\n for (const key of COERCED_ARRAY_KEYS) {\n if (!Array.isArray(bag[key])) {\n bag[key] = [];\n }\n }\n}\n\nfunction findDuplicateLanguage(\n languages: Takuhon['languages'],\n): { index: number; tag: string } | undefined {\n const seen = new Map<string, number>();\n for (let i = 0; i < languages.length; i++) {\n const entry = languages[i];\n if (entry === undefined) continue;\n const key = entry.language.toLowerCase();\n if (seen.has(key)) return { index: i, tag: entry.language };\n seen.set(key, i);\n }\n return undefined;\n}\n\nfunction isSupportedVersion(value: string): boolean {\n return (SUPPORTED_SCHEMA_VERSIONS as readonly string[]).includes(value);\n}\n\nfunction toValidationError(err: ErrorObject): ValidationError {\n let pointer = err.instancePath;\n\n if (err.keyword === 'required') {\n const missing = (err.params as { missingProperty?: unknown }).missingProperty;\n if (typeof missing === 'string') {\n pointer = `${err.instancePath}/${escapePointerSegment(missing)}`;\n }\n } else if (err.keyword === 'additionalProperties') {\n const extra = (err.params as { additionalProperty?: unknown }).additionalProperty;\n if (typeof extra === 'string') {\n pointer = `${err.instancePath}/${escapePointerSegment(extra)}`;\n }\n }\n\n return {\n pointer,\n message: err.message ?? 'Validation failed.',\n keyword: err.keyword,\n schemaPointer: err.schemaPath ? err.schemaPath : undefined,\n };\n}\n\n/** Escape a JSON Pointer segment per RFC 6901 (~ becomes ~0, / becomes ~1). */\nfunction escapePointerSegment(segment: string): string {\n return segment.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","/**\n * Canonicalize a {@link Takuhon} document into the form downstream consumers\n * (`@takuhon/api`, `@takuhon/ui`, `@takuhon/jsonld`) can rely on without\n * re-checking shape invariants.\n *\n * Two transformations only:\n * - **Empty-entry cleanup** on every localized field (`LocalizedTitle` /\n * `LocalizedBody`): entries whose string value is empty or whitespace-only\n * are removed so that locale fallback works field-by-field. When the\n * cleanup leaves an optional localized map empty, the map itself is\n * removed (the schema requires `minProperties: 1`).\n * - **Stable sort by `order`** on every list field (`links`, `careers`,\n * `projects`, `skills`). Items without an `order` move to the end while\n * preserving their original relative position (ES2019 stable sort).\n *\n * Design notes:\n * - The input is deep-cloned via `structuredClone`; the original is never\n * mutated. Callers may safely keep a reference to the value they passed in.\n * - `normalize` does *not* canonicalize BCP-47 tag casing nor trim string\n * content. The first is covered by the schema's `propertyNames` pattern and\n * `resolveLocale`'s case-insensitive lookup; the second would silently rewrite\n * author input and is out of scope for Phase 1.\n * - `normalize(normalize(x))` deep-equals `normalize(x)` (idempotent), and the\n * output re-validates against `takuhon.schema.json`. Both invariants are\n * enforced by the unit tests.\n */\n\nimport type {\n LocalizedBody,\n LocalizedTitle,\n Takuhon,\n NormalizedTakuhon,\n Profile,\n} from './types.js';\n\n/**\n * Return a normalized copy of `data`.\n *\n * @param data A takuhon document that has already passed {@link validate}.\n * @returns A new {@link NormalizedTakuhon} with localized empties dropped and\n * list fields sorted by `order`.\n */\nexport function normalize(data: Takuhon): NormalizedTakuhon {\n // A takuhon document is structurally pure JSON (string/number/boolean/null +\n // plain objects / arrays — no Date, Map, Set, BigInt, or functions), so a\n // round-trip through JSON gives an equivalent deep clone without depending\n // on `structuredClone`'s global type declaration (which moves between TS\n // `lib.es2022.d.ts` and `lib.dom.d.ts` across TypeScript major releases).\n const out = JSON.parse(JSON.stringify(data)) as Takuhon;\n\n // Defensive: the schema marks several top-level arrays as optional for\n // back-compat (the nine added in 0.2.0, `testScores` in 0.3.0, and\n // `recommendations` in 0.4.0), so a stored older profile read from KV after\n // an upgrade may arrive here without them. The TypeScript `Takuhon` shape\n // requires them; coerce missing values to `[]` so downstream iteration\n // never trips on `undefined`. Idempotent: arrays already present are left\n // untouched.\n const bag = out as unknown as Record<string, unknown>;\n for (const key of NORMALIZED_ARRAYS) {\n if (!Array.isArray(bag[key])) {\n bag[key] = [];\n }\n }\n\n normalizeProfile(out.profile);\n\n for (const link of out.links) {\n cleanOptionalLocalized(link, 'label');\n }\n out.links = stableSortByOrder(out.links);\n\n for (const career of out.careers) {\n cleanRequiredLocalized(career.organization);\n cleanRequiredLocalized(career.role);\n cleanOptionalLocalized(career, 'description');\n }\n out.careers = stableSortByOrder(out.careers);\n\n for (const project of out.projects) {\n cleanRequiredLocalized(project.title);\n cleanOptionalLocalized(project, 'description');\n }\n out.projects = stableSortByOrder(out.projects);\n\n out.skills = stableSortByOrder(out.skills);\n\n for (const cert of out.certifications) {\n cleanRequiredLocalized(cert.title);\n cleanRequiredLocalized(cert.issuingOrganization);\n }\n out.certifications = stableSortByOrder(out.certifications);\n\n for (const m of out.memberships) {\n cleanRequiredLocalized(m.organization);\n cleanOptionalLocalized(m, 'role');\n cleanOptionalLocalized(m, 'description');\n }\n out.memberships = stableSortByOrder(out.memberships);\n\n for (const v of out.volunteering) {\n cleanRequiredLocalized(v.organization);\n cleanRequiredLocalized(v.role);\n cleanOptionalLocalized(v, 'cause');\n cleanOptionalLocalized(v, 'description');\n }\n out.volunteering = stableSortByOrder(out.volunteering);\n\n for (const h of out.honors) {\n cleanRequiredLocalized(h.title);\n cleanRequiredLocalized(h.issuer);\n cleanOptionalLocalized(h, 'description');\n }\n out.honors = stableSortByOrder(out.honors);\n\n for (const e of out.education) {\n cleanRequiredLocalized(e.institution);\n cleanOptionalLocalized(e, 'degree');\n cleanOptionalLocalized(e, 'fieldOfStudy');\n cleanOptionalLocalized(e, 'description');\n }\n out.education = stableSortByOrder(out.education);\n\n for (const p of out.publications) {\n cleanRequiredLocalized(p.title);\n cleanOptionalLocalized(p, 'publisher');\n cleanOptionalLocalized(p, 'description');\n }\n out.publications = stableSortByOrder(out.publications);\n\n for (const l of out.languages) {\n cleanOptionalLocalized(l, 'displayName');\n }\n out.languages = stableSortByOrder(out.languages);\n\n for (const c of out.courses) {\n cleanRequiredLocalized(c.title);\n cleanOptionalLocalized(c, 'provider');\n cleanOptionalLocalized(c, 'description');\n }\n out.courses = stableSortByOrder(out.courses);\n\n for (const p of out.patents) {\n cleanRequiredLocalized(p.title);\n cleanOptionalLocalized(p, 'description');\n }\n out.patents = stableSortByOrder(out.patents);\n\n for (const t of out.testScores) {\n cleanRequiredLocalized(t.title);\n cleanOptionalLocalized(t, 'description');\n }\n out.testScores = stableSortByOrder(out.testScores);\n\n for (const r of out.recommendations) {\n cleanRequiredLocalized(r.body);\n cleanOptionalLocalized(r, 'relationship');\n cleanOptionalLocalized(r.author, 'headline');\n }\n out.recommendations = stableSortByOrder(out.recommendations);\n\n return out;\n}\n\nfunction normalizeProfile(profile: Profile): void {\n cleanRequiredLocalized(profile.displayName);\n cleanOptionalLocalized(profile, 'tagline');\n cleanOptionalLocalized(profile, 'bio');\n if (profile.avatar) {\n cleanOptionalLocalized(profile.avatar, 'alt');\n }\n if (profile.location) {\n cleanOptionalLocalized(profile.location, 'locality');\n cleanOptionalLocalized(profile.location, 'display');\n }\n}\n\n/** Remove empty / whitespace-only entries from a required localized map in place. */\nfunction cleanRequiredLocalized(map: LocalizedTitle | LocalizedBody): void {\n for (const key of Object.keys(map)) {\n const value = map[key];\n if (value === undefined || value.trim() === '') {\n delete map[key];\n }\n }\n}\n\n/**\n * Remove empty / whitespace-only entries from an optional localized map. When\n * the resulting map is empty, the property is removed from its parent so the\n * document remains schema-valid (`LocalizedTitle` / `LocalizedBody` require\n * `minProperties: 1`).\n */\nfunction cleanOptionalLocalized<\n K extends string,\n T extends Partial<Record<K, LocalizedTitle | LocalizedBody>>,\n>(parent: T, key: K): void {\n const map = parent[key];\n if (!map) return;\n for (const k of Object.keys(map)) {\n const value = map[k];\n if (value === undefined || value.trim() === '') {\n delete map[k];\n }\n }\n if (Object.keys(map).length === 0) {\n delete parent[key];\n }\n}\n\n/** Stable sort items by ascending `order`; entries without `order` go last. */\nfunction stableSortByOrder<T extends { order?: number }>(items: T[]): T[] {\n return items.slice().sort((a, b) => {\n const ao = a.order ?? Number.POSITIVE_INFINITY;\n const bo = b.order ?? Number.POSITIVE_INFINITY;\n return ao - bo;\n });\n}\n\nconst NORMALIZED_ARRAYS = [\n 'certifications',\n 'memberships',\n 'volunteering',\n 'honors',\n 'education',\n 'publications',\n 'languages',\n 'courses',\n 'patents',\n 'testScores',\n 'recommendations',\n] as const;\n","/**\n * BCP-47 locale-tag helpers shared by `normalize()` and `resolveLocale()`.\n *\n * These functions intentionally do not depend on `Intl.Locale`: the schema's\n * `propertyNames` pattern already guarantees structural validity for tags that\n * have passed validation, so this module only needs string-level operations\n * (case-insensitive lookup, primary-subtag fallback, simple regex shape check).\n * Keeping the implementation dependency-free also avoids platform differences\n * between Node, Workers, and modern browsers.\n */\n\n/** Same shape as `takuhon.schema.json`'s `propertyNames` for localized maps. */\nconst BCP47_PATTERN = /^[a-zA-Z]{2,3}(-[a-zA-Z0-9]+)*$/;\n\n/**\n * Return whether a string has the structural shape of a BCP-47 tag accepted\n * by `takuhon.schema.json`. This is a syntactic check only — `'zz'` passes\n * because it matches the regex even though it is not a registered subtag.\n * Semantic validity (registered language / region) is intentionally out of\n * scope; consumers that want it should compose `Intl.Locale` on top.\n */\nexport function isValidBcp47(tag: string): boolean {\n return BCP47_PATTERN.test(tag);\n}\n\n/**\n * Expand a tag into a list of progressively shorter candidates by dropping\n * trailing subtags, e.g. `'zh-Hant-TW' → ['zh-Hant-TW', 'zh-Hant', 'zh']`.\n * Returns the input unchanged for single-subtag inputs (`'en' → ['en']`),\n * and returns `[]` for tags that do not match the BCP-47 shape.\n */\nexport function expandRegional(tag: string): string[] {\n if (!isValidBcp47(tag)) return [];\n const parts = tag.split('-');\n const out: string[] = [];\n for (let i = parts.length; i >= 1; i--) {\n out.push(parts.slice(0, i).join('-'));\n }\n return out;\n}\n\n/** Compare two locale tags ignoring ASCII case (`'EN-us'` matches `'en-US'`). */\nexport function localeMatches(a: string, b: string): boolean {\n return a.toLowerCase() === b.toLowerCase();\n}\n\n/**\n * Look up a value from a locale-keyed map ignoring ASCII case.\n *\n * BCP-47 tags use canonical casing (`zh-Hant`, `pt-BR`) but the spec asks for\n * case-insensitive comparison so consumers can query with `EN-us` or `EN-US`\n * regardless of how the document was authored.\n */\nexport function lookupCaseInsensitive<T>(\n map: Record<string, T> | undefined,\n key: string,\n): T | undefined {\n if (!map) return undefined;\n const direct = map[key];\n if (direct !== undefined) return direct;\n const lower = key.toLowerCase();\n for (const k of Object.keys(map)) {\n if (k.toLowerCase() === lower) return map[k];\n }\n return undefined;\n}\n","/**\n * Reduce a multi-locale {@link Takuhon} document to a single requested locale.\n *\n * Builds a flat candidate chain from the function arguments and `data.settings`,\n * expanding each entry's regional subtag (e.g. `'en-US' → ['en-US', 'en']`),\n * deduplicating case-insensitively, then walks the chain **per field**. The\n * first candidate whose value is non-blank wins for that field; an empty entry\n * (`\"\"` / whitespace-only) falls through to the next candidate just like a\n * missing entry. This matches the spec semantics in [api.md §3.4] where empty\n * values are equivalent to absence.\n *\n * Design notes:\n * - Function arguments (`locale`, `fallbackLocale`) take precedence over\n * `settings.*`, in line with the spec's 7-tier list: HTTP-derived locales\n * (#1-#4) are resolved upstream by `@takuhon/api` and arrive here as\n * `locale` / `fallbackLocale`; `settings.defaultLocale` (#5),\n * `settings.fallbackLocale` (#6), and `settings.availableLocales[0]` (#7)\n * fill the tail.\n * - Invalid tags (`'zz_invalid'`, `'_'`, etc.) are silently dropped rather\n * than throwing. Resolution is best-effort: throwing on a malformed\n * `?lang=` query would push error handling responsibilities back into the\n * API layer for a recoverable case.\n * - A final rescue step appends every `availableLocales` entry so a request\n * with no matching candidate still produces a populated document. If even\n * that fails (only possible for hand-crafted inputs that bypassed\n * `validate`), required strings fall back to `''` and the caller's tests\n * catch the document-level regression.\n * - `resolvedLocale` records the tag that produced `profile.displayName`,\n * which is the field most consumers expose as the canonical locale of the\n * response (e.g. `meta.locale` in API responses, `<html lang>` in UI).\n */\n\nimport { expandRegional, isValidBcp47, lookupCaseInsensitive } from './locale-tag.js';\nimport type {\n Address,\n Avatar,\n Career,\n Certification,\n Course,\n Education,\n Honor,\n Language,\n Link,\n LocaleTag,\n LocalizedAddress,\n LocalizedAvatar,\n LocalizedBody,\n LocalizedCareer,\n LocalizedCertification,\n LocalizedCourse,\n LocalizedEducation,\n LocalizedHonor,\n LocalizedLanguage,\n LocalizedLink,\n LocalizedMembership,\n LocalizedPatent,\n LocalizedProfile,\n LocalizedProject,\n LocalizedPublication,\n LocalizedRecommendation,\n LocalizedRecommendationAuthor,\n LocalizedTakuhon,\n LocalizedTestScore,\n LocalizedTitle,\n LocalizedVolunteering,\n Membership,\n Patent,\n Profile,\n Project,\n Publication,\n Recommendation,\n RecommendationAuthor,\n Takuhon,\n TestScore,\n Volunteering,\n} from './types.js';\n\n/**\n * Resolve a takuhon document to a single locale.\n *\n * @param data A takuhon document (validated; ideally normalized first).\n * @param locale Caller-resolved request locale (e.g. from `?lang=` or\n * `Accept-Language`). Invalid tags are ignored.\n * @param fallbackLocale Caller-supplied secondary candidate when `locale`\n * misses. Invalid tags are ignored.\n */\nexport function resolveLocale(\n data: Takuhon,\n locale?: string,\n fallbackLocale?: string,\n): LocalizedTakuhon {\n const candidates = buildCandidates(data, locale, fallbackLocale);\n const displayPick = pickLocalizedWithTag(data.profile.displayName, candidates);\n\n return {\n schemaVersion: data.schemaVersion,\n profile: resolveProfile(data.profile, candidates, displayPick?.value ?? ''),\n links: data.links.map((l) => resolveLink(l, candidates)),\n careers: data.careers.map((c) => resolveCareer(c, candidates)),\n projects: data.projects.map((p) => resolveProject(p, candidates)),\n skills: data.skills,\n certifications: data.certifications.map((c) => resolveCertification(c, candidates)),\n memberships: data.memberships.map((m) => resolveMembership(m, candidates)),\n volunteering: data.volunteering.map((v) => resolveVolunteering(v, candidates)),\n honors: data.honors.map((h) => resolveHonor(h, candidates)),\n education: data.education.map((e) => resolveEducation(e, candidates)),\n publications: data.publications.map((p) => resolvePublication(p, candidates)),\n languages: data.languages.map((l) => resolveLanguage(l, candidates)),\n courses: data.courses.map((c) => resolveCourse(c, candidates)),\n patents: data.patents.map((p) => resolvePatent(p, candidates)),\n testScores: data.testScores.map((t) => resolveTestScore(t, candidates)),\n recommendations: data.recommendations.map((r) => resolveRecommendation(r, candidates)),\n contact: data.contact,\n settings: data.settings,\n meta: data.meta,\n resolvedLocale: displayPick?.tag ?? candidates[0] ?? '',\n };\n}\n\nfunction buildCandidates(\n data: Takuhon,\n locale: string | undefined,\n fallbackLocale: string | undefined,\n): LocaleTag[] {\n const raw: string[] = [];\n if (locale !== undefined) raw.push(...expandRegional(locale));\n if (fallbackLocale !== undefined) raw.push(...expandRegional(fallbackLocale));\n raw.push(...expandRegional(data.settings.defaultLocale));\n if (data.settings.fallbackLocale !== undefined) {\n raw.push(...expandRegional(data.settings.fallbackLocale));\n }\n for (const tag of data.settings.availableLocales) {\n raw.push(...expandRegional(tag));\n }\n return dedupCaseInsensitive(raw);\n}\n\nfunction dedupCaseInsensitive(tags: string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const tag of tags) {\n if (!isValidBcp47(tag)) continue;\n const lower = tag.toLowerCase();\n if (seen.has(lower)) continue;\n seen.add(lower);\n out.push(tag);\n }\n return out;\n}\n\nfunction pickLocalizedWithTag(\n field: LocalizedTitle | LocalizedBody | undefined,\n candidates: LocaleTag[],\n): { value: string; tag: LocaleTag } | undefined {\n if (!field) return undefined;\n for (const tag of candidates) {\n const hit = lookupCaseInsensitive(field, tag);\n if (hit !== undefined && hit.trim() !== '') {\n return { value: hit, tag };\n }\n }\n return undefined;\n}\n\nfunction pickLocalized(\n field: LocalizedTitle | LocalizedBody | undefined,\n candidates: LocaleTag[],\n): string | undefined {\n return pickLocalizedWithTag(field, candidates)?.value;\n}\n\nfunction resolveProfile(\n profile: Profile,\n candidates: LocaleTag[],\n displayName: string,\n): LocalizedProfile {\n const out: LocalizedProfile = { displayName };\n\n const tagline = pickLocalized(profile.tagline, candidates);\n if (tagline !== undefined) out.tagline = tagline;\n\n const bio = pickLocalized(profile.bio, candidates);\n if (bio !== undefined) out.bio = bio;\n\n if (profile.avatar) out.avatar = resolveAvatar(profile.avatar, candidates);\n if (profile.location) out.location = resolveAddress(profile.location, candidates);\n\n return out;\n}\n\nfunction resolveAvatar(avatar: Avatar, candidates: LocaleTag[]): LocalizedAvatar {\n const out: LocalizedAvatar = { url: avatar.url };\n const alt = pickLocalized(avatar.alt, candidates);\n if (alt !== undefined) out.alt = alt;\n return out;\n}\n\nfunction resolveAddress(address: Address, candidates: LocaleTag[]): LocalizedAddress {\n const out: LocalizedAddress = {};\n if (address.country !== undefined) out.country = address.country;\n if (address.region !== undefined) out.region = address.region;\n const locality = pickLocalized(address.locality, candidates);\n if (locality !== undefined) out.locality = locality;\n const display = pickLocalized(address.display, candidates);\n if (display !== undefined) out.display = display;\n return out;\n}\n\nfunction resolveLink(link: Link, candidates: LocaleTag[]): LocalizedLink {\n const label = pickLocalized(link.label, candidates);\n if (link.type === 'custom') {\n const out: LocalizedLink = {\n id: link.id,\n type: 'custom',\n url: link.url,\n iconUrl: link.iconUrl,\n };\n if (label !== undefined) out.label = label;\n if (link.featured !== undefined) out.featured = link.featured;\n if (link.order !== undefined) out.order = link.order;\n return out;\n }\n const out: LocalizedLink = {\n id: link.id,\n type: link.type,\n url: link.url,\n };\n if (label !== undefined) out.label = label;\n if (link.featured !== undefined) out.featured = link.featured;\n if (link.order !== undefined) out.order = link.order;\n if (link.iconUrl !== undefined) out.iconUrl = link.iconUrl;\n return out;\n}\n\nfunction resolveCareer(career: Career, candidates: LocaleTag[]): LocalizedCareer {\n const out: LocalizedCareer = {\n id: career.id,\n organization: pickLocalized(career.organization, candidates) ?? '',\n role: pickLocalized(career.role, candidates) ?? '',\n startDate: career.startDate,\n };\n const description = pickLocalized(career.description, candidates);\n if (description !== undefined) out.description = description;\n if (career.endDate !== undefined) out.endDate = career.endDate;\n if (career.isCurrent !== undefined) out.isCurrent = career.isCurrent;\n if (career.url !== undefined) out.url = career.url;\n if (career.order !== undefined) out.order = career.order;\n if (career.location) out.location = resolveAddress(career.location, candidates);\n return out;\n}\n\nfunction resolveProject(project: Project, candidates: LocaleTag[]): LocalizedProject {\n const out: LocalizedProject = {\n id: project.id,\n title: pickLocalized(project.title, candidates) ?? '',\n };\n const description = pickLocalized(project.description, candidates);\n if (description !== undefined) out.description = description;\n if (project.url !== undefined) out.url = project.url;\n if (project.tags !== undefined) out.tags = project.tags;\n if (project.relatedCareerId !== undefined) out.relatedCareerId = project.relatedCareerId;\n if (project.startDate !== undefined) out.startDate = project.startDate;\n if (project.endDate !== undefined) out.endDate = project.endDate;\n if (project.highlighted !== undefined) out.highlighted = project.highlighted;\n if (project.order !== undefined) out.order = project.order;\n return out;\n}\n\nfunction resolveCertification(\n cert: Certification,\n candidates: LocaleTag[],\n): LocalizedCertification {\n const out: LocalizedCertification = {\n id: cert.id,\n title: pickLocalized(cert.title, candidates) ?? '',\n issuingOrganization: pickLocalized(cert.issuingOrganization, candidates) ?? '',\n issueDate: cert.issueDate,\n };\n if (cert.expirationDate !== undefined) out.expirationDate = cert.expirationDate;\n if (cert.credentialId !== undefined) out.credentialId = cert.credentialId;\n if (cert.url !== undefined) out.url = cert.url;\n if (cert.order !== undefined) out.order = cert.order;\n return out;\n}\n\nfunction resolveMembership(membership: Membership, candidates: LocaleTag[]): LocalizedMembership {\n const out: LocalizedMembership = {\n id: membership.id,\n organization: pickLocalized(membership.organization, candidates) ?? '',\n startDate: membership.startDate,\n };\n const role = pickLocalized(membership.role, candidates);\n if (role !== undefined) out.role = role;\n const description = pickLocalized(membership.description, candidates);\n if (description !== undefined) out.description = description;\n if (membership.endDate !== undefined) out.endDate = membership.endDate;\n if (membership.isCurrent !== undefined) out.isCurrent = membership.isCurrent;\n if (membership.url !== undefined) out.url = membership.url;\n if (membership.order !== undefined) out.order = membership.order;\n return out;\n}\n\nfunction resolveVolunteering(v: Volunteering, candidates: LocaleTag[]): LocalizedVolunteering {\n const out: LocalizedVolunteering = {\n id: v.id,\n organization: pickLocalized(v.organization, candidates) ?? '',\n role: pickLocalized(v.role, candidates) ?? '',\n startDate: v.startDate,\n };\n const cause = pickLocalized(v.cause, candidates);\n if (cause !== undefined) out.cause = cause;\n const description = pickLocalized(v.description, candidates);\n if (description !== undefined) out.description = description;\n if (v.endDate !== undefined) out.endDate = v.endDate;\n if (v.isCurrent !== undefined) out.isCurrent = v.isCurrent;\n if (v.url !== undefined) out.url = v.url;\n if (v.order !== undefined) out.order = v.order;\n return out;\n}\n\nfunction resolveHonor(honor: Honor, candidates: LocaleTag[]): LocalizedHonor {\n const out: LocalizedHonor = {\n id: honor.id,\n title: pickLocalized(honor.title, candidates) ?? '',\n issuer: pickLocalized(honor.issuer, candidates) ?? '',\n date: honor.date,\n };\n const description = pickLocalized(honor.description, candidates);\n if (description !== undefined) out.description = description;\n if (honor.url !== undefined) out.url = honor.url;\n if (honor.order !== undefined) out.order = honor.order;\n return out;\n}\n\nfunction resolveEducation(edu: Education, candidates: LocaleTag[]): LocalizedEducation {\n const out: LocalizedEducation = {\n id: edu.id,\n institution: pickLocalized(edu.institution, candidates) ?? '',\n startDate: edu.startDate,\n };\n const degree = pickLocalized(edu.degree, candidates);\n if (degree !== undefined) out.degree = degree;\n const fieldOfStudy = pickLocalized(edu.fieldOfStudy, candidates);\n if (fieldOfStudy !== undefined) out.fieldOfStudy = fieldOfStudy;\n const description = pickLocalized(edu.description, candidates);\n if (description !== undefined) out.description = description;\n if (edu.grade !== undefined) out.grade = edu.grade;\n if (edu.endDate !== undefined) out.endDate = edu.endDate;\n if (edu.isCurrent !== undefined) out.isCurrent = edu.isCurrent;\n if (edu.url !== undefined) out.url = edu.url;\n if (edu.order !== undefined) out.order = edu.order;\n return out;\n}\n\nfunction resolvePublication(pub: Publication, candidates: LocaleTag[]): LocalizedPublication {\n const out: LocalizedPublication = {\n id: pub.id,\n title: pickLocalized(pub.title, candidates) ?? '',\n date: pub.date,\n };\n const publisher = pickLocalized(pub.publisher, candidates);\n if (publisher !== undefined) out.publisher = publisher;\n const description = pickLocalized(pub.description, candidates);\n if (description !== undefined) out.description = description;\n if (pub.url !== undefined) out.url = pub.url;\n if (pub.doi !== undefined) out.doi = pub.doi;\n if (pub.coAuthors !== undefined) out.coAuthors = pub.coAuthors;\n if (pub.order !== undefined) out.order = pub.order;\n return out;\n}\n\nfunction resolveLanguage(lang: Language, candidates: LocaleTag[]): LocalizedLanguage {\n const out: LocalizedLanguage = {\n id: lang.id,\n language: lang.language,\n proficiency: lang.proficiency,\n };\n const displayName = pickLocalized(lang.displayName, candidates);\n if (displayName !== undefined) out.displayName = displayName;\n if (lang.order !== undefined) out.order = lang.order;\n return out;\n}\n\nfunction resolveCourse(course: Course, candidates: LocaleTag[]): LocalizedCourse {\n const out: LocalizedCourse = {\n id: course.id,\n title: pickLocalized(course.title, candidates) ?? '',\n };\n const provider = pickLocalized(course.provider, candidates);\n if (provider !== undefined) out.provider = provider;\n if (course.courseNumber !== undefined) out.courseNumber = course.courseNumber;\n const description = pickLocalized(course.description, candidates);\n if (description !== undefined) out.description = description;\n if (course.completionDate !== undefined) out.completionDate = course.completionDate;\n if (course.certificateUrl !== undefined) out.certificateUrl = course.certificateUrl;\n if (course.relatedEducationId !== undefined) out.relatedEducationId = course.relatedEducationId;\n if (course.order !== undefined) out.order = course.order;\n return out;\n}\n\nfunction resolvePatent(patent: Patent, candidates: LocaleTag[]): LocalizedPatent {\n const out: LocalizedPatent = {\n id: patent.id,\n title: pickLocalized(patent.title, candidates) ?? '',\n patentNumber: patent.patentNumber,\n status: patent.status,\n };\n if (patent.office !== undefined) out.office = patent.office;\n const description = pickLocalized(patent.description, candidates);\n if (description !== undefined) out.description = description;\n if (patent.filingDate !== undefined) out.filingDate = patent.filingDate;\n if (patent.grantDate !== undefined) out.grantDate = patent.grantDate;\n if (patent.url !== undefined) out.url = patent.url;\n if (patent.coInventors !== undefined) out.coInventors = patent.coInventors;\n if (patent.order !== undefined) out.order = patent.order;\n return out;\n}\n\nfunction resolveTestScore(testScore: TestScore, candidates: LocaleTag[]): LocalizedTestScore {\n const out: LocalizedTestScore = {\n id: testScore.id,\n title: pickLocalized(testScore.title, candidates) ?? '',\n score: testScore.score,\n date: testScore.date,\n };\n const description = pickLocalized(testScore.description, candidates);\n if (description !== undefined) out.description = description;\n if (testScore.relatedEducationId !== undefined) {\n out.relatedEducationId = testScore.relatedEducationId;\n }\n if (testScore.url !== undefined) out.url = testScore.url;\n if (testScore.order !== undefined) out.order = testScore.order;\n return out;\n}\n\nfunction resolveRecommendation(\n recommendation: Recommendation,\n candidates: LocaleTag[],\n): LocalizedRecommendation {\n const out: LocalizedRecommendation = {\n id: recommendation.id,\n body: pickLocalized(recommendation.body, candidates) ?? '',\n author: resolveRecommendationAuthor(recommendation.author, candidates),\n };\n const relationship = pickLocalized(recommendation.relationship, candidates);\n if (relationship !== undefined) out.relationship = relationship;\n if (recommendation.date !== undefined) out.date = recommendation.date;\n if (recommendation.relatedCareerId !== undefined) {\n out.relatedCareerId = recommendation.relatedCareerId;\n }\n if (recommendation.relatedEducationId !== undefined) {\n out.relatedEducationId = recommendation.relatedEducationId;\n }\n if (recommendation.order !== undefined) out.order = recommendation.order;\n return out;\n}\n\nfunction resolveRecommendationAuthor(\n author: RecommendationAuthor,\n candidates: LocaleTag[],\n): LocalizedRecommendationAuthor {\n const out: LocalizedRecommendationAuthor = { name: author.name };\n const headline = pickLocalized(author.headline, candidates);\n if (headline !== undefined) out.headline = headline;\n if (author.url !== undefined) out.url = author.url;\n return out;\n}\n","/**\n * Generate Schema.org JSON-LD from a {@link LocalizedTakuhon} document.\n *\n * Emits a `ProfilePage` whose `mainEntity` is the `Person` described by the\n * input. Mapping rules follow the published schema.org mapping spec; the\n * relevant invariants are exercised by the unit tests.\n *\n * Design notes:\n * - Input is the output of `resolveLocale()`, so every localized field is\n * already a single string. No locale fallback happens here.\n * - All optional keys are omitted (not set to `null` / `undefined`) when their\n * source value is absent or empty, so consumers can shallow-merge or\n * `JSON.stringify` the result without post-processing.\n * - The canonical URL surfaced as `ProfilePage.url`, `Person.@id`, and\n * `Person.url` is derived from a single `links[]` entry: `type: 'website'`\n * with `featured: true`. The first match wins (stable after `normalize()`).\n * When no such link exists the three URL-bearing keys are omitted entirely;\n * no placeholder is fabricated.\n * - `profile.tagline` is intentionally not surfaced. `description` carries\n * `profile.bio` only, matching the spec exemplar. Phase 2 may revisit.\n * - `contact.email` is surfaced only when `contact.showEmail === true`\n * (privacy by default).\n * - URLs pass through verbatim. Relative paths in the input remain relative\n * in the output; absolutization is the API/UI layer's responsibility.\n * - Field insertion order on each emitted object is fixed so\n * `JSON.stringify(result)` is deterministic for a given input.\n */\n\nimport type {\n Contact,\n LinkType,\n LocalizedAddress,\n LocalizedAvatar,\n LocalizedCareer,\n LocalizedCertification,\n LocalizedCourse,\n LocalizedEducation,\n LocalizedHonor,\n LocalizedLanguage,\n LocalizedLink,\n LocalizedMembership,\n LocalizedPatent,\n LocalizedProject,\n LocalizedPublication,\n LocalizedTakuhon,\n LocalizedVolunteering,\n Skill,\n} from './types.js';\n\n/**\n * `links[].type` values that count as identity-bearing for the purpose of\n * `Person.sameAs`. `email`, `rss`, and `custom` are excluded: they either\n * carry no identity assertion (`custom`) or are not a profile URL on a\n * third-party platform (`email`, `rss`).\n */\nconst SAMEAS_IDENTITY_TYPES: ReadonlySet<LinkType> = new Set<LinkType>([\n 'github',\n 'gitlab',\n 'linkedin',\n 'x',\n 'mastodon',\n 'bluesky',\n 'instagram',\n 'youtube',\n 'threads',\n 'facebook',\n 'website',\n 'blog',\n]);\n\n/**\n * Build the `Person` JSON-LD object for `data`.\n *\n * @param data A locale-resolved takuhon document.\n * @returns A Schema.org `Person` object. `@context` is included so the\n * returned object is valid as a standalone JSON-LD document.\n */\nexport function generatePersonJsonLd(data: LocalizedTakuhon): object {\n const person = buildPerson(data, deriveCanonicalUrl(data));\n return { '@context': 'https://schema.org', ...person };\n}\n\n/**\n * Build the `ProfilePage` JSON-LD object for `data`, with `Person` inlined\n * as `mainEntity`.\n *\n * @param data A locale-resolved takuhon document.\n */\nexport function generateProfilePageJsonLd(data: LocalizedTakuhon): object {\n const canonicalUrl = deriveCanonicalUrl(data);\n const person = buildPerson(data, canonicalUrl);\n\n const out: Record<string, unknown> = {};\n out['@context'] = 'https://schema.org';\n out['@type'] = 'ProfilePage';\n if (canonicalUrl !== undefined) out.url = canonicalUrl;\n out.inLanguage = data.resolvedLocale;\n if (data.meta.createdAt !== undefined) out.dateCreated = data.meta.createdAt;\n if (data.meta.updatedAt !== undefined) out.dateModified = data.meta.updatedAt;\n if (data.profile.avatar !== undefined) out.primaryImageOfPage = data.profile.avatar.url;\n out.mainEntity = person;\n return out;\n}\n\n/**\n * Build the array of JSON-LD objects to embed in a single\n * `<script type=\"application/ld+json\">` tag.\n *\n * Phase 1 emits a single-element array containing the `ProfilePage`; the\n * `Person` is inlined there as `mainEntity`. The array shape leaves room\n * for later additions (e.g. `WebSite`) without changing the public surface.\n */\nexport function generateJsonLd(data: LocalizedTakuhon): object[] {\n return [generateProfilePageJsonLd(data)];\n}\n\nfunction deriveCanonicalUrl(data: LocalizedTakuhon): string | undefined {\n const featured = data.links.find((l) => l.type === 'website' && l.featured === true);\n return featured?.url;\n}\n\nfunction buildPerson(data: LocalizedTakuhon, canonicalUrl: string | undefined): object {\n const {\n profile,\n careers,\n projects,\n links,\n skills,\n contact,\n certifications,\n memberships,\n volunteering,\n honors,\n education,\n publications,\n languages,\n courses,\n patents,\n } = data;\n\n const out: Record<string, unknown> = {};\n out['@type'] = 'Person';\n if (canonicalUrl !== undefined) out['@id'] = `${canonicalUrl}#person`;\n out.name = profile.displayName;\n if (profile.bio !== undefined) out.description = profile.bio;\n\n const image = buildImage(profile.avatar);\n if (image !== undefined) out.image = image;\n\n if (canonicalUrl !== undefined) out.url = canonicalUrl;\n\n const { current, past } = partitionCareers(careers);\n const roleFields = buildCurrentRoleFields(current);\n if (roleFields.jobTitle !== undefined) out.jobTitle = roleFields.jobTitle;\n if (roleFields.worksFor !== undefined) out.worksFor = roleFields.worksFor;\n\n const address = buildAddress(profile.location);\n if (address !== undefined) out.address = address;\n\n const email = buildEmail(contact);\n if (email !== undefined) out.email = email;\n\n const knowsAbout = buildKnowsAbout(skills);\n if (knowsAbout !== undefined) out.knowsAbout = knowsAbout;\n\n const knowsLanguage = buildKnowsLanguage(languages);\n if (knowsLanguage !== undefined) out.knowsLanguage = knowsLanguage;\n\n const hasCredential = buildCredentials(certifications);\n if (hasCredential !== undefined) out.hasCredential = hasCredential;\n\n const memberOf = buildMemberOf(memberships);\n if (memberOf !== undefined) out.memberOf = memberOf;\n\n const alumniOf = buildAlumniOf(education);\n if (alumniOf !== undefined) out.alumniOf = alumniOf;\n\n const award = buildAwards(honors);\n if (award !== undefined) out.award = award;\n\n const sameAs = buildSameAs(links);\n if (sameAs !== undefined) out.sameAs = sameAs;\n\n const subjectOf = [\n ...buildPastRoles(past),\n ...buildProjects(projects),\n ...buildVolunteeringRoles(volunteering),\n ...buildPublications(publications),\n ...buildCourses(courses),\n ...buildPatentWorks(patents),\n ];\n if (subjectOf.length > 0) out.subjectOf = subjectOf;\n\n return out;\n}\n\nfunction buildImage(avatar: LocalizedAvatar | undefined): object | undefined {\n if (!avatar) return undefined;\n const out: Record<string, unknown> = {};\n out['@type'] = 'ImageObject';\n out.url = avatar.url;\n if (avatar.alt !== undefined) out.caption = avatar.alt;\n return out;\n}\n\nfunction buildAddress(location: LocalizedAddress | undefined): object | undefined {\n if (!location) return undefined;\n const hasAny =\n location.country !== undefined ||\n location.region !== undefined ||\n location.locality !== undefined;\n if (!hasAny) return undefined;\n // `location.display` is intentionally not surfaced: it is a UI-facing\n // pre-formatted string and would duplicate the structured fields here.\n const out: Record<string, unknown> = {};\n out['@type'] = 'PostalAddress';\n if (location.country !== undefined) out.addressCountry = location.country;\n if (location.region !== undefined) out.addressRegion = location.region;\n if (location.locality !== undefined) out.addressLocality = location.locality;\n return out;\n}\n\nfunction partitionCareers(careers: LocalizedCareer[]): {\n current: LocalizedCareer[];\n past: LocalizedCareer[];\n} {\n const current: LocalizedCareer[] = [];\n const past: LocalizedCareer[] = [];\n for (const c of careers) {\n if (c.isCurrent === true) current.push(c);\n else past.push(c);\n }\n return { current, past };\n}\n\nfunction buildCurrentRoleFields(current: LocalizedCareer[]): {\n jobTitle?: string;\n worksFor?: object;\n} {\n const head = current[0];\n if (head === undefined) return {};\n const out: { jobTitle?: string; worksFor?: object } = {};\n if (head.role !== '') out.jobTitle = head.role;\n out.worksFor = buildWorksFor(head);\n return out;\n}\n\nfunction buildWorksFor(career: LocalizedCareer): object {\n const out: Record<string, unknown> = {};\n out['@type'] = 'Organization';\n out.name = career.organization;\n if (career.url !== undefined) out.url = career.url;\n return out;\n}\n\nfunction buildPastRoles(past: LocalizedCareer[]): object[] {\n return past.map((c) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'WorkRole';\n out.name = c.role;\n out.memberOf = { '@type': 'Organization', name: c.organization };\n out.startDate = c.startDate;\n // `null` denotes an unbounded position; omit so the published JSON-LD\n // does not carry an explicit `null`.\n if (c.endDate !== undefined && c.endDate !== null) out.endDate = c.endDate;\n return out;\n });\n}\n\nfunction buildProjects(projects: LocalizedProject[]): object[] {\n return projects.map((p) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'CreativeWork';\n out.name = p.title;\n if (p.url !== undefined) out.url = p.url;\n if (p.startDate !== undefined) out.datePublished = p.startDate;\n if (p.tags !== undefined && p.tags.length > 0) out.about = p.tags;\n return out;\n });\n}\n\nfunction buildSameAs(links: LocalizedLink[]): string[] | undefined {\n const out = links.filter((l) => SAMEAS_IDENTITY_TYPES.has(l.type)).map((l) => l.url);\n return out.length === 0 ? undefined : out;\n}\n\nfunction buildKnowsAbout(skills: Skill[]): string[] | undefined {\n if (skills.length === 0) return undefined;\n return skills.map((s) => s.label);\n}\n\nfunction buildEmail(contact: Contact): string | undefined {\n if (contact.showEmail !== true) return undefined;\n if (typeof contact.email !== 'string' || contact.email.length === 0) return undefined;\n return contact.email;\n}\n\nfunction buildKnowsLanguage(languages: LocalizedLanguage[]): string[] | undefined {\n if (languages.length === 0) return undefined;\n return languages.map((l) => l.language);\n}\n\nfunction buildCredentials(certifications: LocalizedCertification[]): object[] | undefined {\n if (certifications.length === 0) return undefined;\n return certifications.map((c) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'EducationalOccupationalCredential';\n if (c.title !== '') out.name = c.title;\n out.credentialCategory = 'certification';\n if (c.issuingOrganization !== '') {\n out.recognizedBy = {\n '@type': 'Organization',\n name: c.issuingOrganization,\n };\n }\n out.dateCreated = c.issueDate;\n if (c.expirationDate !== undefined && c.expirationDate !== null) {\n out.expires = c.expirationDate;\n }\n if (c.credentialId !== undefined) out.identifier = c.credentialId;\n if (c.url !== undefined) out.url = c.url;\n return out;\n });\n}\n\nfunction buildMemberOf(memberships: LocalizedMembership[]): object[] | undefined {\n if (memberships.length === 0) return undefined;\n // Schema.org Role wrapper pattern: the outer OrganizationRole\n // carries the role/date metadata; the inner `memberOf` Organization names the\n // body itself.\n return memberships.map((m) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'OrganizationRole';\n if (m.role !== undefined) out.roleName = m.role;\n out.startDate = m.startDate;\n if (m.endDate !== undefined && m.endDate !== null) out.endDate = m.endDate;\n if (m.description !== undefined) out.description = m.description;\n const org: Record<string, unknown> = { '@type': 'Organization', name: m.organization };\n if (m.url !== undefined) org.url = m.url;\n out.memberOf = org;\n return out;\n });\n}\n\nfunction buildAlumniOf(education: LocalizedEducation[]): object[] | undefined {\n if (education.length === 0) return undefined;\n // Schema.org Role wrapper pattern: outer OrganizationRole carries date +\n // concatenated degree/fieldOfStudy as roleName; inner `alumniOf` names\n // the EducationalOrganization.\n return education.map((e) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'OrganizationRole';\n const roleName = composeRoleName(e.degree, e.fieldOfStudy);\n if (roleName !== undefined) out.roleName = roleName;\n out.startDate = e.startDate;\n if (e.endDate !== undefined && e.endDate !== null) out.endDate = e.endDate;\n const description = composeEducationDescription(e.description, e.grade);\n if (description !== undefined) out.description = description;\n const org: Record<string, unknown> = {\n '@type': 'EducationalOrganization',\n name: e.institution,\n };\n if (e.url !== undefined) org.url = e.url;\n out.alumniOf = org;\n return out;\n });\n}\n\nfunction composeRoleName(\n degree: string | undefined,\n fieldOfStudy: string | undefined,\n): string | undefined {\n if (degree === undefined && fieldOfStudy === undefined) return undefined;\n if (degree !== undefined && fieldOfStudy !== undefined) return `${degree} (${fieldOfStudy})`;\n return degree ?? fieldOfStudy;\n}\n\nfunction composeEducationDescription(\n description: string | undefined,\n grade: string | undefined,\n): string | undefined {\n // `grade` may have already been stripped by the API privacy filter; if it\n // reaches us, prepend a labelled line to the description.\n if (grade !== undefined && description !== undefined) return `Grade: ${grade}. ${description}`;\n if (grade !== undefined) return `Grade: ${grade}`;\n return description;\n}\n\nfunction buildAwards(honors: LocalizedHonor[]): string[] | undefined {\n if (honors.length === 0) return undefined;\n return honors.map((h) => `${h.title} (${h.issuer}, ${h.date})`);\n}\n\nfunction buildVolunteeringRoles(volunteering: LocalizedVolunteering[]): object[] {\n return volunteering.map((v) => {\n const out: Record<string, unknown> = {};\n // Schema.org `VolunteerRole` is a pending property; we use the stable\n // `Role` type with `roleName` so indexers without VolunteerRole support\n // still read meaningful data.\n out['@type'] = 'Role';\n out.roleName = v.role;\n out.startDate = v.startDate;\n if (v.endDate !== undefined && v.endDate !== null) out.endDate = v.endDate;\n const description = composeVolunteeringDescription(v.cause, v.description);\n if (description !== undefined) out.description = description;\n const org: Record<string, unknown> = { '@type': 'Organization', name: v.organization };\n if (v.url !== undefined) org.url = v.url;\n out.memberOf = org;\n return out;\n });\n}\n\nfunction composeVolunteeringDescription(\n cause: string | undefined,\n description: string | undefined,\n): string | undefined {\n if (cause !== undefined && description !== undefined) return `Cause: ${cause}. ${description}`;\n if (cause !== undefined) return `Cause: ${cause}`;\n return description;\n}\n\nfunction buildPublications(publications: LocalizedPublication[]): object[] {\n return publications.map((p) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'ScholarlyArticle';\n out.name = p.title;\n if (p.publisher !== undefined) {\n out.publisher = { '@type': 'Organization', name: p.publisher };\n }\n out.datePublished = p.date;\n if (p.url !== undefined) out.url = p.url;\n if (p.doi !== undefined) {\n out.identifier = { '@type': 'PropertyValue', propertyID: 'DOI', value: p.doi };\n }\n if (p.coAuthors !== undefined && p.coAuthors.length > 0) {\n out.author = p.coAuthors.map((name) => ({ '@type': 'Person', name }));\n }\n return out;\n });\n}\n\nfunction buildCourses(courses: LocalizedCourse[]): object[] {\n return courses.map((c) => {\n const out: Record<string, unknown> = {};\n out['@type'] = 'Course';\n out.name = c.title;\n if (c.provider !== undefined) {\n out.provider = { '@type': 'Organization', name: c.provider };\n }\n if (c.courseNumber !== undefined) out.courseCode = c.courseNumber;\n if (c.certificateUrl !== undefined) out.url = c.certificateUrl;\n if (c.completionDate !== undefined) {\n // Schema.org Course has no direct date property; dates live on\n // CourseInstance via hasCourseInstance.\n out.hasCourseInstance = {\n '@type': 'CourseInstance',\n endDate: c.completionDate,\n };\n }\n return out;\n });\n}\n\nfunction buildPatentWorks(patents: LocalizedPatent[]): object[] {\n return patents.map((p) => {\n const out: Record<string, unknown> = {};\n // Schema.org Patent is not in the released vocabulary; emit CreativeWork\n // with additionalType pointing at the pending Patent URL so consumers\n // that recognize it can specialize, while others fall back gracefully.\n out['@type'] = 'CreativeWork';\n out.additionalType = 'https://schema.org/Patent';\n out.name = p.title;\n out.identifier = p.patentNumber;\n if (p.office !== undefined) {\n out.publisher = { '@type': 'Organization', name: p.office };\n }\n out.creativeWorkStatus = p.status;\n if (p.grantDate !== undefined) {\n out.datePublished = p.grantDate;\n } else if (p.filingDate !== undefined) {\n out.dateCreated = p.filingDate;\n }\n if (p.url !== undefined) out.url = p.url;\n if (p.coInventors !== undefined && p.coInventors.length > 0) {\n out.author = p.coInventors.map((name) => ({ '@type': 'Person', name }));\n }\n return out;\n });\n}\n","/**\n * Export and import for takuhon profile documents.\n *\n * {@link exportTakuhon} serialises a {@link Takuhon} document into a transport\n * form ({@link ExportedTakuhon}) that can be persisted to a file, an API\n * response, or any other byte-oriented sink. {@link importTakuhon} is the\n * inverse: it validates the input and returns a {@link Takuhon}.\n *\n * Scope of these helpers (deliberately narrow):\n * - Pure, in-memory data transforms — no I/O, no storage adapter coupling.\n * - {@link importTakuhon} **does not** auto-migrate older `schemaVersion`\n * values. Cross-version handling belongs to the CLI / API layer, which\n * composes `importTakuhon` + {@link migrateTakuhon} + storage adapters as\n * spelled out in operational-lifecycle §5.3.\n * - Round-trip equivalence (operational-lifecycle §5.1) is preserved up to\n * the documented `meta.updatedAt` exception.\n *\n * Asset embedding (Base64) and backup creation are out of scope here; both\n * are the storage / API layer's responsibility.\n */\n\nimport type { Takuhon } from './types.js';\nimport { validate, type ValidationError } from './validate.js';\n\n/**\n * Structural alias of {@link Takuhon}: the transport form is the document\n * itself. A wrapping envelope (e.g. `{ format, version, data, hash }`) is\n * intentionally avoided in Phase 1 — adding one later would be a breaking\n * change to the `GET /api/admin/export` response shape and would require a major\n * version bump of `@takuhon/core`.\n */\nexport type ExportedTakuhon = Takuhon;\n\n/** Options for {@link exportTakuhon}. */\nexport interface ExportOptions {\n /**\n * When `true` (default), `meta.updatedAt` is overwritten with the current\n * ISO-8601 timestamp. Set to `false` for byte-for-byte reproducible\n * exports (e.g. roundtrip tests).\n *\n * Round-trip equivalence per operational-lifecycle §5.1 explicitly lists\n * `meta.updatedAt` as the allowed exception.\n */\n updateTimestamp?: boolean;\n}\n\n/**\n * Thrown by {@link importTakuhon} when the input fails schema validation\n * (including an unsupported `schemaVersion`). The `errors` field carries\n * the same {@link ValidationError} list that `validate()` would have\n * returned, so the API layer can map them onto RFC 7807.\n */\nexport class ImportError extends Error {\n readonly errors?: ValidationError[];\n\n constructor(message: string, options?: { cause?: unknown; errors?: ValidationError[] }) {\n super(message, { cause: options?.cause });\n this.name = 'ImportError';\n this.errors = options?.errors;\n }\n}\n\n/**\n * Serialise a {@link Takuhon} into its transport form. The input is\n * deep-cloned via `JSON.parse(JSON.stringify(...))`; the original is never\n * mutated.\n */\nexport function exportTakuhon(data: Takuhon, options: ExportOptions = {}): ExportedTakuhon {\n const out = JSON.parse(JSON.stringify(data)) as ExportedTakuhon;\n if (options.updateTimestamp !== false) {\n out.meta = { ...out.meta, updatedAt: new Date().toISOString() };\n }\n return out;\n}\n\n/**\n * Validate an {@link ExportedTakuhon} and return it as a {@link Takuhon}.\n *\n * On schema validation failure (including an unsupported `schemaVersion`)\n * throws an {@link ImportError} with the structured `errors` attached. The\n * input is not mutated. The return value is a deep clone, so subsequent\n * caller mutations cannot reach back into the supplied document.\n *\n * Cross-version inputs (older `schemaVersion`) are out of scope: callers\n * (CLI / API layer) should run {@link migrateTakuhon} before calling this.\n */\nexport function importTakuhon(data: ExportedTakuhon): Takuhon {\n const result = validate(data);\n if (!result.ok) {\n throw new ImportError('imported document failed schema validation', { errors: result.errors });\n }\n return JSON.parse(JSON.stringify(result.data)) as Takuhon;\n}\n","/**\n * Public-endpoint privacy filter for takuhon profile documents.\n *\n * Strips fields that the spec's privacy posture marks as opt-in for public\n * exposure, before the document reaches a public reader (a public API\n * response, a statically built page, …). The filter is deliberately\n * conservative: when `meta.privacy` is absent the most restrictive\n * interpretation applies (everything sensitive is hidden), and the operator\n * must explicitly opt into disclosure by setting the relevant flag to\n * `false`.\n *\n * This lives in `@takuhon/core` because it is a pure transform over the core\n * document types with no transport coupling, so every public surface — the\n * API layer, the CLI's `build`, future renderers — applies the exact same\n * projection. `@takuhon/api` re-exports it for backwards compatibility.\n *\n * Fields filtered:\n *\n * - `certifications[*].credentialId` — hidden when\n * `meta.privacy.hideCredentialIds !== false` (default true).\n * - `education[*].grade` — hidden when\n * `meta.privacy.hideEducationGrades !== false` (default true).\n * - `contact.email` — hidden when `contact.showEmail !== true`.\n *\n * `patents[*].patentNumber` is **not** filtered. Patent numbers are public\n * records (issued patents are published by the granting office) and Spec\n * §6.21 explicitly excludes them from the privacy block.\n *\n * Behavior:\n *\n * - Pure function. The input is never mutated; a shallow-copied result is\n * returned with only the touched arrays / objects replaced.\n * - When no filter applies (every flag opts into disclosure), the original\n * reference is returned as-is so callers can compare by identity.\n * - Admin endpoints (`/api/admin/*`, including `/api/admin/export`) MUST NOT\n * call this helper — they always serve the full document to authenticated\n * callers.\n */\n\nimport type { LocalizedTakuhon, Takuhon } from './types.js';\n\n/**\n * Union of the two profile shapes that traverse the public path. The fields\n * the filter touches (`certifications[*].credentialId`, `education[*].grade`,\n * `contact.email`) are structurally identical between {@link Takuhon} and\n * {@link LocalizedTakuhon}, so the same logic applies to either shape.\n */\ntype FilterableProfile = Takuhon | LocalizedTakuhon;\n\n/**\n * Return a privacy-filtered copy of `profile` suitable for public responses.\n *\n * @param profile Either a raw {@link Takuhon} or a locale-resolved\n * {@link LocalizedTakuhon}. The output preserves the input's\n * exact shape.\n */\nexport function applyPublicPrivacyFilter<T extends FilterableProfile>(profile: T): T {\n const hideCredentialIds = profile.meta.privacy?.hideCredentialIds !== false;\n const hideEducationGrades = profile.meta.privacy?.hideEducationGrades !== false;\n const allowEmail = profile.contact.showEmail === true;\n\n const stripCertifications = hideCredentialIds && hasAnyCredentialId(profile);\n const stripEducation = hideEducationGrades && hasAnyGrade(profile);\n const stripEmail = !allowEmail && profile.contact.email !== undefined;\n\n if (!stripCertifications && !stripEducation && !stripEmail) {\n return profile;\n }\n\n const out: FilterableProfile = { ...profile };\n\n if (stripCertifications) {\n out.certifications = profile.certifications.map(stripCredentialId) as T['certifications'];\n }\n\n if (stripEducation) {\n out.education = profile.education.map(stripGrade) as T['education'];\n }\n\n if (stripEmail) {\n const { email: _omit, ...rest } = profile.contact;\n out.contact = rest;\n }\n\n return out as T;\n}\n\nfunction hasAnyCredentialId(profile: FilterableProfile): boolean {\n return profile.certifications.some((c) => c.credentialId !== undefined);\n}\n\nfunction hasAnyGrade(profile: FilterableProfile): boolean {\n return profile.education.some((e) => e.grade !== undefined);\n}\n\nfunction stripCredentialId<T extends { credentialId?: string }>(item: T): T {\n if (item.credentialId === undefined) return item;\n const { credentialId: _omit, ...rest } = item;\n return rest as T;\n}\n\nfunction stripGrade<T extends { grade?: string }>(item: T): T {\n if (item.grade === undefined) return item;\n const { grade: _omit, ...rest } = item;\n return rest as T;\n}\n","/**\n * Module-private chain-building helper for the migration registry.\n *\n * Not re-exported from `@takuhon/core`'s public surface: the algorithm is an\n * implementation detail of {@link migrateTakuhon}, and adding it to the\n * public API would freeze its signature under semver. Unit tests import\n * this file directly to exercise the chain logic against synthetic\n * fixtures.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\n/**\n * Build a forward chain of migrations from `from` to `to`. Returns `[]`\n * when `from === to`, or `null` when no chain exists or a cycle is\n * encountered. The walk is linear (one outgoing edge per `from`); a\n * visited-set guards against cycles introduced by misconfigured registries.\n */\nexport function findMigrationChain(\n from: string,\n to: string,\n registry: readonly Migration<Takuhon, Takuhon>[],\n): Migration<Takuhon, Takuhon>[] | null {\n if (from === to) return [];\n const byFrom = new Map<string, Migration<Takuhon, Takuhon>>();\n for (const m of registry) byFrom.set(m.from, m);\n const chain: Migration<Takuhon, Takuhon>[] = [];\n const visited = new Set<string>([from]);\n let cur = from;\n while (cur !== to) {\n const next = byFrom.get(cur);\n if (!next) return null;\n if (visited.has(next.to)) return null;\n chain.push(next);\n visited.add(next.to);\n cur = next.to;\n }\n return chain;\n}\n","/**\n * Forward migration from schema 0.1.0 to 0.2.0.\n *\n * Adds nine new top-level array fields (`certifications` / `memberships` /\n * `volunteering` / `honors` / `education` / `publications` / `languages` /\n * `courses` / `patents`) and the `meta.privacy` opt-out block. The\n * transformation is additive: existing fields pass through untouched and no\n * 0.1.x value is dropped.\n *\n * Conditional spread is intentional. The 0.1.x schema closes the document\n * root (`additionalProperties: false`), so a validated 0.1.x profile cannot\n * carry pre-existing values at the new keys. The migration nevertheless\n * runs on `unknown`-shaped input that may not have been validated yet — a\n * stored profile authored ahead of time with forward-compatible 0.2.0 keys,\n * an import file from a downstream consumer, etc. Preserving any value\n * already present at these keys prevents data loss in those paths.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\nexport const v0_1_0_to_v0_2_0: Migration<Takuhon, Takuhon> = {\n from: '0.1.0',\n to: '0.2.0',\n migrate(data: Takuhon): Takuhon {\n const partial = data as Partial<Takuhon>;\n return {\n ...data,\n schemaVersion: '0.2.0',\n certifications: partial.certifications ?? [],\n memberships: partial.memberships ?? [],\n volunteering: partial.volunteering ?? [],\n honors: partial.honors ?? [],\n education: partial.education ?? [],\n publications: partial.publications ?? [],\n languages: partial.languages ?? [],\n courses: partial.courses ?? [],\n patents: partial.patents ?? [],\n };\n },\n};\n","/**\n * Forward migration from schema 0.2.0 to 0.3.0.\n *\n * Adds the `testScores` top-level array (standardized test / exam scores,\n * LinkedIn `Test_Scores.csv` equivalent). The transformation is additive:\n * existing fields pass through untouched and no 0.2.x value is dropped.\n *\n * Conditional spread mirrors `v0.1.0-to-v0.2.0`. The 0.2.x schema closes the\n * document root (`additionalProperties: false`), so a validated 0.2.x profile\n * cannot carry a pre-existing `testScores` value. The migration nevertheless\n * runs on `unknown`-shaped input that may not have been validated yet — a\n * stored profile authored ahead of time with a forward-compatible 0.3.0 key,\n * an import file from a downstream consumer, etc. Preserving any value already\n * present at `testScores` prevents data loss in those paths.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\nexport const v0_2_0_to_v0_3_0: Migration<Takuhon, Takuhon> = {\n from: '0.2.0',\n to: '0.3.0',\n migrate(data: Takuhon): Takuhon {\n const partial = data as Partial<Takuhon>;\n return {\n ...data,\n schemaVersion: '0.3.0',\n testScores: partial.testScores ?? [],\n };\n },\n};\n","/**\n * Forward migration from schema 0.3.0 to 0.4.0.\n *\n * Adds the `recommendations` top-level array (owner-curated testimonials, the\n * LinkedIn `Recommendations_Received.csv` equivalent). The transformation is\n * additive: existing fields pass through untouched and no 0.3.x value is\n * dropped.\n *\n * Conditional spread mirrors the earlier migrations. The 0.3.x schema closes\n * the document root (`additionalProperties: false`), so a validated 0.3.x\n * profile cannot carry a pre-existing `recommendations` value. The migration\n * nevertheless runs on `unknown`-shaped input that may not have been validated\n * yet — a stored profile authored ahead of time with a forward-compatible\n * 0.4.0 key, an import file from a downstream consumer, etc. Preserving any\n * value already present at `recommendations` prevents data loss in those paths.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport type { Migration } from './index.js';\n\nexport const v0_3_0_to_v0_4_0: Migration<Takuhon, Takuhon> = {\n from: '0.3.0',\n to: '0.4.0',\n migrate(data: Takuhon): Takuhon {\n const partial = data as Partial<Takuhon>;\n return {\n ...data,\n schemaVersion: '0.4.0',\n recommendations: partial.recommendations ?? [],\n };\n },\n};\n","/**\n * Forward migration registry for `@takuhon/core`.\n *\n * Each migration is a pure function from a takuhon document at version `from`\n * to one at version `to`. The registry is consulted by {@link migrateTakuhon}\n * to build a chain when the requested target is more than one step away\n * (`0.1.0 → 0.3.0` is composed of `0.1.0→0.2.0` and `0.2.0→0.3.0`).\n *\n * Authoring conventions:\n * - File name: `vX.Y.Z-to-vA.B.C.ts`\n * - Pure function: must not mutate input, must not perform I/O\n * - Forward only: downgrades are not provided; recovery is via the backup\n * restore path (operational-lifecycle §4)\n * - Each entry ships with a unit test: sample input/output, idempotency\n * when applicable, and schema-pass against the target version's schema\n *\n * The chain-building algorithm lives in `_chain.ts` and is intentionally\n * not re-exported from `@takuhon/core` — it is an implementation detail of\n * {@link migrateTakuhon}.\n */\n\nimport type { Takuhon } from '../types.js';\n\nimport { v0_1_0_to_v0_2_0 } from './v0.1.0-to-v0.2.0.js';\nimport { v0_2_0_to_v0_3_0 } from './v0.2.0-to-v0.3.0.js';\nimport { v0_3_0_to_v0_4_0 } from './v0.3.0-to-v0.4.0.js';\n\n/**\n * A forward migration entry. `from` and `to` are semver strings matching\n * the `schemaVersion` field of the input and output documents. `migrate`\n * is pure: it must not mutate `data`.\n */\nexport interface Migration<From, To> {\n from: string;\n to: string;\n migrate(data: From): To;\n}\n\n/**\n * Forward migrations bundled with this build of `@takuhon/core`.\n *\n * Entries are listed in the order they would chain for forward migration\n * (`0.1.0 → 0.2.0 → 0.3.0 → ...`). {@link migrateTakuhon} consults this\n * array to build the chain between a source `schemaVersion` and a target.\n */\nexport const migrations: readonly Migration<Takuhon, Takuhon>[] = [\n v0_1_0_to_v0_2_0,\n v0_2_0_to_v0_3_0,\n v0_3_0_to_v0_4_0,\n];\n","/**\n * Forward migration entry point for takuhon documents.\n *\n * {@link migrateTakuhon} composes a chain of {@link Migration} entries from\n * the registry (`./migrations`) and applies them in order. The registry\n * currently ships the `0.1.0 → 0.2.0`, `0.2.0 → 0.3.0`, and `0.3.0 → 0.4.0`\n * forward migrations; a request whose source has no chain to the target\n * throws {@link MigrationError}.\n *\n * Scope (deliberately narrow, mirroring `export.ts`):\n * - Pure data transform — no I/O, no backup creation, no storage write.\n * - Backup-before-migrate (operational-lifecycle §3.1) is the storage /\n * API layer's responsibility; this function only transforms the\n * in-memory document.\n * - Forward only (operational-lifecycle §2.4); downgrade is via restore.\n */\n\nimport { findMigrationChain } from './migrations/_chain.js';\nimport { migrations } from './migrations/index.js';\nimport type { Takuhon } from './types.js';\n\n/**\n * Thrown by {@link migrateTakuhon} when no forward chain connects the\n * source `schemaVersion` to `targetVersion`. The message includes both\n * versions so the API layer can surface an actionable RFC 7807 problem.\n */\nexport class MigrationError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'MigrationError';\n }\n}\n\n/**\n * Migrate a takuhon document forward to `targetVersion`. Returns a deep\n * clone; the input is never mutated, even when a migration throws.\n *\n * @throws {MigrationError} when no forward chain exists from\n * `data.schemaVersion` to `targetVersion`.\n */\nexport function migrateTakuhon(data: Takuhon, targetVersion: string): Takuhon {\n const sourceVersion = data.schemaVersion;\n if (sourceVersion === targetVersion) {\n return JSON.parse(JSON.stringify(data)) as Takuhon;\n }\n const chain = findMigrationChain(sourceVersion, targetVersion, migrations);\n if (!chain) {\n throw new MigrationError(`No migration path from ${sourceVersion} to ${targetVersion}`);\n }\n let current: Takuhon = JSON.parse(JSON.stringify(data)) as Takuhon;\n for (const step of chain) {\n current = step.migrate(current);\n }\n return current;\n}\n","/**\n * Persistence contracts for takuhon profile documents and binary assets.\n *\n * Adapters (KV / R2 / filesystem / SQLite / …) implement these interfaces to\n * plug into `@takuhon/api`. All methods are async; failures surface as\n * exceptions in the {@link StorageError} family so the API layer can map them\n * onto RFC 7807 problem details.\n *\n * Design notes:\n * - `version` is an opaque ETag-like token (UUID, hash, monotonic counter —\n * the adapter chooses). It powers HTTP `If-Match` style optimistic locking\n * and is unrelated to {@link Takuhon.schemaVersion}, which describes the\n * document's data-model version.\n * - `getProfile()` returns a raw {@link Takuhon}, not a normalized or\n * locale-resolved one. Normalization and locale resolution belong to the\n * API / render layer; storage only persists.\n * - `saveProfile(data, ifMatch?)` rejects with {@link ConflictError} when\n * `ifMatch` is supplied and does not equal the current stored version.\n * When `ifMatch` is omitted, the adapter's policy decides whether to\n * overwrite unconditionally; per-implementation docs spell this out.\n * - `TakuhonAssetStorage` is intentionally a separate interface so deployments\n * that don't host user-uploaded media (e.g. static export) can omit it.\n * - The naming standardises on the lowercase \"Takuhon\" word (cf.\n * {@link Takuhon}, {@link LocalizedTakuhon}, `normalize`, `validate`) even\n * where upstream documents write \"Takuhon\".\n */\n\nimport type { Takuhon } from './types.js';\n\n/**\n * Persistence contract for the single profile document of a takuhon instance.\n *\n * Implementations: Cloudflare KV (Phase 3), filesystem (Phase 3+), in-memory\n * test doubles, and future SQL adapters.\n */\nexport interface TakuhonStorage {\n /**\n * Read the current profile document and its opaque version token.\n *\n * @throws {NotFoundError} when no profile has been saved yet.\n */\n getProfile(): Promise<{ data: Takuhon; version: string }>;\n\n /**\n * Replace the profile document. The returned `version` is the new opaque\n * token to supply as the next `ifMatch`.\n *\n * @param data the document to persist (raw, not normalized)\n * @param ifMatch when set, the adapter rejects the write unless the\n * current stored version equals this token\n * @throws {ConflictError} when `ifMatch` is supplied and does not equal\n * the current stored version\n */\n saveProfile(data: Takuhon, ifMatch?: string): Promise<{ version: string }>;\n\n /**\n * Remove the profile document. Idempotent: no error when nothing is stored.\n */\n deleteProfile(): Promise<void>;\n}\n\n/**\n * Metadata for a stored binary asset, returned by {@link TakuhonAssetStorage}.\n *\n * `url` is the relative path used inside the document (`/assets/...`);\n * `publicUrl` is the absolute URL a browser can fetch. The two are kept\n * distinct because adapters may serve assets from a different host than the\n * profile (e.g. Cloudflare R2 + custom CDN).\n */\nexport interface AssetRecord {\n id: string;\n url: string;\n publicUrl: string;\n mimeType: string;\n size: number;\n width?: number;\n height?: number;\n /** ISO-8601 timestamp. */\n createdAt?: string;\n}\n\n/**\n * Caller hints for {@link TakuhonAssetStorage.putAsset}. Both fields are\n * optional; when omitted, the adapter falls back to the `File` / `Blob`\n * metadata. Adapters are responsible for magic-byte verification, EXIF\n * stripping, and dimension limits — callers must not pre-process.\n */\nexport interface AssetOptions {\n filename?: string;\n contentType?: string;\n}\n\n/**\n * Persistence contract for binary assets (avatars, project images, …).\n *\n * `listAssets()` is unbounded by design for the MVP; later phases may\n * introduce paginated semantics with a different return shape. `getPublicUrl()`\n * takes only an `assetId` today; a future options object (e.g. `expiresIn`\n * for signed URLs) would be added in a backward-compatible way.\n */\nexport interface TakuhonAssetStorage {\n putAsset(file: File | Blob, options?: AssetOptions): Promise<AssetRecord>;\n /** @throws {NotFoundError} when no asset exists for `assetId`. */\n getPublicUrl(assetId: string): Promise<string>;\n /** Idempotent: no error when the asset is already absent. */\n deleteAsset(assetId: string): Promise<void>;\n listAssets(): Promise<AssetRecord[]>;\n}\n\n/**\n * Base class for errors thrown by storage adapters. Catch this to handle\n * any storage-layer failure uniformly; check `instanceof` of a subclass\n * (e.g. {@link NotFoundError}, {@link ConflictError}) to discriminate.\n */\nexport class StorageError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'StorageError';\n }\n}\n\n/** Thrown when a requested resource (profile or asset) does not exist. */\nexport class NotFoundError extends StorageError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'NotFoundError';\n }\n}\n\n/**\n * Thrown when an optimistic-locking precondition fails: the caller supplied\n * an `ifMatch` token that does not equal the current stored version.\n *\n * `currentVersion` (when set) carries the actual current version so the\n * caller can decide between refetch-and-retry and surfacing a 409 to the\n * end user without an extra round trip.\n */\nexport class ConflictError extends StorageError {\n readonly currentVersion?: string;\n\n constructor(message: string, options?: { currentVersion?: string; cause?: unknown }) {\n super(message, { cause: options?.cause });\n this.name = 'ConflictError';\n this.currentVersion = options?.currentVersion;\n }\n}\n","/**\n * @takuhon/core — canonical JSON Schema, hand-written TypeScript types,\n * Ajv-backed validation, document normalization, and locale resolution for\n * takuhon profile data.\n *\n * Public surface (Phase 1):\n * - {@link schema}: the JSON Schema 2020-12 contract bundled with this build.\n * - {@link SCHEMA_VERSION}: the version of that schema (matches the `$id`).\n * - {@link validate} / {@link ValidationResult} / {@link ValidationError} /\n * {@link SUPPORTED_SCHEMA_VERSIONS}: Result-style validator backed by Ajv.\n * - {@link normalize} / {@link NormalizedTakuhon}: canonicalize a validated\n * document (sort lists by `order`, drop blank localized entries).\n * - {@link resolveLocale} / {@link LocalizedTakuhon}: collapse a multi-locale\n * document to a single requested locale with BCP-47 regional fallback.\n * - {@link generateJsonLd} / {@link generatePersonJsonLd} /\n * {@link generateProfilePageJsonLd}: emit Schema.org JSON-LD\n * (`ProfilePage` wrapping `Person`) from a locale-resolved document.\n * - {@link TakuhonStorage} / {@link TakuhonAssetStorage}: persistence contracts\n * for adapters (KV / R2 / filesystem / SQLite / …), with the\n * {@link StorageError} / {@link NotFoundError} / {@link ConflictError}\n * exception family for optimistic-locking and not-found signalling.\n * - {@link exportTakuhon} / {@link importTakuhon} / {@link ExportOptions} /\n * {@link ExportedTakuhon} / {@link ImportError}: roundtrip-stable\n * serialisation for transport (file, API response, …).\n * - {@link migrateTakuhon} / {@link Migration} / {@link migrations} /\n * {@link MigrationError}: forward-only migration registry, chaining\n * `0.1.0 → 0.2.0 → 0.3.0 → 0.4.0`.\n * - Domain types: {@link Takuhon} and its constituent shapes (`Profile`,\n * `Settings`, `Career`, `Project`, `Link` discriminated union, etc.).\n */\n\nexport { schema } from './schema.js';\nexport type { Schema } from './schema.js';\n\nexport { SUPPORTED_SCHEMA_VERSIONS, validate } from './validate.js';\nexport type { ValidationError, ValidationResult } from './validate.js';\n\nexport { normalize } from './normalize.js';\nexport { resolveLocale } from './resolve-locale.js';\nexport { generateJsonLd, generatePersonJsonLd, generateProfilePageJsonLd } from './jsonld.js';\n\nexport { ImportError, exportTakuhon, importTakuhon } from './export.js';\nexport type { ExportOptions, ExportedTakuhon } from './export.js';\n\nexport { applyPublicPrivacyFilter } from './privacy-filter.js';\n\nexport { MigrationError, migrateTakuhon } from './migrate.js';\nexport { migrations } from './migrations/index.js';\nexport type { Migration } from './migrations/index.js';\n\nexport { ConflictError, NotFoundError, StorageError } from './storage-interface.js';\nexport type {\n AssetOptions,\n AssetRecord,\n TakuhonAssetStorage,\n TakuhonStorage,\n} from './storage-interface.js';\n\nexport type {\n Address,\n Avatar,\n Career,\n Certification,\n Contact,\n ContentLicense,\n ContentLicenseAttribution,\n Course,\n Education,\n Honor,\n Iso3166Alpha2,\n IsoDateTime,\n Language,\n LanguageProficiency,\n Link,\n LinkBuiltin,\n LinkCustom,\n LinkType,\n LocaleTag,\n LocalizedAddress,\n LocalizedAvatar,\n LocalizedBody,\n LocalizedCareer,\n LocalizedCertification,\n LocalizedCourse,\n LocalizedEducation,\n LocalizedHonor,\n LocalizedLanguage,\n LocalizedLink,\n LocalizedLinkBuiltin,\n LocalizedLinkCustom,\n LocalizedMembership,\n LocalizedPatent,\n LocalizedProfile,\n LocalizedProject,\n LocalizedPublication,\n LocalizedRecommendation,\n LocalizedRecommendationAuthor,\n LocalizedTakuhon,\n LocalizedTestScore,\n LocalizedTitle,\n LocalizedVolunteering,\n Membership,\n Meta,\n MetaPrivacy,\n NormalizedTakuhon,\n Patent,\n PatentStatus,\n Profile,\n Project,\n Publication,\n Recommendation,\n RecommendationAuthor,\n Settings,\n Skill,\n Slug,\n Takuhon,\n TestScore,\n Volunteering,\n YearMonth,\n} from './types.js';\n\n/**\n * Version of the takuhon schema bundled with this build of `@takuhon/core`.\n * A takuhon profile document's `schemaVersion` field must be migrate-compatible\n * with this version. See operational-lifecycle docs for the migration policy.\n */\nexport const SCHEMA_VERSION = '0.4.0';\n"],"mappings":"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","names":["validate","validateTakuhon","out"]}
|