@tscircuit/schematic-trace-solver 0.0.148 → 0.0.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/.agents/skills/schematic-trace-visualization/SKILL.md +7 -2
  2. package/dist/index.d.ts +31 -2
  3. package/dist/index.js +127 -46
  4. package/lib/solvers/InlineNetLabelSolver/InlineNetLabelSolver.ts +115 -6
  5. package/lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver.ts +17 -1
  6. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +2 -0
  7. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/solvePortOnlyPin.ts +2 -0
  8. package/lib/types/InputProblem.ts +27 -1
  9. package/package.json +8 -1
  10. package/site/examples/example51.page.tsx +4 -0
  11. package/tests/assets/example51.json +5102 -0
  12. package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +751 -5
  13. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +660 -5
  14. package/tests/bug-reports/bug-report-20260707T020342Z/__snapshots__/bug-report-20260707T020342Z.snap.svg +44 -5
  15. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +394 -5
  16. package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +170 -5
  17. package/tests/bug-reports/bug-report-20260707T134722Z/__snapshots__/bug-report-20260707T134722Z.snap.svg +79 -5
  18. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +219 -5
  19. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +65 -5
  20. package/tests/bug-reports/bug-report-20260707T141421Z/__snapshots__/bug-report-20260707T141421Z.snap.svg +142 -5
  21. package/tests/bug-reports/bug-report-20260707T230831Z/__snapshots__/bug-report-20260707T230831Z.snap.svg +100 -5
  22. package/tests/bug-reports/bug-report-20260708T053736Z/__snapshots__/bug-report-20260708T053736Z.snap.svg +23 -5
  23. package/tests/bug-reports/bug-report-20260708T055430Z/__snapshots__/bug-report-20260708T055430Z.snap.svg +58 -5
  24. package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +86 -5
  25. package/tests/bug-reports/bug-report-20260716T144856Z/__snapshots__/bug-report-20260716T144856Z.snap.svg +226 -5
  26. package/tests/bug-reports/bug-report-20260717T022934Z/__snapshots__/bug-report-20260717T022934Z.snap.svg +191 -5
  27. package/tests/bug-reports/bug-report-20260717T031704Z/__snapshots__/bug-report-20260717T031704Z.snap.svg +30 -5
  28. package/tests/bug-reports/bug-report-20260717T042845Z/__snapshots__/bug-report-20260717T042845Z.snap.svg +37 -5
  29. package/tests/bug-reports/bug-report-20260721T221026Z/__snapshots__/bug-report-20260721T221026Z.snap.svg +580 -2
  30. package/tests/bug-reports/bug-report-20260724T175257Z/__snapshots__/bug-report-20260724T175257Z.snap.svg +44 -5
  31. package/tests/bug-reports/bug-report-20260728T144234Z/__snapshots__/bug-report-20260728T144234Z.snap.svg +107 -5
  32. package/tests/bug-reports/bug-report-20260728T225606Z/__snapshots__/bug-report-20260728T225606Z.snap.svg +114 -5
  33. package/tests/bug-reports/bug-report-20260730T061837Z/__snapshots__/bug-report-20260730T061837Z.snap.svg +121 -5
  34. package/tests/bug-reports/bug-report-20260731T052229Z/__snapshots__/bug-report-20260731T052229Z.snap.svg +51 -5
  35. package/tests/bug-reports/bug-report-20260804T095800Z/__snapshots__/bug-report-20260804T095800Z.snap.svg +212 -5
  36. package/tests/bug-reports/bug-report-20260804T171919Z/__snapshots__/bug-report-20260804T171919Z.snap.svg +569 -5
  37. package/tests/bug-reports/bug-report-20260804T225912Z/__snapshots__/bug-report-20260804T225912Z.snap.svg +37 -5
  38. package/tests/bug-reports/bug-report-20260805T061316Z/__snapshots__/bug-report-20260805T061316Z.snap.svg +289 -5
  39. package/tests/bug-reports/bug-report-20260806T061548Z/__snapshots__/bug-report-20260806T061548Z.snap.svg +289 -5
  40. package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +149 -5
  41. package/tests/bug-reports/bug-report-20260811T075142Z/__snapshots__/bug-report-20260811T075142Z.snap.svg +93 -5
  42. package/tests/bug-reports/bug-report-20260815T073240Z/__snapshots__/bug-report-20260815T073240Z.snap.svg +79 -5
  43. package/tests/bug-reports/bug-report-20260819T091818Z/__snapshots__/bug-report-20260819T091818Z.snap.svg +244 -2
  44. package/tests/examples/__snapshots__/example01.snap.svg +44 -5
  45. package/tests/examples/__snapshots__/example02.snap.svg +51 -5
  46. package/tests/examples/__snapshots__/example03.snap.svg +86 -5
  47. package/tests/examples/__snapshots__/example04.snap.svg +30 -5
  48. package/tests/examples/__snapshots__/example05.snap.svg +30 -5
  49. package/tests/examples/__snapshots__/example06.snap.svg +30 -5
  50. package/tests/examples/__snapshots__/example07.snap.svg +58 -5
  51. package/tests/examples/__snapshots__/example08.snap.svg +37 -5
  52. package/tests/examples/__snapshots__/example09.snap.svg +149 -5
  53. package/tests/examples/__snapshots__/example10.snap.svg +65 -5
  54. package/tests/examples/__snapshots__/example11.snap.svg +51 -5
  55. package/tests/examples/__snapshots__/example12.snap.svg +51 -5
  56. package/tests/examples/__snapshots__/example13.snap.svg +72 -5
  57. package/tests/examples/__snapshots__/example14.snap.svg +79 -5
  58. package/tests/examples/__snapshots__/example15.snap.svg +86 -5
  59. package/tests/examples/__snapshots__/example16.snap.svg +51 -5
  60. package/tests/examples/__snapshots__/example17.snap.svg +51 -5
  61. package/tests/examples/__snapshots__/example18.snap.svg +58 -5
  62. package/tests/examples/__snapshots__/example19.snap.svg +44 -5
  63. package/tests/examples/__snapshots__/example20.snap.svg +44 -5
  64. package/tests/examples/__snapshots__/example21.snap.svg +72 -5
  65. package/tests/examples/__snapshots__/example22.snap.svg +51 -5
  66. package/tests/examples/__snapshots__/example23.snap.svg +51 -5
  67. package/tests/examples/__snapshots__/example24.snap.svg +51 -5
  68. package/tests/examples/__snapshots__/example25.snap.svg +86 -5
  69. package/tests/examples/__snapshots__/example26.snap.svg +51 -5
  70. package/tests/examples/__snapshots__/example27.snap.svg +72 -5
  71. package/tests/examples/__snapshots__/example28.snap.svg +44 -5
  72. package/tests/examples/__snapshots__/example29.snap.svg +324 -5
  73. package/tests/examples/__snapshots__/example30.snap.svg +107 -5
  74. package/tests/examples/__snapshots__/example31.snap.svg +37 -5
  75. package/tests/examples/__snapshots__/example32.snap.svg +149 -5
  76. package/tests/examples/__snapshots__/example33.snap.svg +93 -5
  77. package/tests/examples/__snapshots__/example34.snap.svg +51 -5
  78. package/tests/examples/__snapshots__/example35.snap.svg +58 -5
  79. package/tests/examples/__snapshots__/example36.snap.svg +44 -5
  80. package/tests/examples/__snapshots__/example37.snap.svg +72 -5
  81. package/tests/examples/__snapshots__/example38.snap.svg +30 -5
  82. package/tests/examples/__snapshots__/example39.snap.svg +37 -5
  83. package/tests/examples/__snapshots__/example40.snap.svg +100 -5
  84. package/tests/examples/__snapshots__/example41.snap.svg +44 -5
  85. package/tests/examples/__snapshots__/example42.snap.svg +65 -5
  86. package/tests/examples/__snapshots__/example43.snap.svg +58 -5
  87. package/tests/examples/__snapshots__/example44.snap.svg +107 -5
  88. package/tests/examples/__snapshots__/example45.snap.svg +51 -5
  89. package/tests/examples/__snapshots__/example46.snap.svg +93 -5
  90. package/tests/examples/__snapshots__/example47.snap.svg +93 -5
  91. package/tests/examples/__snapshots__/example48.snap.svg +65 -5
  92. package/tests/examples/__snapshots__/example49.snap.svg +177 -5
  93. package/tests/examples/__snapshots__/example50.snap.svg +93 -5
  94. package/tests/examples/__snapshots__/example51.snap.svg +952 -0
  95. package/tests/examples/example51.test.ts +12 -0
  96. package/tests/fixtures/convertSolverOutputToCircuitJson.test.ts +219 -0
  97. package/tests/fixtures/convertSolverOutputToCircuitJson.ts +1058 -0
  98. package/tests/fixtures/matcher.ts +45 -8
  99. package/tests/repros/__snapshots__/board-1273-trace-overlap-cycle.snap.svg +762 -2
  100. package/tests/repros/__snapshots__/board-15984-same-net-junction.snap.svg +111 -2
  101. package/tests/repros/__snapshots__/board1096-usb-label-overlap-iteration.snap.svg +167 -2
  102. package/tests/repros/__snapshots__/bugreport-001-gnd-overlap.snap.svg +65 -5
  103. package/tests/repros/__snapshots__/manufacturePartNumber-text-box.snap.svg +30 -5
  104. package/tests/repros/__snapshots__/netlabel-connector-through-rail-label.snap.svg +79 -5
  105. package/tests/repros/__snapshots__/repro-atmega328p-fault-pullup.snap.svg +65 -5
  106. package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +149 -5
  107. package/tests/repros/__snapshots__/repro-board-589-regulator-section.snap.svg +55 -2
  108. package/tests/repros/__snapshots__/repro-board-648-esp12f-section.snap.svg +160 -2
  109. package/tests/repros/__snapshots__/repro-bq24074-battery-charger.snap.svg +135 -5
  110. package/tests/repros/__snapshots__/repro-bq25895-cross-net-trace-overlap.snap.svg +69 -2
  111. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +86 -5
  112. package/tests/repros/__snapshots__/repro-core-555-power-cross-net-overlap.snap.svg +44 -5
  113. package/tests/repros/__snapshots__/repro-core-subcircuit-missing-ground.snap.svg +44 -5
  114. package/tests/repros/__snapshots__/repro-core-tb67s579ftg-inline-label-routing.snap.svg +260 -0
  115. package/tests/repros/__snapshots__/repro-example35-minimize-trace-crossing.snap.svg +335 -2
  116. package/tests/repros/__snapshots__/repro-ground-label-on-lower-rail-end.snap.svg +48 -2
  117. package/tests/repros/__snapshots__/repro-ina237-current-monitor.snap.svg +149 -5
  118. package/tests/repros/__snapshots__/repro-missing-trace-netlabel.snap.svg +72 -5
  119. package/tests/repros/__snapshots__/repro-netlabel-collision-687.snap.svg +100 -5
  120. package/tests/repros/__snapshots__/repro-netlabel-overlap-trace.snap.svg +51 -5
  121. package/tests/repros/__snapshots__/repro-nrf52810-clock-routing.snap.svg +90 -2
  122. package/tests/repros/__snapshots__/repro-power-group-rail-labels.snap.svg +37 -5
  123. package/tests/repros/__snapshots__/repro-rectifier-trace-overlap.snap.svg +44 -5
  124. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +237 -2
  125. package/tests/repros/__snapshots__/repro-rp2040-usb-cc2-ground-overlap.snap.svg +72 -5
  126. package/tests/repros/__snapshots__/repro-rp2040-v3v3-label-placement.snap.svg +51 -5
  127. package/tests/repros/__snapshots__/repro-rp2040-zero-crystal-fallback-netlabels.snap.svg +30 -5
  128. package/tests/repros/__snapshots__/repro-ti-power-output-section.snap.svg +79 -5
  129. package/tests/repros/__snapshots__/repro-tida010076-j4-ground-bus.snap.svg +27 -2
  130. package/tests/repros/__snapshots__/repro-tida010076-page02.snap.svg +1150 -5
  131. package/tests/repros/__snapshots__/repro-tps61222-trace-intersection.snap.svg +51 -5
  132. package/tests/repros/__snapshots__/repro-type-c-16pin-self-connection.snap.svg +30 -5
  133. package/tests/repros/__snapshots__/repro-type-c-16pin-to-resistor.snap.svg +30 -5
  134. package/tests/repros/__snapshots__/repro-type-c-vbus-led-ground-label.snap.svg +44 -5
  135. package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +685 -2
  136. package/tests/repros/__snapshots__/repro-vcc-pin1-detour.snap.svg +27 -2
  137. package/tests/repros/__snapshots__/repro129-host-custom-symbol-passives.snap.svg +51 -5
  138. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +100 -5
  139. package/tests/repros/__snapshots__/repro161-power-section-autolayout.snap.svg +107 -5
  140. package/tests/repros/__snapshots__/repro47-endpoint-obstacle-detour.snap.svg +51 -5
  141. package/tests/repros/__snapshots__/repro48-555-timer-vcc-rail-label.snap.svg +104 -2
  142. package/tests/repros/__snapshots__/repro5-escape-padded-text-obstacles.snap.svg +30 -5
  143. package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +65 -5
  144. package/tests/repros/__snapshots__/repro84-stacked-gnd-label-orientation.snap.svg +27 -2
  145. package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +58 -5
  146. package/tests/repros/__snapshots__/trace-overlap-box-resistor.snap.svg +37 -5
  147. package/tests/repros/assets/repro-core-tb67s579ftg-inline-label-routing.input.json +900 -0
  148. package/tests/repros/repro-core-tb67s579ftg-inline-label-routing.test.ts +40 -0
  149. package/tests/solvers/InlineNetLabelSolver/__snapshots__/fallback-net-label-width.snap.svg +25 -7
  150. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-anchored-label-clearance.snap.svg +34 -2
  151. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-port-stub.snap.svg +23 -5
  152. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-two-pin-net.snap.svg +23 -5
  153. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label01.snap.svg +23 -5
  154. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label02.snap.svg +23 -5
  155. package/tests/solvers/InlineNetLabelSolver/__snapshots__/terminal-stub-trace-clearance.snap.svg +71 -0
  156. package/tests/solvers/InlineNetLabelSolver/fallback-net-label-width.test.ts +10 -1
  157. package/tests/solvers/InlineNetLabelSolver/terminal-stub-trace-clearance.test.ts +102 -0
  158. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.snap.svg +23 -5
  159. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_repro47-short-opposing-pins.snap.svg +20 -2
  160. package/tests/solvers/TraceCleanupSolver/__snapshots__/TraceCleanupSolver.snap.svg +44 -5
  161. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/__snapshots__/TraceLabelOverlapAvoidanceSolver.snap.svg +79 -5
  162. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/MergedNetLabelObstacles.snap.svg +44 -5
  163. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/OverlapAvoidanceStepSolver.snap.svg +23 -5
  164. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/SingleOverlapSolver.snap.svg +30 -5
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="11,8.399999999999999 9.1,6.8" data-type="line" data-label="" points="322.82714054927305,149.24071082390958 107.96445880452347,330.17770597738274" fill="none" stroke="hsl(154, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11,9 12.03,5.3500000000000005" data-type="line" data-label="" points="322.82714054927305,81.38933764135697 439.30533117932123,494.1518578352178" fill="none" stroke="hsl(87, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="9.700000000000001,6.8 8.93,5.3500000000000005" data-type="line" data-label="" points="175.81583198707608,330.17770597738274 88.73990306946689,494.1518578352178" fill="none" stroke="hsl(56, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="9.870000000000001,5.3500000000000005 12.97,5.3500000000000005" data-type="line" data-label="" points="195.04038772213266,494.1518578352178 545.605815831987,494.1518578352178" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="9.700000000000001,6.8 9.900000000000002,6.8 9.900000000000002,6.075 8.73,6.075 8.73,5.3500000000000005 8.93,5.3500000000000005" data-type="line" data-label="" points="175.81583198707608,330.17770597738274 198.43295638126028,330.17770597738274 198.43295638126028,412.1647819063003 66.1227786752828,412.1647819063003 66.1227786752828,494.1518578352178 88.73990306946689,494.1518578352178" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11,8.399999999999999 11,8.349999999999998 10.2,8.349999999999998 10.2,8.450999999999999" data-type="line" data-label="" points="322.82714054927305,149.24071082390958 322.82714054927305,154.8949919224557 232.35864297253624,154.8949919224557 232.35864297253624,143.4733441033926" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="9.1,6.8 8.799,6.8 8.799,7.151" data-type="line" data-label="" points="107.96445880452347,330.17770597738274 73.9256865912763,330.17770597738274 73.9256865912763,290.4846526655896" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11,9 11,9.100999999999999 10.549000000000001,9.100999999999999" data-type="line" data-label="" points="322.82714054927305,81.38933764135697 322.82714054927305,69.967689822294 271.8255250403879,69.967689822294" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="9.870000000000001,5.3500000000000005 10.111,5.3500000000000005 10.111,4.9990000000000006" data-type="line" data-label="" points="195.04038772213266,494.1518578352178 222.29402261712448,494.1518578352178 222.29402261712448,533.844911147011" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="12.97,5.3500000000000005 13.211,5.3500000000000005 13.211,4.9990000000000006" data-type="line" data-label="" points="545.605815831987,494.1518578352178 572.8594507269788,494.1518578352178 572.8594507269788,533.844911147011" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="11.095" data-y="8.7" x="271.93861066235866" y="81.38933764135697" width="123.26332794830364" height="67.8513731825526" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="9.4" data-y="6.8" x="107.96445880452336" y="291.7285945072697" width="67.8513731825526" height="76.8982229402261" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="9.4" data-y="5.4" x="88.73990306946678" y="447.84834491114685" width="106.30048465266577" height="81.29846365104993" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="12.5" data-y="5.4" x="439.30533117932134" y="447.84834491114685" width="106.30048465266577" height="81.29846365104993" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="netId: V3V3
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="11,8.399999999999999 9.1,6.8" data-type="line" data-label="" points="322.82714054927305,149.24071082390958 107.96445880452347,330.17770597738274" fill="none" stroke="hsl(154, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11,9 12.03,5.3500000000000005" data-type="line" data-label="" points="322.82714054927305,81.38933764135697 439.30533117932123,494.1518578352178" fill="none" stroke="hsl(87, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="9.700000000000001,6.8 8.93,5.3500000000000005" data-type="line" data-label="" points="175.81583198707608,330.17770597738274 88.73990306946689,494.1518578352178" fill="none" stroke="hsl(56, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="9.870000000000001,5.3500000000000005 12.97,5.3500000000000005" data-type="line" data-label="" points="195.04038772213266,494.1518578352178 545.605815831987,494.1518578352178" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="9.700000000000001,6.8 9.900000000000002,6.8 9.900000000000002,6.075 8.73,6.075 8.73,5.3500000000000005 8.93,5.3500000000000005" data-type="line" data-label="" points="175.81583198707608,330.17770597738274 198.43295638126028,330.17770597738274 198.43295638126028,412.1647819063003 66.1227786752828,412.1647819063003 66.1227786752828,494.1518578352178 88.73990306946689,494.1518578352178" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11,8.399999999999999 11,8.349999999999998 10.2,8.349999999999998 10.2,8.450999999999999" data-type="line" data-label="" points="322.82714054927305,149.24071082390958 322.82714054927305,154.8949919224557 232.35864297253624,154.8949919224557 232.35864297253624,143.4733441033926" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="9.1,6.8 8.799,6.8 8.799,7.151" data-type="line" data-label="" points="107.96445880452347,330.17770597738274 73.9256865912763,330.17770597738274 73.9256865912763,290.4846526655896" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11,9 11,9.100999999999999 10.549000000000001,9.100999999999999" data-type="line" data-label="" points="322.82714054927305,81.38933764135697 322.82714054927305,69.967689822294 271.8255250403879,69.967689822294" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="9.870000000000001,5.3500000000000005 10.111,5.3500000000000005 10.111,4.9990000000000006" data-type="line" data-label="" points="195.04038772213266,494.1518578352178 222.29402261712448,494.1518578352178 222.29402261712448,533.844911147011" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="12.97,5.3500000000000005 13.211,5.3500000000000005 13.211,4.9990000000000006" data-type="line" data-label="" points="545.605815831987,494.1518578352178 572.8594507269788,494.1518578352178 572.8594507269788,533.844911147011" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="11.095" data-y="8.7" x="271.93861066235866" y="81.38933764135697" width="123.26332794830364" height="67.8513731825526" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="9.4" data-y="6.8" x="107.96445880452336" y="291.7285945072697" width="67.8513731825526" height="76.8982229402261" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="9.4" data-y="5.4" x="88.73990306946678" y="447.84834491114685" width="106.30048465266577" height="81.29846365104993" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="12.5" data-y="5.4" x="439.30533117932134" y="447.84834491114685" width="106.30048465266577" height="81.29846365104993" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="netId: V3V3
2
4
  globalConnNetId: connectivity_net0" data-x="10.2" data-y="8.661" x="198.43295638125994" y="95.97738287560571" width="67.8513731825526" height="47.49596122778689" fill="#ef444466" stroke="#ef4444" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="netId: V3V3
3
5
  globalConnNetId: connectivity_net0" data-x="8.799" data-y="7.361" x="39.99999999999994" y="242.98869143780274" width="67.85137318255272" height="47.49596122778678" fill="#ef444466" stroke="#ef4444" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="netId: RESET
4
6
  globalConnNetId: connectivity_net1" data-x="10.189000000000002" data-y="9.100999999999999" x="190.40387722132505" y="58.65912762520196" width="81.42164781906285" height="22.61712439418409" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008842857142857145"/></g><g><rect data-type="rect" data-label="netId: RESET
@@ -30,7 +32,7 @@ orientation: y-" data-x="13.211" data-y="4.9990000000000006" cx="572.85945072697
30
32
  const h = svg.getElementById('crosshair-h');
31
33
  const v = svg.getElementById('crosshair-v');
32
34
  const coords = svg.getElementById('coordinates');
33
-
35
+
34
36
  crosshair.style.display = 'block';
35
37
  h.setAttribute('x1', '0');
36
38
  h.setAttribute('x2', '640');
@@ -49,13 +51,13 @@ orientation: y-" data-x="13.211" data-y="4.9990000000000006" cx="572.85945072697
49
51
  // y' = (y - ty) / sy
50
52
  const sx = matrix.a;
51
53
  const sy = matrix.d;
52
- const tx = matrix.e;
54
+ const tx = matrix.e;
53
55
  const ty = matrix.f;
54
56
  const realPoint = {
55
57
  x: (x - tx) / sx,
56
58
  y: (y - ty) / sy // Flip y back since we used negative scale
57
59
  }
58
-
60
+
59
61
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
60
62
  coords.setAttribute('x', (x + 5).toString());
61
63
  coords.setAttribute('y', (y - 5).toString());
@@ -63,4 +65,69 @@ orientation: y-" data-x="13.211" data-y="4.9990000000000006" cx="572.85945072697
63
65
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
64
66
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
65
67
  });
