[{"data":1,"prerenderedAt":992},["ShallowReactive",2],{"docs-navigation":3,"\u002Fdocs\u002Fdevelopment\u002Fcad-libraries":231,"\u002Fdocs\u002Fdevelopment\u002Fcad-libraries-surround":987},[4],{"title":5,"path":6,"stem":7,"children":8,"page":-1},"Docs","\u002Fdocs","docs",[9,12,16,20,69,90,123,144,165,190],{"title":10,"path":6,"stem":11},"Gerbtrace Documentation","docs\u002Findex",{"title":13,"path":14,"stem":15},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",{"title":17,"path":18,"stem":19},"Licensing","\u002Fdocs\u002Flicensing","docs\u002F2.licensing",{"title":21,"path":22,"stem":23,"children":24,"page":68},"Viewer","\u002Fdocs\u002Fviewer","docs\u002F3.viewer",[25,29,33,37,41,45,49,53,56,60,64],{"title":26,"path":27,"stem":28},"Files","\u002Fdocs\u002Fviewer\u002Ffiles","docs\u002F3.viewer\u002F01.files",{"title":30,"path":31,"stem":32},"PCB","\u002Fdocs\u002Fviewer\u002Fpcb","docs\u002F3.viewer\u002F02.pcb",{"title":34,"path":35,"stem":36},"Panel","\u002Fdocs\u002Fviewer\u002Fpanel","docs\u002F3.viewer\u002F03.panel",{"title":38,"path":39,"stem":40},"Paste","\u002Fdocs\u002Fviewer\u002Fpaste","docs\u002F3.viewer\u002F04.paste",{"title":42,"path":43,"stem":44},"SMD","\u002Fdocs\u002Fviewer\u002Fsmd","docs\u002F3.viewer\u002F05.smd",{"title":46,"path":47,"stem":48},"THT","\u002Fdocs\u002Fviewer\u002Ftht","docs\u002F3.viewer\u002F06.tht",{"title":50,"path":51,"stem":52},"BOM","\u002Fdocs\u002Fviewer\u002Fbom","docs\u002F3.viewer\u002F07.bom",{"title":5,"path":54,"stem":55},"\u002Fdocs\u002Fviewer\u002Fdocs","docs\u002F3.viewer\u002F08.docs",{"title":57,"path":58,"stem":59},"Conversation","\u002Fdocs\u002Fviewer\u002Fconversation","docs\u002F3.viewer\u002F09.conversation",{"title":61,"path":62,"stem":63},"Summary","\u002Fdocs\u002Fviewer\u002Fsummary","docs\u002F3.viewer\u002F10.summary",{"title":65,"path":66,"stem":67},"Pricing","\u002Fdocs\u002Fviewer\u002Fpricing","docs\u002F3.viewer\u002F11.pricing",false,{"title":70,"path":71,"stem":72,"children":73,"page":68},"Tools","\u002Fdocs\u002Ftools","docs\u002F4.tools",[74,78,82,86],{"title":75,"path":76,"stem":77},"Exports","\u002Fdocs\u002Ftools\u002Fexports","docs\u002F4.tools\u002F1.exports",{"title":79,"path":80,"stem":81},"Compare","\u002Fdocs\u002Ftools\u002Fcompare","docs\u002F4.tools\u002F2.compare",{"title":83,"path":84,"stem":85},"Package Manager","\u002Fdocs\u002Ftools\u002Fpackage-manager","docs\u002F4.tools\u002F3.package-manager",{"title":87,"path":88,"stem":89},"Draw Tool","\u002Fdocs\u002Ftools\u002Fdraw-tool","docs\u002F4.tools\u002F4.draw-tool",{"title":91,"path":92,"stem":93,"children":94,"page":68},"Collaboration","\u002Fdocs\u002Fcollaboration","docs\u002F5.collaboration",[95,99,103,107,111,115,119],{"title":96,"path":97,"stem":98},"Team Settings","\u002Fdocs\u002Fcollaboration\u002Fteam-settings","docs\u002F5.collaboration\u002F1.team-settings",{"title":100,"path":101,"stem":102},"Team Members","\u002Fdocs\u002Fcollaboration\u002Fteam-members","docs\u002F5.collaboration\u002F2.team-members",{"title":104,"path":105,"stem":106},"User Profile","\u002Fdocs\u002Fcollaboration\u002Fuser-profile","docs\u002F5.collaboration\u002F3.user-profile",{"title":108,"path":109,"stem":110},"Spaces","\u002Fdocs\u002Fcollaboration\u002Fspaces","docs\u002F5.collaboration\u002F4.spaces",{"title":112,"path":113,"stem":114},"Notifications","\u002Fdocs\u002Fcollaboration\u002Fnotifications","docs\u002F5.collaboration\u002F6.notifications",{"title":116,"path":117,"stem":118},"Plans & Billing","\u002Fdocs\u002Fcollaboration\u002Fplans-and-billing","docs\u002F5.collaboration\u002F7.plans-and-billing",{"title":120,"path":121,"stem":122},"Connected Apps & MCP","\u002Fdocs\u002Fcollaboration\u002Fconnected-apps","docs\u002F5.collaboration\u002F8.connected-apps",{"title":124,"path":125,"stem":126,"children":127,"page":68},"App","\u002Fdocs\u002Fapp","docs\u002F6.app",[128,132,136,140],{"title":129,"path":130,"stem":131},"Desktop App","\u002Fdocs\u002Fapp\u002Fdesktop","docs\u002F6.app\u002F1.desktop",{"title":133,"path":134,"stem":135},"Light & Dark Mode","\u002Fdocs\u002Fapp\u002Flight-dark-mode","docs\u002F6.app\u002F2.light-dark-mode",{"title":137,"path":138,"stem":139},"Performance Monitor","\u002Fdocs\u002Fapp\u002Fperformance-monitor","docs\u002F6.app\u002F3.performance-monitor",{"title":141,"path":142,"stem":143},"Report a Bug","\u002Fdocs\u002Fapp\u002Freport-a-bug","docs\u002F6.app\u002F4.report-a-bug",{"title":145,"path":146,"stem":147,"children":148,"page":68},"Guides","\u002Fdocs\u002Fguides","docs\u002F7.guides",[149,153,157,161],{"title":150,"path":151,"stem":152},"Importing Files","\u002Fdocs\u002Fguides\u002Fimporting-files","docs\u002F7.guides\u002F1.importing-files",{"title":154,"path":155,"stem":156},"Supported Formats","\u002Fdocs\u002Fguides\u002Fsupported-formats","docs\u002F7.guides\u002F2.supported-formats",{"title":158,"path":159,"stem":160},"Package Library","\u002Fdocs\u002Fguides\u002Fpackage-library","docs\u002F7.guides\u002F3.package-library",{"title":162,"path":163,"stem":164},"Panel Checks","\u002Fdocs\u002Fguides\u002Fpanel-checks","docs\u002F7.guides\u002F4.panel-checks",{"title":166,"path":167,"stem":168,"children":169,"page":68},"Reference","\u002Fdocs\u002Freference","docs\u002F8.reference",[170,174,178,182,186],{"title":171,"path":172,"stem":173},"BOM File Format","\u002Fdocs\u002Freference\u002Fbom-format","docs\u002F8.reference\u002F1.bom-format",{"title":175,"path":176,"stem":177},"Package Definitions","\u002Fdocs\u002Freference\u002Fpackage-definitions","docs\u002F8.reference\u002F2.package-definitions",{"title":179,"path":180,"stem":181},"Package Naming","\u002Fdocs\u002Freference\u002Fpackage-naming","docs\u002F8.reference\u002F3.package-naming",{"title":183,"path":184,"stem":185},"TPSys Format","\u002Fdocs\u002Freference\u002Ftpsys-format","docs\u002F8.reference\u002F4.tpsys-format",{"title":187,"path":188,"stem":189},"Jet Printing","\u002Fdocs\u002Freference\u002Fjet-printing","docs\u002F8.reference\u002F5.jet-printing",{"title":191,"path":192,"stem":193,"children":194,"page":68},"Development","\u002Fdocs\u002Fdevelopment","docs\u002F9.development",[195,199,203,207,211,215,219,223,227],{"title":196,"path":197,"stem":198},"Development Setup","\u002Fdocs\u002Fdevelopment\u002Fsetup","docs\u002F9.development\u002F1.setup",{"title":200,"path":201,"stem":202},"Architecture","\u002Fdocs\u002Fdevelopment\u002Farchitecture","docs\u002F9.development\u002F2.architecture",{"title":204,"path":205,"stem":206},"CAD Libraries","\u002Fdocs\u002Fdevelopment\u002Fcad-libraries","docs\u002F9.development\u002F3.cad-libraries",{"title":208,"path":209,"stem":210},"Release Process","\u002Fdocs\u002Fdevelopment\u002Frelease-process","docs\u002F9.development\u002F4.release-process",{"title":212,"path":213,"stem":214},"Error Monitoring","\u002Fdocs\u002Fdevelopment\u002Ferror-monitoring","docs\u002F9.development\u002F5.error-monitoring",{"title":216,"path":217,"stem":218},"Contributing","\u002Fdocs\u002Fdevelopment\u002Fcontributing","docs\u002F9.development\u002F6.contributing",{"title":220,"path":221,"stem":222},"Commit Conventions","\u002Fdocs\u002Fdevelopment\u002Fcommit-conventions","docs\u002F9.development\u002F7.commit-conventions",{"title":224,"path":225,"stem":226},"Sidebar Design","\u002Fdocs\u002Fdevelopment\u002Fsidebar-design","docs\u002F9.development\u002F8.sidebar-design",{"title":228,"path":229,"stem":230},"Operational Runbooks","\u002Fdocs\u002Fdevelopment\u002Frunbooks","docs\u002F9.development\u002F9.runbooks",{"id":232,"title":204,"body":233,"description":981,"extension":982,"links":983,"meta":984,"navigation":801,"path":205,"seo":985,"stem":206,"__hash__":986},"docs\u002Fdocs\u002F9.development\u002F3.cad-libraries.md",{"type":234,"value":235,"toc":955},"minimark",[236,240,244,249,252,293,297,302,327,337,340,361,365,371,388,391,411,415,423,427,441,447,451,534,538,569,573,576,606,613,617,633,637,651,655,669,674,678,684,731,734,748,751,755,761,765,771,775,840,843,854,858,937,941,944,951],[237,238,204],"h1",{"id":239},"cad-libraries",[241,242,243],"p",{},"Gerbtrace can sync and parse external CAD libraries to build its built-in package database. This page covers the ingestion workflow, parser pipelines, and quality controls.",[245,246,248],"h2",{"id":247},"overview","Overview",[241,250,251],{},"The CAD library pipeline:",[253,254,255,267,273,287],"ol",{},[256,257,258,262,263],"li",{},[259,260,261],"strong",{},"Syncs"," curated external libraries into ",[264,265,266],"code",{},".local\u002Flibraries\u002F",[256,268,269,272],{},[259,270,271],{},"Parses"," footprint data into TPSys-compatible package definitions",[256,274,275,278,279,282,283,286],{},[259,276,277],{},"Outputs"," JSON files under ",[264,280,281],{},"public\u002Fpackages\u002Flibraries\u002F"," (SMD) and ",[264,284,285],{},"public\u002Fpackages\u002Ftht-libraries\u002F"," (THT)",[256,288,289,292],{},[259,290,291],{},"Generates"," manifests and reports for validation",[245,294,296],{"id":295},"library-ingestion","Library ingestion",[298,299,301],"h3",{"id":300},"syncing-libraries","Syncing libraries",[303,304,309],"pre",{"className":305,"code":306,"language":307,"meta":308,"style":308},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm run libraries:sync\n","bash","",[264,310,311],{"__ignoreMap":308},[312,313,316,320,324],"span",{"class":314,"line":315},"line",1,[312,317,319],{"class":318},"sBMFI","pnpm",[312,321,323],{"class":322},"sfazB"," run",[312,325,326],{"class":322}," libraries:sync\n",[241,328,329,330,332,333,336],{},"This downloads curated CAD libraries from the source registry into ",[264,331,266],{},". The source list is defined in ",[264,334,335],{},"scripts\u002Fcad-library-sources.json",".",[241,338,339],{},"Optional flags:",[341,342,343,349,355],"ul",{},[256,344,345,348],{},[264,346,347],{},"--include-large"," – include very large repositories",[256,350,351,354],{},[264,352,353],{},"--include-disabled"," – include sources marked disabled",[256,356,357,360],{},[264,358,359],{},"--dry-run"," – print planned actions without downloading",[298,362,364],{"id":363},"source-registry","Source registry",[241,366,367,368,370],{},"Each source record in ",[264,369,335],{}," includes:",[341,372,373,376,379,382,385],{},[256,374,375],{},"Repository URL",[256,377,378],{},"License and redistribution policy",[256,380,381],{},"Tool classification (KiCad, Eagle, LibrePCB)",[256,383,384],{},"Toggle flags (enabled, large)",[256,386,387],{},"Display name for the Package Manager UI",[241,389,390],{},"Current sources:",[341,392,393,399,405],{},[256,394,395,398],{},[259,396,397],{},"Gerbtrace"," (Newmatik) – core package definitions",[256,400,401,404],{},[259,402,403],{},"KiCad"," – KiCad official footprint libraries",[256,406,407,410],{},[259,408,409],{},"DigiKey KiCad"," – DigiKey's KiCad library",[298,412,414],{"id":413},"output-structure","Output structure",[303,416,421],{"className":417,"code":419,"language":420},[418],"language-text",".local\u002Flibraries\u002F\n  \u003ClicenseBucket>\u002F\n    \u003Cowner>\u002F\n      \u003Crepo>\u002F\n  _index\u002F\n    sources-lock.json      # Sync timestamp, commit hashes, skip reasons\n","text",[264,422,419],{"__ignoreMap":308},[245,424,426],{"id":425},"smd-parser-pipeline","SMD parser pipeline",[303,428,430],{"className":305,"code":429,"language":307,"meta":308,"style":308},"pnpm run libraries:parse\n",[264,431,432],{"__ignoreMap":308},[312,433,434,436,438],{"class":314,"line":315},[312,435,319],{"class":318},[312,437,323],{"class":322},[312,439,440],{"class":322}," libraries:parse\n",[241,442,443,444],{},"Script: ",[264,445,446],{},"scripts\u002Fparse-cad-libraries-to-tpsys.mjs",[298,448,450],{"id":449},"adapters","Adapters",[452,453,454,470],"table",{},[455,456,457],"thead",{},[458,459,460,464,467],"tr",{},[461,462,463],"th",{},"Source",[461,465,466],{},"Adapter",[461,468,469],{},"Input format",[471,472,473,487,505,523],"tbody",{},[458,474,475,478,481],{},[476,477,403],"td",{},[476,479,480],{},"KiCad adapter",[476,482,483,486],{},[264,484,485],{},".kicad_mod"," files (pad geometry from pad\u002Fat\u002Fsize)",[458,488,489,492,495],{},[476,490,491],{},"LibrePCB",[476,493,494],{},"LibrePCB adapter",[476,496,497,500,501,504],{},[264,498,499],{},".lp","\u002F",[264,502,503],{},".lplib"," package text",[458,506,507,510,513],{},[476,508,509],{},"Eagle",[476,511,512],{},"Eagle adapter",[476,514,515,518,519,522],{},[264,516,517],{},".lbr"," XML (",[264,520,521],{},"\u003Csmd ...\u002F>"," pads)",[458,524,525,527,529],{},[476,526,409],{},[476,528,480],{},[476,530,531,533],{},[264,532,485],{}," (separate source metadata)",[298,535,537],{"id":536},"mapping-policy","Mapping policy",[341,539,540,546,553,556,559,562],{},[256,541,542,543],{},"Enforce runtime package types already supported by ",[264,544,545],{},"PackageDefinition",[256,547,548,549,552],{},"Use ",[264,550,551],{},"PT_GENERIC"," fallback when geometry cannot be mapped confidently",[256,554,555],{},"Never introduce custom package type identifiers",[256,557,558],{},"Skip mechanical footprints and non-translatable components",[256,560,561],{},"Record skip reasons and collisions in report files",[256,563,564,565,568],{},"When exposed-pad variants (",[264,566,567],{},"*EP*",") are present, preserve outer lead geometry",[298,570,572],{"id":571},"naming-policy","Naming policy",[241,574,575],{},"Naming follows KLC-inspired conventions:",[341,577,578,583,597],{},[256,579,580],{},[264,581,582],{},"\u003CPKG>-\u003CPINCOUNT>[-\u003CSPECIAL>]_\u003CFIELD>_\u003CFIELD>...",[256,584,585,586,589,590,593,594],{},"Family normalization: ",[264,587,588],{},"SO-*"," \u002F ",[264,591,592],{},"SOP-*"," becomes ",[264,595,596],{},"SOIC-*",[256,598,599,600,593,603],{},"Compact options: ",[264,601,602],{},"THERMAL-VIAS",[264,604,605],{},"THERMALVIAS",[241,607,608,609,612],{},"See ",[610,611,179],"a",{"href":180}," for the full specification.",[298,614,616],{"id":615},"filtering","Filtering",[341,618,619,626],{},[256,620,621,622,625],{},"Skip ",[264,623,624],{},"MOUNTING-HOLE"," footprints",[256,627,628,629,632],{},"Drop ",[264,630,631],{},"-THERMAL-VIAS"," variants when the base package exists",[298,634,636],{"id":635},"conflict-resolution","Conflict resolution",[341,638,639,642,645,648],{},[256,640,641],{},"Canonical key: normalized package name (uppercase + separator normalization)",[256,643,644],{},"Deduplicate globally across emitted libraries",[256,646,647],{},"Seed global keys with Newmatik built-ins (including aliases)",[256,649,650],{},"On same-name\u002Fdifferent-geometry conflicts, keep first deterministic match and record conflict in report",[245,652,654],{"id":653},"tht-parser-pipeline","THT parser pipeline",[303,656,658],{"className":305,"code":657,"language":307,"meta":308,"style":308},"pnpm run libraries:parse:tht\n",[264,659,660],{"__ignoreMap":308},[312,661,662,664,666],{"class":314,"line":315},[312,663,319],{"class":318},[312,665,323],{"class":322},[312,667,668],{"class":322}," libraries:parse:tht\n",[241,670,443,671],{},[264,672,673],{},"scripts\u002Fparse-cad-libraries-to-tht.mjs",[298,675,677],{"id":676},"kicad-tht-adapter","KiCad THT adapter",[241,679,680,681,683],{},"Parses ",[264,682,485],{}," through-hole pads and graphics:",[341,685,686,692,715],{},[256,687,688,691],{},[259,689,690],{},"Pads"," – position, size, shape, drill diameter",[256,693,694,697,698,701,702,701,705,708,709,500,712],{},[259,695,696],{},"Body\u002Fdetail graphics"," – ",[264,699,700],{},"fp_line",", ",[264,703,704],{},"fp_rect",[264,706,707],{},"fp_circle"," on ",[264,710,711],{},"F.Fab",[264,713,714],{},"F.SilkS",[256,716,717,697,720,701,723,701,726,701,729],{},[259,718,719],{},"Output shapes",[264,721,722],{},"rect",[264,724,725],{},"roundedRect",[264,727,728],{},"circle",[264,730,314],{},[298,732,537],{"id":733},"mapping-policy-1",[341,735,736,739,742,745],{},[256,737,738],{},"Convert through-hole pads into visual pin primitives preserving shape class",[256,740,741],{},"Render drill as an inner dark circle for realism",[256,743,744],{},"Preserve footprint body\u002Fdetail from Fab\u002FSilk primitives",[256,746,747],{},"Add explicit polarity marker near pin 1",[245,749,414],{"id":750},"output-structure-1",[298,752,754],{"id":753},"smd-packages","SMD packages",[303,756,759],{"className":757,"code":758,"language":420},[418],"public\u002Fpackages\u002Flibraries\u002F\n  _tree.json               # Library tree manifest\n  _reports\u002F\n    \u003Clibrary-id>.json      # Parse report (skipped, conflicts)\n  \u003Clibrary-id>\u002F\n    library.json           # Attribution, license, provenance\n    packages\u002F*.json        # Package definition files\n",[264,760,758],{"__ignoreMap":308},[298,762,764],{"id":763},"tht-packages","THT packages",[303,766,769],{"className":767,"code":768,"language":420},[418],"public\u002Fpackages\u002Ftht-libraries\u002F\n  _tree.json\n  _reports\u002F\n    \u003Clibrary-id>.json\n  \u003Clibrary-id>\u002F\n    library.json\n    packages\u002F*.json\n",[264,770,768],{"__ignoreMap":308},[245,772,774],{"id":773},"quality-gates","Quality gates",[303,776,778],{"className":305,"code":777,"language":307,"meta":308,"style":308},"# Regenerate SMD manifest\npnpm run packages:manifest\n\n# Validate SMD library\npnpm run packages:check\n\n# Regenerate THT manifest\npnpm run packages:tht:manifest\n",[264,779,780,786,796,803,809,819,824,830],{"__ignoreMap":308},[312,781,782],{"class":314,"line":315},[312,783,785],{"class":784},"sHwdD","# Regenerate SMD manifest\n",[312,787,789,791,793],{"class":314,"line":788},2,[312,790,319],{"class":318},[312,792,323],{"class":322},[312,794,795],{"class":322}," packages:manifest\n",[312,797,799],{"class":314,"line":798},3,[312,800,802],{"emptyLinePlaceholder":801},true,"\n",[312,804,806],{"class":314,"line":805},4,[312,807,808],{"class":784},"# Validate SMD library\n",[312,810,812,814,816],{"class":314,"line":811},5,[312,813,319],{"class":318},[312,815,323],{"class":322},[312,817,818],{"class":322}," packages:check\n",[312,820,822],{"class":314,"line":821},6,[312,823,802],{"emptyLinePlaceholder":801},[312,825,827],{"class":314,"line":826},7,[312,828,829],{"class":784},"# Regenerate THT manifest\n",[312,831,833,835,837],{"class":314,"line":832},8,[312,834,319],{"class":318},[312,836,323],{"class":322},[312,838,839],{"class":322}," packages:tht:manifest\n",[241,841,842],{},"The check script validates:",[341,844,845,848,851],{},[256,846,847],{},"Manifest\u002Ftree consistency",[256,849,850],{},"Per-library unique keys",[256,852,853],{},"Global name\u002Falias collision safety",[245,855,857],{"id":856},"full-workflow","Full workflow",[303,859,861],{"className":305,"code":860,"language":307,"meta":308,"style":308},"# 1. Sync external libraries\npnpm run libraries:sync\n\n# 2. Parse SMD packages\npnpm run libraries:parse\npnpm run packages:manifest\npnpm run packages:check\n\n# 3. Parse THT packages\npnpm run libraries:parse:tht\npnpm run packages:tht:manifest\n",[264,862,863,868,876,880,885,893,901,909,913,919,928],{"__ignoreMap":308},[312,864,865],{"class":314,"line":315},[312,866,867],{"class":784},"# 1. Sync external libraries\n",[312,869,870,872,874],{"class":314,"line":788},[312,871,319],{"class":318},[312,873,323],{"class":322},[312,875,326],{"class":322},[312,877,878],{"class":314,"line":798},[312,879,802],{"emptyLinePlaceholder":801},[312,881,882],{"class":314,"line":805},[312,883,884],{"class":784},"# 2. Parse SMD packages\n",[312,886,887,889,891],{"class":314,"line":811},[312,888,319],{"class":318},[312,890,323],{"class":322},[312,892,440],{"class":322},[312,894,895,897,899],{"class":314,"line":821},[312,896,319],{"class":318},[312,898,323],{"class":322},[312,900,795],{"class":322},[312,902,903,905,907],{"class":314,"line":826},[312,904,319],{"class":318},[312,906,323],{"class":322},[312,908,818],{"class":322},[312,910,911],{"class":314,"line":832},[312,912,802],{"emptyLinePlaceholder":801},[312,914,916],{"class":314,"line":915},9,[312,917,918],{"class":784},"# 3. Parse THT packages\n",[312,920,922,924,926],{"class":314,"line":921},10,[312,923,319],{"class":318},[312,925,323],{"class":322},[312,927,668],{"class":322},[312,929,931,933,935],{"class":314,"line":930},11,[312,932,319],{"class":318},[312,934,323],{"class":322},[312,936,839],{"class":322},[245,938,940],{"id":939},"license-hygiene","License hygiene",[241,942,943],{},"Using third-party library data in PCB designs is not the same as redistributing library collections. Before publishing derived libraries, verify each upstream license and keep attribution\u002Fshare-alike obligations where required.",[241,945,946,947,950],{},"Each library's ",[264,948,949],{},"library.json"," captures the license, redistribution policy, and upstream attribution for traceability.",[952,953,954],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":308,"searchDepth":798,"depth":788,"links":956},[957,958,963,970,974,978,979,980],{"id":247,"depth":788,"text":248},{"id":295,"depth":788,"text":296,"children":959},[960,961,962],{"id":300,"depth":798,"text":301},{"id":363,"depth":798,"text":364},{"id":413,"depth":798,"text":414},{"id":425,"depth":788,"text":426,"children":964},[965,966,967,968,969],{"id":449,"depth":798,"text":450},{"id":536,"depth":798,"text":537},{"id":571,"depth":798,"text":572},{"id":615,"depth":798,"text":616},{"id":635,"depth":798,"text":636},{"id":653,"depth":788,"text":654,"children":971},[972,973],{"id":676,"depth":798,"text":677},{"id":733,"depth":798,"text":537},{"id":750,"depth":788,"text":414,"children":975},[976,977],{"id":753,"depth":798,"text":754},{"id":763,"depth":798,"text":764},{"id":773,"depth":788,"text":774},{"id":856,"depth":788,"text":857},{"id":939,"depth":788,"text":940},"External CAD library ingestion, parser pipelines, and package generation workflow.","md",null,{},{"title":204,"description":981},"qlO4yhIJaCDrv1UVzA5w4htkvS2-13mU7ETIUCkcXeA",[988,990],{"title":200,"path":201,"stem":202,"description":989,"children":-1},"System architecture, rendering pipeline, data flow, and high-level component overview.",{"title":208,"path":209,"stem":210,"description":991,"children":-1},"Deployment architecture, environment variables, CI\u002FCD workflows, release checklist, and operational safety.",1790998746506]