app
Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
← Commit history
Publish 1.12.7
10 files changed
+4850−13
.insiders-stage/fusion-bridge/version.json+5−5@@ -1,14 +1,14 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.12.6",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.12.6/adom-bridge-fusion-v1.12.6.zip",- "sha256": "0f7c8a73dd41cc46b40550c1dfaf673a399e4504e103578ac404bfef9fe7066f",- "size": 6908422,+ "version": "1.12.7",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.12.7/adom-bridge-fusion-v1.12.7.zip",+ "sha256": "d282ceda33641da8d4f9fc39a626fb99868c08d3e5231f5b65f7843b890fc406",+ "size": 6944361, "verbPrefixes": [ "fusion_" ], "healthEndpoint": "/status",- "released_at": "2026-10-27T20:44:31Z",+ "released_at": "2026-10-27T21:10:46Z", "tier": "insiders" }
.release-page-head+1−1@@ -1 +1 @@-1e3eec61dc5a623162aa767a42a55b8384c0142d+63b0387480ed95717cd86095004ecc09b6105b20
install.shpage.json+1−1@@ -143,4 +143,4 @@ "name": "John Lauer", "email": "[email protected]" }-}+}
rust/Cargo.lock+6−6@@ -10,14 +10,14 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adom-eda-checks"-version = "0.1.1"+version = "0.1.2" dependencies = [ "serde_json", ] [[package]] name = "adom-fusion-bridge"-version = "1.12.6"+version = "1.12.7" dependencies = [ "adom-eda-checks", "base64",@@ -282,7 +282,7 @@ dependencies = [ [[package]] name = "fusion-core"-version = "1.12.6"+version = "1.12.7" dependencies = [ "serde", "serde_json",@@ -292,7 +292,7 @@ dependencies = [ [[package]] name = "fusion-lbr"-version = "1.12.6"+version = "1.12.7" dependencies = [ "regex", "roxmltree",@@ -304,14 +304,14 @@ dependencies = [ [[package]] name = "fusion-os-mac"-version = "1.12.6"+version = "1.12.7" dependencies = [ "fusion-core", ] [[package]] name = "fusion-os-win"-version = "1.12.6"+version = "1.12.7" dependencies = [ "fusion-core", "windows-sys 0.59.0",
rust/lbr/tests/golden.rs+27@@ -162,3 +162,30 @@ fn preflight_and_lints_match_the_python_bridge() { let missing = fusion_lbr::preflight_lbr(std::path::Path::new("C:/nope/missing.lbr")); assert!(!missing.ok && missing.checks.len() == 1 && missing.checks[0].check == "file-readable"); }++#[test]+fn read_footprint_from_a_library_and_from_a_board() {+ let lbr = std::fs::read_to_string(concat!(env!("CARGO_MANIFEST_DIR"), "/tests/golden/Demo_Board.bound3.lbr")).unwrap();+ let fp = fusion_lbr::read_footprint(&lbr, None, "QFN-48_7x7mm").unwrap();+ let pads = fp["pads"].as_array().unwrap();+ assert!(pads.len() >= 48, "{}", pads.len());+ assert_eq!(fp["attributes"]["mount"], "smd");+ assert_eq!(fp["models"][0]["name"], "QFN-48_7x7mm");+ let c = fp["courtyardMm"].as_array().unwrap();+ assert!(c[0].as_f64().unwrap() < c[2].as_f64().unwrap() && c[1].as_f64().unwrap() < c[3].as_f64().unwrap());+ assert!(fusion_lbr::read_footprint(&lbr, None, "NOPE").is_err());+ // a board embeds its libraries by name: Lib:Name picks the one the part comes from+ let brd = std::fs::read_to_string(concat!(env!("CARGO_MANIFEST_DIR"), "/../../demo/routing/fixture/fusion-routing.brd")).unwrap();+ let doc = roxml_first_package(&brd);+ let fp = fusion_lbr::read_footprint(&brd, Some(&doc.0), &doc.1).unwrap();+ assert!(!fp["pads"].as_array().unwrap().is_empty());+ assert!(fusion_lbr::read_footprint(&brd, Some("no-such-lib"), &doc.1).is_err());+}++fn roxml_first_package(xml: &str) -> (String, String) {+ // the first <element library= package=> on the board+ let i = xml.find("<element ").unwrap();+ let tag = &xml[i..i + xml[i..].find('>').unwrap()];+ let attr = |k: &str| { let j = tag.find(&format!(" {k}=\"")).unwrap() + k.len() + 3; tag[j..j + tag[j..].find('"').unwrap()].to_string() };+ (attr("library"), attr("package"))+}
tests/fixtures/IPC-2581C.xsdadded+3111@@ -0,0 +1,3111 @@+<?xml version="1.0" encoding="UTF-8"?>+<!-- Schema File for IPC-2581 revision C -->+<xsd:schema xmlns="http://webstds.ipc.org/2581" xmlns:tn="http://webstds.ipc.org/2581" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://webstds.ipc.org/2581">+ <xsd:simpleType name="angleType">+ <xsd:restriction base="xsd:decimal">+ <xsd:minInclusive value="0.00"/>+ <xsd:maxExclusive value="360.00"/>+ <xsd:totalDigits value="3"/>+ <xsd:fractionDigits value="2"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="backdrillListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="START_LAYER"/>+ <xsd:enumeration value="MUST_NOT_CUT_LAYER"/>+ <xsd:enumeration value="MAX_STUB_LENGTH"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="bendSideType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="TOP"/>+ <xsd:enumeration value="BOTTOM"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="bomCategoryType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ELECTRICAL"/>+ <xsd:enumeration value="PROGRAMMABLE"/>+ <xsd:enumeration value="MECHANICAL"/>+ <xsd:enumeration value="MATERIAL"/>+ <xsd:enumeration value="DOCUMENT"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="boardTechnologyType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="RIGID"/>+ <xsd:enumeration value="RIGID_FLEX"/>+ <xsd:enumeration value="FLEX"/>+ <xsd:enumeration value="HDI"/>+ <xsd:enumeration value="EMBEDDED_COMPONENT"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="butterflyShapeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ROUND"/>+ <xsd:enumeration value="SQUARE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="cadPinType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="THRU"/>+ <xsd:enumeration value="BLIND"/>+ <xsd:enumeration value="SURFACE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="cadPropertyType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="DOUBLE"/>+ <xsd:enumeration value="INTEGER"/>+ <xsd:enumeration value="BOOLEAN"/>+ <xsd:enumeration value="STRING"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="certificationCategoryType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ASSEMBLYDRAWING"/>+ <xsd:enumeration value="ASSEMBLYFIXTUREGENERATION"/>+ <xsd:enumeration value="ASSEMBLYPANEL"/>+ <xsd:enumeration value="ASSEMBLYPREPTOOLS"/>+ <xsd:enumeration value="ASSEMBLYTESTFIXTUREGENERATION"/>+ <xsd:enumeration value="ASSEMBLYTESTGENERATION"/>+ <xsd:enumeration value="BOARDFABRICATION"/>+ <xsd:enumeration value="BOARDFIXTUREGENERATION"/>+ <xsd:enumeration value="BOARDPANEL"/>+ <xsd:enumeration value="BOARDTESTGENERATION"/>+ <xsd:enumeration value="COMPONENTPLACEMENT"/>+ <xsd:enumeration value="DETAILEDDRAWING"/>+ <xsd:enumeration value="FABRICATIONDRAWING"/>+ <xsd:enumeration value="GENERALASSEMBLY"/>+ <xsd:enumeration value="GLUEDOT"/>+ <xsd:enumeration value="MECHANICALHARDWARE"/>+ <xsd:enumeration value="MULTIBOARDPARTSLIST"/>+ <xsd:enumeration value="PHOTOTOOLS"/>+ <xsd:enumeration value="SCHEMATICDRAWINGS"/>+ <xsd:enumeration value="SINGLEBOARDPARTSLIST"/>+ <xsd:enumeration value="SOLDERSTENCILPASTE"/>+ <xsd:enumeration value="SPECSOURCECONTROLDRAWING"/>+ <xsd:enumeration value="EMBEDDEDCOMPONENT"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="certificationStatusType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ALPHA"/>+ <xsd:enumeration value="BETA"/>+ <xsd:enumeration value="CERTIFIED"/>+ <xsd:enumeration value="SELFTEST"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="complianceListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ROHS"/>+ <xsd:enumeration value="CONFLICT_MINERALS"/>+ <xsd:enumeration value="WEEE"/>+ <xsd:enumeration value="REACH"/>+ <xsd:enumeration value="HALOGEN_FREE"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="conductorListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="CONDUCTIVITY"/>+ <xsd:enumeration value="SURFACE_ROUGHNESS_UPFACING"/>+ <xsd:enumeration value="SURFACE_ROUGHNESS_DOWNFACING"/>+ <xsd:enumeration value="SURFACE_ROUGHNESS_TREATED"/>+ <xsd:enumeration value="ETCH_FACTOR"/>+ <xsd:enumeration value="FINISHED_HEIGHT"/>+ <xsd:enumeration value="WEIGHT"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="conductorMaterialType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="COPPER"/>+ <xsd:enumeration value="SILVER_INK"/>+ <xsd:enumeration value="CARBON_INK"/>+ <xsd:enumeration value="CONDUCTIVE_INK"/>+ <xsd:enumeration value="GRAPHENE"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="constraintTypeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="MIN"/>+ <xsd:enumeration value="MAX"/>+ <xsd:enumeration value="NONE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="colorListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="BLACK"/>+ <xsd:enumeration value="WHITE"/>+ <xsd:enumeration value="RED"/>+ <xsd:enumeration value="GREEN"/>+ <xsd:enumeration value="YELLOW"/>+ <xsd:enumeration value="BLUE"/>+ <xsd:enumeration value="BROWN"/>+ <xsd:enumeration value="ORANGE"/>+ <xsd:enumeration value="PINK"/>+ <xsd:enumeration value="PURPLE"/>+ <xsd:enumeration value="GRAY"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="contextType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="BOARD"/>+ <xsd:enumeration value="BOARDPANEL"/>+ <xsd:enumeration value="ASSEMBLY"/>+ <xsd:enumeration value="ASSEMBLYPALLET"/>+ <xsd:enumeration value="DOCUMENTATION"/>+ <xsd:enumeration value="TOOLING"/>+ <xsd:enumeration value="COUPON"/>+ <xsd:enumeration value="MISCELLANEOUS"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="dfxCategoryType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="COMPONENT"/>+ <xsd:enumeration value="BOARDFAB"/>+ <xsd:enumeration value="ASSEMBLY"/>+ <xsd:enumeration value="STACKUP"/>+ <xsd:enumeration value="TESTING"/>+ <xsd:enumeration value="DATAQUALITY"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="dfxResponseChoices">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="YES"/>+ <xsd:enumeration value="NO"/>+ <xsd:enumeration value="APPROVED"/>+ <xsd:enumeration value="CONDITIONALLY_APPROVED"/>+ <xsd:enumeration value="REJECTED"/>+ <xsd:enumeration value="WAIVED"/>+ <xsd:enumeration value="IGNORE"/>+ <xsd:enumeration value="OPEN"/>+ <xsd:enumeration value="CLOSED"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="dielectricListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="DIELECTRIC_CONSTANT"/>+ <xsd:enumeration value="LOSS_TANGENT"/>+ <xsd:enumeration value="GLASS_STYLE"/>+ <xsd:enumeration value="RESIN_CONTENT"/>+ <xsd:enumeration value="Tg_DSC"/>+ <xsd:enumeration value="Tg_DMA"/>+ <xsd:enumeration value="Tg_TMA"/>+ <xsd:enumeration value="Td"/>+ <xsd:enumeration value="SLASH_NUM_IPC4101"/>+ <xsd:enumeration value="SLASH_NUM_IPC4103"/>+ <xsd:enumeration value="PRODUCT_NAME"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="donutShapeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ROUND"/>+ <xsd:enumeration value="SQUARE"/>+ <xsd:enumeration value="HEXAGON"/>+ <xsd:enumeration value="OCTAGON"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="embeddedTypeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="IMAGE"/>+ <xsd:enumeration value="FIRMWARE"/>+ <xsd:enumeration value="EXECUTABLE"/>+ <xsd:enumeration value="DOCUMENT"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="toolListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="CARBIDE"/>+ <xsd:enumeration value="ROUTER"/>+ <xsd:enumeration value="LASER"/>+ <xsd:enumeration value="PLASMA"/>+ <xsd:enumeration value="PUNCH"/>+ <xsd:enumeration value="FLATNOSE"/>+ <xsd:enumeration value="EXTENSION"/>+ <xsd:enumeration value="V_CUTTER"/>+ <xsd:enumeration value="SCREWDRIVER"/>+ <xsd:enumeration value="WRENCH"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="toolPropertyListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="DRILL_SIZE"/>+ <xsd:enumeration value="FINISHED_SIZE"/>+ <xsd:enumeration value="BIT_ANGLE"/>+ <xsd:enumeration value="TORQUE"/>+ <xsd:enumeration value="HEX_NUT_SIZE"/>+ <xsd:enumeration value="PHILIPS_HEAD"/>+ <xsd:enumeration value="FLAT_HEAD"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="enterpriseCodeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="DUNNS"/>+ <xsd:enumeration value="CAGE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="exposureType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="EXPOSED"/>+ <xsd:enumeration value="COVERED_PRIMARY"/>+ <xsd:enumeration value="COVERED_SECONDARY"/>+ <xsd:enumeration value="COVERED"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="featureObjectType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="PAD"/>+ <xsd:enumeration value="SHAPE"/>+ <xsd:enumeration value="POLYGON"/>+ <xsd:enumeration value="DRILL/HOLE"/>+ <xsd:enumeration value="CUTOUT"/>+ <xsd:enumeration value="OUTLINE"/>+ <xsd:enumeration value="TEXT"/>+ <xsd:enumeration value="SLOT"/>+ <xsd:enumeration value="CAVITY"/>+ <xsd:enumeration value="ZONE"/>+ <xsd:enumeration value="BEND"/>+ <xsd:enumeration value="PORT"/>+ <xsd:enumeration value="MILLING"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="flexListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ADHESIVE_SQUEEZE_OUT"/>+ <xsd:enumeration value="DIELECTRIC_SQUEEZE_OUT"/>+ <xsd:enumeration value="STRESS_RELIEF_FILLET_WIDTH"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="foilTypeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="CU-E1"/>+ <xsd:enumeration value="CU-E2"/>+ <xsd:enumeration value="CU-E3"/>+ <xsd:enumeration value="CU-W5"/>+ <xsd:enumeration value="CU-W6"/>+ <xsd:enumeration value="CU-W7"/>+ <xsd:enumeration value="CU-W8"/>+ <xsd:enumeration value="NI/E1"/>+ <xsd:enumeration value="CU-E10"/>+ <xsd:enumeration value="CU-E11"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="surfaceFinishType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="S"/>+ <xsd:enumeration value="b1"/>+ <xsd:enumeration value="T"/>+ <xsd:enumeration value="X"/>+ <xsd:enumeration value="TLU"/>+ <xsd:enumeration value="G"/>+ <xsd:enumeration value="GS"/>+ <xsd:enumeration value="GWB-1-G"/>+ <xsd:enumeration value="GWB-1-N"/>+ <xsd:enumeration value="GWB-2-G"/>+ <xsd:enumeration value="GWB-2-N"/>+ <xsd:enumeration value="N"/>+ <xsd:enumeration value="NB"/>+ <xsd:enumeration value="OSP"/>+ <xsd:enumeration value="HT_OSP"/>+ <xsd:enumeration value="ENIG-N"/>+ <xsd:enumeration value="ENIG-G"/>+ <xsd:enumeration value="ENEPIG-N"/>+ <xsd:enumeration value="ENEPIG-G"/>+ <xsd:enumeration value="ENEPIG-P"/>+ <xsd:enumeration value="DIG"/>+ <xsd:enumeration value="IAg"/>+ <xsd:enumeration value="ISn"/>+ <xsd:enumeration value="C"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="floorLifeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="UNLIMITED"/>+ <xsd:enumeration value="1_YEAR"/>+ <xsd:enumeration value="4_WEEKS"/>+ <xsd:enumeration value="168_HOURS"/>+ <xsd:enumeration value="72_HOURS"/>+ <xsd:enumeration value="48_HOURS"/>+ <xsd:enumeration value="24_HOURS"/>+ <xsd:enumeration value="BAKE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="geometryUsageType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="THIEVING"/>+ <xsd:enumeration value="THERMAL_RELIEF"/>+ <xsd:enumeration value="TEXT"/>+ <xsd:enumeration value="TEARDROP"/>+ <xsd:enumeration value="GRAPHIC"/>+ <xsd:enumeration value="NONE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="generalListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ELECTRICAL"/>+ <xsd:enumeration value="THERMAL"/>+ <xsd:enumeration value="MATERIAL"/>+ <xsd:enumeration value="INSTRUCTION"/>+ <xsd:enumeration value="STANDARD"/>+ <xsd:enumeration value="CONFIGURATION"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="historyNumberType">+ <xsd:restriction base="xsd:string">+ <xsd:pattern value="[0-9]+(.[0-9]+)*"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="holeShapeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="CIRCLE"/>+ <xsd:enumeration value="SQUARE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="impedanceListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="IMPEDANCE"/>+ <xsd:enumeration value="LINEWIDTH"/>+ <xsd:enumeration value="SPACING"/>+ <xsd:enumeration value="REF_PLANE_LAYER_ID"/>+ <xsd:enumeration value="COPLANAR_GROUND_SPACING"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="isoCodeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="AD"/>+ <xsd:enumeration value="AE"/>+ <xsd:enumeration value="AF"/>+ <xsd:enumeration value="AG"/>+ <xsd:enumeration value="AI"/>+ <xsd:enumeration value="AL"/>+ <xsd:enumeration value="AM"/>+ <xsd:enumeration value="AN"/>+ <xsd:enumeration value="AO"/>+ <xsd:enumeration value="AQ"/>+ <xsd:enumeration value="AR"/>+ <xsd:enumeration value="AS"/>+ <xsd:enumeration value="AT"/>+ <xsd:enumeration value="AU"/>+ <xsd:enumeration value="AW"/>+ <xsd:enumeration value="AZ"/>+ <xsd:enumeration value="BA"/>+ <xsd:enumeration value="BB"/>+ <xsd:enumeration value="BD"/>+ <xsd:enumeration value="BE"/>+ <xsd:enumeration value="BF"/>+ <xsd:enumeration value="BG"/>+ <xsd:enumeration value="BH"/>+ <xsd:enumeration value="BI"/>+ <xsd:enumeration value="BJ"/>+ <xsd:enumeration value="BM"/>+ <xsd:enumeration value="BN"/>+ <xsd:enumeration value="BO"/>+ <xsd:enumeration value="BR"/>+ <xsd:enumeration value="BS"/>+ <xsd:enumeration value="BT"/>+ <xsd:enumeration value="BV"/>+ <xsd:enumeration value="BW"/>+ <xsd:enumeration value="BY"/>+ <xsd:enumeration value="BZ"/>+ <xsd:enumeration value="CA"/>+ <xsd:enumeration value="CC"/>+ <xsd:enumeration value="CF"/>+ <xsd:enumeration value="CG"/>+ <xsd:enumeration value="CH"/>+ <xsd:enumeration value="CI"/>+ <xsd:enumeration value="CK"/>+ <xsd:enumeration value="CL"/>+ <xsd:enumeration value="CM"/>+ <xsd:enumeration value="CN"/>+ <xsd:enumeration value="CO"/>+ <xsd:enumeration value="CR"/>+ <xsd:enumeration value="CU"/>+ <xsd:enumeration value="CV"/>+ <xsd:enumeration value="CX"/>+ <xsd:enumeration value="CY"/>+ <xsd:enumeration value="CZ"/>+ <xsd:enumeration value="DE"/>+ <xsd:enumeration value="DJ"/>+ <xsd:enumeration value="DK"/>+ <xsd:enumeration value="DM"/>+ <xsd:enumeration value="DO"/>+ <xsd:enumeration value="DZ"/>+ <xsd:enumeration value="EC"/>+ <xsd:enumeration value="EE"/>+ <xsd:enumeration value="EG"/>+ <xsd:enumeration value="EH"/>+ <xsd:enumeration value="ER"/>+ <xsd:enumeration value="ES"/>+ <xsd:enumeration value="ET"/>+ <xsd:enumeration value="FI"/>+ <xsd:enumeration value="FJ"/>+ <xsd:enumeration value="FK"/>+ <xsd:enumeration value="FM"/>+ <xsd:enumeration value="FO"/>+ <xsd:enumeration value="FR"/>+ <xsd:enumeration value="FX"/>+ <xsd:enumeration value="GA"/>+ <xsd:enumeration value="GB"/>+ <xsd:enumeration value="GD"/>+ <xsd:enumeration value="GE"/>+ <xsd:enumeration value="GF"/>+ <xsd:enumeration value="GH"/>+ <xsd:enumeration value="GI"/>+ <xsd:enumeration value="GL"/>+ <xsd:enumeration value="GM"/>+ <xsd:enumeration value="GN"/>+ <xsd:enumeration value="GP"/>+ <xsd:enumeration value="GQ"/>+ <xsd:enumeration value="GR"/>+ <xsd:enumeration value="GS"/>+ <xsd:enumeration value="GT"/>+ <xsd:enumeration value="GU"/>+ <xsd:enumeration value="GW"/>+ <xsd:enumeration value="GY"/>+ <xsd:enumeration value="HK"/>+ <xsd:enumeration value="HM"/>+ <xsd:enumeration value="HN"/>+ <xsd:enumeration value="HR"/>+ <xsd:enumeration value="HT"/>+ <xsd:enumeration value="HU"/>+ <xsd:enumeration value="ID"/>+ <xsd:enumeration value="IE"/>+ <xsd:enumeration value="IL"/>+ <xsd:enumeration value="IN"/>+ <xsd:enumeration value="IO"/>+ <xsd:enumeration value="IQ"/>+ <xsd:enumeration value="IR"/>+ <xsd:enumeration value="IS"/>+ <xsd:enumeration value="IT"/>+ <xsd:enumeration value="JM"/>+ <xsd:enumeration value="JO"/>+ <xsd:enumeration value="JP"/>+ <xsd:enumeration value="KE"/>+ <xsd:enumeration value="KG"/>+ <xsd:enumeration value="KH"/>+ <xsd:enumeration value="KI"/>+ <xsd:enumeration value="KM"/>+ <xsd:enumeration value="KN"/>+ <xsd:enumeration value="KP"/>+ <xsd:enumeration value="KR"/>+ <xsd:enumeration value="KW"/>+ <xsd:enumeration value="KY"/>+ <xsd:enumeration value="KZ"/>+ <xsd:enumeration value="LA"/>+ <xsd:enumeration value="LB"/>+ <xsd:enumeration value="LC"/>+ <xsd:enumeration value="LI"/>+ <xsd:enumeration value="LK"/>+ <xsd:enumeration value="LR"/>+ <xsd:enumeration value="LS"/>+ <xsd:enumeration value="LT"/>+ <xsd:enumeration value="LU"/>+ <xsd:enumeration value="LV"/>+ <xsd:enumeration value="LY"/>+ <xsd:enumeration value="MA"/>+ <xsd:enumeration value="MC"/>+ <xsd:enumeration value="MD"/>+ <xsd:enumeration value="MG"/>+ <xsd:enumeration value="MH"/>+ <xsd:enumeration value="MK"/>+ <xsd:enumeration value="ML"/>+ <xsd:enumeration value="MM"/>+ <xsd:enumeration value="MN"/>+ <xsd:enumeration value="MO"/>+ <xsd:enumeration value="MP"/>+ <xsd:enumeration value="MQ"/>+ <xsd:enumeration value="MR"/>+ <xsd:enumeration value="MS"/>+ <xsd:enumeration value="MT"/>+ <xsd:enumeration value="MU"/>+ <xsd:enumeration value="MV"/>+ <xsd:enumeration value="MW"/>+ <xsd:enumeration value="MX"/>+ <xsd:enumeration value="MY"/>+ <xsd:enumeration value="MZ"/>+ <xsd:enumeration value="NA"/>+ <xsd:enumeration value="NC"/>+ <xsd:enumeration value="NE"/>+ <xsd:enumeration value="NF"/>+ <xsd:enumeration value="NG"/>+ <xsd:enumeration value="NI"/>+ <xsd:enumeration value="NL"/>+ <xsd:enumeration value="NO"/>+ <xsd:enumeration value="NP"/>+ <xsd:enumeration value="NR"/>+ <xsd:enumeration value="NU"/>+ <xsd:enumeration value="NZ"/>+ <xsd:enumeration value="OM"/>+ <xsd:enumeration value="PA"/>+ <xsd:enumeration value="PE"/>+ <xsd:enumeration value="PF"/>+ <xsd:enumeration value="PG"/>+ <xsd:enumeration value="PH"/>+ <xsd:enumeration value="PK"/>+ <xsd:enumeration value="PL"/>+ <xsd:enumeration value="PM"/>+ <xsd:enumeration value="PN"/>+ <xsd:enumeration value="PR"/>+ <xsd:enumeration value="PT"/>+ <xsd:enumeration value="PW"/>+ <xsd:enumeration value="PY"/>+ <xsd:enumeration value="QA"/>+ <xsd:enumeration value="RE"/>+ <xsd:enumeration value="RO"/>+ <xsd:enumeration value="RU"/>+ <xsd:enumeration value="RW"/>+ <xsd:enumeration value="SA"/>+ <xsd:enumeration value="SB"/>+ <xsd:enumeration value="SC"/>+ <xsd:enumeration value="SD"/>+ <xsd:enumeration value="SE"/>+ <xsd:enumeration value="SG"/>+ <xsd:enumeration value="SH"/>+ <xsd:enumeration value="SI"/>+ <xsd:enumeration value="SJ"/>+ <xsd:enumeration value="SK"/>+ <xsd:enumeration value="SL"/>+ <xsd:enumeration value="SM"/>+ <xsd:enumeration value="SN"/>+ <xsd:enumeration value="SO"/>+ <xsd:enumeration value="SR"/>+ <xsd:enumeration value="ST"/>+ <xsd:enumeration value="SV"/>+ <xsd:enumeration value="SY"/>+ <xsd:enumeration value="SZ"/>+ <xsd:enumeration value="TC"/>+ <xsd:enumeration value="TD"/>+ <xsd:enumeration value="TF"/>+ <xsd:enumeration value="TG"/>+ <xsd:enumeration value="TH"/>+ <xsd:enumeration value="TJ"/>+ <xsd:enumeration value="TK"/>+ <xsd:enumeration value="TM"/>+ <xsd:enumeration value="TN"/>+ <xsd:enumeration value="TO"/>+ <xsd:enumeration value="TP"/>+ <xsd:enumeration value="TR"/>+ <xsd:enumeration value="TT"/>+ <xsd:enumeration value="TV"/>+ <xsd:enumeration value="TW"/>+ <xsd:enumeration value="TZ"/>+ <xsd:enumeration value="UA"/>+ <xsd:enumeration value="UG"/>+ <xsd:enumeration value="UM"/>+ <xsd:enumeration value="US"/>+ <xsd:enumeration value="UY"/>+ <xsd:enumeration value="UZ"/>+ <xsd:enumeration value="VA"/>+ <xsd:enumeration value="VC"/>+ <xsd:enumeration value="VE"/>+ <xsd:enumeration value="VG"/>+ <xsd:enumeration value="VI"/>+ <xsd:enumeration value="VN"/>+ <xsd:enumeration value="VU"/>+ <xsd:enumeration value="WF"/>+ <xsd:enumeration value="WS"/>+ <xsd:enumeration value="YE"/>+ <xsd:enumeration value="YT"/>+ <xsd:enumeration value="YU"/>+ <xsd:enumeration value="ZA"/>+ <xsd:enumeration value="ZM"/>+ <xsd:enumeration value="ZR"/>+ <xsd:enumeration value="ZW"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="layerFunctionType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ASSEMBLY"/>+ <xsd:enumeration value="BOARDFAB"/>+ <xsd:enumeration value="BOARD_OUTLINE"/>+ <xsd:enumeration value="CAPACITIVE"/>+ <xsd:enumeration value="COATINGCOND"/>+ <xsd:enumeration value="COATINGNONCOND"/>+ <xsd:enumeration value="COMPONENT"/>+ <xsd:enumeration value="COMPONENT_BOTTOM"/>+ <xsd:enumeration value="COMPONENT_TOP"/>+ <xsd:enumeration value="COMPONENT_EMBEDDED"/>+ <xsd:enumeration value="COMPONENT_FORMED"/>+ <xsd:enumeration value="CONDFILM"/>+ <xsd:enumeration value="CONDFOIL"/>+ <xsd:enumeration value="CONDUCTIVE_ADHESIVE"/>+ <xsd:enumeration value="CONDUCTOR"/>+ <xsd:enumeration value="COURTYARD"/>+ <xsd:enumeration value="DIELBASE"/>+ <xsd:enumeration value="DIELCORE"/>+ <xsd:enumeration value="DIELPREG"/>+ <xsd:enumeration value="DIELADHV"/>+ <xsd:enumeration value="DIELBONDPLY"/>+ <xsd:enumeration value="DIELCOVERLAY"/>+ <xsd:enumeration value="DOCUMENT"/>+ <xsd:enumeration value="DRILL"/>+ <xsd:enumeration value="FIXTURE"/>+ <xsd:enumeration value="GLUE"/>+ <xsd:enumeration value="GRAPHIC"/>+ <xsd:enumeration value="HOLEFILL"/>+ <xsd:enumeration value="SOLDERBUMP"/>+ <xsd:enumeration value="PASTEMASK"/>+ <xsd:enumeration value="LANDPATTERN"/>+ <xsd:enumeration value="LEGEND"/>+ <xsd:enumeration value="MIXED"/>+ <xsd:enumeration value="OTHER"/>+ <xsd:enumeration value="PIN"/>+ <xsd:enumeration value="PLANE"/>+ <xsd:enumeration value="PROBE"/>+ <xsd:enumeration value="RESISTIVE"/>+ <xsd:enumeration value="SIGNAL"/>+ <xsd:enumeration value="SILKSCREEN"/>+ <xsd:enumeration value="SOLDERMASK"/>+ <xsd:enumeration value="SOLDERPASTE"/>+ <xsd:enumeration value="STACKUP_COMPOSITE"/>+ <xsd:enumeration value="REWORK"/>+ <xsd:enumeration value="ROUT"/>+ <xsd:enumeration value="V_CUT"/>+ <xsd:enumeration value="EDGE_CHAMFER"/>+ <xsd:enumeration value="EDGE_PLATING"/>+ <xsd:enumeration value="THIEVING_KEEP_INOUT"/>+ <xsd:enumeration value="STIFFENER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="lengthUnitType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="MM"/>+ <xsd:enumeration value="INCH"/>+ <xsd:enumeration value="MICRON"/>+ <xsd:enumeration value="MILS"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="lineEndType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="NONE"/>+ <xsd:enumeration value="ROUND"/>+ <xsd:enumeration value="SQUARE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="fillPropertyType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="HOLLOW"/>+ <xsd:enumeration value="HATCH"/>+ <xsd:enumeration value="MESH"/>+ <xsd:enumeration value="FILL"/>+ <xsd:enumeration value="VOID"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="linePropertyType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="SOLID"/>+ <xsd:enumeration value="DOTTED"/>+ <xsd:enumeration value="DASHED"/>+ <xsd:enumeration value="CENTER"/>+ <xsd:enumeration value="PHANTOM"/>+ <xsd:enumeration value="ERASE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="lossListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ATTENUATION"/>+ <xsd:enumeration value="IMPEDANCE"/>+ <xsd:enumeration value="INSERTION"/>+ <xsd:enumeration value="POWER"/>+ <xsd:enumeration value="SIGNAL"/>+ <xsd:enumeration value="VOLTAGE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="markingUsageType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="REFDES"/>+ <xsd:enumeration value="PARTNAME"/>+ <xsd:enumeration value="TARGET"/>+ <xsd:enumeration value="POLARITY_MARKING"/>+ <xsd:enumeration value="ATTRIBUTE_GRAPHICS"/>+ <xsd:enumeration value="PIN_ONE"/>+ <xsd:enumeration value="NONE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="measurementModeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="DISTANCE"/>+ <xsd:enumeration value="AREA"/>+ <xsd:enumeration value="RESISTANCE"/>+ <xsd:enumeration value="CAPACITANCE"/>+ <xsd:enumeration value="IMPEDANCE"/>+ <xsd:enumeration value="INDUCTANCE"/>+ <xsd:enumeration value="VOLTAGE_DC"/>+ <xsd:enumeration value="VOLTAGE_AC"/>+ <xsd:enumeration value="FREQUENCY"/>+ <xsd:enumeration value="CURRENT"/>+ <xsd:enumeration value="POWER"/>+ <xsd:enumeration value="PERCENTAGE"/>+ <xsd:enumeration value="SIZE"/>+ <xsd:enumeration value="NONE"/>+ <xsd:enumeration value="TEXT"/>+ <xsd:enumeration value="TOLERANCE"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="modeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="USERDEF"/>+ <xsd:enumeration value="BOM"/>+ <xsd:enumeration value="STACKUP"/>+ <xsd:enumeration value="FABRICATION"/>+ <xsd:enumeration value="ASSEMBLY"/>+ <xsd:enumeration value="TEST"/>+ <xsd:enumeration value="STENCIL"/>+ <xsd:enumeration value="DFX"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="mountType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="SMT"/>+ <xsd:enumeration value="THMT"/>+ <xsd:enumeration value="EMBEDDED"/>+ <xsd:enumeration value="PRESSFIT"/>+ <xsd:enumeration value="WIRE_BONDED"/>+ <xsd:enumeration value="GLUED"/>+ <xsd:enumeration value="CLAMPED"/>+ <xsd:enumeration value="SOCKETED"/>+ <xsd:enumeration value="FORMED"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="pinPolarityType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="PLUS"/>+ <xsd:enumeration value="MINUS"/>+ <xsd:enumeration value="ANODE"/>+ <xsd:enumeration value="CATHODE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="netClassType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="CLK"/>+ <xsd:enumeration value="FIXED"/>+ <xsd:enumeration value="GROUND"/>+ <xsd:enumeration value="SIGNAL"/>+ <xsd:enumeration value="POWER"/>+ <xsd:enumeration value="UNUSED"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="netFunctionType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="INPUT"/>+ <xsd:enumeration value="OUTPUT"/>+ <xsd:enumeration value="BIDIRECTIONAL"/>+ <xsd:enumeration value="POWER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="netPointType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="END"/>+ <xsd:enumeration value="MIDDLE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="nonNegativeDoubleType">+ <xsd:restriction base="xsd:double">+ <xsd:minInclusive value="0.0"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="packageTypeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="AXIAL_LEADED"/>+ <xsd:enumeration value="BARE_DIE"/>+ <xsd:enumeration value="CERAMIC_BGA"/>+ <xsd:enumeration value="CERAMIC_DIP"/>+ <xsd:enumeration value="CERAMIC_FLATPACK"/>+ <xsd:enumeration value="CERAMIC_QUAD_FLATPACK"/>+ <xsd:enumeration value="CERAMIC_SIP"/>+ <xsd:enumeration value="CHIP"/>+ <xsd:enumeration value="CHIP_SCALE"/>+ <xsd:enumeration value="CHOKE_SWITCH_SM"/>+ <xsd:enumeration value="COIL"/>+ <xsd:enumeration value="CONNECTOR_SM"/>+ <xsd:enumeration value="CONNECTOR_TH"/>+ <xsd:enumeration value="EMBEDDED"/>+ <xsd:enumeration value="FLIPCHIP"/>+ <xsd:enumeration value="HERMETIC_HYBRED"/>+ <xsd:enumeration value="LEADLESS_CERAMIC_CHIP_CARRIER"/>+ <xsd:enumeration value="MCM"/>+ <xsd:enumeration value="MELF"/>+ <xsd:enumeration value="FINEPITCH_BGA"/>+ <xsd:enumeration value="MOLDED"/>+ <xsd:enumeration value="NETWORK"/>+ <xsd:enumeration value="PGA"/>+ <xsd:enumeration value="PLASTIC_BGA"/>+ <xsd:enumeration value="PLASTIC_CHIP_CARRIER"/>+ <xsd:enumeration value="PLASTIC_DIP"/>+ <xsd:enumeration value="PLASTIC_SIP"/>+ <xsd:enumeration value="POWER_TRANSISTOR"/>+ <xsd:enumeration value="RADIAL_LEADED"/>+ <xsd:enumeration value="RECTANGULAR_QUAD_FLATPACK"/>+ <xsd:enumeration value="RELAY_SM"/>+ <xsd:enumeration value="RELAY_TH"/>+ <xsd:enumeration value="SOD123"/>+ <xsd:enumeration value="SOIC"/>+ <xsd:enumeration value="SOJ"/>+ <xsd:enumeration value="SOPIC"/>+ <xsd:enumeration value="SOT143"/>+ <xsd:enumeration value="SOT23"/>+ <xsd:enumeration value="SOT52"/>+ <xsd:enumeration value="SOT89"/>+ <xsd:enumeration value="SQUARE_QUAD_FLATPACK"/>+ <xsd:enumeration value="SSOIC"/>+ <xsd:enumeration value="SWITCH_TH"/>+ <xsd:enumeration value="TANTALUM"/>+ <xsd:enumeration value="TO_TYPE"/>+ <xsd:enumeration value="TRANSFORMER"/>+ <xsd:enumeration value="TRIMPOT_SM"/>+ <xsd:enumeration value="TRIMPOT_TH"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="padUsageType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="TERMINATION"/>+ <xsd:enumeration value="VIA"/>+ <xsd:enumeration value="PLANE"/>+ <xsd:enumeration value="MASK"/>+ <xsd:enumeration value="TOOLING_HOLE"/>+ <xsd:enumeration value="THIEVING"/>+ <xsd:enumeration value="THERMAL_RELIEF"/>+ <xsd:enumeration value="FIDUCIAL"/>+ <xsd:enumeration value="NONE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="padUseType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="REGULAR"/>+ <xsd:enumeration value="ANTIPAD"/>+ <xsd:enumeration value="THERMAL"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="pinElectricalType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ELECTRICAL"/>+ <xsd:enumeration value="MECHANICAL"/>+ <xsd:enumeration value="UNDEFINED"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="pinMountType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="SURFACE_MOUNT_PIN"/>+ <xsd:enumeration value="SURFACE_MOUNT_PAD"/>+ <xsd:enumeration value="THROUGH_HOLE_PIN"/>+ <xsd:enumeration value="THROUGH_HOLE_HOLE"/>+ <xsd:enumeration value="PRESSFIT"/>+ <xsd:enumeration value="NONBOARD"/>+ <xsd:enumeration value="HOLE"/>+ <xsd:enumeration value="WIRE_BOND"/>+ <xsd:enumeration value="UNDEFINED"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="pinOneOrientationType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="LOWER_LEFT"/>+ <xsd:enumeration value="LEFT"/>+ <xsd:enumeration value="LEFT_CENTER"/>+ <xsd:enumeration value="UPPER_LEFT"/>+ <xsd:enumeration value="UPPER_CENTER"/>+ <xsd:enumeration value="UPPER_RIGHT"/>+ <xsd:enumeration value="RIGHT"/>+ <xsd:enumeration value="RIGHT_CENTER"/>+ <xsd:enumeration value="LOWER_RIGHT"/>+ <xsd:enumeration value="LOWER_CENTER"/>+ <xsd:enumeration value="CENTER"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="polarityType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="POSITIVE"/>+ <xsd:enumeration value="NEGATIVE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="portPhysicalType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="COMPONENT"/>+ <xsd:enumeration value="CONNECTOR"/>+ <xsd:enumeration value="WIRE_BOND"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="productCriteriaType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ALLOWED"/>+ <xsd:enumeration value="SUGGESTED"/>+ <xsd:enumeration value="PREFERRED"/>+ <xsd:enumeration value="REQUIRED"/>+ <xsd:enumeration value="CHOSEN"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="propertyUnitType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="MM"/>+ <xsd:enumeration value="INCH"/>+ <xsd:enumeration value="MICRON"/>+ <xsd:enumeration value="MILS"/>+ <xsd:enumeration value="OHMS"/>+ <xsd:enumeration value="MHO/CM"/>+ <xsd:enumeration value="SIEMENS/M"/>+ <xsd:enumeration value="CELCIUS"/>+ <xsd:enumeration value="FARANHEIT"/>+ <xsd:enumeration value="PERCENT"/>+ <xsd:enumeration value="Hz"/>+ <xsd:enumeration value="DEGREES"/>+ <xsd:enumeration value="RMAX"/>+ <xsd:enumeration value="RZ"/>+ <xsd:enumeration value="RMS"/>+ <xsd:enumeration value="SECTION"/>+ <xsd:enumeration value="CLASS"/>+ <xsd:enumeration value="ITEM"/>+ <xsd:enumeration value="GAUGE"/>+ <xsd:enumeration value="IN-LB"/>+ <xsd:enumeration value="IN-OZ"/>+ <xsd:enumeration value="FT-LB"/>+ <xsd:enumeration value="N-m"/>+ <xsd:enumeration value="N-cm"/>+ <xsd:enumeration value="MIN"/>+ <xsd:enumeration value="MAX"/>+ <xsd:enumeration value="OZ"/>+ <xsd:enumeration value="OZ/SQ-FT"/>+ <xsd:enumeration value="GRAMS"/>+ <xsd:enumeration value="HENRYS"/>+ <xsd:enumeration value="AMPS"/>+ <xsd:enumeration value="WATTS"/>+ <xsd:enumeration value="VOLTS"/>+ <xsd:enumeration value="FARAD"/>+ <xsd:enumeration value="dB"/>+ <xsd:enumeration value="dB/INCH"/>+ <xsd:enumeration value="dB/MM"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="qualifiedNameType">+ <xsd:restriction base="xsd:string">+ <xsd:pattern value="([^:]+)(:[^:]+)?"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="roleFunctionType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="SENDER"/>+ <xsd:enumeration value="OWNER"/>+ <xsd:enumeration value="RECEIVER"/>+ <xsd:enumeration value="DESIGNER"/>+ <xsd:enumeration value="ENGINEER"/>+ <xsd:enumeration value="BUYER"/>+ <xsd:enumeration value="CUSTOMERSERVICE"/>+ <xsd:enumeration value="DELIVERTO"/>+ <xsd:enumeration value="BILLTO"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="scaleType">+ <xsd:restriction base="xsd:double">+ <xsd:minExclusive value="0.0"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="secondaryDrillListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="MAJOR_DIAMETER"/>+ <xsd:enumeration value="DEPTH"/>+ <xsd:enumeration value="SIDE"/>+ <xsd:enumeration value="ANGLE"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="sectionKeyType">+ <xsd:restriction base="xsd:string">+ <xsd:pattern value="[ABCDEFGIKLMOPRSUXY]*"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="sideType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="TOP"/>+ <xsd:enumeration value="BOTTOM"/>+ <xsd:enumeration value="BOTH"/>+ <xsd:enumeration value="INTERNAL"/>+ <xsd:enumeration value="ALL"/>+ <xsd:enumeration value="NONE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="spokeCountType">+ <xsd:restriction base="xsd:integer">+ <xsd:maxInclusive value="4"/>+ <xsd:minInclusive value="0"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="stackupStatusType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="SPECIFIED"/>+ <xsd:enumeration value="PROPOSED"/>+ <xsd:enumeration value="APPROVED"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="stepType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="BOARD"/>+ <xsd:enumeration value="PALLET"/>+ <xsd:enumeration value="IC"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="platingStatusType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="PLATED"/>+ <xsd:enumeration value="NONPLATED"/>+ <xsd:enumeration value="VIA"/>+ <xsd:enumeration value="VIA_CAPPED"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="structureListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="STRIPLINE_SYMMETRIC"/>+ <xsd:enumeration value="STRIPLINE_ASYMMETRIC"/>+ <xsd:enumeration value="STRIPLINE_PLANE_LESS"/>+ <xsd:enumeration value="MICROSTRIP_EMBEDDED"/>+ <xsd:enumeration value="MICROSTRIP_NO_MASK "/>+ <xsd:enumeration value="MICROSTRIP_MASK_COVERED"/>+ <xsd:enumeration value="MICROSTRIP_DUAL_MASKED_COVERED"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="coplanarListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="COPLANAR_WAVEGUIDE_STRIPLINE"/>+ <xsd:enumeration value="COPLANAR_WAVEGUIDE_EMBEDDED"/>+ <xsd:enumeration value="COPLANAR_WAVEGUIDE_NO_MASK"/>+ <xsd:enumeration value="COPLANAR_WAVEGUIDE_MASK_COVERED"/>+ <xsd:enumeration value="COPLANAR_WAVEGUIDE_DUAL_MASKED_COVERED"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="broadsideListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="STRIPLINE_SYMMETRIC"/>+ <xsd:enumeration value="STRIPLINE_ASYMMETRIC"/>+ <xsd:enumeration value="STRIPLINE_PLANE_LESS"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="technologyListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="RIGID"/>+ <xsd:enumeration value="RIGID_FLEX"/>+ <xsd:enumeration value="FLEX"/>+ <xsd:enumeration value="HDI"/>+ <xsd:enumeration value="EMBEDDED_COMPONENT"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="temperatureListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="THERMAL_DELAMINATION"/>+ <xsd:enumeration value="EXPANSION_Z_AXIS"/>+ <xsd:enumeration value="EXPANSION_X_Y_AXIS"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="thermalShapeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ROUND"/>+ <xsd:enumeration value="SQUARE"/>+ <xsd:enumeration value="HEXAGON"/>+ <xsd:enumeration value="OCTAGON"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="thievingListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="KEEP_IN"/>+ <xsd:enumeration value="KEEP_OUT"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="transmissionListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="SINGLE_ENDED"/>+ <xsd:enumeration value="EDGE_COUPLED"/>+ <xsd:enumeration value="BROADSIDE_COUPLED"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="unitModeType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="DISTANCE"/>+ <xsd:enumeration value="AREA"/>+ <xsd:enumeration value="RESISTANCE"/>+ <xsd:enumeration value="CAPACITANCE"/>+ <xsd:enumeration value="IMPEDANCE"/>+ <xsd:enumeration value="PERCENTAGE"/>+ <xsd:enumeration value="SIZE"/>+ <xsd:enumeration value="NONE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="unitsType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="MILLIMETER"/>+ <xsd:enumeration value="MICRON"/>+ <xsd:enumeration value="INCH"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="unsignedByte">+ <xsd:restriction base="xsd:nonNegativeInteger">+ <xsd:maxInclusive value="255"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="vCutListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ANGLE"/>+ <xsd:enumeration value="THICKNESS_REMAINING"/>+ <xsd:enumeration value="OFFSET"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="edgeChamferListType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="ANGLE"/>+ <xsd:enumeration value="WIDTH"/>+ <xsd:enumeration value="SIDE"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:simpleType name="whereMeasuredType">+ <xsd:restriction base="xsd:string">+ <xsd:enumeration value="LAMINATE"/>+ <xsd:enumeration value="METAL"/>+ <xsd:enumeration value="MASK"/>+ <xsd:enumeration value="OTHER"/>+ </xsd:restriction>+ </xsd:simpleType>+ <xsd:element name="Approval" type="ApprovalType"/>+ <xsd:complexType name="ApprovalType">+ <xsd:attribute name="datetime" type="xsd:dateTime" use="required"/>+ <xsd:attribute name="personRef" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="Arc" type="ArcType" substitutionGroup="Simple"/>+ <xsd:complexType name="ArcType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup"/>+ </xsd:sequence>+ <xsd:attribute name="startX" type="xsd:double" use="required"/>+ <xsd:attribute name="startY" type="xsd:double" use="required"/>+ <xsd:attribute name="endX" type="xsd:double" use="required"/>+ <xsd:attribute name="endY" type="xsd:double" use="required"/>+ <xsd:attribute name="centerX" type="xsd:double" use="required"/>+ <xsd:attribute name="centerY" type="xsd:double" use="required"/>+ <xsd:attribute name="clockwise" type="xsd:boolean" use="required"/>+ </xsd:complexType>+ <xsd:element name="AssemblyDrawing" type="AssemblyDrawingType"/>+ <xsd:complexType name="AssemblyDrawingType">+ <xsd:sequence>+ <xsd:element ref="Outline"/>+ <xsd:element ref="Marking" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Avl" type="AvlType"/>+ <xsd:element name="AvlHeader" type="AvlHeaderType"/>+ <xsd:complexType name="AvlHeaderType">+ <xsd:attribute name="title" type="xsd:string" use="required"/>+ <xsd:attribute name="source" type="xsd:string" use="required"/>+ <xsd:attribute name="author" type="xsd:string" use="required"/>+ <xsd:attribute name="datetime" type="xsd:dateTime" use="required"/>+ <xsd:attribute name="version" type="xsd:positiveInteger" use="required"/>+ <xsd:attribute name="comment" type="xsd:string"/>+ <xsd:attribute name="modRef" type="modeType"/>+ </xsd:complexType>+ <xsd:element name="AvlItem" type="AvlItemType"/>+ <xsd:complexType name="AvlItemType">+ <xsd:sequence>+ <xsd:element ref="AvlVmpn" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="OEMDesignNumber" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="AvlMpn" type="AvlMpnType"/>+ <xsd:complexType name="AvlMpnType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="rank" type="xsd:nonNegativeInteger"/>+ <xsd:attribute name="cost" type="nonNegativeDoubleType"/>+ <xsd:attribute name="moistureSensitivity" type="floorLifeType"/>+ <xsd:attribute name="availability" type="xsd:boolean"/>+ <xsd:attribute name="other" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="AvlRef" type="AvlRefType"/>+ <xsd:complexType name="AvlRefType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:complexType name="AvlType">+ <xsd:sequence>+ <xsd:element ref="AvlHeader"/>+ <xsd:element ref="AvlItem" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="AvlVendor" type="AvlVendorType"/>+ <xsd:complexType name="AvlVendorType">+ <xsd:attribute name="enterpriseRef" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="AvlVmpn" type="AvlVmpnType"/>+ <xsd:complexType name="AvlVmpnType">+ <xsd:sequence>+ <xsd:element ref="AvlMpn"/>+ <xsd:element ref="AvlVendor"/>+ </xsd:sequence>+ <xsd:attribute name="evplVendor" type="xsd:string" use="optional"/>+ <xsd:attribute name="evplMpn" type="xsd:string" use="optional"/>+ <xsd:attribute name="qualified" type="xsd:boolean" use="optional"/>+ <xsd:attribute name="chosen" type="xsd:boolean" use="optional"/>+ </xsd:complexType>+ <xsd:element name="BendArea" type="BendAreaType"/>+ <xsd:complexType name="BendAreaType">+ <xsd:sequence>+ <xsd:element ref="CircularBend"/>+ <xsd:element ref="Outline"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="sequenceNumber" type="xsd:integer" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="BendLine" type="LineType"/>+ <xsd:element name="BadBoardMark" type="FiducialType" substitutionGroup="Fiducial"/>+ <xsd:element name="Bom" type="BomType"/>+ <xsd:element name="BomHeader" type="BomHeaderType"/>+ <xsd:complexType name="BomHeaderType">+ <xsd:sequence>+ <xsd:element ref="StepRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="assembly" type="xsd:string" use="required"/>+ <xsd:attribute name="revision" type="xsd:string" use="required"/>+ <xsd:attribute name="affecting" type="xsd:boolean"/>+ </xsd:complexType>+ <xsd:element name="BomItem" type="BomItemType"/>+ <xsd:complexType name="BomItemType">+ <xsd:sequence>+ <xsd:element ref="BomDes" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Characteristics"/>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="OEMDesignNumberRef" type="xsd:string" use="required"/>+ <xsd:attribute name="quantity" type="xsd:string" use="required"/>+ <xsd:attribute name="pinCount" type="xsd:nonNegativeInteger" use="optional"/>+ <xsd:attribute name="category" type="bomCategoryType" use="required"/>+ <xsd:attribute name="internalPartNumber" type="xsd:string"/>+ <xsd:attribute name="description" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="BomDes" abstract="true"/>+ <xsd:element name="RefDes" type="RefDesType" substitutionGroup="BomDes"/>+ <xsd:complexType name="RefDesType">+ <xsd:sequence>+ <xsd:element ref="Tuning" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Firmware" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="packageRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="populate" type="xsd:boolean"/>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="modelRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="MatDes" type="MatDesType" substitutionGroup="BomDes"/>+ <xsd:complexType name="MatDesType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="DocDes" type="DocDesType" substitutionGroup="BomDes"/>+ <xsd:complexType name="DocDesType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="ToolDes" type="ToolDesType" substitutionGroup="BomDes"/>+ <xsd:complexType name="ToolDesType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="FindDes" type="FindDesType" substitutionGroup="BomDes"/>+ <xsd:complexType name="FindDesType">+ <xsd:attribute name="number" type="xsd:positiveInteger" use="required"/>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="modelRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="BomRef" type="BomRefType"/>+ <xsd:complexType name="BomRefType">+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:complexType name="BomType">+ <xsd:sequence>+ <xsd:element ref="BomHeader"/>+ <xsd:element ref="BomItem" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="BoundingBox" type="BoundingBoxType"/>+ <xsd:complexType name="BoundingBoxType">+ <xsd:attribute name="lowerLeftX" type="xsd:double" use="required"/>+ <xsd:attribute name="lowerLeftY" type="xsd:double" use="required"/>+ <xsd:attribute name="upperRightX" type="xsd:double" use="required"/>+ <xsd:attribute name="upperRightY" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="Butterfly" type="ButterflyType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="ButterflyType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="shape" type="butterflyShapeType" use="required"/>+ <xsd:attribute name="diameter" type="nonNegativeDoubleType"/>+ <xsd:attribute name="side" type="nonNegativeDoubleType"/>+ </xsd:complexType>+ <xsd:element name="CachedFirmware" type="CachedFirmwareType" substitutionGroup="FirmwareGroup"/>+ <xsd:complexType name="CachedFirmwareType">+ <xsd:attribute name="hexEncodedBinary" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="CadData" type="CadDataType"/>+ <xsd:complexType name="CadDataType">+ <xsd:sequence>+ <xsd:element ref="Layer" maxOccurs="unbounded"/>+ <xsd:element ref="Stackup" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Step" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="CadHeader" type="CadHeaderType"/>+ <xsd:complexType name="CadHeaderType">+ <xsd:sequence>+ <xsd:element ref="Spec" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="ChangeRec" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="units" type="unitsType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Certification" type="CertificationType"/>+ <xsd:complexType name="CertificationType">+ <xsd:attribute name="certificationStatus" type="certificationStatusType" use="required"/>+ <xsd:attribute name="certificationCategory" type="certificationCategoryType"/>+ </xsd:complexType>+ <xsd:element name="ChangeRec" type="ChangeRecType"/>+ <xsd:complexType name="ChangeRecType">+ <xsd:sequence>+ <xsd:element ref="Approval" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="datetime" type="xsd:dateTime" use="required"/>+ <xsd:attribute name="personRef" type="xsd:string" use="required"/>+ <xsd:attribute name="application" type="xsd:string" use="required"/>+ <xsd:attribute name="change" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="Characteristics" type="CharacteristicsType"/>+ <xsd:complexType name="CharacteristicsType">+ <xsd:sequence>+ <xsd:element ref="Measured" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Ranged" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Enumerated" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Textual" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="category" type="bomCategoryType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Circle" type="CircleType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="CircleType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="diameter" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="CircularBend" type="CircularBendType"/>+ <xsd:complexType name="CircularBendType">+ <xsd:sequence>+ <xsd:element ref="BendLine"/>+ </xsd:sequence>+ <xsd:attribute name="innerSide" type="bendSideType" use="required"/>+ <xsd:attribute name="innerRadius" type="xsd:double" use="required"/>+ <xsd:attribute name="innerAngle" type="angleType"/>+ </xsd:complexType>+ <xsd:element name="Color" type="ColorType" substitutionGroup="ColorGroup"/>+ <xsd:element name="ColorGroup" abstract="true"/>+ <xsd:element name="ColorRef" type="ColorRefType" substitutionGroup="ColorGroup"/>+ <xsd:complexType name="ColorRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:complexType name="ColorType">+ <xsd:attribute name="r" type="unsignedByte" use="required"/>+ <xsd:attribute name="g" type="unsignedByte" use="required"/>+ <xsd:attribute name="b" type="unsignedByte" use="required"/>+ </xsd:complexType>+ <xsd:element name="ColorTerm" type="ColorTermType" substitutionGroup="ColorGroup"/>+ <xsd:complexType name="ColorTermType">+ <xsd:attribute name="name" type="colorListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Component" type="ComponentType"/>+ <xsd:complexType name="ComponentType">+ <xsd:sequence>+ <xsd:element ref="NonstandardAttribute" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location"/>+ <xsd:element ref="SlotCavityRef" minOccurs="0"/>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="refDes" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="matDes" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="packageRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="part" type="xsd:string" use="required"/>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="layerRefTopside" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="mountType" type="mountType" use="required"/>+ <xsd:attribute name="modelRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="weight" type="nonNegativeDoubleType"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType"/>+ <xsd:attribute name="standoff" type="nonNegativeDoubleType"/>+ </xsd:complexType>+ <xsd:element name="Content" type="ContentType"/>+ <xsd:complexType name="ContentType">+ <xsd:sequence>+ <xsd:element ref="FunctionMode"/>+ <xsd:element ref="StepRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="LayerRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="BomRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="AvlRef" minOccurs="0"/>+ <xsd:element ref="DictionaryColor" minOccurs="0"/>+ <xsd:element ref="DictionaryLineDesc" minOccurs="0"/>+ <xsd:element ref="DictionaryFillDesc" minOccurs="0"/>+ <xsd:element ref="DictionaryFont" minOccurs="0"/>+ <xsd:element ref="DictionaryStandard" minOccurs="0"/>+ <xsd:element ref="DictionaryUser" minOccurs="0"/>+ <xsd:element ref="DictionaryFirmware" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="roleRef" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="Contour" type="ContourType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="ContourType">+ <xsd:sequence>+ <xsd:element ref="Polygon"/>+ <xsd:element ref="Cutout" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Criteria" type="CriteriaType"/>+ <xsd:complexType name="CriteriaType">+ <xsd:sequence>+ <xsd:element ref="Property"/>+ <xsd:element ref="DfxMeasurement" minOccurs="1" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="measurementMode" type="measurementModeType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Cutout" type="PolygonType"/>+ <xsd:element name="Dfx" type="DfxType"/>+ <xsd:complexType name="DfxType">+ <xsd:sequence>+ <xsd:element ref="Criteria" minOccurs="0"/>+ <xsd:element ref="DfxQuery" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="category" type="dfxCategoryType" use="required"/>+ </xsd:complexType>+ <xsd:element name="DfxDetails" type="DfxDetailsType"/>+ <xsd:complexType name="DfxDetailsType">+ <xsd:sequence>+ <xsd:element ref="FeatureDescription" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Marker" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="EmbeddedRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="ExternalRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="DfxMeasurement" type="DfxMeasurementType"/>+ <xsd:complexType name="DfxMeasurementType">+ <xsd:sequence>+ <xsd:element ref="Property"/>+ <xsd:element ref="MeasurementPoint" maxOccurs="unbounded"/>+ <xsd:element ref="DfxDetails" minOccurs="0" maxOccurs="1"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="severity" type="xsd:string" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="DfxQuery" type="DfxQueryType"/>+ <xsd:complexType name="DfxQueryType">+ <xsd:sequence>+ <xsd:element ref="DfxDetails" minOccurs="0" maxOccurs="1"/>+ <xsd:element ref="DfxResponse" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="query" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="DfxResponse" type="DfxResponseType"/>+ <xsd:complexType name="DfxResponseType">+ <xsd:sequence>+ <xsd:element ref="DfxDetails" minOccurs="0" maxOccurs="1"/>+ </xsd:sequence>+ <xsd:attribute name="dfxMeasurementRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="response" type="dfxResponseChoices" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Diamond" type="DiamondType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="DiamondType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="width" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="DictionaryColor" type="DictionaryColorType"/>+ <xsd:complexType name="DictionaryColorType">+ <xsd:sequence>+ <xsd:element ref="EntryColor" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="DictionaryFirmware" type="DictionaryFirmwareType"/>+ <xsd:complexType name="DictionaryFirmwareType">+ <xsd:sequence>+ <xsd:element ref="EntryFirmware" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="DictionaryFont" type="DictionaryFontType"/>+ <xsd:complexType name="DictionaryFontType">+ <xsd:sequence>+ <xsd:element ref="EntryFont" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="units" type="unitsType" use="required"/>+ </xsd:complexType>+ <xsd:element name="DictionaryLineDesc" type="DictionaryLineDescType"/>+ <xsd:complexType name="DictionaryLineDescType">+ <xsd:sequence>+ <xsd:element ref="EntryLineDesc" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="units" type="unitsType" use="required"/>+ </xsd:complexType>+ <xsd:element name="DictionaryFillDesc" type="DictionaryFillDescType"/>+ <xsd:complexType name="DictionaryFillDescType">+ <xsd:sequence>+ <xsd:element ref="EntryFillDesc" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="units" type="unitsType" use="required"/>+ </xsd:complexType>+ <xsd:element name="DictionaryStandard" type="DictionaryStandardType"/>+ <xsd:complexType name="DictionaryStandardType">+ <xsd:sequence>+ <xsd:element ref="EntryStandard" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="units" type="unitsType" use="required"/>+ </xsd:complexType>+ <xsd:element name="DictionaryUser" type="DictionaryUserType"/>+ <xsd:complexType name="DictionaryUserType">+ <xsd:sequence>+ <xsd:element ref="EntryUser" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="units" type="unitsType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Donut" type="DonutType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="DonutType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="shape" type="donutShapeType" use="required"/>+ <xsd:attribute name="outerDiameter" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="innerDiameter" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Ecad" type="EcadType"/>+ <xsd:complexType name="EcadType">+ <xsd:sequence>+ <xsd:element ref="CadHeader"/>+ <xsd:element ref="CadData" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EdgeCoupled" type="EdgeCoupledType" substitutionGroup="TransmissionType"/>+ <xsd:complexType name="EdgeCoupledType">+ <xsd:sequence>+ <xsd:element ref="LineWidth"/>+ <xsd:element ref="LineGap"/>+ <xsd:element ref="RefPlane" minOccurs="0" maxOccurs="2"/>+ </xsd:sequence>+ <xsd:attribute name="structure" type="structureListType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Ellipse" type="EllipseType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="EllipseType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="width" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EmbeddedData" type="xsd:base64Binary"/>+ <xsd:element name="EmbeddedRef" type="EmbeddedRefType"/>+ <xsd:complexType name="EmbeddedRefType">+ <xsd:sequence>+ <xsd:element ref="EmbeddedData"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="embeddedType" type="embeddedTypeType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Enterprise" type="EnterpriseType"/>+ <xsd:complexType name="EnterpriseType">+ <xsd:attribute name="id" type="xsd:string" use="required"/>+ <xsd:attribute name="name" type="xsd:string"/>+ <xsd:attribute name="code" type="xsd:string" use="required"/>+ <xsd:attribute name="codeType" type="enterpriseCodeType"/>+ <xsd:attribute name="address1" type="xsd:string"/>+ <xsd:attribute name="address2" type="xsd:string"/>+ <xsd:attribute name="city" type="xsd:string"/>+ <xsd:attribute name="stateProvince" type="xsd:string"/>+ <xsd:attribute name="country" type="isoCodeType"/>+ <xsd:attribute name="postalCode" type="xsd:string"/>+ <xsd:attribute name="phone" type="xsd:string"/>+ <xsd:attribute name="fax" type="xsd:string"/>+ <xsd:attribute name="email" type="xsd:string"/>+ <xsd:attribute name="url" type="xsd:anyURI"/>+ </xsd:complexType>+ <xsd:element name="EntryColor" type="EntryColorType"/>+ <xsd:complexType name="EntryColorType">+ <xsd:sequence>+ <xsd:element ref="Color"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EntryFirmware" type="EntryFirmwareType"/>+ <xsd:complexType name="EntryFirmwareType">+ <xsd:sequence>+ <xsd:element ref="CachedFirmware"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EntryFont" type="EntryFontType"/>+ <xsd:complexType name="EntryFontType">+ <xsd:sequence>+ <xsd:element ref="FontDef"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EntryLineDesc" type="EntryLineDescType"/>+ <xsd:complexType name="EntryLineDescType">+ <xsd:sequence>+ <xsd:element ref="LineDesc"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EntryFillDesc" type="EntryFillDescType"/>+ <xsd:complexType name="EntryFillDescType">+ <xsd:sequence>+ <xsd:element ref="FillDesc"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EntryStandard" type="EntryStandardType"/>+ <xsd:complexType name="EntryStandardType">+ <xsd:sequence>+ <xsd:element ref="StandardPrimitive"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="EntryUser" type="EntryUserType"/>+ <xsd:complexType name="EntryUserType">+ <xsd:sequence>+ <xsd:element ref="UserPrimitive"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Enumerated" type="EnumeratedType"/>+ <xsd:complexType name="EnumeratedType">+ <xsd:attribute name="definitionSource" type="xsd:string"/>+ <xsd:attribute name="enumeratedCharacteristicName" type="xsd:string"/>+ <xsd:attribute name="enumeratedCharacteristicValue" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="ExternalRef" type="xsd:anyURI"/>+ <xsd:element name="Extrusion" type="ExtrusionType"/>+ <xsd:complexType name="ExtrusionType">+ <xsd:sequence>+ <xsd:element ref="Feature" minOccurs="1" maxOccurs="1"/>+ <xsd:element ref="Location" minOccurs="1" maxOccurs="1"/>+ <xsd:element ref="Xform" minOccurs="0" maxOccurs="1"/>+ </xsd:sequence>+ <xsd:attribute name="startHeight" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Feature" abstract="true"/>+ <xsd:element name="FeatureDescription" type="FeatureDescriptionType"/>+ <xsd:complexType name="FeatureDescriptionType">+ <xsd:sequence>+ <xsd:element ref="Feature" minOccurs="0" maxOccurs="1"/>+ <xsd:element ref="Xform" minOccurs="0" maxOccurs="1"/>+ <xsd:element ref="Location" minOccurs="0" maxOccurs="1"/>+ </xsd:sequence>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="pinRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="componentRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="packageRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="specRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="firmwareRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="padstackDefRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="netRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="stackupRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="bomRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="featureObject" type="featureObjectType" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ <!--xsd:attribute name = "featureRef" use = "required" type = "qualifiedNameType"/-->+ </xsd:complexType>+ <xsd:element name="Features" type="FeaturesType"/>+ <xsd:complexType name="FeaturesType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Feature"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Fiducial" abstract="true"/>+ <xsd:complexType name="FiducialType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location"/>+ <xsd:element ref="StandardShape"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="File" type="FileType"/>+ <xsd:element name="FileRevision" type="FileRevisionType"/>+ <xsd:complexType name="FileRevisionType">+ <xsd:sequence>+ <xsd:element ref="SoftwarePackage"/>+ </xsd:sequence>+ <xsd:attribute name="fileRevisionId" type="xsd:string" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="required"/>+ <xsd:attribute name="label" type="xsd:string"/>+ </xsd:complexType>+ <xsd:complexType name="FileType">+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ <xsd:attribute name="crc" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="Firmware" type="FirmwareType"/>+ <xsd:element name="FirmwareGroup" abstract="true"/>+ <xsd:element name="FirmwareRef" type="FirmwareRefType" substitutionGroup="FirmwareGroup"/>+ <xsd:complexType name="FirmwareRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:complexType name="FirmwareType">+ <xsd:sequence>+ <xsd:element ref="File"/>+ <xsd:element ref="FirmwareGroup"/>+ </xsd:sequence>+ <xsd:attribute name="progName" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="progVersion" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="FontDef" abstract="true"/>+ <xsd:element name="FontDefEmbedded" type="FontDefEmbeddedType" substitutionGroup="FontDef"/>+ <xsd:complexType name="FontDefEmbeddedType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup"/>+ <xsd:element ref="Glyph" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="FontDefExternal" type="FontDefExternalType" substitutionGroup="FontDef"/>+ <xsd:complexType name="FontDefExternalType">+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ <xsd:attribute name="urn" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="FontRef" type="FontRefType"/>+ <xsd:complexType name="FontRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="FunctionMode" type="FunctionModeType"/>+ <xsd:complexType name="FunctionModeType">+ <xsd:attribute name="mode" type="modeType" use="required"/>+ <xsd:attribute name="sectionKey" type="sectionKeyType" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="GlobalFiducial" type="FiducialType" substitutionGroup="Fiducial"/>+ <xsd:element name="Glyph" type="GlyphType"/>+ <xsd:complexType name="GlyphType">+ <xsd:sequence>+ <xsd:element ref="Simple" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="charCode" type="xsd:hexBinary" use="required"/>+ <xsd:attribute name="lowerLeftX" type="xsd:double" use="required"/>+ <xsd:attribute name="lowerLeftY" type="xsd:double" use="required"/>+ <xsd:attribute name="upperRightX" type="xsd:double" use="required"/>+ <xsd:attribute name="upperRightY" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="GoodPanelMark" type="FiducialType" substitutionGroup="Fiducial"/>+ <xsd:element name="Hexagon" type="HexagonType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="HexagonType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="length" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="HistoryRecord" type="HistoryRecordType"/>+ <xsd:complexType name="HistoryRecordType">+ <xsd:sequence>+ <xsd:element ref="FileRevision"/>+ <xsd:element ref="ChangeRec" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="number" type="historyNumberType" use="required"/>+ <xsd:attribute name="origination" type="xsd:dateTime" use="required"/>+ <xsd:attribute name="software" type="xsd:string" use="required"/>+ <xsd:attribute name="lastChange" type="xsd:dateTime" use="required"/>+ <xsd:attribute name="lifecyclePhase" type="xsd:string" use="optional"/>+ <xsd:attribute name="externalConfigurationEntryPoint" type="xsd:anyURI"/>+ </xsd:complexType>+ <xsd:element name="Hole" type="HoleType"/>+ <xsd:complexType name="HoleType">+ <xsd:sequence>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Xform" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="type" type="holeShapeType" use="optional" default="CIRCLE"/>+ <xsd:attribute name="diameter" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="platingStatus" type="platingStatusType" use="required"/>+ <xsd:attribute name="plusTol" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="minusTol" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="IPC-2581" type="IPC-2581Type">+ <xsd:key name="enterpriseKey">+ <xsd:selector xpath="tn:LogisticHeader/tn:Enterprise"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="enterpriseKeyRef" refer="enterpriseKey">+ <xsd:selector xpath=".//tn:AvlVendor"/>+ <xsd:field xpath="@enterpriseRef"/>+ </xsd:keyref>+ <xsd:key name="stepKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Step"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="stepKeyRef" refer="stepKey">+ <xsd:selector xpath=".//tn:StepRepeat|.//tn:BomHeader|.//tn:ConnectorMate|.//tn:ComponentPad|.//tn:PortConnect"/>+ <xsd:field xpath="@stepRef"/>+ </xsd:keyref>+ <xsd:keyref name="stepKeyRef2" refer="stepKey">+ <xsd:selector xpath=".//tn:StepRef"/>+ <xsd:field xpath="@name"/>+ </xsd:keyref>+ <xsd:key name="PackageKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Step/tn:Package"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="PackageKeyRef" refer="PackageKey">+ <xsd:selector xpath=".//tn:Component|.//tn:FeatureDescription"/>+ <xsd:field xpath="@packageRef"/>+ </xsd:keyref>+ <xsd:key name="BomKey">+ <xsd:selector xpath="tn:Bom"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="BomKeyRef" refer="BomKey">+ <xsd:selector xpath=".//tn:BomRef"/>+ <xsd:field xpath="@name"/>+ </xsd:keyref>+ <!-- Unrealistic requirement for unique names -->+ <xsd:key name="personKey">+ <xsd:selector xpath="tn:LogisticHeader/tn:Person"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="personKeyRef" refer="personKey">+ <xsd:selector xpath=".//tn:ChangeRec|.//tn:Approval"/>+ <xsd:field xpath="@personRef"/>+ </xsd:keyref>+ <xsd:key name="AvlKey">+ <xsd:selector xpath="tn:Avl"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="AvlKeyRef" refer="AvlKey">+ <xsd:selector xpath=".//tn:AvlRef"/>+ <xsd:field xpath="@name"/>+ </xsd:keyref>+ <xsd:key name="ColorKey">+ <xsd:selector xpath="tn:Content/tn:DictionaryColor/tn:EntryColor"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="ColorKeyRef" refer="ColorKey">+ <xsd:selector xpath=".//tn:ColorRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:key name="layerKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Layer"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="layerKeyRef" refer="layerKey">+ <!-- See also layerKeyRef2 -->+ <xsd:selector xpath=".//tn:Component|.//tn:FeatureDescription|.//tn:LayerFeature|.//tn:PhyNetPoint|.//tn:RefDes|.//tn:MatDes|.//tn:DocDes|.//tn:ToolDes|.//tn:WireBond"/>+ <xsd:field xpath="@layerRef"/>+ </xsd:keyref>+ <xsd:keyref name="layerKeyRef2" refer="layerKey">+ <!-- See also layerKeyRef -->+ <xsd:selector xpath=".//tn:LayerRef"/>+ <xsd:field xpath="@name"/>+ </xsd:keyref>+ <xsd:key name="StandardPrimitiveKey">+ <xsd:selector xpath="tn:Content/tn:DictionaryStandard/tn:EntryStandard"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="StandardPrimitiveKeyRef" refer="StandardPrimitiveKey">+ <xsd:selector xpath=".//tn:StandardPrimitiveRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:key name="UserPrimitiveKey">+ <xsd:selector xpath="tn:Content/tn:DictionaryUser/tn:EntryUser"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="UserPrimitiveKeyRef" refer="UserPrimitiveKey">+ <xsd:selector xpath=".//tn:UserPrimitiveRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:key name="FirmwareKey">+ <xsd:selector xpath="tn:Content/tn:DictionaryFirmware/tn:EntryFirmware"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="FirmwareKeyRef" refer="FirmwareKey">+ <xsd:selector xpath=".//tn:FirmwareRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:keyref name="FirmwareKeyRef2" refer="FirmwareKey">+ <xsd:selector xpath=".//tn:FeatureDescription"/>+ <xsd:field xpath="@firmwareRef"/>+ </xsd:keyref>+ <xsd:key name="FontKey">+ <xsd:selector xpath="tn:Content/tn:DictionaryFont/tn:EntryFont"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="FontKeyRef" refer="FontKey">+ <xsd:selector xpath=".//tn:FontRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:key name="LineDescKey">+ <xsd:selector xpath="tn:Content/tn:DictionaryLineDesc/tn:EntryLineDesc"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="LineDescKeyRef" refer="LineDescKey">+ <xsd:selector xpath=".//tn:LineDescRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:key name="RefDesKey">+ <xsd:selector xpath="tn:Bom/tn:BomItem/tn:RefDes"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="RefDesKeyRef" refer="RefDesKey">+ <xsd:selector xpath=".//tn:LogicalNetPin|.//tn:PinRef|.//tn:FeatureDescription"/>+ <xsd:field xpath="@componentRef"/>+ </xsd:keyref>+ <xsd:keyref name="RefDesKeyRef2" refer="RefDesKey">+ <xsd:selector xpath=".//tn:Component"/>+ <xsd:field xpath="@refDes"/>+ </xsd:keyref>+ <xsd:keyref name="RefDesKeyRef3" refer="RefDesKey">+ <xsd:selector xpath=".//tn:ConnectorMate|.//tn:ConnectorPad|.//tn:PortConnect|.//tn:WireBond"/>+ <xsd:field xpath="@compRef"/>+ </xsd:keyref>+ <xsd:key name="roleKey">+ <xsd:selector xpath="tn:LogisticHeader/tn:Role"/>+ <xsd:field xpath="@id"/>+ </xsd:key>+ <xsd:keyref name="roleKeyRef" refer="roleKey">+ <xsd:selector xpath=".//tn:Person"/>+ <xsd:field xpath="@roleRef"/>+ </xsd:keyref>+ <xsd:key name="bomItemKey">+ <xsd:selector xpath="tn:Bom/tn:BomItem"/>+ <xsd:field xpath="@OEMDesignNumberRef"/>+ </xsd:key>+ <xsd:key name="layerOrStackupGroupNameKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Stackup/tn:StackupGroup|tn:Ecad/tn:CadData/tn:Layer"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="layerOrGroupKeyRef" refer="layerOrStackupGroupNameKey">+ <xsd:selector xpath=".//tn:RefPlane|.//tn:ZoneLayer|.//tn:Property|.//tn:StackupLayer"/>+ <xsd:field xpath="@layerOrGroupRef"/>+ </xsd:keyref>+ <xsd:key name="stackupKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Stackup"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="stackupKeyRef" refer="stackupKey">+ <xsd:selector xpath=".//tn:Step|.//tn:StackupZone"/>+ <xsd:field xpath="@stackupRef"/>+ </xsd:keyref>+ <xsd:key name="specKey">+ <xsd:selector xpath="tn:Ecad/tn:CadHeader/tn:Spec"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="specKeyRef" refer="specKey">+ <xsd:selector xpath=".//tn:SpecRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:keyref name="specKeyRef2" refer="specKey">+ <xsd:selector xpath=".//tn:FeatureDescription"/>+ <xsd:field xpath="@specRef"/>+ </xsd:keyref>+ <xsd:key name="MatDesKey">+ <xsd:selector xpath="tn:Bom/tn:BomItem/tn:MatDes"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="MatDesKeyRef" refer="MatDesKey">+ <xsd:selector xpath=".//tn:Stackup|.//tn:StackupGroup|.//tn:StackupLayer|.//tn:Fill"/>+ <xsd:field xpath="@matDes"/>+ </xsd:keyref>+ <xsd:key name="PortKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Step/tn:Port"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="PortKeyRef" refer="PortKey">+ <xsd:selector xpath=".//tn:PortRef"/>+ <xsd:field xpath="@portName"/>+ </xsd:keyref>+ <xsd:key name="SlotCavityKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Step/tn:LayerFeature/tn:Set/tn:SlotCavity"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="SlotCavityKeyRef" refer="SlotCavityKey">+ <xsd:selector xpath=".//tn:SlotCavityRef"/>+ <xsd:field xpath="@id"/>+ </xsd:keyref>+ <xsd:key name="NetKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Step/tn:PhyNetGroup/tn:PhyNet|tn:Ecad/tn:CadData/tn:Step/tn:LogicalNet"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="NetKeyRef" refer="NetKey">+ <xsd:selector xpath=".//NetRef"/>+ <xsd:field xpath="@name"/>+ </xsd:keyref>+ <xsd:keyref name="NetKeyRef2" refer="NetKey">+ <xsd:selector xpath=".//FeatureDescription"/>+ <xsd:field xpath="@netRef"/>+ </xsd:keyref>+ <xsd:key name="PadStackDefKey">+ <xsd:selector xpath="tn:Ecad/tn:CadData/tn:Step/tn:PadStackDef"/>+ <xsd:field xpath="@name"/>+ </xsd:key>+ <xsd:keyref name="PadStackDefKeyRef" refer="PadStackDefKey">+ <xsd:selector xpath=".//tn:Pad|.//tn:FeatureDescription"/>+ <xsd:field xpath="@padstackDefRef"/>+ </xsd:keyref>+ </xsd:element>+ <xsd:complexType name="IPC-2581Type">+ <xsd:sequence>+ <xsd:element ref="Content"/>+ <xsd:element ref="LogisticHeader"/>+ <xsd:element ref="HistoryRecord"/>+ <xsd:element ref="Bom" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Ecad"/>+ <xsd:element ref="Avl" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="revision" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="Inset" type="InsetType"/>+ <xsd:complexType name="InsetType">+ <xsd:sequence>+ <xsd:element ref="StackupZoneRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="insetSize" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="LandPattern" type="LandPatternType"/>+ <xsd:complexType name="LandPatternType">+ <xsd:sequence>+ <xsd:element ref="Pad" maxOccurs="unbounded"/>+ <xsd:element ref="Target" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Layer" type="LayerType"/>+ <xsd:element name="LayerFeature" type="LayerFeatureType"/>+ <xsd:complexType name="LayerFeatureType">+ <xsd:sequence>+ <xsd:element ref="Set" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Model" type="ModelType"/>+ <xsd:complexType name="ModelType">+ <xsd:sequence>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="1"/>+ <xsd:element ref="Extrusion" minOccurs="1" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="PadstackHoleDef" type="PadstackHoleDefType"/>+ <xsd:complexType name="PadstackHoleDefType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="diameter" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="platingStatus" type="platingStatusType" use="required"/>+ <xsd:attribute name="plusTol" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="minusTol" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="PadstackPadDef" type="PadstackPadDefType"/>+ <xsd:complexType name="PadstackPadDefType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location"/>+ <xsd:element ref="Feature"/>+ </xsd:sequence>+ <xsd:attribute name="layerRef" use="required"/>+ <xsd:attribute name="padUse" use="required"/>+ <xsd:attribute name="comment" use="optional"/>+ </xsd:complexType>+ <xsd:element name="LayerRef" type="LayerRefType"/>+ <xsd:complexType name="LayerRefType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:complexType name="LayerType">+ <xsd:sequence>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Span" minOccurs="0"/>+ <xsd:element ref="Profile" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="layerFunction" type="layerFunctionType" use="required"/>+ <xsd:attribute name="side" type="sideType" use="required"/>+ <xsd:attribute name="polarity" type="polarityType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Line" type="LineType" substitutionGroup="Simple"/>+ <xsd:element name="LineDesc" type="LineDescType" substitutionGroup="LineDescGroup"/>+ <xsd:element name="LineDescGroup" abstract="true"/>+ <xsd:element name="LineDescRef" type="LineDescRefType" substitutionGroup="LineDescGroup"/>+ <xsd:complexType name="LineDescRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:complexType name="LineDescType">+ <xsd:attribute name="lineEnd" type="lineEndType" use="required"/>+ <xsd:attribute name="lineWidth" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="lineProperty" type="linePropertyType"/>+ </xsd:complexType>+ <xsd:complexType name="LineType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup"/>+ </xsd:sequence>+ <xsd:attribute name="startX" type="xsd:double" use="required"/>+ <xsd:attribute name="startY" type="xsd:double" use="required"/>+ <xsd:attribute name="endX" type="xsd:double" use="required"/>+ <xsd:attribute name="endY" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="FillDesc" type="FillDescType" substitutionGroup="FillDescGroup"/>+ <xsd:element name="FillDescGroup" abstract="true"/>+ <xsd:element name="FillDescRef" type="FillDescRefType" substitutionGroup="FillDescGroup"/>+ <xsd:complexType name="FillDescRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:complexType name="FillDescType">+ <xsd:sequence>+ <xsd:element ref="ColorGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="fillProperty" type="fillPropertyType" use="required"/>+ <xsd:attribute name="lineWidth" type="nonNegativeDoubleType"/>+ <xsd:attribute name="pitch1" type="nonNegativeDoubleType"/>+ <xsd:attribute name="pitch2" type="nonNegativeDoubleType"/>+ <xsd:attribute name="angle1" type="angleType"/>+ <xsd:attribute name="angle2" type="angleType"/>+ </xsd:complexType>+ <xsd:element name="LocalFiducial" type="FiducialType" substitutionGroup="Fiducial"/>+ <xsd:element name="Location" type="LocationType"/>+ <xsd:element name="PickupPoint" type="LocationType"/>+ <xsd:complexType name="LocationType">+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="LogicalNet" type="LogicalNetType"/>+ <xsd:complexType name="LogicalNetType">+ <xsd:sequence>+ <xsd:element ref="NonstandardAttribute" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="PinRef" maxOccurs="unbounded"/>+ <xsd:element ref="PortRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="netClass" type="netClassType"/>+ <xsd:attribute name="netPair" type="qualifiedNameType"/>+ </xsd:complexType>+ <xsd:element name="LogisticHeader" type="LogisticHeaderType"/>+ <xsd:complexType name="LogisticHeaderType">+ <xsd:sequence>+ <xsd:element ref="Role" maxOccurs="unbounded"/>+ <xsd:element ref="Enterprise" maxOccurs="unbounded"/>+ <xsd:element ref="Person" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Marking" type="MarkingType"/>+ <xsd:complexType name="MarkingType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location" minOccurs="0"/>+ <xsd:element ref="Feature"/>+ </xsd:sequence>+ <xsd:attribute name="markingUsage" type="markingUsageType"/>+ </xsd:complexType>+ <xsd:element name="Marker" type="MarkerType"/>+ <xsd:complexType name="MarkerType">+ <xsd:sequence>+ <xsd:element ref="LayerRef"/>+ <xsd:element ref="StandardPrimitive"/>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="MaterialCut" type="MaterialCutType" substitutionGroup="Z_AxisDim"/>+ <xsd:complexType name="MaterialCutType">+ <xsd:attribute name="depth" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="plusTol" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="minusTol" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="startCutLayer" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="MaterialLeft" type="MaterialLeftType" substitutionGroup="Z_AxisDim"/>+ <xsd:complexType name="MaterialLeftType">+ <xsd:attribute name="thickness" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="plusTol" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="minusTol" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="startCutLayer" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Measured" type="MeasuredType"/>+ <xsd:complexType name="MeasuredType">+ <xsd:attribute name="definitionSource" type="xsd:string"/>+ <xsd:attribute name="measuredCharacteristicName" type="xsd:string"/>+ <xsd:attribute name="measuredCharacteristicValue" type="xsd:double"/>+ <xsd:attribute name="engineeringUnitOfMeasure" type="xsd:string"/>+ <xsd:attribute name="engineeringNegativeTolerance" type="xsd:double"/>+ <xsd:attribute name="engineeringPositiveTolerance" type="xsd:double"/>+ </xsd:complexType>+ <xsd:element name="MeasurementPoint" type="MeasurementPointType"/>+ <xsd:complexType name="MeasurementPointType">+ <xsd:sequence>+ <xsd:element ref="LayerRef"/>+ <xsd:element ref="Location" minOccurs="1" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="OtherSideView" type="OtherSideViewType"/>+ <xsd:complexType name="OtherSideViewType">+ <xsd:sequence>+ <xsd:element ref="Outline" minOccurs="0"/>+ <xsd:element ref="SilkScreen" minOccurs="0"/>+ <xsd:element ref="AssemblyDrawing" minOccurs="0"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Modification" type="ModificationType"/>+ <xsd:complexType name="ModificationType">+ <xsd:attribute name="repairInfo" type="xsd:string"/>+ <xsd:attribute name="weldsPermitted" type="xsd:boolean"/>+ </xsd:complexType>+ <xsd:element name="Moire" type="MoireType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="MoireType">+ <xsd:attribute name="diameter" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="ringWidth" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="ringGap" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="ringNumber" type="xsd:nonNegativeInteger" use="required"/>+ <xsd:attribute name="lineWidth" type="nonNegativeDoubleType" default="0"/>+ <xsd:attribute name="lineLength" type="nonNegativeDoubleType"/>+ <xsd:attribute name="lineAngle" type="angleType"/>+ </xsd:complexType>+ <xsd:element name="NonstandardAttribute" type="NonstandardAttributeType"/>+ <xsd:complexType name="NonstandardAttributeType">+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ <xsd:attribute name="type" type="cadPropertyType" use="required"/>+ <xsd:attribute name="value" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="Octagon" type="OctagonType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="OctagonType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="length" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="NetShort" type="NetShortType"/>+ <xsd:complexType name="NetShortType">+ <xsd:sequence>+ <xsd:element ref="NetRef" minOccurs="2" maxOccurs="unbounded"/>+ <xsd:element ref="Location" minOccurs="1" maxOccurs="1"/>+ <xsd:element ref="LayerRef" minOccurs="1" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="id" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="NetRef" type="NetRefType"/>+ <xsd:complexType name="NetRefType">+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Outline" type="OutlineType" substitutionGroup="Simple"/>+ <xsd:complexType name="OutlineType">+ <xsd:sequence>+ <xsd:element ref="Polygon"/>+ <xsd:element ref="LineDescGroup"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Oval" type="OvalType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="OvalType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="width" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Package" type="PackageType"/>+ <xsd:complexType name="PackageType">+ <xsd:sequence>+ <xsd:element ref="Outline"/>+ <xsd:element ref="PickupPoint" minOccurs="0"/>+ <xsd:element ref="LandPattern" minOccurs="0"/>+ <xsd:element ref="SilkScreen" minOccurs="0"/>+ <xsd:element ref="AssemblyDrawing" minOccurs="0"/>+ <xsd:element ref="Pin" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Topside" minOccurs="0"/>+ <xsd:element ref="OtherSideView" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="type" type="packageTypeType" use="required"/>+ <xsd:attribute name="pinOne" type="xsd:string"/>+ <xsd:attribute name="pinOneOrientation" type="pinOneOrientationType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType"/>+ <xsd:attribute name="negativeBodyExtension" type="nonNegativeDoubleType"/>+ <xsd:attribute name="comment" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="Topside" type="PackageTopSideType"/>+ <xsd:complexType name="PackageTopSideType">+ <xsd:sequence>+ <xsd:element ref="Outline" minOccurs="0"/>+ <xsd:element ref="LandPattern" minOccurs="0"/>+ <xsd:element ref="SilkScreen" minOccurs="0"/>+ <xsd:element ref="AssemblyDrawing" minOccurs="0"/>+ <xsd:element ref="Pin" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Pad" type="PadType"/>+ <xsd:element name="PadStackDef" type="PadStackDefType"/>+ <xsd:complexType name="PadStackDefType">+ <xsd:sequence>+ <xsd:element ref="PadstackHoleDef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="PadstackPadDef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType"/>+ </xsd:complexType>+ <xsd:complexType name="PadType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location"/>+ <xsd:element ref="Feature"/>+ <xsd:element ref="PinRef" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="padstackDefRef" type="qualifiedNameType"/>+ </xsd:complexType>+ <xsd:element name="Person" type="PersonType"/>+ <xsd:complexType name="PersonType">+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ <xsd:attribute name="enterpriseRef" type="xsd:string" use="required"/>+ <xsd:attribute name="title" type="xsd:string"/>+ <xsd:attribute name="email" type="xsd:string"/>+ <xsd:attribute name="phone" type="xsd:string"/>+ <xsd:attribute name="fax" type="xsd:string"/>+ <xsd:attribute name="mailstop" type="xsd:string"/>+ <xsd:attribute name="publicKey" type="xsd:base64Binary"/>+ <xsd:attribute name="roleRef" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="PhyNet" type="PhyNetType"/>+ <xsd:element name="PhyNetGroup" type="PhyNetGroupType"/>+ <xsd:complexType name="PhyNetGroupType">+ <xsd:sequence>+ <xsd:element ref="PhyNet" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="optimized" type="xsd:boolean"/>+ </xsd:complexType>+ <xsd:element name="PhyNetPoint" type="PhyNetPointType"/>+ <xsd:complexType name="PhyNetPointType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Feature"/>+ <xsd:element ref="PortRef" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="secondaryLayerRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="netNode" type="netPointType" use="required"/>+ <xsd:attribute name="exposure" type="exposureType" use="required"/>+ <xsd:attribute name="layerIndex" type="xsd:string"/>+ <xsd:attribute name="comment" type="xsd:string"/>+ <xsd:attribute name="via" type="xsd:boolean"/>+ <xsd:attribute name="fiducial" type="xsd:boolean"/>+ <xsd:attribute name="test" type="xsd:boolean"/>+ <xsd:attribute name="staggerX" type="xsd:double"/>+ <xsd:attribute name="staggerY" type="xsd:double"/>+ <xsd:attribute name="staggerRadius" type="xsd:double"/>+ </xsd:complexType>+ <xsd:complexType name="PhyNetType">+ <xsd:sequence>+ <xsd:element ref="PhyNetPoint" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Pin" type="PinType"/>+ <xsd:complexType name="PinType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location" minOccurs="0"/>+ <xsd:element ref="StandardShape"/>+ </xsd:sequence>+ <xsd:attribute name="number" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="name" type="qualifiedNameType"/>+ <xsd:attribute name="type" type="cadPinType" use="required"/>+ <xsd:attribute name="electricalType" type="pinElectricalType"/>+ <xsd:attribute name="mountType" type="pinMountType"/>+ <xsd:attribute name="pinPolarity" type="pinPolarityType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="PinRef" type="PinRefType"/>+ <xsd:complexType name="PinRefType">+ <xsd:attribute name="componentRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="pin" type="xsd:string" use="required"/>+ <xsd:attribute name="title" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="PlatingThickness" type="LengthPropertyType"/>+ <xsd:element name="PlatingGap" type="LengthPropertyType"/>+ <xsd:element name="PolyBegin" type="PolyBeginType"/>+ <xsd:complexType name="PolyBeginType">+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="Polygon" type="PolygonType"/>+ <xsd:complexType name="PolygonType">+ <xsd:sequence>+ <xsd:element ref="PolyBegin"/>+ <xsd:element ref="PolyStep" minOccurs="1" maxOccurs="unbounded"/>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Polyline" type="PolylineType" substitutionGroup="Simple"/>+ <xsd:complexType name="PolylineType">+ <xsd:sequence>+ <xsd:element ref="PolyBegin"/>+ <xsd:element ref="PolyStep" minOccurs="1" maxOccurs="unbounded"/>+ <xsd:element ref="LineDescGroup"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="PolyStep" abstract="true"/>+ <xsd:element name="PolyStepCurve" type="PolyStepCurveType" substitutionGroup="PolyStep"/>+ <xsd:complexType name="PolyStepCurveType">+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ <xsd:attribute name="centerX" type="xsd:double" use="required"/>+ <xsd:attribute name="centerY" type="xsd:double" use="required"/>+ <xsd:attribute name="clockwise" type="xsd:boolean" use="required"/>+ </xsd:complexType>+ <xsd:element name="PolyStepSegment" type="PolyStepSegmentType" substitutionGroup="PolyStep"/>+ <xsd:complexType name="PolyStepSegmentType">+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="Port" type="PortDef"/>+ <xsd:complexType name="PortDef">+ <xsd:sequence>+ <xsd:element ref="PortType" minOccurs="1"/>+ <xsd:element ref="Location" minOccurs="0"/>+ <xsd:element ref="PortConnect" minOccurs="1" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="netType" type="netFunctionType"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="PortType" abstract="true"/>+ <xsd:element name="PortConnect" type="PortConnectType"/>+ <xsd:complexType name="PortConnectType">+ <xsd:sequence>+ <xsd:element ref="Location" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="portName" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="stepRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="compRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="pinRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="PortRef" type="PortRefType"/>+ <xsd:complexType name="PortRefType">+ <xsd:attribute name="portName" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Product" type="ProductType"/>+ <xsd:complexType name="ProductType">+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ <xsd:attribute name="criteria" type="productCriteriaType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="WireBond" type="WireBondType" substitutionGroup="PortType"/>+ <xsd:complexType name="WireBondType">+ <xsd:sequence>+ <xsd:element ref="WireHeight" minOccurs="0"/>+ <xsd:element ref="Location" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="layerRef" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="compRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="pinRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="ConnectorMate" type="ConnCompType" substitutionGroup="PortType"/>+ <xsd:element name="ComponentPad" type="ConnCompType" substitutionGroup="PortType"/>+ <xsd:complexType name="ConnCompType">+ <xsd:sequence>+ <xsd:element ref="Location" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="compRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="pinRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="WireHeight" type="LengthPropertyType"/>+ <xsd:element name="Ranged" type="RangedType"/>+ <xsd:complexType name="RangedType">+ <xsd:attribute name="definitionSource" type="xsd:string"/>+ <xsd:attribute name="rangedCharacteristicName" type="xsd:string"/>+ <xsd:attribute name="rangedCharacteristicLowerValue" type="xsd:double"/>+ <xsd:attribute name="rangedCharacteristicUpperValue" type="xsd:double"/>+ <xsd:attribute name="engineeringUnitOfMeasure" type="xsd:string"/>+ <xsd:attribute name="engineeringNegativeTolerance" type="xsd:double"/>+ <xsd:attribute name="engineeringPositiveTolerance" type="xsd:double"/>+ </xsd:complexType>+ <xsd:element name="RectCenter" type="RectCenterType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="RectCenterType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="width" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="RectCham" type="RectChamType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="RectChamType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="width" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="chamfer" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="upperRight" type="xsd:boolean"/>+ <xsd:attribute name="upperLeft" type="xsd:boolean"/>+ <xsd:attribute name="lowerLeft" type="xsd:boolean"/>+ <xsd:attribute name="lowerRight" type="xsd:boolean"/>+ </xsd:complexType>+ <xsd:element name="RectCorner" type="RectCornerType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="RectCornerType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="lowerLeftX" type="xsd:double" use="required"/>+ <xsd:attribute name="lowerLeftY" type="xsd:double" use="required"/>+ <xsd:attribute name="upperRightX" type="xsd:double" use="required"/>+ <xsd:attribute name="upperRightY" type="xsd:double" use="required"/>+ </xsd:complexType>+ <xsd:element name="RectRound" type="RectRoundType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="RectRoundType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="width" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="radius" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="upperRight" type="xsd:boolean"/>+ <xsd:attribute name="upperLeft" type="xsd:boolean"/>+ <xsd:attribute name="lowerLeft" type="xsd:boolean"/>+ <xsd:attribute name="lowerRight" type="xsd:boolean"/>+ </xsd:complexType>+ <xsd:element name="Role" type="RoleType"/>+ <xsd:complexType name="RoleType">+ <xsd:attribute name="id" type="xsd:string" use="required"/>+ <xsd:attribute name="roleFunction" type="roleFunctionType" use="required"/>+ <xsd:attribute name="description" type="xsd:string"/>+ <xsd:attribute name="publicKey" type="xsd:base64Binary"/>+ <xsd:attribute name="authority" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="Set" type="SetType"/>+ <xsd:complexType name="SetType">+ <xsd:choice minOccurs="0" maxOccurs="unbounded">+ <xsd:element ref="NonstandardAttribute" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Pad"/>+ <xsd:element ref="Fiducial"/>+ <xsd:element ref="Hole"/>+ <xsd:element ref="SlotCavity"/>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Features"/>+ <xsd:element ref="ColorGroup"/>+ <xsd:element ref="LineDescGroup"/>+ <xsd:element ref="NetShort"/>+ </xsd:choice>+ <xsd:attribute name="net" type="qualifiedNameType"/>+ <xsd:attribute name="netPair" type="qualifiedNameType"/>+ <xsd:attribute name="polarity" type="polarityType"/>+ <xsd:attribute name="padUsage" type="padUsageType"/>+ <xsd:attribute name="testPoint" type="xsd:boolean"/>+ <xsd:attribute name="geometry" type="xsd:string"/>+ <xsd:attribute name="plate" type="xsd:boolean"/>+ <xsd:attribute name="componentRef" type="xsd:string"/>+ <xsd:attribute name="geometryUsage" type="geometryUsageType"/>+ </xsd:complexType>+ <xsd:element name="SilkScreen" type="SilkScreenType"/>+ <xsd:complexType name="SilkScreenType">+ <xsd:sequence>+ <xsd:element ref="Outline" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Marking" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Simple" abstract="true" substitutionGroup="UserPrimitive"/>+ <xsd:element name="SlotCavity" type="SlotCavityType"/>+ <xsd:complexType name="SlotCavityType">+ <xsd:sequence>+ <xsd:element ref="Location"/>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Feature"/>+ <xsd:element ref="Z_AxisDim" minOccurs="0" maxOccurs="1"/>+ <xsd:element ref="Fill" minOccurs="0" maxOccurs="1"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="platingStatus" type="platingStatusType" use="required"/>+ <xsd:attribute name="plusTol" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="minusTol" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Fill" type="FillType"/>+ <xsd:complexType name="FillType">+ <xsd:sequence>+ <xsd:element ref="SpecRef"/>+ </xsd:sequence>+ <xsd:attribute name="depthRemaining" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="matDes" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="SoftwarePackage" type="SoftwarePackageType"/>+ <xsd:complexType name="SoftwarePackageType">+ <xsd:sequence>+ <xsd:element ref="Certification" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ <xsd:attribute name="vendor" type="xsd:string" use="required"/>+ <xsd:attribute name="revision" type="xsd:string" use="required"/>+ <xsd:attribute name="model" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="Span" type="SpanType"/>+ <xsd:complexType name="SpanType">+ <xsd:attribute name="fromLayer" type="qualifiedNameType"/>+ <xsd:attribute name="toLayer" type="qualifiedNameType"/>+ </xsd:complexType>+ <xsd:element name="SpecificationType" abstract="true"/>+ <xsd:element name="Backdrill" type="BackdrillType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="BackdrillType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="backdrillListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Dielectric" type="DielectricType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="DielectricType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="dielectricListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Conductor" type="ConductorType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="ConductorType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="material" type="conductorMaterialType" use="optional"/>+ <xsd:attribute name="foilType" type="foilTypeType" use="optional"/>+ <xsd:attribute name="type" type="conductorListType" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Compliance" type="ComplianceType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="ComplianceType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="complianceListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Technology" type="TechnologyType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="TechnologyType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="technologyListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="General" type="GeneralType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="GeneralType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="ColorGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="generalListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Temperature" type="TemperatureType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="TemperatureType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="temperatureListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="V_Cut" type="V_CutType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="V_CutType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="vCutListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Tool" type="ToolType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="ToolType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="toolListType" use="required"/>+ <xsd:attribute name="toolProperty" type="toolPropertyListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Impedance" type="ImpedanceType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="ImpedanceType">+ <xsd:sequence>+ <xsd:element ref="TransmissionType" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="value" type="xsd:double" use="required"/>+ <xsd:attribute name="tolPlus" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="tolMinus" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="tolPercent" type="xsd:boolean" use="optional" default="false"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Thieving" type="ThievingType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="ThievingType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="thievingListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="EdgeChamfer" type="EdgeChamferType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="EdgeChamferType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="edgeChamferListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="EdgePlating" type="EdgePlatingType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="EdgePlatingType">+ <xsd:sequence>+ <xsd:element ref="PlatingThickness" minOccurs="0" maxOccurs="2"/>+ <xsd:element ref="PlatingGap" minOccurs="0" maxOccurs="2"/>+ <xsd:element ref="SurfaceFinish" minOccurs="0" maxOccurs="2"/>+ </xsd:sequence>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="SecondaryDrill" type="SecondaryDrillType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="SecondaryDrillType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="secondaryDrillListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="SurfaceFinish" type="SurfaceFinishType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="SurfaceFinishType">+ <xsd:sequence>+ <xsd:element ref="Product" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="surfaceFinishType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Flex" type="FlexType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="FlexType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="flexListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Loss" type="LossType" substitutionGroup="SpecificationType"/>+ <xsd:complexType name="LossType">+ <xsd:sequence>+ <xsd:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="type" type="lossListType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="LineGap" abstract="true"/>+ <xsd:element name="TransmissionType" abstract="true"/>+ <xsd:element name="Spacing" type="LengthPropertyType" substitutionGroup="LineGap"/>+ <xsd:element name="Pitch" type="LengthPropertyType" substitutionGroup="LineGap"/>+ <xsd:element name="LineWidth" type="LengthPropertyType"/>+ <xsd:element name="CoplanarGroundSpacing" type="LengthPropertyType"/>+ <xsd:element name="Offset" type="LengthPropertyType"/>+ <xsd:complexType name="LengthPropertyType">+ <xsd:attribute name="value" type="xsd:double"/>+ <xsd:attribute name="unit" type="lengthUnitType"/>+ <xsd:attribute name="tolPlus" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="tolMinus" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="tolPercent" type="xsd:boolean" use="optional" default="false"/>+ <xsd:attribute name="constraintType" type="constraintTypeType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="RefPlane" type="RefPlaneType"/>+ <xsd:element name="PairLayerRef" type="RefPlaneType"/>+ <xsd:complexType name="RefPlaneType">+ <xsd:attribute name="layerOrGroupRef" type="qualifiedNameType"/>+ </xsd:complexType>+ <xsd:element name="BroadsideCoupled" type="BroadsideCoupledType" substitutionGroup="TransmissionType"/>+ <xsd:complexType name="BroadsideCoupledType">+ <xsd:sequence>+ <xsd:element ref="LineWidth"/>+ <xsd:element ref="Offset" minOccurs="0"/>+ <xsd:element ref="PairLayerRef"/>+ <xsd:element ref="RefPlane" minOccurs="0" maxOccurs="2"/>+ </xsd:sequence>+ <xsd:attribute name="structure" type="broadsideListType" use="required"/>+ </xsd:complexType>+ <xsd:element name="SingleEnded" type="SingleEndedType" substitutionGroup="TransmissionType"/>+ <xsd:complexType name="SingleEndedType">+ <xsd:sequence>+ <xsd:element ref="LineWidth"/>+ <xsd:element ref="RefPlane" minOccurs="0" maxOccurs="2"/>+ </xsd:sequence>+ <xsd:attribute name="structure" type="structureListType" use="required"/>+ </xsd:complexType>+ <xsd:element name="CoplanarWaveguide" type="CoplanarWaveguideType" substitutionGroup="TransmissionType"/>+ <xsd:complexType name="CoplanarWaveguideType">+ <xsd:sequence>+ <xsd:element ref="LineWidth"/>+ <xsd:element ref="LineGap"/>+ <xsd:element ref="CoplanarGroundSpacing"/>+ <xsd:element ref="RefPlane" minOccurs="0" maxOccurs="2"/>+ </xsd:sequence>+ <xsd:attribute name="structure" type="coplanarListType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Property" type="PropertyType"/>+ <xsd:complexType name="PropertyType">+ <xsd:attribute name="name" type="xsd:string" use="optional"/>+ <xsd:attribute name="value" type="xsd:double" use="optional"/>+ <xsd:attribute name="text" type="xsd:string" use="optional"/>+ <xsd:attribute name="unit" type="propertyUnitType" use="optional"/>+ <xsd:attribute name="tolPlus" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="tolMinus" type="nonNegativeDoubleType" use="optional"/>+ <xsd:attribute name="tolPercent" type="xsd:boolean" use="optional" default="false"/>+ <xsd:attribute name="refUnit" type="propertyUnitType" use="optional"/>+ <xsd:attribute name="refValue" type="xsd:double" use="optional"/>+ <xsd:attribute name="refText" type="xsd:string" use="optional"/>+ <xsd:attribute name="layerOrGroupRef" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Spec" type="SpecType"/>+ <xsd:complexType name="SpecType">+ <xsd:sequence>+ <xsd:element ref="SpecificationType" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location" minOccurs="0"/>+ <xsd:element ref="Outline" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="Stackup" type="StackupType"/>+ <xsd:complexType name="StackupType">+ <xsd:sequence>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="StackupGroup" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="overallThickness" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolPlus" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolMinus" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolPercent" type="xsd:boolean" use="optional" default="false"/>+ <xsd:attribute name="whereMeasured" type="whereMeasuredType" use="required"/>+ <xsd:attribute name="matDes" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="stackupStatus" type="stackupStatusType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="StackupGroup" type="StackupGroupType"/>+ <xsd:complexType name="StackupGroupType">+ <xsd:sequence>+ <xsd:element ref="StackupLayer" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="CADDataLayerRef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="thickness" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolPlus" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolMinus" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolPercent" type="xsd:boolean" use="optional" default="false"/>+ <xsd:attribute name="matDes" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="StackupLayer" type="StackupLayerType"/>+ <xsd:complexType name="StackupLayerType">+ <xsd:sequence>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="layerOrGroupRef" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="thickness" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolPlus" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolMinus" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="tolPercent" type="xsd:boolean" use="optional" default="false"/>+ <xsd:attribute name="sequence" type="nonNegativeDoubleType"/>+ <xsd:attribute name="matDes" type="qualifiedNameType" use="optional"/>+ <xsd:attribute name="comment" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="CADDataLayerRef" type="CADDataLayerRefType"/>+ <xsd:complexType name="CADDataLayerRefType">+ <xsd:attribute name="layerId" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="SlotCavityRef" type="SlotCavityRefType"/>+ <xsd:complexType name="SlotCavityRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="SpecRef" type="SpecRefType"/>+ <xsd:complexType name="SpecRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="StackupZone" type="StackupZoneType"/>+ <xsd:complexType name="StackupZoneType">+ <xsd:sequence>+ <xsd:element ref="Profile"/>+ <xsd:element ref="ZoneLayer" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="SpecRef" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="stackupRef" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="comment" type="xsd:string" use="optional"/>+ </xsd:complexType>+ <xsd:element name="StackupZoneRef" type="StackupZoneRefType"/>+ <xsd:complexType name="StackupZoneRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="StandardPrimitive" abstract="true" substitutionGroup="StandardShape"/>+ <xsd:element name="StandardPrimitiveRef" type="StandardPrimitiveRefType" substitutionGroup="StandardShape"/>+ <xsd:complexType name="StandardPrimitiveRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="StandardShape" abstract="true" substitutionGroup="Feature"/>+ <xsd:element name="Step" type="StepType"/>+ <xsd:element name="StepRef" type="StepRefType"/>+ <xsd:complexType name="StepRefType">+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ </xsd:complexType>+ <xsd:element name="StepRepeat" type="StepRepeatType"/>+ <xsd:complexType name="StepRepeatType">+ <xsd:attribute name="stepRef" type="xsd:string" use="required"/>+ <xsd:attribute name="x" type="xsd:double" use="required"/>+ <xsd:attribute name="y" type="xsd:double" use="required"/>+ <xsd:attribute name="nx" type="xsd:nonNegativeInteger" use="required"/>+ <xsd:attribute name="ny" type="xsd:nonNegativeInteger" use="required"/>+ <xsd:attribute name="dx" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="dy" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="angle" type="angleType" use="required"/>+ <xsd:attribute name="mirror" type="xsd:boolean" use="required"/>+ </xsd:complexType>+ <xsd:element name="Datum" type="LocationType"/>+ <xsd:element name="Profile" type="ContourType"/>+ <xsd:complexType name="StepType">+ <xsd:sequence>+ <xsd:element ref="NonstandardAttribute" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="PadStackDef" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Datum"/>+ <xsd:element ref="Profile" minOccurs="0"/>+ <xsd:element ref="StepRepeat" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Package" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Component" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="LogicalNet" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="PhyNetGroup" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="LayerFeature" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="BendArea" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="StackupZone" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Port" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Model" minOccurs="0" maxOccurs="unbounded"/>+ <xsd:element ref="Dfx" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="name" type="xsd:string" use="required"/>+ <xsd:attribute name="type" type="stepType" use="optional"/>+ <xsd:attribute name="stackupRef" type="qualifiedNameType" use="optional"/>+ </xsd:complexType>+ <xsd:element name="Target" type="TargetType"/>+ <xsd:complexType name="TargetType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="Location"/>+ <xsd:element ref="StandardShape"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Text" type="TextType" substitutionGroup="UserPrimitive"/>+ <xsd:complexType name="TextType">+ <xsd:sequence>+ <xsd:element ref="Xform" minOccurs="0"/>+ <xsd:element ref="BoundingBox"/>+ <xsd:element ref="FontRef" minOccurs="0"/>+ <xsd:element ref="ColorGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="textString" type="xsd:string" use="required"/>+ <xsd:attribute name="fontSize" type="xsd:positiveInteger" use="required"/>+ </xsd:complexType>+ <xsd:element name="Textual" type="TextualType"/>+ <xsd:complexType name="TextualType">+ <xsd:attribute name="definitionSource" type="xsd:string"/>+ <xsd:attribute name="textualCharacteristicName" type="xsd:string"/>+ <xsd:attribute name="textualCharacteristicValue" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="Thermal" type="ThermalType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="ThermalType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="shape" type="thermalShapeType" use="required"/>+ <xsd:attribute name="outerDiameter" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="innerDiameter" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="spokeCount" type="spokeCountType" default="4"/>+ <xsd:attribute name="spokeWidth" type="nonNegativeDoubleType"/>+ <xsd:attribute name="spokeStartAngle" type="angleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Triangle" type="TriangleType" substitutionGroup="StandardPrimitive"/>+ <xsd:complexType name="TriangleType">+ <xsd:sequence>+ <xsd:element ref="LineDescGroup" minOccurs="0"/>+ <xsd:element ref="FillDescGroup" minOccurs="0"/>+ </xsd:sequence>+ <xsd:attribute name="base" type="nonNegativeDoubleType" use="required"/>+ <xsd:attribute name="height" type="nonNegativeDoubleType" use="required"/>+ </xsd:complexType>+ <xsd:element name="Tuning" type="TuningType"/>+ <xsd:complexType name="TuningType">+ <xsd:attribute name="value" type="qualifiedNameType" use="required"/>+ <xsd:attribute name="comments" type="xsd:string"/>+ </xsd:complexType>+ <xsd:element name="UserPrimitive" abstract="true" substitutionGroup="UserShape"/>+ <xsd:element name="UserPrimitiveRef" type="UserPrimitiveRefType" substitutionGroup="UserShape"/>+ <xsd:complexType name="UserPrimitiveRefType">+ <xsd:attribute name="id" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+ <xsd:element name="UserShape" abstract="true" substitutionGroup="Feature"/>+ <xsd:element name="UserSpecial" type="UserSpecialType" substitutionGroup="UserPrimitive"/>+ <xsd:complexType name="UserSpecialType">+ <xsd:sequence>+ <xsd:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ </xsd:complexType>+ <xsd:element name="Xform" type="XformType"/>+ <xsd:complexType name="XformType">+ <xsd:attribute name="xOffset" type="xsd:double"/>+ <xsd:attribute name="yOffset" type="xsd:double"/>+ <xsd:attribute name="rotation" type="nonNegativeDoubleType"/>+ <xsd:attribute name="mirror" type="xsd:boolean" default="false"/>+ <xsd:attribute name="faceUp" type="xsd:boolean" default="false"/>+ <xsd:attribute name="scale" type="scaleType"/>+ </xsd:complexType>+ <xsd:element name="Z_AxisDim" abstract="true"/>+ <xsd:element name="ZoneLayer" type="ZoneLayerType"/>+ <xsd:complexType name="ZoneLayerType">+ <xsd:sequence>+ <xsd:element ref="Inset" minOccurs="0" maxOccurs="unbounded"/>+ </xsd:sequence>+ <xsd:attribute name="layerOrGroupRef" type="qualifiedNameType" use="required"/>+ </xsd:complexType>+</xsd:schema>
tests/fixtures/README.mdadded+5@@ -0,0 +1,5 @@+# Test fixtures++- `IPC-2581C.xsd`: the IPC-2581 revision C schema, as KiCad carries it in its QA data+ (`qa/data/pcbnew/ipc2581/IPC-2581C.xsd`). `tests/test_routing.py` validates `fusion_export_ipc2581` output+ against it when lxml is installed.
tests/reports/verb-test-2026-10-27_1635.jsonadded+1637@@ -0,0 +1,1637 @@+{+ "date": "2026-10-27_1635",+ "target": "DESKTOP-BAR6S0F",+ "tier": "daily",+ "pass": 121,+ "fail": 5,+ "sections": {+ "bridge-lifecycle": {+ "PASS": 16,+ "FAIL": 0,+ "MANUAL": 17,+ "SKIP": 0+ },+ "auth-tokens": {+ "PASS": 2,+ "FAIL": 1,+ "MANUAL": 5,+ "SKIP": 0+ },+ "gui-driving": {+ "PASS": 20,+ "FAIL": 0,+ "MANUAL": 25,+ "SKIP": 0+ },+ "aps": {+ "PASS": 5,+ "FAIL": 4,+ "MANUAL": 15,+ "SKIP": 0+ },+ "mcp-server": {+ "PASS": 1,+ "FAIL": 0,+ "MANUAL": 1,+ "SKIP": 0+ },+ "cad-3d-bom": {+ "PASS": 16,+ "FAIL": 0,+ "MANUAL": 10,+ "SKIP": 0+ },+ "python-addin": {+ "PASS": 6,+ "FAIL": 0,+ "MANUAL": 1,+ "SKIP": 0+ },+ "routing": {+ "PASS": 50,+ "FAIL": 0,+ "MANUAL": 39,+ "SKIP": 0+ },+ "exports": {+ "PASS": 5,+ "FAIL": 0,+ "MANUAL": 2,+ "SKIP": 0+ }+ },+ "results": [+ {+ "verb": "fusion_readiness",+ "status": "PASS",+ "why": "",+ "sec": 0.3,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_prewarm",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_account",+ "status": "PASS",+ "why": "",+ "sec": 2.6,+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_claim_seat",+ "status": "MANUAL",+ "why": "moves the Autodesk seat between machines; suspends another box's Fusion",+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_release_seat",+ "status": "MANUAL",+ "why": "closes Fusion on the box to free the seat",+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_describe",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_get_app_state",+ "status": "PASS",+ "why": "",+ "sec": 0.2,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_search_cloud_files",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "aps"+ },+ {+ "verb": "fusion_walk_cloud_tree",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "aps"+ },+ {+ "verb": "fusion_aps_status",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_aps_get_browser",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "aps"+ },+ {+ "verb": "fusion_aps_search",+ "status": "FAIL",+ "why": "expected success, got error=Not signed in to APS. code=aps_not_signed_in; expected >0 results",+ "sec": 3.1,+ "section": "aps"+ },+ {+ "verb": "fusion_aps_recent",+ "status": "FAIL",+ "why": "expected success, got error=Not signed in to APS. code=aps_not_signed_in; expected >0 results",+ "sec": 0.0,+ "section": "aps"+ },+ {+ "verb": "fusion_aps_browse",+ "status": "FAIL",+ "why": "expected success, got error=Not signed in to APS. code=aps_not_signed_in; missing field 'hubs'",+ "sec": 0.0,+ "section": "aps"+ },+ {+ "verb": "fusion_aps_file_info",+ "status": "FAIL",+ "why": "expected success, got error=Not signed in to APS. code=aps_not_signed_in; missing field 'versionCount'",+ "sec": 0.0,+ "section": "aps"+ },+ {+ "verb": "fusion_aps_get",+ "status": "FAIL",+ "why": "expected success, got error= code=None",+ "sec": 0.0,+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_uninstall",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_set_seat_takeover",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_aps_create_folder",+ "status": "MANUAL",+ "why": "needs projectId/parentFolderId of the test workspace",+ "section": "aps"+ },+ {+ "verb": "fusion_aps_upload",+ "status": "MANUAL",+ "why": "cloud write; exercised via build flows weekly",+ "section": "aps"+ },+ {+ "verb": "fusion_aps_set_client_id",+ "status": "MANUAL",+ "why": "would clobber org auth config",+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_aps_set_browser",+ "status": "MANUAL",+ "why": "",+ "section": "aps"+ },+ {+ "verb": "fusion_aps_forget_browser",+ "status": "MANUAL",+ "why": "",+ "section": "aps"+ },+ {+ "verb": "fusion_aps_signin",+ "status": "MANUAL",+ "why": "opens a browser on the user's machine",+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_start",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_get_preferences",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_set_preference",+ "status": "PASS",+ "why": "",+ "sec": 1.1,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_mcp_status",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "mcp-server"+ },+ {+ "verb": "fusion_mcp_enable",+ "status": "MANUAL",+ "why": "drives the prefs UI, takes foreground",+ "section": "mcp-server"+ },+ {+ "verb": "fusion_prefs_open",+ "status": "MANUAL",+ "why": "opens a dialog on the user's screen",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_prefs_close",+ "status": "MANUAL",+ "why": "",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_set_auto_update",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_assembly_bom",+ "status": "PASS",+ "why": "",+ "sec": 1.3,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_dismiss_blocking_dialogs",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_open_cloud_file",+ "status": "PASS",+ "why": "",+ "sec": 9.6,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_show_schematic",+ "status": "PASS",+ "why": "",+ "sec": 2.3,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_show_2d_board",+ "status": "PASS",+ "why": "",+ "sec": 4.3,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_board_info",+ "status": "PASS",+ "why": "",+ "sec": 0.6,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_open_electronics",+ "status": "PASS",+ "why": "",+ "sec": 0.3,+ "section": "python-addin"+ },+ {+ "verb": "fusion_routing_state",+ "status": "PASS",+ "why": "",+ "sec": 2.3,+ "section": "routing"+ },+ {+ "verb": "fusion_layer_stack",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_netlist",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_pour_state",+ "status": "PASS",+ "why": "",+ "sec": 2.0,+ "section": "routing"+ },+ {+ "verb": "fusion_component_data",+ "status": "PASS",+ "why": "",+ "sec": 2.0,+ "section": "routing"+ },+ {+ "verb": "fusion_component_pins",+ "status": "PASS",+ "why": "",+ "sec": 2.1,+ "section": "routing"+ },+ {+ "verb": "fusion_list_nets",+ "status": "PASS",+ "why": "",+ "sec": 2.1,+ "section": "routing"+ },+ {+ "verb": "fusion_net_connections",+ "status": "PASS",+ "why": "",+ "sec": 2.1,+ "section": "routing"+ },+ {+ "verb": "fusion_list_designators",+ "status": "PASS",+ "why": "",+ "sec": 2.0,+ "section": "routing"+ },+ {+ "verb": "fusion_layers",+ "status": "PASS",+ "why": "",+ "sec": 2.0,+ "section": "routing"+ },+ {+ "verb": "fusion_copper_layers",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "routing"+ },+ {+ "verb": "fusion_layers_in_use",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_read_rules",+ "status": "PASS",+ "why": "",+ "sec": 2.1,+ "section": "routing"+ },+ {+ "verb": "fusion_rules_by_kind",+ "status": "PASS",+ "why": "",+ "sec": 1.7,+ "section": "routing"+ },+ {+ "verb": "fusion_silk_state",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_net_classes",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_board_summary",+ "status": "PASS",+ "why": "",+ "sec": 0.4,+ "section": "routing"+ },+ {+ "verb": "fusion_zoom_to",+ "status": "PASS",+ "why": "",+ "sec": 2.4,+ "section": "routing"+ },+ {+ "verb": "fusion_select_net",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "routing"+ },+ {+ "verb": "fusion_set_layer_visibility#hide",+ "status": "PASS",+ "why": "",+ "sec": 2.3,+ "section": "routing"+ },+ {+ "verb": "fusion_set_layer_visibility#show",+ "status": "PASS",+ "why": "",+ "sec": 2.5,+ "section": "routing"+ },+ {+ "verb": "fusion_board_outline",+ "status": "PASS",+ "why": "",+ "sec": 2.0,+ "section": "routing"+ },+ {+ "verb": "fusion_run_erc",+ "status": "PASS",+ "why": "",+ "sec": 5.4,+ "section": "routing"+ },+ {+ "verb": "fusion_status",+ "status": "PASS",+ "why": "",+ "sec": 0.2,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_check_dialogs",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_dialog_log",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_signin_status",+ "status": "PASS",+ "why": "",+ "sec": 2.7,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_license_status",+ "status": "PASS",+ "why": "",+ "sec": 2.6,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_list_commands",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_save",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias: the same verb as its target, which carries the tests",+ "section": "aps"+ },+ {+ "verb": "fusion_run_script",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias: the same verb as its target, which carries the tests",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_run_command",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias: the same verb as its target, which carries the tests",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_open_document",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias: the same verb as its target, which carries the tests",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_show_3d_chip",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias: the same verb as its target, which carries the tests",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_sch_items",+ "status": "PASS",+ "why": "",+ "sec": 5.4,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_pins",+ "status": "PASS",+ "why": "",+ "sec": 4.8,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_trace_point",+ "status": "PASS",+ "why": "",+ "sec": 4.8,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_page",+ "status": "PASS",+ "why": "",+ "sec": 4.6,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_hierarchy",+ "status": "PASS",+ "why": "",+ "sec": 5.2,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_sheet_pins",+ "status": "PASS",+ "why": "",+ "sec": 4.8,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_connect_pins#dry",+ "status": "PASS",+ "why": "",+ "sec": 4.7,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_fix_connectivity",+ "status": "PASS",+ "why": "",+ "sec": 4.3,+ "section": "routing"+ },+ {+ "verb": "fusion_render_schematic",+ "status": "PASS",+ "why": "",+ "sec": 8.0,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_update_from_library#refuse",+ "status": "PASS",+ "why": "",+ "sec": 4.6,+ "section": "routing"+ },+ {+ "verb": "fusion_sch_text",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_junction",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_delete_wire",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_connect_pins",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_split_wire",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_bus",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_edit_label",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_move_region",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_bus_entry",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_connect_to_bus",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_reset_fields",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_sch_create",+ "status": "MANUAL",+ "why": "schematic edit: tested live on a scratch import of BQ25792 (never the cloud design)",+ "section": "routing"+ },+ {+ "verb": "fusion_update_board_from_eagle#guard",+ "status": "PASS",+ "why": "",+ "sec": 2.0,+ "section": "routing"+ },+ {+ "verb": "fusion_update_board_from_eagle",+ "status": "MANUAL",+ "why": "writes a saved design: tested live on fl-sync-test in Default Project / fusion-lane-tests (#125 item 4)",+ "section": "routing"+ },+ {+ "verb": "fusion_export_dxf#board",+ "status": "PASS",+ "why": "",+ "sec": 2.1,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_plan_route#standard",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_render_board_3d",+ "status": "PASS",+ "why": "",+ "sec": 4.1,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_remove_graphics#dry",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "routing"+ },+ {+ "verb": "fusion_align_parts#dry",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_remove_parts#dry",+ "status": "PASS",+ "why": "",+ "sec": 1.6,+ "section": "routing"+ },+ {+ "verb": "fusion_edit_parts#dry",+ "status": "PASS",+ "why": "",+ "sec": 1.5,+ "section": "routing"+ },+ {+ "verb": "fusion_edit_parts",+ "status": "MANUAL",+ "why": "edits a design, writes files or closes documents: tested live on scratch imports and fl-sync-test",+ "section": "routing"+ },+ {+ "verb": "fusion_align_parts",+ "status": "MANUAL",+ "why": "edits a design, writes files or closes documents: tested live on scratch imports and fl-sync-test",+ "section": "routing"+ },+ {+ "verb": "fusion_remove_graphics",+ "status": "MANUAL",+ "why": "edits a design, writes files or closes documents: tested live on scratch imports and fl-sync-test",+ "section": "routing"+ },+ {+ "verb": "fusion_remove_parts",+ "status": "MANUAL",+ "why": "edits a design, writes files or closes documents: tested live on scratch imports and fl-sync-test",+ "section": "routing"+ },+ {+ "verb": "fusion_generate_body",+ "status": "MANUAL",+ "why": "edits a design, writes files or closes documents: tested live on scratch imports and fl-sync-test",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_library_views",+ "status": "MANUAL",+ "why": "edits a design, writes files or closes documents: tested live on scratch imports and fl-sync-test",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_copper_balance",+ "status": "PASS",+ "why": "",+ "sec": 1.7,+ "section": "routing"+ },+ {+ "verb": "fusion_return_path",+ "status": "PASS",+ "why": "",+ "sec": 1.7,+ "section": "routing"+ },+ {+ "verb": "fusion_impedance",+ "status": "PASS",+ "why": "",+ "sec": 1.6,+ "section": "routing"+ },+ {+ "verb": "fusion_current_capacity",+ "status": "PASS",+ "why": "",+ "sec": 1.6,+ "section": "routing"+ },+ {+ "verb": "fusion_fab_check",+ "status": "PASS",+ "why": "",+ "sec": 1.8,+ "section": "routing"+ },+ {+ "verb": "fusion_export_odb",+ "status": "PASS",+ "why": "",+ "sec": 2.9,+ "section": "exports"+ },+ {+ "verb": "fusion_export_ipc356",+ "status": "PASS",+ "why": "",+ "sec": 1.6,+ "section": "exports"+ },+ {+ "verb": "fusion_export_gencad",+ "status": "PASS",+ "why": "",+ "sec": 1.5,+ "section": "exports"+ },+ {+ "verb": "fusion_export_ipc2581",+ "status": "PASS",+ "why": "",+ "sec": 1.6,+ "section": "exports"+ },+ {+ "verb": "fusion_export_bom#parts",+ "status": "PASS",+ "why": "",+ "sec": 2.8,+ "section": "exports"+ },+ {+ "verb": "fusion_list_text_commands",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "python-addin"+ },+ {+ "verb": "fusion_execute_text_command",+ "status": "PASS",+ "why": "",+ "sec": 2.0,+ "section": "python-addin"+ },+ {+ "verb": "fusion_bodies",+ "status": "PASS",+ "why": "",+ "sec": 11.4,+ "section": "routing"+ },+ {+ "verb": "fusion_show_3d_board",+ "status": "PASS",+ "why": "",+ "sec": 5.6,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_inspect_bodies",+ "status": "PASS",+ "why": "",+ "sec": 2.3,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_physical_properties",+ "status": "PASS",+ "why": "",+ "sec": 0.2,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_get_design_info",+ "status": "PASS",+ "why": "",+ "sec": 0.7,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_get_parameters",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_document_info",+ "status": "PASS",+ "why": "",+ "sec": 1.0,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_delete_cloud_file#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "aps"+ },+ {+ "verb": "fusion_delete_cloud_file",+ "status": "MANUAL",+ "why": "destructive cloud delete; only against files a rehearsal created",+ "section": "aps"+ },+ {+ "verb": "fusion_create_cloud_folder",+ "status": "MANUAL",+ "why": "cloud write into the team hub",+ "section": "aps"+ },+ {+ "verb": "fusion_set_parameter#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_set_parameter",+ "status": "MANUAL",+ "why": "mutates the active design's parameters",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_run_modeling_script#guard",+ "status": "PASS",+ "why": "",+ "sec": 2.3,+ "section": "python-addin"+ },+ {+ "verb": "fusion_assembly_bom#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.4,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_run_modeling_script",+ "status": "PASS",+ "why": "",+ "sec": 1.7,+ "section": "python-addin"+ },+ {+ "verb": "fusion_electron_select",+ "status": "MANUAL",+ "why": "selection state is user-visible",+ "section": "python-addin"+ },+ {+ "verb": "fusion_open_design",+ "status": "MANUAL",+ "why": "local-file open; superseded by cloud flows",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_open_board",+ "status": "MANUAL",+ "why": "local .brd open; needs a .brd on the box (make_test_project exercises the same newDesignFromLocal path)",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_open_schematic",+ "status": "MANUAL",+ "why": "local .sch open; needs a .sch on the box (make_test_project exercises the same newDesignFromLocal path)",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_import_electronics",+ "status": "MANUAL",+ "why": "needs a Fusion-native .fsch/.fbrd/.flbr on the box; creates a NEW unsaved document",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_close_window#noargs",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_close_document",+ "status": "MANUAL",+ "why": "",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_close_all_documents",+ "status": "MANUAL",+ "why": "would close the user's own tabs",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_export_obj",+ "status": "MANUAL",+ "why": "build/doc-type dependent (OBJ refused on the 2026-08-14 box); verify quarterly",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_export_fbx",+ "status": "MANUAL",+ "why": "build/doc-type dependent (OBJ refused on the 2026-08-14 box); verify quarterly",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_export_usdz",+ "status": "MANUAL",+ "why": "build/doc-type dependent (OBJ refused on the 2026-08-14 box); verify quarterly",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_export_dxf",+ "status": "MANUAL",+ "why": "build/doc-type dependent (OBJ refused on the 2026-08-14 box); verify quarterly",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_export_dwg",+ "status": "MANUAL",+ "why": "build/doc-type dependent (OBJ refused on the 2026-08-14 box); verify quarterly",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_export_skp",+ "status": "MANUAL",+ "why": "build/doc-type dependent (OBJ refused on the 2026-08-14 box); verify quarterly",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_set_design_rules",+ "status": "MANUAL",+ "why": "mutates the board's DRC rules",+ "section": "exports"+ },+ {+ "verb": "fusion_show_3d_package",+ "status": "MANUAL",+ "why": "enters Package3DEnvironment (exit needs Package3DStop + dialog); tour covers it; attach path in release rehearsals",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_bind_library_3d",+ "status": "MANUAL",+ "why": "cloud f3d mint per run; release rehearsals (needs signed-in session)",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_attach_3d_package",+ "status": "MANUAL",+ "why": "modal Save dialog needs a human eye",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_make_3d_package",+ "status": "MANUAL",+ "why": "cloud upload; run in release rehearsals",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_build_library_3d",+ "status": "MANUAL",+ "why": "long multi-part build; release rehearsals",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_cleanup_cloud_files#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "aps"+ },+ {+ "verb": "fusion_cleanup_cloud_files",+ "status": "MANUAL",+ "why": "real cleanup takes explicit lineage urns; used by weekly build rehearsals",+ "section": "aps"+ },+ {+ "verb": "fusion_new_electronics_from_eagle",+ "status": "MANUAL",+ "why": "drives native dialogs",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_screenshot_fusion",+ "status": "PASS",+ "why": "",+ "sec": 0.8,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_state",+ "status": "PASS",+ "why": "",+ "sec": 0.7,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_demo_progress#unknown",+ "status": "PASS",+ "why": "",+ "sec": 0.1,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_stop",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_kill",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_signin",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_signin_2fa",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_demo",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_install_fusion",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_notify_owner",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_open_by_urn_note",+ "status": "MANUAL",+ "why": "lifecycle/human-wall verbs; manual tier",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_action_ledger",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_addin_status",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "python-addin"+ },+ {+ "verb": "fusion_alerts",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_verb_times",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_live_feed",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_prove_result",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_set_driving_badge",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_set_window_sizing",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_cancel_run",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_preflight_lbr",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_library_parts",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_create_library",+ "status": "MANUAL",+ "why": "the five-part drill covers it (fusion_install_library_bundle -> prove)",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_install_library_bundle",+ "status": "MANUAL",+ "why": "the five-part drill covers it; needs a bundle zip on the box",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_managed_library_create",+ "status": "MANUAL",+ "why": "creates a managed library on the hub (cloud write)",+ "section": "aps"+ },+ {+ "verb": "fusion_managed_library_link",+ "status": "MANUAL",+ "why": "drives LIBRARY.IO dialogs against the hub",+ "section": "aps"+ },+ {+ "verb": "fusion_managed_library_pull",+ "status": "MANUAL",+ "why": "drives LIBRARY.IO dialogs against the hub",+ "section": "aps"+ },+ {+ "verb": "fusion_managed_library_push",+ "status": "MANUAL",+ "why": "drives LIBRARY.IO dialogs; cloud write",+ "section": "aps"+ },+ {+ "verb": "fusion_managed_library_unlink",+ "status": "MANUAL",+ "why": "drives LIBRARY.IO dialogs against the hub",+ "section": "aps"+ },+ {+ "verb": "fusion_reset_workspace",+ "status": "MANUAL",+ "why": "closes the user's documents",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_restart_for_addin",+ "status": "MANUAL",+ "why": "restarts Fusion",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_save_to_cloud",+ "status": "MANUAL",+ "why": "cloud write; exercised by the drills",+ "section": "aps"+ },+ {+ "verb": "fusion_web_signin",+ "status": "MANUAL",+ "why": "opens a browser on the user's machine",+ "section": "auth-tokens"+ },+ {+ "verb": "fusion_routing_state#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.0,+ "section": "routing"+ },+ {+ "verb": "fusion_route_net#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.1,+ "section": "routing"+ },+ {+ "verb": "fusion_routing_drc#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.0,+ "section": "routing"+ },+ {+ "verb": "fusion_plan_route#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.0,+ "section": "routing"+ },+ {+ "verb": "fusion_route_net",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_routing_drc",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_plan_route",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_move_parts",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_place_vias",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_apply_pours",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_board_source",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_ripup_nets",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_schematic_run",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_board_bom",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_change_pours",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_board_seed",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_schematic_plan",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_remove_pours",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_run_drc",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_repour",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_apply_silkscreen",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_set_track_width",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_remove_items",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_set_outline",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_board_shape",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_autoroute",+ "status": "MANUAL",+ "why": "live routing on a fixture board: demo/routing/run_demo.py is the weekly proof (needs a board open)",+ "section": "routing"+ },+ {+ "verb": "fusion_apply_fusion_update",+ "status": "MANUAL",+ "why": "lifecycle, seat or presentation verbs: need a human-visible Fusion state; manual tier",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_resolve_seat_dialog",+ "status": "MANUAL",+ "why": "lifecycle, seat or presentation verbs: need a human-visible Fusion state; manual tier",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_interactive",+ "status": "MANUAL",+ "why": "lifecycle, seat or presentation verbs: need a human-visible Fusion state; manual tier",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_narrate",+ "status": "MANUAL",+ "why": "lifecycle, seat or presentation verbs: need a human-visible Fusion state; manual tier",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_view",+ "status": "MANUAL",+ "why": "lifecycle, seat or presentation verbs: need a human-visible Fusion state; manual tier",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_electronics_query",+ "status": "MANUAL",+ "why": "lifecycle, seat or presentation verbs: need a human-visible Fusion state; manual tier",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_schematic#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_launch",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias of an existing verb (the reply carries aliasOf); tested through the verb it names",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_export_gerber",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias of an existing verb (the reply carries aliasOf); tested through the verb it names",+ "section": "exports"+ },+ {+ "verb": "fusion_dismiss_dialogs",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias of an existing verb (the reply carries aliasOf); tested through the verb it names",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_install",+ "status": "MANUAL",+ "why": "EDA Bridge Standard alias of an existing verb (the reply carries aliasOf); tested through the verb it names",+ "section": "bridge-lifecycle"+ },+ {+ "verb": "fusion_save_document",+ "status": "MANUAL",+ "why": "saves a cloud design in place (a new version): exercised live on a scratch design in a test folder",+ "section": "aps"+ },+ {+ "verb": "fusion_read_sheet_file#guard",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "routing"+ },+ {+ "verb": "fusion_schematic#missing",+ "status": "PASS",+ "why": "",+ "sec": 2.9,+ "section": "gui-driving"+ },+ {+ "verb": "fusion_schematic",+ "status": "MANUAL",+ "why": "open a cloud design's schematic / create a blank one: exercised by the weekly tour",+ "section": "gui-driving"+ },+ {+ "verb": "fusion_make_showcase_project#guard",+ "status": "PASS",+ "why": "",+ "sec": 2.5,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_make_showcase_project",+ "status": "MANUAL",+ "why": "places a library's parts on a fresh sch+brd; exercised on the Adom_ToF library",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_eagle_import_status#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_eagle_import_status",+ "status": "MANUAL",+ "why": "status of a background EAGLE import",+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_show_attributes#guard",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "cad-3d-bom"+ },+ {+ "verb": "fusion_show_attributes",+ "status": "MANUAL",+ "why": "opens the device editor for a deviceset and returns its metadata",+ "section": "cad-3d-bom"+ },+ {+ "verb": "focus_invariance",+ "status": "PASS",+ "why": "",+ "section": "gui-driving"+ }+ ],+ "durationSec": 219.1+}
tests/reports/verb-test-2026-10-27_1636.jsonadded+57@@ -0,0 +1,57 @@+{+ "date": "2026-10-27_1636",+ "target": "DESKTOP-BAR6S0F",+ "tier": "daily",+ "pass": 4,+ "fail": 0,+ "sections": {+ "exports": {+ "PASS": 2,+ "FAIL": 0,+ "MANUAL": 0,+ "SKIP": 0+ },+ "cad-3d-bom": {+ "PASS": 1,+ "FAIL": 0,+ "MANUAL": 0,+ "SKIP": 0+ },+ "gui-driving": {+ "PASS": 1,+ "FAIL": 0,+ "MANUAL": 0,+ "SKIP": 0+ }+ },+ "results": [+ {+ "verb": "fusion_export_gencad",+ "status": "PASS",+ "why": "",+ "sec": 1.9,+ "section": "exports"+ },+ {+ "verb": "fusion_export_ipc2581",+ "status": "PASS",+ "why": "",+ "sec": 1.7,+ "section": "exports"+ },+ {+ "verb": "fusion_read_footprint",+ "status": "PASS",+ "why": "",+ "sec": 0.0,+ "section": "cad-3d-bom"+ },+ {+ "verb": "focus_invariance",+ "status": "PASS",+ "why": "",+ "section": "gui-driving"+ }+ ],+ "durationSec": 3.7+}