66
- ]]></script></svg>
68
+ ]]></script>
69
+ </g>
70
+ <g transform="translate(1216, 200)">
71
+ <style>
72
+ .boundary { fill: rgb(245, 241, 237); }
73
+ .schematic-boundary { fill: none; stroke: #fff; }
74
+ .component { fill: none; stroke: rgb(132, 0, 0); }
75
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
76
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
77
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
78
+ .pin-number { fill: rgb(169, 0, 0); }
79
+ .port-label { fill: rgb(0, 100, 100); }
80
+ .component-name { fill: rgb(0, 100, 100); }
81
+
82
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 414.89331301195034 414.50752524300003 L 443.4701847970505 414.50752524300003 L 443.4701847970505 518.0986854639875 L 276.29548485421515 518.0986854639875 L 276.29548485421515 621.6898456849749 L 304.87235663931506 621.6898456849749" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.861497428080003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 414.89331301195034 414.50752524300003 L 443.4701847970505 414.50752524300003 L 443.4701847970505 518.0986854639875 L 276.29548485421515 518.0986854639875 L 276.29548485421515 621.6898456849749 L 304.87235663931506 621.6898456849749" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 600.6429796151001 185.89255096220018 L 600.6429796151001 193.03676890847532 L 486.3354924747 193.03676890847532 L 486.3354924747 178.60544865699967" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.861497428080003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 600.6429796151001 185.89255096220018 L 600.6429796151001 193.03676890847532 L 486.3354924747 193.03676890847532 L 486.3354924747 178.60544865699967" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 329.1626976566499 414.50752524300003 L 286.1545056200746 414.50752524300003 L 286.1545056200746 364.35511526014955" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.861497428080003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 329.1626976566499 414.50752524300003 L 286.1545056200746 414.50752524300003 L 286.1545056200746 364.35511526014955" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 600.6429796151001 100.16193560689999 L 600.6429796151001 85.73061535542456 L 536.2021337396998 85.73061535542456" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.861497428080003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 600.6429796151001 100.16193560689999 L 600.6429796151001 85.73061535542456 L 536.2021337396998 85.73061535542456" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"><path d="M 439.1836540292852 621.6898456849749 L 473.6187845303307 621.6898456849749 L 473.6187845303307 671.8422556678255" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.861497428080003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 439.1836540292852 621.6898456849749 L 473.6187845303307 621.6898456849749 L 473.6187845303307 671.8422556678255" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_5__stack1"><path d="M 882.1251666983353 621.6898456849749 L 916.5602971993806 621.6898456849749 L 916.5602971993806 671.8422556678255" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.861497428080003px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 882.1251666983353 621.6898456849749 L 916.5602971993806 621.6898456849749 L 916.5602971993806 671.8422556678255" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_5__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component-overlay sch-component-overlay" x="589.2150885882386" y="100.1619356069001" width="22.855782053723033" height="85.73061535530019" fill="transparent"/><path class="sch-component-symbol-path" d="M 600.6429796151001 185.8925509622003 L 600.6429796151001 171.60125738247174" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 600.6429796151001 114.45322918662863 L 600.6429796151001 100.1619356069001" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 589.2150885882386 171.60125738247174 L 589.2150885882386 114.45322918662863 L 612.0708706419616 114.45322918662863 L 612.0708706419616 171.60125738247174 L 589.2150885882386 171.60125738247174" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="623.5044770431801" y="120.16574585647014" stroke="rgb(245, 241, 237)" stroke-width="2.8576871785100004px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="middle" font-size="25.71918460659px">R3</text><text class="sch-component-text" x="623.5044770431801" y="165.88874071263024" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="middle" font-size="25.71918460659px"></text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component-overlay sch-component-overlay" x="329.16269765665004" y="403.0796342161385" width="85.73061535530019" height="22.855782053723033" fill="transparent"/><path class="sch-component-symbol-path" d="M 329.16269765665004 414.50752524300003 L 343.45399123637856 414.50752524300003" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 400.6020194322217 414.50752524300003 L 414.8933130119502 414.50752524300003" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 343.45399123637856 403.0796342161385 L 400.6020194322217 403.0796342161385 L 400.6020194322217 425.93541626986155 L 343.45399123637856 425.93541626986155 L 343.45399123637856 403.0796342161385" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="372.02800533430013" y="391.64602781492" stroke="rgb(245, 241, 237)" stroke-width="2.8576871785100004px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="25.71918460659px">R2</text><text class="sch-component-text" x="372.02800533430013" y="437.3690226710801" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="25.71918460659px"></text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component-overlay sch-component-overlay" x="304.87235663931506" y="596.9482909026119" width="134.31129738997015" height="26.508808695388893" fill="transparent"/><path class="sch-component-symbol-path" d="M 304.87235663931506 621.6898456849749 L 350.82095837798903 623.4570995980008" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 359.65722794311864 619.922591771949 L 389.70054446455936 596.9482909026119" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 393.23505229061124 623.4570995980008 L 439.1836540292852 621.6898456849749" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="372.02800533430013" y="577.5084978593268" stroke="rgb(245, 241, 237)" stroke-width="2.8576871785100004px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="25.71918460659px">SW3</text><text class="sch-component-text" x="372.02800533430013" y="665.871193510623" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="25.71918460659px"></text><circle class="sch-component-symbol-circle" cx="389.70054446455936" cy="621.6898456849749" r="2.8576871785100004px" stroke-width="2.8576871785100004px" fill="none" stroke="rgb(132, 0, 0)"/><circle class="sch-component-symbol-circle" cx="354.3554662040409" cy="621.6898456849749" r="2.8576871785100004px" stroke-width="2.8576871785100004px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_3__stack1"><rect class="component-overlay sch-component-overlay" x="747.8138693083652" y="596.9482909026119" width="134.31129738997015" height="26.508808695388893" fill="transparent"/><path class="sch-component-symbol-path" d="M 747.8138693083652 621.6898456849749 L 793.7624710470392 623.4570995980008" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 802.5987406121687 619.922591771949 L 832.6420571336095 596.9482909026119" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 836.1765649596613 623.4570995980008 L 882.1251666983353 621.6898456849749" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.8576871785100004px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="814.9695180033502" y="577.5084978593268" stroke="rgb(245, 241, 237)" stroke-width="2.8576871785100004px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="25.71918460659px">SW2</text><text class="sch-component-text" x="814.9695180033502" y="665.871193510623" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="25.71918460659px"></text><circle class="component-pin sch-component-pin" cx="747.8138693083652" cy="621.6898456849749" r="2.8576871785100004px" stroke-width="2.8576871785100004px" fill="none" stroke="rgb(132, 0, 0)"/><circle class="sch-component-symbol-circle" cx="832.6420571336095" cy="621.6898456849749" r="2.8576871785100004px" stroke-width="2.8576871785100004px" fill="none" stroke="rgb(132, 0, 0)"/><circle class="sch-component-symbol-circle" cx="797.296978873091" cy="621.6898456849749" r="2.8576871785100004px" stroke-width="2.8576871785100004px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="600.6429796151001" cy="185.89255096220018" r="5.715374357020001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="600.6429796151001" cy="100.16193560689999" r="5.715374357020001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="329.1626976566499" cy="414.50752524300003" r="5.715374357020001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="414.89331301195034" cy="414.50752524300003" r="5.715374357020001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="317.73194894260996" cy="621.6898456849749" r="5.715374357020001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="452.0432463325801" cy="621.6898456849749" r="5.715374357020001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_0__stack1"><circle cx="760.6734616116601" cy="621.6898456849749" r="5.715374357020001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_1__stack1"><circle cx="894.9847590016302" cy="621.6898456849749" r="5.715374357020001" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
83
+ M 486.3354924747,178.60544865699967
84
+ L 472.04705658215,170.88969327502267
85
+ L 472.04705658215,121.88988378750454
86
+ L 500.62392836725,121.88988378750454
87
+ L 500.62392836725,170.88969327502267
88
+ Z
89
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.8576871785100004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="486.3354924747" y="165.74585635370468" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.71918460659px" transform="rotate(-90 486.3354924747 165.74585635370468)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
90
+ M 286.1545056200746,364.35511526014955
91
+ L 271.8660697275246,356.63935987817257
92
+ L 271.8660697275246,307.6395503906544
93
+ L 300.4429415126246,307.6395503906544
94
+ L 300.4429415126246,356.63935987817257
95
+ Z
96
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.8576871785100004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="286.1545056200746" y="351.49552295685453" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.71918460659px" transform="rotate(-90 286.1545056200746 351.49552295685453)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
97
+ M 536.2021337396998,85.73061535542456
98
+ L 528.4863783577227,100.01905124797456
99
+ L 429.13412078485845,100.01905124797455
100
+ L 429.13412078485845,71.44217946287455
101
+ L 528.4863783577227,71.44217946287456
102
+ Z
103
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.8576871785100004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="523.3425414364048" y="85.73061535542456" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.71918460659px" transform="">XXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
104
+ M 747.8138693083649,621.6898456849749
105
+ L 740.0981139263879,635.9782815775249
106
+ L 640.7458563535235,635.9782815775249
107
+ L 640.7458563535235,607.4014097924248
108
+ L 740.0981139263879,607.4014097924249
109
+ Z
110
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.8576871785100004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="734.9542770050699" y="621.6898456849749" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.71918460659px" transform="">XXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
111
+ M 443.4701847970505,414.50752524300003
112
+ L 451.18594017902745,400.21908935045
113
+ L 567.3223471136739,400.21908935045
114
+ L 567.3223471136739,428.79596113555004
115
+ L 451.18594017902745,428.79596113555004
116
+ Z
117
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.8576871785100004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="456.3297771003455" y="414.50752524300003" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.71918460659px" transform="">XXXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="
118
+ M 473.6187845303307,671.8422556678255
119
+ L 487.9072204228807,679.5580110498025
120
+ L 487.9072204228807,728.5578205373206
121
+ L 459.3303486377807,728.5578205373206
122
+ L 459.3303486377807,679.5580110498025
123
+ Z
124
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.8576871785100004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="473.6187845303307" y="684.7018479711205" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.71918460659px" transform="rotate(90 473.6187845303307 684.7018479711205)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" d="
125
+ M 916.5602971993806,671.8422556678255
126
+ L 930.8487330919305,679.5580110498025
127
+ L 930.8487330919305,728.5578205373206
128
+ L 902.2718613068306,728.5578205373206
129
+ L 902.2718613068306,679.5580110498025
130
+ Z
131
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.8576871785100004px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" x="916.5602971993806" y="684.7018479711205" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.71918460659px" transform="rotate(90 916.5602971993806 684.7018479711205)">XX</text>
132
+ </g>
133
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.5,0.4 5.5,0.4" data-type="line" data-label="" points="120,288 520,288" fill="none" stroke="hsl(77, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0.2 5.5,0.2" data-type="line" data-label="" points="120,304 520,304" fill="none" stroke="hsl(78, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0 5.5,0" data-type="line" data-label="" points="120,320 520,320" fill="none" stroke="hsl(79, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,-0.2 5.5,-0.2" data-type="line" data-label="" points="120,336 520,336" fill="none" stroke="hsl(80, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,-0.4 5.5,-0.4" data-type="line" data-label="" points="120,352 520,352" fill="none" stroke="hsl(209, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0.6 0.5,-0.6" data-type="line" data-label="" points="120,272 120,368" fill="none" stroke="hsl(30, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0.6 1.201,0.6 1.201,-0.6 0.5,-0.6" data-type="line" data-label="" points="120,272 176.08,272 176.08,368 120,368" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="U1" data-x="0" data-y="0" x="40" y="240" width="80" height="160" fill="hsl(164, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="U2" data-x="6" data-y="0" x="520" y="240" width="80" height="160" fill="hsl(165, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="U3" data-x="1.8" data-y="0" x="204" y="200" width="40" height="240" fill="hsl(166, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="C1" data-x="0.8" data-y="1.2" x="88" y="188" width="112" height="72" fill="hsl(326, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="C2" data-x="0.8" data-y="-1.2" x="88" y="380" width="112" height="72" fill="hsl(327, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="netId: V1V1
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.5,0.4 5.5,0.4" data-type="line" data-label="" points="120,288 520,288" fill="none" stroke="hsl(77, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0.2 5.5,0.2" data-type="line" data-label="" points="120,304 520,304" fill="none" stroke="hsl(78, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0 5.5,0" data-type="line" data-label="" points="120,320 520,320" fill="none" stroke="hsl(79, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,-0.2 5.5,-0.2" data-type="line" data-label="" points="120,336 520,336" fill="none" stroke="hsl(80, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,-0.4 5.5,-0.4" data-type="line" data-label="" points="120,352 520,352" fill="none" stroke="hsl(209, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0.6 0.5,-0.6" data-type="line" data-label="" points="120,272 120,368" fill="none" stroke="hsl(30, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5,0.6 1.201,0.6 1.201,-0.6 0.5,-0.6" data-type="line" data-label="" points="120,272 176.08,272 176.08,368 120,368" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="U1" data-x="0" data-y="0" x="40" y="240" width="80" height="160" fill="hsl(164, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="U2" data-x="6" data-y="0" x="520" y="240" width="80" height="160" fill="hsl(165, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="U3" data-x="1.8" data-y="0" x="204" y="200" width="40" height="240" fill="hsl(166, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="C1" data-x="0.8" data-y="1.2" x="88" y="188" width="112" height="72" fill="hsl(326, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="C2" data-x="0.8" data-y="-1.2" x="88" y="380" width="112" height="72" fill="hsl(327, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="netId: V1V1
2
4
  globalConnNetId: connectivity_net5" data-x="0.8505" data-y="-0.39" x="124.04" y="334.4" width="48.00000000000003" height="33.60000000000002" fill="#ef444466" stroke="#ef4444" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="netId: QD0
3
5
  globalConnNetId: connectivity_net0" data-x="0.741" data-y="0.4" x="120.07999999999998" y="280" width="38.40000000000002" height="16" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="netId: QD0
4
6
  globalConnNetId: connectivity_net0" data-x="5.2589999999999995" data-y="0.4" x="481.52" y="280" width="38.400000000000034" height="16" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0125"/></g><g><rect data-type="rect" data-label="netId: QD1
@@ -45,7 +47,7 @@ orientation: x-" data-x="5.5" data-y="-0.4" cx="520" cy="352" r="3" fill="hsl(40
45
47
  const h = svg.getElementById('crosshair-h');
46
48
  const v = svg.getElementById('crosshair-v');
47
49
  const coords = svg.getElementById('coordinates');
48
-
50
+
49
51
  crosshair.style.display = 'block';
50
52
  h.setAttribute('x1', '0');
51
53
  h.setAttribute('x2', '640');
@@ -64,13 +66,13 @@ orientation: x-" data-x="5.5" data-y="-0.4" cx="520" cy="352" r="3" fill="hsl(40
64
66
  // y' = (y - ty) / sy
65
67
  const sx = matrix.a;
66
68
  const sy = matrix.d;
67
- const tx = matrix.e;
69
+ const tx = matrix.e;
68
70
  const ty = matrix.f;
69
71
  const realPoint = {
70
72
  x: (x - tx) / sx,
71
73
  y: (y - ty) / sy // Flip y back since we used negative scale
72
74
  }
73
-
75
+
74
76
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
75
77
  coords.setAttribute('x', (x + 5).toString());
76
78
  coords.setAttribute('y', (y - 5).toString());
@@ -78,4 +80,97 @@ orientation: x-" data-x="5.5" data-y="-0.4" cx="520" cy="352" r="3" fill="hsl(40
78
80
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
79
81
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
80
82
  });
81
- ]]></script></svg>
83
+ ]]></script>
84
+ </g>
85
+ <g transform="translate(1216, 200)">
86
+ <style>
87
+ .boundary { fill: rgb(245, 241, 237); }
88
+ .schematic-boundary { fill: none; stroke: #fff; }
89
+ .component { fill: none; stroke: rgb(132, 0, 0); }
90
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
91
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
92
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
93
+ .pin-number { fill: rgb(169, 0, 0); }
94
+ .port-label { fill: rgb(0, 100, 100); }
95
+ .component-name { fill: rgb(0, 100, 100); }
96
+
97
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 192.39130434785 327.44565217386 L 306.68478260874093 327.44565217386 L 306.68478260874093 523.09782608694 L 192.39130434785 523.09782608694" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.086956521744px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 192.39130434785 327.44565217386 L 306.68478260874093 327.44565217386 L 306.68478260874093 523.09782608694 L 192.39130434785 523.09782608694" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.260869565218px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="94.56521739131" y="262.2282608695" width="32.60869565217999" height="326.08695652180006" stroke-width="3.260869565218px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="94.56521739131" y="262.2282608695" width="32.60869565217999" height="326.08695652180006" fill="transparent"/><text class="sch-text" x="110.8695652174" y="425.2717391304" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.347826086961998px" transform="rotate(0, 110.8695652174, 425.2717391304)">U1</text><line class="component-pin sch-component-pin sch-port-line" x1="127.17391304348999" y1="327.44565217386" x2="192.39130434785" y2="327.44565217386" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="189.130434782632" y="324.184782608642" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="159.78260869566998" y="324.184782608642" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="127.17391304348999" y1="360.05434782604004" x2="189.130434782632" y2="360.05434782604004" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="192.39130434785" cy="360.05434782604004" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="189.130434782632" y="356.79347826082204" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="159.78260869566998" y="356.793478260822" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="127.17391304348999" y1="392.66304347822" x2="189.130434782632" y2="392.66304347822" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="192.39130434785" cy="392.66304347822" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="189.130434782632" y="389.402173913002" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="159.78260869566998" y="389.402173913002" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="127.17391304348999" y1="425.2717391304" x2="189.130434782632" y2="425.2717391304" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="192.39130434785" cy="425.2717391304" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="189.130434782632" y="422.010869565182" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="159.78260869566998" y="422.010869565182" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="127.17391304348999" y1="457.88043478258004" x2="189.130434782632" y2="457.88043478258004" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="192.39130434785" cy="457.88043478258004" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="189.130434782632" y="454.61956521736204" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="159.78260869566998" y="454.61956521736204" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="127.17391304348999" y1="490.48913043476" x2="189.130434782632" y2="490.48913043476" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="192.39130434785" cy="490.48913043476" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="189.130434782632" y="487.228260869542" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="159.78260869566998" y="487.22826086954205" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="127.17391304348999" y1="523.09782608694" x2="192.39130434785" y2="523.09782608694" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><rect x="189.130434782632" y="519.8369565217221" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="159.78260869566998" y="519.836956521722" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">7</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component chip sch-component-body" x="1072.82608695671" y="262.2282608695" width="32.608695652179904" height="326.08695652180006" stroke-width="3.260869565218px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="1072.82608695671" y="262.2282608695" width="32.608695652179904" height="326.08695652180006" fill="transparent"/><text class="sch-text" x="1089.1304347828" y="425.2717391304" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.347826086961998px" transform="rotate(0, 1089.1304347828, 425.2717391304)">U2</text><line class="component-pin sch-component-pin sch-port-line" x1="1072.82608695671" y1="360.05434782604004" x2="1010.8695652175679" y2="360.05434782604004" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1007.60869565235" cy="360.05434782604004" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="1004.347826087132" y="356.79347826082204" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="1040.2173913045299" y="356.793478260822" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="1072.82608695671" y1="392.66304347822" x2="1010.8695652175679" y2="392.66304347822" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_1_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1007.60869565235" cy="392.66304347822" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="1004.347826087132" y="389.402173913002" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="1040.2173913045299" y="389.402173913002" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="1072.82608695671" y1="425.2717391304" x2="1010.8695652175679" y2="425.2717391304" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_1_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1007.60869565235" cy="425.2717391304" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="1004.347826087132" y="422.010869565182" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="1040.2173913045299" y="422.010869565182" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="1072.82608695671" y1="457.88043478258004" x2="1010.8695652175679" y2="457.88043478258004" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_1_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1007.60869565235" cy="457.88043478258004" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="1004.347826087132" y="454.61956521736204" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="1040.2173913045299" y="454.61956521736204" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="1072.82608695671" y1="490.48913043476" x2="1010.8695652175679" y2="490.48913043476" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_1_4__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1007.60869565235" cy="490.48913043476" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="1004.347826087132" y="487.228260869542" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="1040.2173913045299" y="487.22826086954205" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="">5</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component chip sch-component-body" x="363.586956521795" y="245.92391304341" width="81.52173913044999" height="358.69565217397997" stroke-width="3.260869565218px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="363.586956521795" y="245.92391304341" width="81.52173913044999" height="358.69565217397997" fill="transparent"/><text class="sch-text" x="404.34782608702" y="425.2717391304" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.347826086961998px" transform="rotate(0, 404.34782608702, 425.2717391304)">U3</text><line class="component-pin sch-component-pin sch-port-line" x1="404.34782608702" y1="245.92391304341" x2="404.34782608702" y2="183.96739130426803" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_2_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="404.34782608702" cy="180.70652173905" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="401.086956521802" y="177.445652173832" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="401.086956521802" y="213.31521739123002" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="rotate(-90 401.086956521802 213.31521739123002)">1</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_3__stack1"><rect class="component chip sch-component-body" x="127.17391304349002" y="221.46739130427503" width="228.26086956526" height="16.30434782609001" stroke-width="3.260869565218px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="127.17391304349002" y="221.46739130427503" width="228.26086956526" height="16.30434782609001" fill="transparent"/><text class="sch-text" x="241.30434782612002" y="229.61956521732003" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.347826086961998px" transform="rotate(0, 241.30434782612002, 229.61956521732003)">C1</text><line class="component-pin sch-component-pin sch-port-line" x1="241.30434782612002" y1="237.77173913036503" x2="241.30434782612002" y2="299.72826086950704" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_3_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="241.30434782612002" cy="302.989130434725" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="238.04347826090202" y="299.728260869507" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="238.04347826090202" y="270.380434782545" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="rotate(-90 238.04347826090202 270.380434782545)">1</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_4__stack1"><rect class="component chip sch-component-body" x="127.17391304349002" y="612.771739130435" width="228.26086956526" height="16.304347826090066" stroke-width="3.260869565218px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="127.17391304349002" y="612.771739130435" width="228.26086956526" height="16.304347826090066" fill="transparent"/><text class="sch-text" x="241.30434782612002" y="620.9239130434801" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.347826086961998px" transform="rotate(0, 241.30434782612002, 620.9239130434801)">C2</text><line class="component-pin sch-component-pin sch-port-line" x1="241.30434782612002" y1="612.771739130435" x2="241.30434782612002" y2="550.815217391293" stroke-width="3.260869565218px"/><g class="sch-port" data-schematic-port-id="source_port_4_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="241.30434782612002" cy="547.5543478260751" r="3.260869565218" stroke-width="3.260869565218px"/><rect x="238.04347826090202" y="544.2934782608571" width="6.521739130436" height="6.521739130436" opacity="0"/></g><text class="pin-number sch-pin-number" x="238.04347826090202" y="580.1630434782551" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="24.456521739135px" transform="rotate(-90 238.04347826090202 580.1630434782551)">1</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="192.39130434785" cy="327.44565217386" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="192.39130434785" cy="360.05434782604004" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="192.39130434785" cy="392.66304347822" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="192.39130434785" cy="425.2717391304" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="192.39130434785" cy="457.88043478258004" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="192.39130434785" cy="490.48913043476" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="192.39130434785" cy="523.09782608694" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="1007.60869565235" cy="360.05434782604004" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="1007.60869565235" cy="392.66304347822" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_2__stack1"><circle cx="1007.60869565235" cy="425.2717391304" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_3__stack1"><circle cx="1007.60869565235" cy="457.88043478258004" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_4__stack1"><circle cx="1007.60869565235" cy="490.48913043476" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="404.34782608702" cy="180.70652173905" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_0__stack1"><circle cx="241.30434782612002" cy="302.989130434725" r="6.521739130436" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_4_0__stack1"><circle cx="241.30434782612002" cy="547.5543478260751" r="6.521739130436" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
98
+ M 249.53804347829544,523.09782608694
99
+ L 233.23369565220543,514.2934782608514
100
+ L 233.23369565220543,458.3804347825801
101
+ L 265.84239130438544,458.3804347825801
102
+ L 265.84239130438544,514.2934782608514
103
+ Z
104
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="249.53804347829544" y="508.42391304345904" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="rotate(-90 249.53804347829544 508.42391304345904)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
105
+ M 192.39130434785,360.05434782604004
106
+ L 201.19565217393858,343.74999999995003
107
+ L 276.26086956525694,343.74999999995003
108
+ L 276.26086956525694,376.35869565213005
109
+ L 201.19565217393858,376.35869565213005
110
+ Z
111
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="207.065217391331" y="360.05434782604004" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
112
+ M 1007.60869565235,360.05434782604004
113
+ L 998.8043478262614,376.35869565213005
114
+ L 923.739130434943,376.35869565213005
115
+ L 923.739130434943,343.74999999995003
116
+ L 998.8043478262614,343.74999999995003
117
+ Z
118
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="992.934782608869" y="360.05434782604004" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
119
+ M 192.39130434785,392.66304347822
120
+ L 201.19565217393858,376.35869565213
121
+ L 276.26086956525694,376.35869565213
122
+ L 276.26086956525694,408.96739130431
123
+ L 201.19565217393858,408.96739130431
124
+ Z
125
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="207.065217391331" y="392.66304347822" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
126
+ M 1007.60869565235,392.66304347822
127
+ L 998.8043478262614,408.96739130431
128
+ L 923.739130434943,408.96739130431
129
+ L 923.739130434943,376.35869565213
130
+ L 998.8043478262614,376.35869565213
131
+ Z
132
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="992.934782608869" y="392.66304347822" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="
133
+ M 192.39130434785,425.2717391304
134
+ L 201.19565217393858,408.96739130431
135
+ L 276.26086956525694,408.96739130431
136
+ L 276.26086956525694,441.57608695649003
137
+ L 201.19565217393858,441.57608695649003
138
+ Z
139
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="207.065217391331" y="425.2717391304" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" d="
140
+ M 1007.60869565235,425.2717391304
141
+ L 998.8043478262614,441.57608695649003
142
+ L 923.739130434943,441.57608695649003
143
+ L 923.739130434943,408.96739130431
144
+ L 998.8043478262614,408.96739130431
145
+ Z
146
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" x="992.934782608869" y="425.2717391304" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" d="
147
+ M 192.39130434785,457.88043478258004
148
+ L 201.19565217393858,441.57608695649003
149
+ L 276.26086956525694,441.57608695649003
150
+ L 276.26086956525694,474.18478260867005
151
+ L 201.19565217393858,474.18478260867005
152
+ Z
153
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" x="207.065217391331" y="457.88043478258004" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_8__stack1" d="
154
+ M 1007.60869565235,457.88043478258004
155
+ L 998.8043478262614,474.18478260867005
156
+ L 923.739130434943,474.18478260867005
157
+ L 923.739130434943,441.57608695649003
158
+ L 998.8043478262614,441.57608695649003
159
+ Z
160
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_8__stack1" x="992.934782608869" y="457.88043478258004" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_9__stack1" d="
161
+ M 192.39130434785,490.48913043476
162
+ L 201.19565217393858,474.18478260867
163
+ L 295.41304347830396,474.18478260867
164
+ L 295.41304347830396,506.79347826085
165
+ L 201.19565217393858,506.79347826085
166
+ Z
167
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_9__stack1" x="207.065217391331" y="490.48913043476" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" d="
168
+ M 1007.60869565235,490.48913043476
169
+ L 998.8043478262614,506.79347826085
170
+ L 904.586956521896,506.79347826085
171
+ L 904.586956521896,474.18478260867
172
+ L 998.8043478262614,474.18478260867
173
+ Z
174
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.260869565218px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" x="992.934782608869" y="490.48913043476" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="29.347826086961998px" transform="">XXXX</text>
175
+ </g>
176
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-4.475,2.9699999999999998 -2.38,3" data-type="line" data-label="" points="86.20462046204614,228.4378437843784 408.86688668866884,223.8173817381737" fill="none" stroke="hsl(192, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -2.7,1.5" data-type="line" data-label="" points="232.5192519251924,228.4378437843784 359.5819581958195,454.8404840484048" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.62,3 -3.3,1.5" data-type="line" data-label="" points="525.9185918591859,223.8173817381737 267.17271727172715,454.8404840484048" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -2.46,2.9699999999999998 -2.46,1.5 -2.7,1.5" data-type="line" data-label="" points="232.5192519251924,228.4378437843784 396.5456545654565,228.4378437843784 396.5456545654565,454.8404840484048 359.5819581958195,454.8404840484048" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.475,2.9699999999999998 -4.675,2.9699999999999998 -4.675,3.45 -2.58,3.45 -2.58,3 -2.38,3" data-type="line" data-label="" points="86.20462046204614,228.4378437843784 55.401540154015265,228.4378437843784 55.401540154015265,154.51045104510433 378.063806380638,154.51045104510433 378.063806380638,223.8173817381737 408.86688668866884,223.8173817381737" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.62,3 -1.3790000000000002,3 -1.3790000000000002,3.251" data-type="line" data-label="" points="525.9185918591859,223.8173817381737 563.036303630363,223.8173817381737 563.036303630363,185.1595159515951" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.3,1.5 -3.541,1.5 -3.541,1.9509999999999998" data-type="line" data-label="" points="267.17271727172715,454.8404840484048 230.05500550055,454.8404840484048 230.05500550055,385.37953795379536" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-4" data-y="3" x="86.20462046204614" y="201.48514851485137" width="146.31463146314627" height="44.66446644664467" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-2" data-y="3" x="408.86688668866884" y="185.31353135313518" width="117.05170517051704" height="77.00770077007707" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-3" data-y="1.5" x="267.17271727172715" y="390.15401540154005" width="92.40924092409233" height="129.37293729372942" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: .B1 &gt; .pin1 to .SW1 &gt; .pin1
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="-4.475,2.9699999999999998 -2.38,3" data-type="line" data-label="" points="86.20462046204614,228.4378437843784 408.86688668866884,223.8173817381737" fill="none" stroke="hsl(192, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -2.7,1.5" data-type="line" data-label="" points="232.5192519251924,228.4378437843784 359.5819581958195,454.8404840484048" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.62,3 -3.3,1.5" data-type="line" data-label="" points="525.9185918591859,223.8173817381737 267.17271727172715,454.8404840484048" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -2.46,2.9699999999999998 -2.46,1.5 -2.7,1.5" data-type="line" data-label="" points="232.5192519251924,228.4378437843784 396.5456545654565,228.4378437843784 396.5456545654565,454.8404840484048 359.5819581958195,454.8404840484048" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.475,2.9699999999999998 -4.675,2.9699999999999998 -4.675,3.45 -2.58,3.45 -2.58,3 -2.38,3" data-type="line" data-label="" points="86.20462046204614,228.4378437843784 55.401540154015265,228.4378437843784 55.401540154015265,154.51045104510433 378.063806380638,154.51045104510433 378.063806380638,223.8173817381737 408.86688668866884,223.8173817381737" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.62,3 -1.3790000000000002,3 -1.3790000000000002,3.251" data-type="line" data-label="" points="525.9185918591859,223.8173817381737 563.036303630363,223.8173817381737 563.036303630363,185.1595159515951" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.3,1.5 -3.541,1.5 -3.541,1.9509999999999998" data-type="line" data-label="" points="267.17271727172715,454.8404840484048 230.05500550055,454.8404840484048 230.05500550055,385.37953795379536" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-4" data-y="3" x="86.20462046204614" y="201.48514851485137" width="146.31463146314627" height="44.66446644664467" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-2" data-y="3" x="408.86688668866884" y="185.31353135313518" width="117.05170517051704" height="77.00770077007707" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-3" data-y="1.5" x="267.17271727172715" y="390.15401540154005" width="92.40924092409233" height="129.37293729372942" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: .B1 &gt; .pin1 to .SW1 &gt; .pin1
2
4
  globalConnNetId: connectivity_net0" data-x="-4.675" data-y="2.7449999999999997" x="39.99999999999994" y="228.43784378437843" width="30.803080308030644" height="69.30693069306932" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: GND
3
5
  globalConnNetId: connectivity_net1" data-x="-2.46" data-y="1.29" x="359.58195819581954" y="454.84048404840473" width="73.92739273927401" height="64.68646864686474" fill="#00000066" stroke="#000000" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: VCC
4
6
  globalConnNetId: connectivity_net2" data-x="-1.3790000000000002" data-y="3.461" x="526.072607260726" y="120.47304730473039" width="73.92739273927396" height="64.68646864686474" fill="#ef444466" stroke="#ef4444" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: VCC
@@ -22,7 +24,7 @@ orientation: y+" data-x="-3.541" data-y="1.9509999999999998" cx="230.05500550055
22
24
  const h = svg.getElementById('crosshair-h');
23
25
  const v = svg.getElementById('crosshair-v');
24
26
  const coords = svg.getElementById('coordinates');
25
-
27
+
26
28
  crosshair.style.display = 'block';
27
29
  h.setAttribute('x1', '0');
28
30
  h.setAttribute('x2', '640');
@@ -41,13 +43,13 @@ orientation: y+" data-x="-3.541" data-y="1.9509999999999998" cx="230.05500550055
41
43
  // y' = (y - ty) / sy
42
44
  const sx = matrix.a;
43
45
  const sy = matrix.d;
44
- const tx = matrix.e;
46
+ const tx = matrix.e;
45
47
  const ty = matrix.f;
46
48
  const realPoint = {
47
49
  x: (x - tx) / sx,
48
50
  y: (y - ty) / sy // Flip y back since we used negative scale
49
51
  }
50
-
52
+
51
53
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
52
54
  coords.setAttribute('x', (x + 5).toString());
53
55
  coords.setAttribute('y', (y - 5).toString());
@@ -55,4 +57,48 @@ orientation: y+" data-x="-3.541" data-y="1.9509999999999998" cx="230.05500550055
55
57
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
56
58
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
57
59
  });
58
- ]]></script></svg>
60
+ ]]></script>
61
+ </g>
62
+ <g transform="translate(1216, 200)">
63
+ <style>
64
+ .boundary { fill: rgb(245, 241, 237); }
65
+ .schematic-boundary { fill: none; stroke: #fff; }
66
+ .component { fill: none; stroke: rgb(132, 0, 0); }
67
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
68
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
69
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
70
+ .pin-number { fill: rgb(169, 0, 0); }
71
+ .port-label { fill: rgb(0, 100, 100); }
72
+ .component-name { fill: rgb(0, 100, 100); }
73
+
74
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 487.61213397770496 265.834163955334 L 727.959678784312 265.834163955334 L 727.959678784312 597.5814793222 L 673.79685178564 597.5814793222" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="36.108551332448px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 487.61213397770496 265.834163955334 L 727.959678784312 265.834163955334 L 727.959678784312 597.5814793222 L 673.79685178564 597.5814793222" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 273.21761044129505 265.834163955334 L 228.0819212757351 265.834163955334 L 228.0819212757351 157.50850995798987 L 700.878265284976 157.50850995798987 L 700.878265284976 259.0638105805 L 746.0139544505361 259.0638105805" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="36.108551332448px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 273.21761044129505 265.834163955334 L 228.0819212757351 265.834163955334 L 228.0819212757351 157.50850995798987 L 700.878265284976 157.50850995798987 L 700.878265284976 259.0638105805 L 746.0139544505361 259.0638105805" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 917.529573279664 259.0638105805 L 971.9180787241637 259.0638105805 L 971.9180787241637 202.4185206777222" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="36.108551332448px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 917.529573279664 259.0638105805 L 971.9180787241637 259.0638105805 L 971.9180787241637 202.4185206777222" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 538.3897842889601 597.5814793222 L 484.0012788444602 597.5814793222 L 484.0012788444602 495.8005002538622" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="36.108551332448px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 538.3897842889601 597.5814793222 L 484.0012788444602 597.5814793222 L 484.0012788444602 495.8005002538622" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component-overlay sch-component-overlay" x="273.21761044129505" y="231.53104018950836" width="214.3945235364099" height="66.46230229628708" fill="transparent"/><path class="sch-component-symbol-path" d="M 367.5512007973154 231.53104018950836 L 367.5512007973154 297.99334248579544" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 384.7027626802282 244.39471160169296 L 384.7027626802282 285.12967107361084" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 367.5512007973154 265.83416395533396 L 273.21761044129505 265.83416395533396" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 487.61213397770496 265.83416395533396 L 386.8467079155923 265.83416395533396" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="380.4148722095" y="212.2355330712315" stroke="rgb(245, 241, 237)" stroke-width="4.513568916556px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="40.622120249004px">B1</text><text class="sch-component-text" x="380.4148722095" y="319.4327948394364" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="40.622120249004px"></text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component-overlay sch-component-overlay" x="746.013954450536" y="227.468828164608" width="171.51561882912802" height="33.85176687416998" fill="transparent"/><path class="sch-component-symbol-path" d="M 746.013954450536 259.0638105805 L 804.690350365764 261.320595038778" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 815.974272657154 256.807026122222 L 854.33960844788 227.468828164608" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 858.853177364436 261.320595038778 L 917.529573279664 259.0638105805" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="831.7717638651" y="202.64419912355" stroke="rgb(245, 241, 237)" stroke-width="4.513568916556px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="40.622120249004px">SW1</text><text class="sch-component-text" x="831.7717638651" y="315.48342203744994" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="40.622120249004px"></text><circle class="sch-component-symbol-circle" cx="854.33960844788" cy="259.0638105805" r="4.513568916556px" stroke-width="4.513568916556px" fill="none" stroke="rgb(132, 0, 0)"/><circle class="sch-component-symbol-circle" cx="809.2039192823199" cy="259.0638105805" r="4.513568916556px" stroke-width="4.513568916556px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component-overlay sch-component-overlay" x="538.3897842889601" y="561.4684144208355" width="135.40706749667993" height="72.22612980272902" fill="transparent"/><path class="sch-component-symbol-path" d="M 673.79685178564 597.5814793222 L 619.634024786968 597.5814793222" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 592.5526112876321 597.5814793222 L 538.3897842889601 597.5814793222" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 619.634024786968 561.4684144208355 L 619.634024786968 633.6945442235645" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 592.5526112876321 561.4684144208355 L 592.5526112876321 633.6945442235645" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.513568916556px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="606.0933180373" y="543.418652323528" stroke="rgb(245, 241, 237)" stroke-width="4.513568916556px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="40.622120249004px">C3</text><text class="sch-component-text" x="606.0933180373" y="651.744306320872" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="40.622120249004px"></text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="267.5756492956" cy="265.4956462865923" r="9.027137833112" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="481.9701728320099" cy="265.4956462865923" r="9.027137833112" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="746.0139544505361" cy="259.0638105805" r="9.027137833112" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="917.529573279664" cy="259.0638105805" r="9.027137833112" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="538.3897842889601" cy="597.5814793222" r="9.027137833112" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="673.79685178564" cy="597.5814793222" r="9.027137833112" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
75
+ M 228.0819212757351,265.834163955334
76
+ L 250.6497658585151,278.0208000300352
77
+ L 250.6497658585151,355.41346171924874
78
+ L 205.51407669295511,355.41346171924874
79
+ L 205.51407669295511,278.0208000300352
80
+ Z
81
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="4.513568916556px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="228.0819212757351" y="286.145224079836" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="40.622120249004px" transform="rotate(90 228.0819212757351 286.145224079836)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
82
+ M 727.959678784312,597.5814793222
83
+ L 750.527523367092,609.7681153969013
84
+ L 750.527523367092,687.1607770861148
85
+ L 705.391834201532,687.1607770861148
86
+ L 705.391834201532,609.7681153969013
87
+ Z
88
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="4.513568916556px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="727.959678784312" y="617.892539446702" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="40.622120249004px" transform="rotate(90 727.959678784312 617.892539446702)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
89
+ M 971.9180787241637,202.4185206777222
90
+ L 949.3502341413837,190.231884603021
91
+ L 949.3502341413837,112.83922291380746
92
+ L 994.4859233069437,112.83922291380746
93
+ L 994.4859233069437,190.231884603021
94
+ Z
95
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="4.513568916556px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="971.9180787241637" y="182.1074605532202" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="40.622120249004px" transform="rotate(-90 971.9180787241637 182.1074605532202)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
96
+ M 484.0012788444602,495.8005002538622
97
+ L 461.4334342616802,483.613864179161
98
+ L 461.43343426168025,406.2212024899475
99
+ L 506.56912342724024,406.2212024899475
100
+ L 506.56912342724024,483.613864179161
101
+ Z
102
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="4.513568916556px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="484.0012788444602" y="475.4894401293602" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="40.622120249004px" transform="rotate(-90 484.0012788444602 475.4894401293602)">XX</text>
103
+ </g>
104
+ </svg>