text:
/*
Copyright 2017 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package dns

import (
	"fmt"
	"strings"
	"sync"
	"time"

	"k8s.io/klog/v2"
	"k8s.io/kops/protokube/pkg/gossip"
)

// We don't really support multiple zone ids, but we could
// Also, not supporting multiple zone ids makes implementing dnsprovider painful
const DefaultZoneName = "local"

type DNSTarget interface {
	Update(snapshot *DNSViewSnapshot) error
}

func RunDNSUpdates(target DNSTarget, src *DNSView) {
	var lastSnapshot *DNSViewSnapshot
	for {
		time.Sleep(5 * time.Second)

		// Consider replace with a watch?  But debouncing is also nice

		// Snapshot is very cheap if we are in-sync
		snapshot := src.Snapshot()
		if lastSnapshot != nil && lastSnapshot.version == snapshot.version {
			klog.V(4).Infof("DNSView unchanged: %v", lastSnapshot.version)
			continue
		}

		// TODO: We might want to keep old records alive for a bit

		klog.V(2).Infof("DNSView changed: %v", snapshot.version)

		err := target.Update(snapshot)
		if err != nil {
			klog.Warningf("error applying DNS changes to target: %v", err)
			continue
		}

		lastSnapshot = snapshot
	}
}

type DNSView struct {
	gossipState gossip.GossipState

	mutex        sync.Mutex
	lastSnapshot *DNSViewSnapshot
}

type DNSViewSnapshot struct {
	version uint64
	zoneMap map[string]*dnsViewSnapshotZone
}

type dnsViewSnapshotZone struct {
	Name    string
	Records map[string]DNSRecord
}

// RecordsForZone returns records matching the specified zone
func (s *DNSViewSnapshot) RecordsForZone(zoneInfo DNSZoneInfo) []DNSRecord {
	var records []DNSRecord

	zone := s.zoneMap[zoneInfo.Name]
	if zone != nil {
		for k := range zone.Records {
			records = append(records, zone.Records[k])
		}
	}

	return records
}

// RecordsForZoneAndName returns records matching the specified zone and name
func (s *DNSViewSnapshot) RecordsForZoneAndName(zoneInfo DNSZoneInfo, name string) []DNSRecord {
	var records []DNSRecord

	zone := s.zoneMap[zoneInfo.Name]
	if zone != nil {
		for k := range zone.Records {
			if zone.Records[k].Name != name {
				continue
			}

			records = append(records, zone.Records[k])
		}
	}

	return records
}

// ListZones returns all zones
func (s *DNSViewSnapshot) ListZones() []DNSZoneInfo {
	var zones []DNSZoneInfo
	for _, z := range s.zoneMap {
		zones = append(zones, DNSZoneInfo{
			Name: z.Name,
		})
	}
	return zones
}

// RemoveZone removes the specified zone, though this is currently not supported and returns an error.
func (v *DNSView) RemoveZone(info DNSZoneInfo) error {
	return fmt.Errorf("zone deletion is implicit")
}

// AddZone adds the specified zone; this creates a fake NS record just so that the zone has records
func (v *DNSView) AddZone(info DNSZoneInfo) (*DNSZoneInfo, error) {
	createRecords := []*DNSRecord{
		{
			RrsType: "NS",
			Name:    info.Name,
			Rrdatas: []string{"gossip"},
		},
	}

	err := v.ApplyChangeset(info, nil, createRecords)
	if err != nil {
		return nil, err
	}

	return &DNSZoneInfo{
		Name: info.Name,
	}, nil
}

// ApplyChangeset applies a DNS changeset to the records.
func (v *DNSView) ApplyChangeset(zone DNSZoneInfo, removeRecords []*DNSRecord, createRecords []*DNSRecord) error {
	var removeTags []string
	for _, record := range removeRecords {
		tagKey, err := buildTagKey(zone, record)
		if err != nil {
			return err
		}
		removeTags = append(removeTags, tagKey)
	}

	createTags := make(map[string]string)
	for _, record := range createRecords {
		tagKey, err := buildTagKey(zone, record)
		if err != nil {
			return err
		}
		if createTags[tagKey] != "" {
			return fmt.Errorf("duplicate record %q being created", tagKey)
		}
		createTags[tagKey] = strings.Join(record.Rrdatas, ",")
	}

	return v.gossipState.UpdateValues(removeTags, createTags)
}

func buildTagKey(zone DNSZoneInfo, record *DNSRecord) (string, error) {
	fqdn := strings.TrimSuffix(record.Name, ".")
	if fqdn != zone.Name && !strings.HasSuffix(fqdn, "."+zone.Name) {
		return "", fmt.Errorf("record %q not in zone %q", record.Name, zone.Name)
	}

	tokens := []string{
		"dns",
		zone.Name,
		record.RrsType,
		fqdn,
	}
	return strings.Join(tokens, "/"), nil
}

type DNSRecord struct {
	Name    string
	Rrdatas []string
	RrsType string
}

type DNSZoneInfo struct {
	Name string
}

func NewDNSView(gossipState gossip.GossipState) *DNSView {
	return &DNSView{
		gossipState: gossipState,
	}
}

// Snapshot returns a copy of the current desired DNS state-of-the-world
func (v *DNSView) Snapshot() *DNSViewSnapshot {
	v.mutex.Lock()
	defer v.mutex.Unlock()

	gossipSnapshot := v.gossipState.Snapshot()
	// Snapshot must be cheap if nothing has changed
	if v.lastSnapshot != nil && gossipSnapshot.Version == v.lastSnapshot.version {
		return v.lastSnapshot
	}

	snapshot := &DNSViewSnapshot{
		version: gossipSnapshot.Version,
	}

	zoneMap := make(map[string]*dnsViewSnapshotZone)
	for k, v := range gossipSnapshot.Values {
		if strings.HasPrefix(k, "dns/") {
			tokens := strings.Split(k, "/")
			if len(tokens) != 4 {
				klog.Warningf("key had invalid format: %q", k)
				continue
			}

			zoneID := tokens[1]
			recordType := tokens[2]
			name := tokens[3]

			zone := zoneMap[zoneID]
			if zone == nil {
				zone = &dnsViewSnapshotZone{
					Name:    zoneID,
					Records: make(map[string]DNSRecord),
				}
				zoneMap[zoneID] = zone
			}

			key := recordType + "::" + name

			record, found := zone.Records[key]
			if !found {
				record.Name = name
				record.RrsType = recordType
			}

			addresses := strings.Split(v, ",")
			record.Rrdatas = append(record.Rrdatas, addresses...)
			zone.Records[key] = record
		} else {
			klog.Warningf("unknown tag %q=%q", k, v)
		}
	}

	snapshot.zoneMap = zoneMap
	v.lastSnapshot = snapshot

	return snapshot
}

repository: kubernetes/kops

repo_name: kubernetes/kops

gha_language: Go

extension: go


text:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

SRC_URI = " \
          file://emmc-part-enable-rw;subdir=${PN}-${PV} \
          file://emmc-part-disable-rw;subdir=${PN}-${PV} \
          file://LICENSE;subdir=${PN}-${PV} \
          "

LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"

inherit mender-state-scripts

do_compile() {
    #
    # Manage toggling rw on the emmc hardware partitions for successful installs and commits
    #
    cp emmc-part-enable-rw ${MENDER_STATE_SCRIPTS_DIR}/Download_Enter_10_emmc-part-enable-rw
    cp emmc-part-disable-rw ${MENDER_STATE_SCRIPTS_DIR}/ArtifactInstall_Leave_10_emmc-part-disble-rw
    cp emmc-part-enable-rw ${MENDER_STATE_SCRIPTS_DIR}/ArtifactCommit_Enter_10_emmc-part-enable-rw
    cp emmc-part-disable-rw ${MENDER_STATE_SCRIPTS_DIR}/ArtifactCommit_Leave_10_emmc-part-disable-rw

    #
    # Handle various error transitions
    #
    cp emmc-part-disable-rw ${MENDER_STATE_SCRIPTS_DIR}/Download_Error_10_emmc-part-disable-rw
    cp emmc-part-disable-rw ${MENDER_STATE_SCRIPTS_DIR}/ArtifactInstall_Error_10_emmc-part-disable-rw
    cp emmc-part-disable-rw ${MENDER_STATE_SCRIPTS_DIR}/ArtifactCommit_Error_10_emmc-part-disable-rw
}

license: MIT

repository: drewmoseley/meta-dmoseley-local-config

license_type: permissive

repo_name: drewmoseley/meta-dmoseley-local-config

branch_name: refs/heads/master

extension: bb


text:
package cache

// Pop returns and removes an item from cache if it was found and not expired.
func (c *cache) Pop(k string) (interface{}, bool) {
	c.mu.Lock()
	defer c.mu.Unlock()
	v, found := c.items[k]
	if !found || v.Expired() {
		return nil, false
	}

	// remove key from cache
	delete(c.items, k)
	return v.Object, true
}

repository: mingjingc/go-cache

repo_name: mingjingc/go-cache

gha_license_id: MIT


text:
package btc

import (
	"context"
	"sync"
	"time"

	"github.com/btcsuite/btcd/btcec"
	"github.com/btcsuite/btcd/btcjson"
	"github.com/btcsuite/btcd/chaincfg/chainhash"
	"github.com/btcsuite/btcd/wire"
	"github.com/btcsuite/btcutil"
)

type Wallet interface {
	RawRequester
	connect(ctx context.Context, wg *sync.WaitGroup) error
	estimateSmartFee(confTarget int64, mode *btcjson.EstimateSmartFeeMode) (*btcjson.EstimateSmartFeeResult, error)
	sendRawTransaction(tx *wire.MsgTx) (*chainhash.Hash, error)
	getTxOut(txHash *chainhash.Hash, index uint32, pkScript []byte, startTime time.Time) (*wire.TxOut, uint32, error)
	getBlockHash(blockHeight int64) (*chainhash.Hash, error)
	getBlockHeight(*chainhash.Hash) (int32, error)
	getBestBlockHash() (*chainhash.Hash, error)
	getBestBlockHeight() (int32, error)
	balances() (*GetBalancesResult, error)
	listUnspent() ([]*ListUnspentResult, error)
	lockUnspent(unlock bool, ops []*output) error
	listLockUnspent() ([]*RPCOutpoint, error)
	changeAddress() (btcutil.Address, error)
	addressPKH() (btcutil.Address, error)
	addressWPKH() (btcutil.Address, error)
	signTx(inTx *wire.MsgTx) (*wire.MsgTx, error)
	privKeyForAddress(addr string) (*btcec.PrivateKey, error)
	walletUnlock(pw []byte) error
	walletLock() error
	sendToAddress(address string, value, feeRate uint64, subtract bool) (*chainhash.Hash, error)
	locked() bool
	syncStatus() (*syncStatus, error)
	swapConfirmations(txHash *chainhash.Hash, vout uint32, contract []byte, startTime time.Time) (confs uint32, spent bool, err error)
	getBlockHeader(blockHash *chainhash.Hash) (*blockHeader, error)
	ownsAddress(addr btcutil.Address) (bool, error)
	getWalletTransaction(txHash *chainhash.Hash) (*GetTransactionResult, error)
	searchBlockForRedemptions(ctx context.Context, reqs map[outPoint]*findRedemptionReq, blockHash chainhash.Hash) (discovered map[outPoint]*findRedemptionResult)
	findRedemptionsInMempool(ctx context.Context, reqs map[outPoint]*findRedemptionReq) (discovered map[outPoint]*findRedemptionResult)
	getBlock(h chainhash.Hash) (*wire.MsgBlock, error)
}

type tipNotifier interface {
	tipFeed() <-chan *block
}

repository: dcrvn/dcrdex

repo_name: dcrvn/dcrdex

gha_license_id: NOASSERTION


text:
package openproject

import (
	"errors"
	"fmt"
	"net/http"
	"strings"
	"testing"
)

func TestError_NewOpenProjectError(t *testing.T) {
	setup()
	defer teardown()

	testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Header().Set("Content-Type", "application/json")
		fmt.Fprint(w, `{"errorMessages":["Workpackage does not exist or you do not have permission to see it."],"errors":{}}`)
	})

	req, _ := testClient.NewRequest("GET", "/", nil)
	resp, _ := testClient.Do(req, nil)

	err := NewOpenProjectError(resp, errors.New("Original http error"))
	if err, ok := err.(*Error); !ok {
		t.Errorf("Expected OpenProject Error. Got %s", err.Error())
	}

	if !strings.Contains(err.Error(), "Workpackage does not exist") {
		t.Errorf("Expected workpackage message. Got: %s", err.Error())
	}
}

func TestError_NoResponse(t *testing.T) {
	err := NewOpenProjectError(nil, errors.New("Original http error"))

	msg := err.Error()
	if !strings.Contains(msg, "Original http error") {
		t.Errorf("Expected the original error message: Got\n%s\n", msg)
	}

	if !strings.Contains(msg, "No response") {
		t.Errorf("Expected the 'No response' error message: Got\n%s\n", msg)
	}
}

func TestError_NoJSON(t *testing.T) {
	setup()
	defer teardown()

	testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprint(w, `Original message body`)
	})

	req, _ := testClient.NewRequest("GET", "/", nil)
	resp, _ := testClient.Do(req, nil)

	err := NewOpenProjectError(resp, errors.New("Original http error"))
	msg := err.Error()

	if !strings.Contains(msg, "200 OK: Original message body: Original http error") {
		t.Errorf("Expected the HTTP status: Got\n%s\n", msg)
	}
}

func TestError_Unauthorized_NilError(t *testing.T) {
	setup()
	defer teardown()

	testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.WriteHeader(http.StatusUnauthorized)
		fmt.Fprint(w, `User is not authorized`)
	})

	req, _ := testClient.NewRequest("GET", "/", nil)
	resp, _ := testClient.Do(req, nil)

	err := NewOpenProjectError(resp, nil)
	msg := err.Error()
	if !strings.Contains(msg, "401 Unauthorized:User is not authorized") {
		t.Errorf("Expected Unauthorized HTTP status: Got\n%s\n", msg)
	}
}

func TestError_BadJSON(t *testing.T) {
	setup()
	defer teardown()

	testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Header().Set("Content-Type", "application/json")
		fmt.Fprint(w, `<html>Not JSON</html>`)
	})

	req, _ := testClient.NewRequest("GET", "/", nil)
	resp, _ := testClient.Do(req, nil)

	err := NewOpenProjectError(resp, errors.New("Original http error"))
	msg := err.Error()

	if !strings.Contains(msg, "could not parse JSON") {
		t.Errorf("Expected the 'could not parse JSON' error message: Got\n%s\n", msg)
	}
}

func TestError_NilOriginalMessage(t *testing.T) {
	defer func() {
		if r := recover(); r != nil {
			t.Errorf("Expected an error message. Got a panic (%v)", r)
		}
	}()

	msgErr := &Error{
		HTTPError:     nil,
		ErrorMessages: []string{"WorkPackage does not exist"},
		Errors: map[string]string{
			"workpackagetype": "WorkPackage type is required",
			"title":           "title is required",
		},
	}

	_ = msgErr.Error()
}

func TestError_NilOriginalMessageLongError(t *testing.T) {
	defer func() {
		if r := recover(); r != nil {
			t.Errorf("Expected an error message. Got a panic (%v)", r)
		}
	}()

	msgErr := &Error{
		HTTPError:     nil,
		ErrorMessages: []string{"WorkPackage does not exist"},
		Errors: map[string]string{
			"workpackagetype": "WorkPackage type is required",
			"title":           "title is required",
		},
	}

	_ = msgErr.LongError()
}

func TestError_ShortMessage(t *testing.T) {
	msgErr := &Error{
		HTTPError:     errors.New("Original http error"),
		ErrorMessages: []string{"WorkPackage does not exist"},
		Errors: map[string]string{
			"workpackagetype": "WorkPackage type is required",
			"title":           "title is required",
		},
	}

	mapErr := &Error{
		HTTPError:     errors.New("Original http error"),
		ErrorMessages: nil,
		Errors: map[string]string{
			"workpackagetype": "WorkPackage type is required",
			"title":           "title is required",
		},
	}

	noErr := &Error{
		HTTPError:     errors.New("Original http error"),
		ErrorMessages: nil,
		Errors:        nil,
	}

	err := msgErr.Error()
	if err != "WorkPackage does not exist: Original http error" {
		t.Errorf("Expected short message. Got %s", err)
	}

	err = mapErr.Error()
	if !(strings.Contains(err, "WorkPackage type is required") || strings.Contains(err, "title is required")) {
		t.Errorf("Expected short message. Got %s", err)
	}

	err = noErr.Error()
	if err != "Original http error" {
		t.Errorf("Expected original error message. Got %s", err)
	}
}

func TestError_LongMessage(t *testing.T) {
	longError := &Error{
		HTTPError:     errors.New("Original http error"),
		ErrorMessages: []string{"WorkPackage does not exist."},
		Errors: map[string]string{
			"workpackagetype": "WorkPackage type is required",
			"title":           "title is required",
		},
	}

	msg := longError.LongError()
	if !strings.Contains(msg, "Original http error") {
		t.Errorf("Expected the error message: Got\n%s\n", msg)
	}

	if !strings.Contains(msg, "WorkPackage does not exist") {
		t.Errorf("Expected the error message: Got\n%s\n", msg)
	}

	if !strings.Contains(msg, "title - title is required") {
		t.Errorf("Expected the error map: Got\n%s\n", msg)
	}
}

repository: davidboto/go-openproject

repo_name: davidboto/go-openproject


text:
package snip

import (
	"fmt"
	"strings"
	"time"
)

const (
	// SnippetDateFormat is "2006-01-02"
	SnippetDateFormat = "2006-01-02"
	// SnippetDateTimeFormat is "2006-01-02 15:04"
	SnippetDateTimeFormat = "2006-01-02 15:04"
)

// Snippet represents a single snippet
type Snippet struct {
	// Raw is the original string that was entered by the user
	Raw string `json:"raw"`
	// Text is the parsed snippet, raw sans objective
	Text string `json:"text"`
	// CreationTime is the time when the snippet was created
	CreationTime time.Time `json:"ctm"`
	// Objective is the extracted #objective from raw
	Objective string `json:"obj"`
	// Contexts is the extracted @context from raw
	Contexts []string `json:"ctx"`
}

func (s Snippet) String() string {
	return fmt.Sprintf("%s (text:%s \non:%s \nobjective:%s \ncontexts[%d]:%s)",
		s.Raw,
		s.Text,
		s.CreationTime.Format(SnippetDateTimeFormat),
		s.Objective,
		len(s.Contexts),
		strings.Join(s.Contexts, ","))
}

repository: mchmarny/snip

repo_name: mchmarny/snip

branch_name: refs/heads/main


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.2.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.001" unitdist="inch" unit="mil" style="lines" multiple="1" display="yes" altdistance="0.025" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
<layer number="4" name="Route4" color="1" fill="4" visible="no" active="no"/>
<layer number="5" name="Route5" color="4" fill="4" visible="no" active="no"/>
<layer number="6" name="Route6" color="1" fill="8" visible="no" active="no"/>
<layer number="7" name="Route7" color="4" fill="8" visible="no" active="no"/>
<layer number="8" name="Route8" color="1" fill="2" visible="no" active="no"/>
<layer number="9" name="Route9" color="4" fill="2" visible="no" active="no"/>
<layer number="10" name="Route10" color="1" fill="7" visible="no" active="no"/>
<layer number="11" name="Route11" color="4" fill="7" visible="no" active="no"/>
<layer number="12" name="Route12" color="1" fill="5" visible="no" active="no"/>
<layer number="13" name="Route13" color="4" fill="5" visible="no" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="yes" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="yes" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="yes" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="yes" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="yes" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="yes" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="yes" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="yes" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="yes" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="yes" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
<layer number="104" name="Name" color="16" fill="1" visible="yes" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="108" name="tplace-old" color="10" fill="1" visible="yes" active="yes"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="yes" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="yes" active="yes"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="113" name="IDFDebug" color="7" fill="1" visible="yes" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<layer number="121" name="_tsilk" color="14" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="14" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="153" name="FabDoc1" color="6" fill="1" visible="no" active="no"/>
<layer number="154" name="FabDoc2" color="2" fill="1" visible="no" active="no"/>
<layer number="155" name="FabDoc3" color="7" fill="15" visible="no" active="no"/>
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="yes" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<board>
<plain>
<wire x1="15.24" y1="-16.51" x2="40.64" y2="-16.51" width="0.254" layer="21" style="shortdash"/>
<wire x1="40.64" y1="-16.51" x2="40.64" y2="-38.1" width="0.254" layer="21" style="shortdash"/>
<wire x1="40.64" y1="-38.1" x2="15.24" y2="-38.1" width="0.254" layer="21" style="shortdash"/>
<wire x1="15.24" y1="-38.1" x2="15.24" y2="-16.51" width="0.254" layer="21" style="shortdash"/>
<wire x1="40.64" y1="-38.1" x2="59.2328" y2="-38.1" width="0.254" layer="21" style="shortdash"/>
<wire x1="59.2328" y1="-38.1" x2="59.2328" y2="-43.18" width="0.254" layer="21" style="shortdash"/>
<wire x1="59.2328" y1="-43.18" x2="76.708" y2="-43.18" width="0.254" layer="21" style="shortdash"/>
<wire x1="40.64" y1="-16.51" x2="43.18" y2="-16.51" width="0.254" layer="21" style="shortdash"/>
<wire x1="43.18" y1="-16.51" x2="43.18" y2="-8.89" width="0.254" layer="21" style="shortdash"/>
<wire x1="43.18" y1="-8.89" x2="74.93" y2="-8.89" width="0.254" layer="21" style="shortdash"/>
<text x="23.0632" y="-18.4912" size="1.27" layer="21" font="vector" ratio="20">PRE-CG</text>
<text x="44.45" y="-19.05" size="1.27" layer="21" font="vector" ratio="20">BPD</text>
<text x="42.0878" y="-14.4526" size="1.27" layer="21" font="vector" ratio="20" rot="R90">TRIP</text>
<text x="58.4708" y="-14.7828" size="1.27" layer="21" font="vector" ratio="20" rot="R90">R-SET</text>
<text x="76.6572" y="-17.9578" size="1.27" layer="21" font="vector" ratio="20" rot="R90">P-SET</text>
<text x="76.708" y="-28.194" size="1.27" layer="21" font="vector" ratio="20" rot="R90">C-SET</text>
<text x="76.708" y="-38.354" size="1.27" layer="21" font="vector" ratio="20" rot="R90">T-SET</text>
<wire x1="15.24" y1="-49.022" x2="31.242" y2="-49.022" width="0.3048" layer="21" style="shortdash"/>
<wire x1="31.242" y1="-49.022" x2="32.766" y2="-47.498" width="0.3048" layer="21" style="shortdash"/>
<wire x1="32.766" y1="-47.498" x2="36.703" y2="-47.498" width="0.3048" layer="21" style="shortdash"/>
<wire x1="36.703" y1="-47.498" x2="40.767" y2="-47.498" width="0.3048" layer="21" style="shortdash"/>
<wire x1="40.767" y1="-47.498" x2="40.64" y2="-38.227" width="0.3048" layer="21" style="shortdash"/>
<wire x1="40.64" y1="-38.227" x2="40.64" y2="-38.1" width="0.3048" layer="21" style="shortdash"/>
<wire x1="15.24" y1="-49.022" x2="15.24" y2="-38.1" width="0.3048" layer="21" style="shortdash"/>
<text x="17.145" y="-40.767" size="1.27" layer="21" font="vector" ratio="20">IMD</text>
<wire x1="36.703" y1="-47.498" x2="36.703" y2="-49.784" width="0.3048" layer="21" style="shortdash"/>
<wire x1="36.703" y1="-49.784" x2="49.657" y2="-49.784" width="0.3048" layer="21" style="shortdash"/>
<wire x1="49.657" y1="-49.784" x2="49.657" y2="-53.086" width="0.3048" layer="21" style="shortdash"/>
<wire x1="49.657" y1="-53.086" x2="77.216" y2="-53.086" width="0.3048" layer="21" style="shortdash"/>
<text x="52.1716" y="-52.5526" size="1.27" layer="21" font="vector" ratio="20">PRE-SET</text>
<text x="61.3156" y="-70.7898" size="1.27" layer="21" font="vector" ratio="20" rot="R180">Safety System</text>
<text x="51.3334" y="-68.3514" size="1.27" layer="21" font="vector" ratio="20" rot="R180">"SS"</text>
<dimension x1="0" y1="-99.06" x2="0" y2="0" x3="-4.7752" y3="-49.53" textsize="1.27" textratio="20" layer="47" dtype="vertical" unit="inch"/>
<dimension x1="0" y1="-99.06" x2="77.47" y2="-99.06" x3="38.735" y3="-103.5558" textsize="1.27" textratio="20" layer="47" dtype="horizontal" unit="inch"/>
<wire x1="29.0068" y1="-50.0634" x2="31.623" y2="-50.0634" width="0.3048" layer="25"/>
<wire x1="31.623" y1="-50.0634" x2="32.131" y2="-49.5554" width="0.3048" layer="25"/>
<wire x1="32.131" y1="-49.5554" x2="32.7406" y2="-49.5554" width="0.3048" layer="25"/>
<wire x1="53.7718" y1="-54.5338" x2="62.5094" y2="-54.5338" width="0.3048" layer="25"/>
<wire x1="62.5094" y1="-54.5338" x2="62.5094" y2="-62.7634" width="0.3048" layer="25"/>
<wire x1="62.5094" y1="-62.7634" x2="53.7718" y2="-62.7634" width="0.3048" layer="25"/>
<wire x1="53.7718" y1="-62.7634" x2="53.7718" y2="-54.5338" width="0.3048" layer="25"/>
<wire x1="53.7464" y1="-54.5592" x2="51.2826" y2="-54.5592" width="0.3048" layer="25"/>
<wire x1="51.2826" y1="-54.5592" x2="51.2826" y2="-49.3776" width="0.3048" layer="25"/>
<wire x1="59.69" y1="-15.875" x2="60.325" y2="-16.51" width="0.254" layer="121"/>
<wire x1="60.325" y1="-16.51" x2="61.595" y2="-16.51" width="0.254" layer="121"/>
<wire x1="61.595" y1="-16.51" x2="62.23" y2="-15.875" width="0.254" layer="121"/>
<wire x1="62.23" y1="-15.875" x2="62.23" y2="-14.605" width="0.254" layer="121"/>
<wire x1="62.23" y1="-14.605" x2="61.595" y2="-13.97" width="0.254" layer="121"/>
<wire x1="61.595" y1="-13.97" x2="60.325" y2="-13.97" width="0.254" layer="121"/>
<wire x1="60.325" y1="-13.97" x2="59.69" y2="-14.605" width="0.254" layer="121"/>
<wire x1="59.69" y1="-14.605" x2="59.69" y2="-15.875" width="0.254" layer="121"/>
<text x="62.4332" y="-13.7414" size="1.27" layer="121" font="vector" ratio="20" rot="R90">B-IN</text>
<wire x1="61.341" y1="-24.892" x2="61.976" y2="-25.527" width="0.254" layer="121"/>
<wire x1="61.976" y1="-25.527" x2="63.246" y2="-25.527" width="0.254" layer="121"/>
<wire x1="63.246" y1="-25.527" x2="63.881" y2="-24.892" width="0.254" layer="121"/>
<wire x1="63.881" y1="-24.892" x2="63.881" y2="-23.622" width="0.254" layer="121"/>
<wire x1="63.881" y1="-23.622" x2="63.246" y2="-22.987" width="0.254" layer="121"/>
<wire x1="63.246" y1="-22.987" x2="61.976" y2="-22.987" width="0.254" layer="121"/>
<wire x1="61.976" y1="-22.987" x2="61.341" y2="-23.622" width="0.254" layer="121"/>
<wire x1="61.341" y1="-23.622" x2="61.341" y2="-24.892" width="0.254" layer="121"/>
<text x="62.8396" y="-25.8826" size="1.27" layer="121" font="vector" ratio="20" rot="R270">C-IN</text>
<wire x1="67.31" y1="-23.495" x2="66.675" y2="-22.86" width="0.254" layer="121"/>
<wire x1="66.675" y1="-22.86" x2="65.405" y2="-22.86" width="0.254" layer="121"/>
<wire x1="65.405" y1="-22.86" x2="64.77" y2="-23.495" width="0.254" layer="121"/>
<wire x1="64.77" y1="-23.495" x2="64.77" y2="-24.765" width="0.254" layer="121"/>
<wire x1="64.77" y1="-24.765" x2="65.405" y2="-25.4" width="0.254" layer="121"/>
<wire x1="65.405" y1="-25.4" x2="66.675" y2="-25.4" width="0.254" layer="121"/>
<wire x1="66.675" y1="-25.4" x2="67.31" y2="-24.765" width="0.254" layer="121"/>
<wire x1="67.31" y1="-24.765" x2="67.31" y2="-23.495" width="0.254" layer="121"/>
<text x="66.1162" y="-25.7556" size="1.27" layer="121" font="vector" ratio="20" rot="R270">C-SP</text>
<text x="46.5836" y="-62.8142" size="1.27" layer="122" font="vector" ratio="20" rot="MR0">C1</text>
<text x="41.6052" y="-57.277" size="1.27" layer="122" font="vector" ratio="20" rot="MR90">C2</text>
<wire x1="68.234" y1="-25.065" x2="68.234" y2="-24.465" width="0.254" layer="121"/>
<wire x1="69.434" y1="-25.065" x2="69.434" y2="-24.465" width="0.254" layer="121"/>
<text x="67.9831" y="-20.7518" size="1.27" layer="121" font="vector" ratio="20" rot="R270">C3</text>
<wire x1="22.514" y1="-33.828" x2="22.514" y2="-33.228" width="0.254" layer="121"/>
<wire x1="23.714" y1="-33.828" x2="23.714" y2="-33.228" width="0.254" layer="121"/>
<text x="22.7965" y="-34.8742" size="1.27" layer="121" font="vector" ratio="20" rot="R270">C4</text>
<wire x1="22.4076" y1="-71.9678" x2="23.0076" y2="-71.9678" width="0.254" layer="121"/>
<wire x1="22.4076" y1="-73.1678" x2="23.0076" y2="-73.1678" width="0.254" layer="121"/>
<text x="24.384" y="-73.1647" size="1.27" layer="121" font="vector" ratio="20">C5</text>
<text x="24.4094" y="-34.4678" size="1.27" layer="121" font="vector" ratio="20" rot="R270">C6</text>
<wire x1="70.947" y1="-40.802" x2="71.547" y2="-40.802" width="0.254" layer="121"/>
<wire x1="70.947" y1="-42.002" x2="71.547" y2="-42.002" width="0.254" layer="121"/>
<text x="75.4888" y="-40.7162" size="1.27" layer="121" font="vector" ratio="20" rot="R180">C7</text>
<wire x1="67.98" y1="-14.27" x2="67.98" y2="-13.67" width="0.254" layer="121"/>
<wire x1="69.18" y1="-14.27" x2="69.18" y2="-13.67" width="0.254" layer="121"/>
<text x="67.4243" y="-14.7828" size="1.27" layer="121" font="vector" ratio="20" rot="R90">C8</text>
<text x="24.3586" y="-19.1262" size="1.27" layer="121" font="vector" ratio="20" rot="R180">C10</text>
<wire x1="59.99" y1="-22.444" x2="59.39" y2="-22.444" width="0.254" layer="121"/>
<wire x1="59.99" y1="-21.244" x2="59.39" y2="-21.244" width="0.254" layer="121"/>
<text x="65.2526" y="-21.3995" size="1.27" layer="121" font="vector" ratio="20" rot="R180">C12</text>
<text x="27.8638" y="-51.3842" size="1.27" layer="121" font="vector" ratio="20" rot="R270">C13</text>
<wire x1="28.356" y1="-22.652" x2="28.356" y2="-22.052" width="0.254" layer="121"/>
<wire x1="29.556" y1="-22.652" x2="29.556" y2="-22.052" width="0.254" layer="121"/>
<text x="31.3436" y="-19.3675" size="1.27" layer="121" font="vector" ratio="20" rot="R180">C14</text>
<wire x1="58.755" y1="-23.403" x2="59.355" y2="-23.403" width="0.254" layer="121"/>
<wire x1="58.755" y1="-24.603" x2="59.355" y2="-24.603" width="0.254" layer="121"/>
<text x="51.0286" y="-23.6347" size="1.27" layer="121" font="vector" ratio="20">C15</text>
<wire x1="31.7658" y1="-10.968" x2="31.7658" y2="-10.368" width="0.254" layer="122"/>
<wire x1="30.5658" y1="-10.968" x2="30.5658" y2="-10.368" width="0.254" layer="122"/>
<text x="29.9339" y="-9.0678" size="1.27" layer="122" font="vector" ratio="20" rot="MR270">C16</text>
<wire x1="62.449" y1="-27.005" x2="62.449" y2="-27.605" width="0.254" layer="121"/>
<wire x1="61.249" y1="-27.005" x2="61.249" y2="-27.605" width="0.254" layer="121"/>
<text x="62.2427" y="-32.2072" size="1.27" layer="121" font="vector" ratio="20" rot="R90">C17</text>
<wire x1="44.404" y1="-35.595" x2="45.004" y2="-35.595" width="0.254" layer="121"/>
<wire x1="44.404" y1="-36.795" x2="45.004" y2="-36.795" width="0.254" layer="121"/>
<text x="42.9133" y="-37.6682" size="1.27" layer="121" font="vector" ratio="20" rot="R90">C18</text>
<wire x1="63.292" y1="-33.944" x2="62.692" y2="-33.944" width="0.254" layer="122"/>
<wire x1="63.292" y1="-35.144" x2="62.692" y2="-35.144" width="0.254" layer="122"/>
<text x="64.6176" y="-36.7919" size="1.27" layer="122" font="vector" ratio="20" rot="MR0">C19</text>
<wire x1="29.383" y1="-34.706" x2="28.783" y2="-34.706" width="0.254" layer="122"/>
<wire x1="29.383" y1="-35.906" x2="28.783" y2="-35.906" width="0.254" layer="122"/>
<text x="30.5054" y="-34.2519" size="1.27" layer="122" font="vector" ratio="20" rot="MR0">C20</text>
<wire x1="19.501003125" y1="-12.081003125" x2="19.501003125" y2="-10.58100625" width="0.254" layer="121"/>
<wire x1="19.501003125" y1="-10.58100625" x2="21.900996875" y2="-10.58100625" width="0.254" layer="121"/>
<wire x1="21.900996875" y1="-10.58100625" x2="21.900996875" y2="-12.081003125" width="0.254" layer="121"/>
<wire x1="19.501003125" y1="-14.080996875" x2="19.501003125" y2="-15.180996875" width="0.254" layer="121"/>
<wire x1="19.501003125" y1="-15.180996875" x2="19.901003125" y2="-15.58099375" width="0.254" layer="121"/>
<wire x1="19.901003125" y1="-15.58099375" x2="21.500996875" y2="-15.58099375" width="0.254" layer="121"/>
<wire x1="21.500996875" y1="-15.58099375" x2="21.900996875" y2="-15.180996875" width="0.254" layer="121"/>
<wire x1="21.900996875" y1="-15.180996875" x2="21.900996875" y2="-14.080996875" width="0.254" layer="121"/>
<wire x1="21.717" y1="-13.462" x2="19.685" y2="-13.462" width="0.254" layer="121"/>
<text x="18.913603125" y="-14.351" size="1.27" layer="121" font="vector" ratio="20" rot="R90">C22</text>
<wire x1="33.725003125" y1="-12.589003125" x2="33.725003125" y2="-11.08900625" width="0.254" layer="121"/>
<wire x1="33.725003125" y1="-11.08900625" x2="36.124996875" y2="-11.08900625" width="0.254" layer="121"/>
<wire x1="36.124996875" y1="-11.08900625" x2="36.124996875" y2="-12.589003125" width="0.254" layer="121"/>
<wire x1="33.725003125" y1="-14.588996875" x2="33.725003125" y2="-15.688996875" width="0.254" layer="121"/>
<wire x1="33.725003125" y1="-15.688996875" x2="34.125003125" y2="-16.08899375" width="0.254" layer="121"/>
<wire x1="34.125003125" y1="-16.08899375" x2="35.724996875" y2="-16.08899375" width="0.254" layer="121"/>
<wire x1="35.724996875" y1="-16.08899375" x2="36.124996875" y2="-15.688996875" width="0.254" layer="121"/>
<wire x1="36.124996875" y1="-15.688996875" x2="36.124996875" y2="-14.588996875" width="0.254" layer="121"/>
<wire x1="35.941" y1="-13.97" x2="33.909" y2="-13.97" width="0.254" layer="121"/>
<text x="38.192203125" y="-14.9606" size="1.27" layer="121" font="vector" ratio="20" rot="R90">C23</text>
<text x="60.4012" y="-58.547" size="1.27" layer="121" font="vector" ratio="20" rot="R270">C24</text>
<wire x1="57.242" y1="-41.356" x2="57.242" y2="-41.956" width="0.254" layer="121"/>
<wire x1="56.042" y1="-41.356" x2="56.042" y2="-41.956" width="0.254" layer="121"/>
<text x="61.5569" y="-58.2168" size="1.27" layer="121" font="vector" ratio="20" rot="R90">C25</text>
<wire x1="47.163" y1="-48.098" x2="46.563" y2="-48.098" width="0.254" layer="121"/>
<wire x1="47.163" y1="-46.898" x2="46.563" y2="-46.898" width="0.254" layer="121"/>
<text x="48.2346" y="-48.2727" size="1.27" layer="121" font="vector" ratio="20" rot="R180">C26</text>
<wire x1="52.1414" y1="-39.716" x2="51.5414" y2="-39.716" width="0.254" layer="121"/>
<wire x1="52.1414" y1="-38.516" x2="51.5414" y2="-38.516" width="0.254" layer="121"/>
<text x="58.42" y="-55.1053" size="1.27" layer="121" font="vector" ratio="20" rot="R180">C27</text>
<wire x1="33.863" y1="-45.755" x2="34.463" y2="-45.755" width="0.254" layer="121"/>
<wire x1="33.863" y1="-46.955" x2="34.463" y2="-46.955" width="0.254" layer="121"/>
<text x="35.8394" y="-45.9105" size="1.27" layer="121" font="vector" ratio="20">C28</text>
<text x="21.5138" y="-59.309" size="1.27" layer="121" font="vector" ratio="20" rot="R180">C29</text>
<wire x1="68.834" y1="-2.286" x2="70.866" y2="-2.286" width="0.254" layer="121" curve="180"/>
<wire x1="70.866" y1="-96.52" x2="68.834" y2="-96.52" width="0.254" layer="121" curve="180"/>
<wire x1="70.866" y1="-2.286" x2="70.866" y2="0" width="0.254" layer="121"/>
<wire x1="68.834" y1="-2.286" x2="68.834" y2="0" width="0.254" layer="121"/>
<wire x1="70.866" y1="0" x2="77.47" y2="0" width="0.254" layer="121"/>
<wire x1="77.47" y1="0" x2="77.47" y2="-99.06" width="0.254" layer="121"/>
<wire x1="70.866" y1="-96.52" x2="70.866" y2="-99.06" width="0.254" layer="121"/>
<wire x1="68.834" y1="-96.52" x2="68.834" y2="-99.06" width="0.254" layer="121"/>
<wire x1="77.47" y1="-99.06" x2="70.866" y2="-99.06" width="0.254" layer="121"/>
<wire x1="68.834" y1="0" x2="0" y2="0" width="0.254" layer="121"/>
<wire x1="68.834" y1="-99.06" x2="0" y2="-99.06" width="0.254" layer="121"/>
<wire x1="0" y1="0" x2="0" y2="-99.06" width="0.254" layer="121"/>
<circle x="3.81" y="-5.08" radius="2.839796875" width="0.8128" layer="121"/>
<wire x1="68.834" y1="-2.286" x2="70.866" y2="-2.286" width="0.254" layer="122" curve="180"/>
<wire x1="70.866" y1="-96.52" x2="68.834" y2="-96.52" width="0.254" layer="122" curve="180"/>
<wire x1="70.866" y1="-2.286" x2="70.866" y2="0" width="0.254" layer="122"/>
<wire x1="68.834" y1="-2.286" x2="68.834" y2="0" width="0.254" layer="122"/>
<wire x1="70.866" y1="0" x2="77.47" y2="0" width="0.254" layer="122"/>
<wire x1="77.47" y1="0" x2="77.47" y2="-99.06" width="0.254" layer="122"/>
<wire x1="70.866" y1="-96.52" x2="70.866" y2="-99.06" width="0.254" layer="122"/>
<wire x1="68.834" y1="-96.52" x2="68.834" y2="-99.06" width="0.254" layer="122"/>
<wire x1="77.47" y1="-99.06" x2="70.866" y2="-99.06" width="0.254" layer="122"/>
<wire x1="68.834" y1="0" x2="0" y2="0" width="0.254" layer="122"/>
<wire x1="68.834" y1="-99.06" x2="0" y2="-99.06" width="0.254" layer="122"/>
<wire x1="0" y1="0" x2="0" y2="-99.06" width="0.254" layer="122"/>
<wire x1="65.659" y1="-30.988" x2="65.024" y2="-30.353" width="0.254" layer="121"/>
<wire x1="65.024" y1="-30.353" x2="63.754" y2="-30.353" width="0.254" layer="121"/>
<wire x1="63.754" y1="-30.353" x2="63.119" y2="-30.988" width="0.254" layer="121"/>
<wire x1="63.119" y1="-30.988" x2="63.119" y2="-32.258" width="0.254" layer="121"/>
<wire x1="63.119" y1="-32.258" x2="63.754" y2="-32.893" width="0.254" layer="121"/>
<wire x1="63.754" y1="-32.893" x2="65.024" y2="-32.893" width="0.254" layer="121"/>
<wire x1="65.024" y1="-32.893" x2="65.659" y2="-32.258" width="0.254" layer="121"/>
<wire x1="65.659" y1="-32.258" x2="65.659" y2="-30.988" width="0.254" layer="121"/>
<text x="69.4436" y="-30.861" size="1.27" layer="121" font="vector" ratio="20" rot="R180">CLK</text>
<wire x1="31.4706" y1="-6.3246" x2="31.47100625" y2="-12.319" width="0.254" layer="121"/>
<wire x1="31.47100625" y1="-12.319" x2="24.91699375" y2="-12.319" width="0.254" layer="121"/>
<wire x1="24.91699375" y1="-12.319" x2="24.9174" y2="-6.3246" width="0.254" layer="121"/>
<rectangle x1="27.7622" y1="-13.1826" x2="28.6258" y2="-12.4206" layer="121"/>
<text x="24.1554" y="-10.3632" size="1.27" layer="121" font="vector" ratio="20" rot="R90">IC1</text>
<wire x1="74.549" y1="-63.5" x2="74.549" y2="-64.008" width="0.254" layer="121"/>
<wire x1="74.549" y1="-60.96" x2="74.549" y2="-61.468" width="0.254" layer="121"/>
<wire x1="74.549" y1="-58.42" x2="74.549" y2="-58.928" width="0.254" layer="121"/>
<wire x1="74.549" y1="-55.88" x2="74.549" y2="-56.388" width="0.254" layer="121"/>
<wire x1="74.549" y1="-66.294" x2="74.549" y2="-66.04" width="0.254" layer="121"/>
<wire x1="74.549" y1="-66.294" x2="73.5584" y2="-66.294" width="0.254" layer="121"/>
<wire x1="73.5584" y1="-66.294" x2="73.279" y2="-66.0146" width="0.254" layer="121"/>
<wire x1="74.549" y1="-66.294" x2="75.5396" y2="-66.294" width="0.254" layer="121"/>
<wire x1="75.5396" y1="-66.294" x2="75.819" y2="-66.0146" width="0.254" layer="121"/>
<wire x1="74.549" y1="-53.594" x2="74.549" y2="-53.848" width="0.254" layer="121"/>
<wire x1="74.549" y1="-53.594" x2="75.5396" y2="-53.594" width="0.254" layer="121"/>
<wire x1="75.5396" y1="-53.594" x2="75.819" y2="-53.8734" width="0.254" layer="121"/>
<wire x1="74.549" y1="-53.594" x2="73.5584" y2="-53.594" width="0.254" layer="121"/>
<wire x1="73.5584" y1="-53.594" x2="73.279" y2="-53.8734" width="0.254" layer="121"/>
<text x="70.231" y="-57.658" size="1.27" layer="121" font="vector" ratio="20" rot="R270">JP1</text>
<wire x1="29.882996875" y1="-47.608996875" x2="28.283003125" y2="-47.608996875" width="0.254" layer="121"/>
<wire x1="30.082996875" y1="-45.909" x2="29.882996875" y2="-45.609" width="0.254" layer="121" curve="90"/>
<wire x1="28.283003125" y1="-45.609003125" x2="28.083003125" y2="-45.909" width="0.254" layer="121" curve="90.000689"/>
<wire x1="28.083003125" y1="-47.309" x2="28.283003125" y2="-47.60899375" width="0.254" layer="121" curve="90"/>
<wire x1="29.882996875" y1="-47.608996875" x2="30.082996875" y2="-47.309" width="0.254" layer="121" curve="89.999311"/>
<wire x1="28.283003125" y1="-45.609003125" x2="29.882996875" y2="-45.609003125" width="0.254" layer="121"/>
<text x="24.5174" y="-47.9044" size="1.27" layer="121" font="vector" ratio="20">JP2</text>
<wire x1="51.308" y1="-14.986" x2="56.896" y2="-14.986" width="0.254" layer="121"/>
<wire x1="51.308" y1="-9.906" x2="56.896" y2="-9.906" width="0.254" layer="121"/>
<wire x1="51.308" y1="-9.906" x2="51.308" y2="-14.986" width="0.254" layer="121"/>
<wire x1="56.896" y1="-9.906" x2="56.896" y2="-11.176" width="0.254" layer="121"/>
<wire x1="56.896" y1="-11.176" x2="56.896" y2="-13.716" width="0.254" layer="121"/>
<wire x1="56.896" y1="-13.716" x2="56.896" y2="-14.986" width="0.254" layer="121"/>
<wire x1="56.896" y1="-13.716" x2="55.626" y2="-13.716" width="0.254" layer="121"/>
<wire x1="55.626" y1="-13.716" x2="55.626" y2="-11.176" width="0.254" layer="121"/>
<wire x1="55.626" y1="-11.176" x2="56.896" y2="-11.176" width="0.254" layer="121"/>
<wire x1="44.704" y1="-14.986" x2="50.292" y2="-14.986" width="0.254" layer="121"/>
<wire x1="44.704" y1="-9.906" x2="50.292" y2="-9.906" width="0.254" layer="121"/>
<wire x1="44.704" y1="-9.906" x2="44.704" y2="-14.986" width="0.254" layer="121"/>
<wire x1="50.292" y1="-9.906" x2="50.292" y2="-11.176" width="0.254" layer="121"/>
<wire x1="50.292" y1="-11.176" x2="50.292" y2="-13.716" width="0.254" layer="121"/>
<wire x1="50.292" y1="-13.716" x2="50.292" y2="-14.986" width="0.254" layer="121"/>
<wire x1="50.292" y1="-13.716" x2="49.022" y2="-13.716" width="0.254" layer="121"/>
<wire x1="49.022" y1="-13.716" x2="49.022" y2="-11.176" width="0.254" layer="121"/>
<wire x1="49.022" y1="-11.176" x2="50.292" y2="-11.176" width="0.254" layer="121"/>
<rectangle x1="73.48100625" y1="-73.4639875" x2="73.63099375" y2="-73.1639875" layer="121" rot="R270"/>
<rectangle x1="73.48100625" y1="-74.6640125" x2="73.63099375" y2="-74.3640125" layer="121" rot="R270"/>
<rectangle x1="73.406" y1="-74.0640125" x2="73.706" y2="-73.7639875" layer="121" rot="R270"/>
<text x="70.866" y="-72.644" size="1.016" layer="121" font="vector" ratio="25" rot="R270">+</text>
<text x="71.247" y="-72.771" size="1.27" layer="121" font="vector" ratio="20">LED1</text>
<rectangle x1="17.426" y1="-26.924" x2="17.626" y2="-26.724" layer="121"/>
<text x="18.1864" y="-24.8412" size="1.27" layer="121" font="vector" ratio="20" rot="R90">LED4</text>
<rectangle x1="35.714" y1="-21.971" x2="35.914" y2="-21.771" layer="121"/>
<text x="38.1" y="-23.3426" size="1.27" layer="121" font="vector" ratio="20" rot="R90">LED5</text>
<rectangle x1="19.331" y1="-23.368" x2="19.531" y2="-23.168" layer="121"/>
<text x="20.0152" y="-21.3868" size="1.27" layer="121" font="vector" ratio="20" rot="R90">LED6</text>
<rectangle x1="36.857" y1="-32.966" x2="37.057" y2="-32.766" layer="121" rot="R180"/>
<text x="39.2684" y="-35.306" size="1.27" layer="121" font="vector" ratio="20" rot="R90">LED7</text>
<rectangle x1="47.498" y1="-41.756" x2="47.698" y2="-41.556" layer="121" rot="R270"/>
<text x="49.53" y="-39.4716" size="1.27" layer="121" font="vector" ratio="20" rot="R180">LED8</text>
<rectangle x1="22.025" y1="-42.137" x2="22.225" y2="-41.937" layer="121" rot="R90"/>
<text x="24.511" y="-43.053" size="1.27" layer="121" font="vector" ratio="20" rot="R180">LED9</text>
<wire x1="64.135" y1="-13.97" x2="63.5" y2="-14.605" width="0.254" layer="121"/>
<wire x1="63.5" y1="-14.605" x2="63.5" y2="-15.875" width="0.254" layer="121"/>
<wire x1="63.5" y1="-15.875" x2="64.135" y2="-16.51" width="0.254" layer="121"/>
<wire x1="64.135" y1="-16.51" x2="65.405" y2="-16.51" width="0.254" layer="121"/>
<wire x1="65.405" y1="-16.51" x2="66.04" y2="-15.875" width="0.254" layer="121"/>
<wire x1="66.04" y1="-15.875" x2="66.04" y2="-14.605" width="0.254" layer="121"/>
<wire x1="66.04" y1="-14.605" x2="65.405" y2="-13.97" width="0.254" layer="121"/>
<wire x1="65.405" y1="-13.97" x2="64.135" y2="-13.97" width="0.254" layer="121"/>
<text x="64.1096" y="-13.6906" size="1.27" layer="121" font="vector" ratio="20" rot="R90">P-SP</text>
<wire x1="28.6766" y1="-34.4424" x2="28.6766" y2="-33.1216" width="0.254" layer="121"/>
<wire x1="28.6766" y1="-33.1216" x2="31.5214" y2="-33.1216" width="0.254" layer="121"/>
<wire x1="31.5214" y1="-33.1216" x2="31.5214" y2="-34.4424" width="0.254" layer="121"/>
<wire x1="31.5214" y1="-34.4424" x2="28.6766" y2="-34.4424" width="0.254" layer="121"/>
<text x="28.6004" y="-37.2872" size="1.27" layer="121" font="vector" ratio="20">Q3</text>
<wire x1="35.652" y1="-32.339" x2="35.652" y2="-32.939" width="0.254" layer="121"/>
<wire x1="34.452" y1="-32.339" x2="34.452" y2="-32.939" width="0.254" layer="121"/>
<text x="36.2712" y="-34.417" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R1</text>
<text x="25.6032" y="-26.3906" size="1.27" layer="121" font="vector" ratio="20">R2</text>
<wire x1="71.12" y1="-36.703" x2="71.12" y2="-34.417" width="0.254" layer="121"/>
<wire x1="74.295" y1="-33.528" x2="74.549" y2="-33.528" width="0.254" layer="121"/>
<wire x1="74.295" y1="-33.528" x2="74.295" y2="-32.385" width="0.254" layer="121"/>
<wire x1="74.676" y1="-33.655" x2="74.549" y2="-33.528" width="0.254" layer="121"/>
<wire x1="74.549" y1="-37.592" x2="74.676" y2="-37.465" width="0.254" layer="121"/>
<wire x1="74.549" y1="-37.592" x2="74.295" y2="-37.592" width="0.254" layer="121"/>
<wire x1="74.168" y1="-38.862" x2="74.295" y2="-38.735" width="0.254" layer="121"/>
<wire x1="74.295" y1="-38.735" x2="74.295" y2="-37.592" width="0.254" layer="121"/>
<wire x1="74.295" y1="-32.385" x2="74.168" y2="-32.258" width="0.254" layer="121"/>
<wire x1="72.39" y1="-38.862" x2="74.168" y2="-38.862" width="0.254" layer="121"/>
<wire x1="72.39" y1="-32.258" x2="74.168" y2="-32.258" width="0.254" layer="121"/>
<wire x1="74.295" y1="-36.957" x2="74.295" y2="-37.592" width="0.254" layer="121"/>
<wire x1="74.549" y1="-36.703" x2="74.549" y2="-37.592" width="0.254" layer="121"/>
<wire x1="74.676" y1="-36.576" x2="74.676" y2="-37.465" width="0.254" layer="121"/>
<wire x1="74.676" y1="-33.655" x2="74.676" y2="-34.544" width="0.254" layer="121"/>
<wire x1="74.549" y1="-33.528" x2="74.549" y2="-34.417" width="0.254" layer="121"/>
<wire x1="74.295" y1="-33.528" x2="74.295" y2="-34.163" width="0.254" layer="121"/>
<wire x1="70.774" y1="-64.054" x2="70.774" y2="-63.454" width="0.254" layer="121"/>
<wire x1="71.974" y1="-64.054" x2="71.974" y2="-63.454" width="0.254" layer="121"/>
<text x="72.3138" y="-65.4939" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R4</text>
<wire x1="26.832" y1="-31.796" x2="26.832" y2="-31.196" width="0.254" layer="121"/>
<wire x1="28.032" y1="-31.796" x2="28.032" y2="-31.196" width="0.254" layer="121"/>
<text x="26.8478" y="-32.9692" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R5</text>
<wire x1="20.031" y1="-35.768" x2="20.031" y2="-36.368" width="0.254" layer="121"/>
<wire x1="18.831" y1="-35.768" x2="18.831" y2="-36.368" width="0.254" layer="121"/>
<text x="20.3708" y="-37.7698" size="1.27" layer="121" font="vector" ratio="20">R6</text>
<wire x1="16.926" y1="-35.3266" x2="16.926" y2="-34.7266" width="0.254" layer="121"/>
<wire x1="18.126" y1="-35.3266" x2="18.126" y2="-34.7266" width="0.254" layer="121"/>
<text x="16.6878" y="-35.5092" size="1.27" layer="121" font="vector" ratio="20" rot="R90">R7</text>
<wire x1="33.355" y1="-43.469" x2="33.955" y2="-43.469" width="0.254" layer="121"/>
<wire x1="33.355" y1="-44.669" x2="33.955" y2="-44.669" width="0.254" layer="121"/>
<text x="37.7952" y="-43.2181" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R9</text>
<wire x1="33.955" y1="-42.383" x2="33.355" y2="-42.383" width="0.254" layer="121"/>
<wire x1="33.955" y1="-41.183" x2="33.355" y2="-41.183" width="0.254" layer="121"/>
<text x="32.4612" y="-40.8305" size="1.27" layer="121" font="vector" ratio="20">R10</text>
<wire x1="71.12" y1="-26.543" x2="71.12" y2="-24.257" width="0.254" layer="121"/>
<wire x1="74.295" y1="-23.368" x2="74.549" y2="-23.368" width="0.254" layer="121"/>
<wire x1="74.295" y1="-23.368" x2="74.295" y2="-22.225" width="0.254" layer="121"/>
<wire x1="74.676" y1="-23.495" x2="74.549" y2="-23.368" width="0.254" layer="121"/>
<wire x1="74.549" y1="-27.432" x2="74.676" y2="-27.305" width="0.254" layer="121"/>
<wire x1="74.549" y1="-27.432" x2="74.295" y2="-27.432" width="0.254" layer="121"/>
<wire x1="74.168" y1="-28.702" x2="74.295" y2="-28.575" width="0.254" layer="121"/>
<wire x1="74.295" y1="-28.575" x2="74.295" y2="-27.432" width="0.254" layer="121"/>
<wire x1="74.295" y1="-22.225" x2="74.168" y2="-22.098" width="0.254" layer="121"/>
<wire x1="72.39" y1="-28.702" x2="74.168" y2="-28.702" width="0.254" layer="121"/>
<wire x1="72.39" y1="-22.098" x2="74.168" y2="-22.098" width="0.254" layer="121"/>
<wire x1="74.295" y1="-26.797" x2="74.295" y2="-27.432" width="0.254" layer="121"/>
<wire x1="74.549" y1="-26.543" x2="74.549" y2="-27.432" width="0.254" layer="121"/>
<wire x1="74.676" y1="-26.416" x2="74.676" y2="-27.305" width="0.254" layer="121"/>
<wire x1="74.676" y1="-23.495" x2="74.676" y2="-24.384" width="0.254" layer="121"/>
<wire x1="74.549" y1="-23.368" x2="74.549" y2="-24.257" width="0.254" layer="121"/>
<wire x1="74.295" y1="-23.368" x2="74.295" y2="-24.003" width="0.254" layer="121"/>
<wire x1="71.12" y1="-16.383" x2="71.12" y2="-14.097" width="0.254" layer="121"/>
<wire x1="74.295" y1="-13.208" x2="74.549" y2="-13.208" width="0.254" layer="121"/>
<wire x1="74.295" y1="-13.208" x2="74.295" y2="-12.065" width="0.254" layer="121"/>
<wire x1="74.676" y1="-13.335" x2="74.549" y2="-13.208" width="0.254" layer="121"/>
<wire x1="74.549" y1="-17.272" x2="74.676" y2="-17.145" width="0.254" layer="121"/>
<wire x1="74.549" y1="-17.272" x2="74.295" y2="-17.272" width="0.254" layer="121"/>
<wire x1="74.168" y1="-18.542" x2="74.295" y2="-18.415" width="0.254" layer="121"/>
<wire x1="74.295" y1="-18.415" x2="74.295" y2="-17.272" width="0.254" layer="121"/>
<wire x1="74.295" y1="-12.065" x2="74.168" y2="-11.938" width="0.254" layer="121"/>
<wire x1="72.39" y1="-18.542" x2="74.168" y2="-18.542" width="0.254" layer="121"/>
<wire x1="72.39" y1="-11.938" x2="74.168" y2="-11.938" width="0.254" layer="121"/>
<wire x1="74.295" y1="-16.637" x2="74.295" y2="-17.272" width="0.254" layer="121"/>
<wire x1="74.549" y1="-16.383" x2="74.549" y2="-17.272" width="0.254" layer="121"/>
<wire x1="74.676" y1="-16.256" x2="74.676" y2="-17.145" width="0.254" layer="121"/>
<wire x1="74.676" y1="-13.335" x2="74.676" y2="-14.224" width="0.254" layer="121"/>
<wire x1="74.549" y1="-13.208" x2="74.549" y2="-14.097" width="0.254" layer="121"/>
<wire x1="74.295" y1="-13.208" x2="74.295" y2="-13.843" width="0.254" layer="121"/>
<wire x1="54.645" y1="-18.334" x2="54.645" y2="-17.734" width="0.254" layer="121"/>
<wire x1="55.845" y1="-18.334" x2="55.845" y2="-17.734" width="0.254" layer="121"/>
<text x="52.7685" y="-16.002" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R13</text>
<wire x1="56.423" y1="-18.334" x2="56.423" y2="-17.734" width="0.254" layer="121"/>
<wire x1="57.623" y1="-18.334" x2="57.623" y2="-17.734" width="0.254" layer="121"/>
<text x="57.9247" y="-15.6718" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R14</text>
<wire x1="21.4582" y1="-68.9768" x2="20.8582" y2="-68.9768" width="0.254" layer="121"/>
<wire x1="21.4582" y1="-67.7768" x2="20.8582" y2="-67.7768" width="0.254" layer="121"/>
<text x="19.812" y="-67.7037" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R17</text>
<wire x1="24.938" y1="-68.9768" x2="24.338" y2="-68.9768" width="0.254" layer="121"/>
<wire x1="24.938" y1="-67.7768" x2="24.338" y2="-67.7768" width="0.254" layer="121"/>
<text x="29.8196" y="-67.8053" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R18</text>
<text x="70.231" y="-71.501" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R20</text>
<wire x1="29.926" y1="-30.007" x2="30.526" y2="-30.007" width="0.254" layer="121"/>
<wire x1="29.926" y1="-31.207" x2="30.526" y2="-31.207" width="0.254" layer="121"/>
<text x="32.004" y="-28.6004" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R21</text>
<wire x1="50.627" y1="-35.341" x2="51.227" y2="-35.341" width="0.254" layer="121"/>
<wire x1="50.627" y1="-36.541" x2="51.227" y2="-36.541" width="0.254" layer="121"/>
<text x="52.705" y="-37.2999" size="1.27" layer="121" font="vector" ratio="20">R22</text>
<text x="56.6674" y="-61.5696" size="1.27" layer="121" font="vector" ratio="20">R24</text>
<wire x1="51.4" y1="-41.61" x2="51.4" y2="-42.21" width="0.254" layer="121"/>
<wire x1="50.2" y1="-41.61" x2="50.2" y2="-42.21" width="0.254" layer="121"/>
<text x="54.6227" y="-56.9214" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R25</text>
<wire x1="44.796" y1="-42.372" x2="44.796" y2="-42.972" width="0.254" layer="121"/>
<wire x1="43.596" y1="-42.372" x2="43.596" y2="-42.972" width="0.254" layer="121"/>
<text x="41.3512" y="-41.1353" size="1.27" layer="121" font="vector" ratio="20">R26</text>
<wire x1="25.608" y1="-41.437" x2="26.208" y2="-41.437" width="0.254" layer="121"/>
<wire x1="25.608" y1="-42.637" x2="26.208" y2="-42.637" width="0.254" layer="121"/>
<text x="24.638" y="-40.9829" size="1.27" layer="121" font="vector" ratio="20">R27</text>
<wire x1="66.502" y1="-40.04" x2="67.102" y2="-40.04" width="0.254" layer="121"/>
<wire x1="66.502" y1="-41.24" x2="67.102" y2="-41.24" width="0.254" layer="121"/>
<text x="65.151" y="-42.7101" size="1.27" layer="121" font="vector" ratio="20">R29</text>
<wire x1="67.472" y1="-35.098" x2="67.472" y2="-34.498" width="0.254" layer="121"/>
<wire x1="68.672" y1="-35.098" x2="68.672" y2="-34.498" width="0.254" layer="121"/>
<text x="70.1167" y="-36.0172" size="1.27" layer="121" font="vector" ratio="20" rot="R90">R30</text>
<wire x1="67.472" y1="-38.146" x2="67.472" y2="-37.546" width="0.254" layer="121"/>
<wire x1="68.672" y1="-38.146" x2="68.672" y2="-37.546" width="0.254" layer="121"/>
<text x="70.1167" y="-39.5478" size="1.27" layer="121" font="vector" ratio="20" rot="R90">R31</text>
<wire x1="61.376" y1="-38.4" x2="61.376" y2="-37.8" width="0.254" layer="121"/>
<wire x1="62.576" y1="-38.4" x2="62.576" y2="-37.8" width="0.254" layer="121"/>
<text x="59.8551" y="-37.6936" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R32</text>
<wire x1="63.546" y1="-41.24" x2="62.946" y2="-41.24" width="0.254" layer="121"/>
<wire x1="63.546" y1="-40.04" x2="62.946" y2="-40.04" width="0.254" layer="121"/>
<text x="61.2902" y="-42.7355" size="1.27" layer="121" font="vector" ratio="20">R33</text>
<wire x1="52.532" y1="-44.612" x2="53.132" y2="-44.612" width="0.254" layer="121"/>
<wire x1="52.532" y1="-45.812" x2="53.132" y2="-45.812" width="0.254" layer="121"/>
<text x="60.1726" y="-58.5597" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R36</text>
<wire x1="43.018" y1="-42.372" x2="43.018" y2="-42.972" width="0.254" layer="121"/>
<wire x1="41.818" y1="-42.372" x2="41.818" y2="-42.972" width="0.254" layer="121"/>
<text x="41.5544" y="-39.6367" size="1.27" layer="121" font="vector" ratio="20">R37</text>
<wire x1="71.374" y1="-49.403" x2="71.374" y2="-47.117" width="0.254" layer="121"/>
<wire x1="74.549" y1="-46.228" x2="74.803" y2="-46.228" width="0.254" layer="121"/>
<wire x1="74.549" y1="-46.228" x2="74.549" y2="-45.085" width="0.254" layer="121"/>
<wire x1="74.93" y1="-46.355" x2="74.803" y2="-46.228" width="0.254" layer="121"/>
<wire x1="74.803" y1="-50.292" x2="74.93" y2="-50.165" width="0.254" layer="121"/>
<wire x1="74.803" y1="-50.292" x2="74.549" y2="-50.292" width="0.254" layer="121"/>
<wire x1="74.422" y1="-51.562" x2="74.549" y2="-51.435" width="0.254" layer="121"/>
<wire x1="74.549" y1="-51.435" x2="74.549" y2="-50.292" width="0.254" layer="121"/>
<wire x1="74.549" y1="-45.085" x2="74.422" y2="-44.958" width="0.254" layer="121"/>
<wire x1="72.644" y1="-51.562" x2="74.422" y2="-51.562" width="0.254" layer="121"/>
<wire x1="72.644" y1="-44.958" x2="74.422" y2="-44.958" width="0.254" layer="121"/>
<wire x1="74.549" y1="-49.657" x2="74.549" y2="-50.292" width="0.254" layer="121"/>
<wire x1="74.803" y1="-49.403" x2="74.803" y2="-50.292" width="0.254" layer="121"/>
<wire x1="74.93" y1="-49.276" x2="74.93" y2="-50.165" width="0.254" layer="121"/>
<wire x1="74.93" y1="-46.355" x2="74.93" y2="-47.244" width="0.254" layer="121"/>
<wire x1="74.803" y1="-46.228" x2="74.803" y2="-47.117" width="0.254" layer="121"/>
<wire x1="74.549" y1="-46.228" x2="74.549" y2="-46.863" width="0.254" layer="121"/>
<text x="75.438" y="-45.72" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R38</text>
<text x="68.961" y="-68.961" size="1.27" layer="122" font="vector" ratio="20" rot="MR0">R39</text>
<text x="68.961" y="-71.7296" size="1.27" layer="122" font="vector" ratio="20" rot="MR0">R40</text>
<text x="28.9814" y="-16.2814" size="1.27" layer="122" font="vector" ratio="20" rot="MR90">R41</text>
<wire x1="18.126" y1="-30.434" x2="18.126" y2="-31.034" width="0.254" layer="121"/>
<wire x1="16.926" y1="-30.434" x2="16.926" y2="-31.034" width="0.254" layer="121"/>
<text x="15.4686" y="-28.6766" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R48</text>
<wire x1="36.414" y1="-25.354" x2="36.414" y2="-25.954" width="0.254" layer="121"/>
<wire x1="35.214" y1="-25.354" x2="35.214" y2="-25.954" width="0.254" layer="121"/>
<text x="36.9062" y="-23.5966" size="1.27" layer="121" font="vector" ratio="20" rot="R270">R49</text>
<wire x1="20.031" y1="-27.132" x2="20.031" y2="-27.732" width="0.254" layer="121"/>
<wire x1="18.831" y1="-27.132" x2="18.831" y2="-27.732" width="0.254" layer="121"/>
<text x="23.7998" y="-28.6766" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R50</text>
<wire x1="32.547" y1="-32.939" x2="32.547" y2="-32.339" width="0.254" layer="121"/>
<wire x1="33.747" y1="-32.939" x2="33.747" y2="-32.339" width="0.254" layer="121"/>
<text x="32.893" y="-37.6047" size="1.27" layer="121" font="vector" ratio="20">R51</text>
<wire x1="33.736" y1="-29.245" x2="34.336" y2="-29.245" width="0.254" layer="121"/>
<wire x1="33.736" y1="-30.445" x2="34.336" y2="-30.445" width="0.254" layer="121"/>
<text x="37.211" y="-27.4447" size="1.27" layer="121" font="vector" ratio="20" rot="R180">R52</text>
<rectangle x1="73.968" y1="-68.045" x2="74.168" y2="-67.845" layer="121" rot="R90"/>
<text x="72.136" y="-67.437" size="1.27" layer="121" font="vector" ratio="20" rot="R180">RX1</text>
<wire x1="44.45" y1="-45.466" x2="43.815" y2="-44.831" width="0.254" layer="121"/>
<wire x1="43.815" y1="-44.831" x2="42.545" y2="-44.831" width="0.254" layer="121"/>
<wire x1="42.545" y1="-44.831" x2="41.91" y2="-45.466" width="0.254" layer="121"/>
<wire x1="41.91" y1="-45.466" x2="41.91" y2="-46.736" width="0.254" layer="121"/>
<wire x1="41.91" y1="-46.736" x2="42.545" y2="-47.371" width="0.254" layer="121"/>
<wire x1="42.545" y1="-47.371" x2="43.815" y2="-47.371" width="0.254" layer="121"/>
<wire x1="43.815" y1="-47.371" x2="44.45" y2="-46.736" width="0.254" layer="121"/>
<wire x1="44.45" y1="-46.736" x2="44.45" y2="-45.466" width="0.254" layer="121"/>
<text x="44.2722" y="-47.9298" size="1.27" layer="121" font="vector" ratio="20" rot="R180">SET-PS</text>
<wire x1="61.468" y1="-47.371" x2="60.833" y2="-46.736" width="0.254" layer="121"/>
<wire x1="60.833" y1="-46.736" x2="59.563" y2="-46.736" width="0.254" layer="121"/>
<wire x1="59.563" y1="-46.736" x2="58.928" y2="-47.371" width="0.254" layer="121"/>
<wire x1="58.928" y1="-47.371" x2="58.928" y2="-48.641" width="0.254" layer="121"/>
<wire x1="58.928" y1="-48.641" x2="59.563" y2="-49.276" width="0.254" layer="121"/>
<wire x1="59.563" y1="-49.276" x2="60.833" y2="-49.276" width="0.254" layer="121"/>
<wire x1="60.833" y1="-49.276" x2="61.468" y2="-48.641" width="0.254" layer="121"/>
<wire x1="61.468" y1="-48.641" x2="61.468" y2="-47.371" width="0.254" layer="121"/>
<text x="62.0014" y="-48.768" size="1.27" layer="121" font="vector" ratio="20">SET2</text>
<wire x1="34.835996875" y1="-50.275996875" x2="33.236003125" y2="-50.275996875" width="0.254" layer="121"/>
<wire x1="35.035996875" y1="-48.576" x2="34.835996875" y2="-48.276" width="0.254" layer="121" curve="90"/>
<wire x1="33.236003125" y1="-48.276003125" x2="33.036003125" y2="-48.576" width="0.254" layer="121" curve="90.000689"/>
<wire x1="33.036003125" y1="-49.976" x2="33.236003125" y2="-50.27599375" width="0.254" layer="121" curve="90"/>
<wire x1="34.835996875" y1="-50.275996875" x2="35.035996875" y2="-49.976" width="0.254" layer="121" curve="89.999311"/>
<wire x1="33.236003125" y1="-48.276003125" x2="34.835996875" y2="-48.276003125" width="0.254" layer="121"/>
<text x="25.3048" y="-50.9524" size="1.27" layer="121" font="vector" ratio="20">SJ1</text>
<wire x1="60.833" y1="-46.482" x2="61.468" y2="-45.847" width="0.254" layer="121"/>
<wire x1="61.468" y1="-45.847" x2="61.468" y2="-44.577" width="0.254" layer="121"/>
<wire x1="61.468" y1="-44.577" x2="60.833" y2="-43.942" width="0.254" layer="121"/>
<wire x1="60.833" y1="-43.942" x2="59.563" y2="-43.942" width="0.254" layer="121"/>
<wire x1="59.563" y1="-43.942" x2="58.928" y2="-44.577" width="0.254" layer="121"/>
<wire x1="58.928" y1="-44.577" x2="58.928" y2="-45.847" width="0.254" layer="121"/>
<wire x1="58.928" y1="-45.847" x2="59.563" y2="-46.482" width="0.254" layer="121"/>
<wire x1="59.563" y1="-46.482" x2="60.833" y2="-46.482" width="0.254" layer="121"/>
<text x="62.0268" y="-46.2026" size="1.27" layer="121" font="vector" ratio="20">TH-PS</text>
<rectangle x1="73.9172" y1="-70.204" x2="74.1172" y2="-70.004" layer="121" rot="R90"/>
<text x="71.9582" y="-69.596" size="1.27" layer="121" font="vector" ratio="20" rot="R180">TX1</text>
<wire x1="69.596" y1="-64.77" x2="67.056" y2="-67.31" width="0.254" layer="121"/>
<wire x1="67.056" y1="-67.31" x2="67.056" y2="-62.23" width="0.254" layer="121"/>
<wire x1="67.056" y1="-62.23" x2="69.596" y2="-64.77" width="0.254" layer="121"/>
<wire x1="67.31" y1="-66.675" x2="67.31" y2="-62.865" width="0.6096" layer="121"/>
<wire x1="67.818" y1="-66.167" x2="67.818" y2="-63.373" width="0.6096" layer="121"/>
<wire x1="68.326" y1="-65.659" x2="68.326" y2="-63.881" width="0.6096" layer="121"/>
<wire x1="68.707" y1="-65.278" x2="68.707" y2="-64.262" width="0.6096" layer="121"/>
<wire x1="68.707" y1="-64.262" x2="69.215" y2="-64.77" width="0.6096" layer="121"/>
<wire x1="69.215" y1="-64.77" x2="67.31" y2="-66.675" width="0.6096" layer="121"/>
<wire x1="68.707" y1="-64.262" x2="67.437" y2="-62.992" width="0.6096" layer="121"/>
<wire x1="67.1068" y1="-67.1322" x2="67.1322" y2="-66.9544" width="0.254" layer="121"/>
<wire x1="67.1322" y1="-66.9544" x2="67.2592" y2="-66.9798" width="0.254" layer="121"/>
<wire x1="67.2592" y1="-66.9798" x2="67.2084" y2="-67.056" width="0.254" layer="121"/>
<wire x1="67.1322" y1="-62.6618" x2="67.1322" y2="-62.4078" width="0.254" layer="121"/>
<wire x1="67.1322" y1="-62.4078" x2="67.2592" y2="-62.5602" width="0.254" layer="121"/>
<rectangle x1="66.0908" y1="-91.694" x2="67.4624" y2="-91.6432" layer="121"/>
<rectangle x1="65.532" y1="-91.6432" x2="68.072" y2="-91.5924" layer="121"/>
<rectangle x1="65.0748" y1="-91.5924" x2="68.5292" y2="-91.5416" layer="121"/>
<rectangle x1="64.6684" y1="-91.5416" x2="66.548" y2="-91.4908" layer="121"/>
<rectangle x1="67.1068" y1="-91.5416" x2="68.834" y2="-91.4908" layer="121"/>
<rectangle x1="64.3128" y1="-91.4908" x2="65.7352" y2="-91.44" layer="121"/>
<rectangle x1="67.9196" y1="-91.4908" x2="69.1388" y2="-91.44" layer="121"/>
<rectangle x1="64.0588" y1="-91.44" x2="65.1764" y2="-91.3892" layer="121"/>
<rectangle x1="68.326" y1="-91.44" x2="69.4436" y2="-91.3892" layer="121"/>
<rectangle x1="63.754" y1="-91.3892" x2="64.8208" y2="-91.3384" layer="121"/>
<rectangle x1="68.7324" y1="-91.3892" x2="69.6976" y2="-91.3384" layer="121"/>
<rectangle x1="63.5" y1="-91.3384" x2="64.4652" y2="-91.2876" layer="121"/>
<rectangle x1="69.0372" y1="-91.3384" x2="69.9516" y2="-91.2876" layer="121"/>
<rectangle x1="63.246" y1="-91.2876" x2="64.1604" y2="-91.2368" layer="121"/>
<rectangle x1="69.342" y1="-91.2876" x2="70.1548" y2="-91.2368" layer="121"/>
<rectangle x1="63.0428" y1="-91.2368" x2="63.8556" y2="-91.186" layer="121"/>
<rectangle x1="69.596" y1="-91.2368" x2="70.358" y2="-91.186" layer="121"/>
<rectangle x1="62.8396" y1="-91.186" x2="63.6016" y2="-91.1352" layer="121"/>
<rectangle x1="69.85" y1="-91.186" x2="70.5612" y2="-91.1352" layer="121"/>
<rectangle x1="62.6364" y1="-91.1352" x2="63.3476" y2="-91.0844" layer="121"/>
<rectangle x1="70.0532" y1="-91.1352" x2="70.7644" y2="-91.0844" layer="121"/>
<rectangle x1="62.484" y1="-91.0844" x2="63.1444" y2="-91.0336" layer="121"/>
<rectangle x1="70.2564" y1="-91.0844" x2="70.9168" y2="-91.0336" layer="121"/>
<rectangle x1="62.3316" y1="-91.0336" x2="62.9412" y2="-90.9828" layer="121"/>
<rectangle x1="70.4596" y1="-91.0336" x2="71.0692" y2="-90.9828" layer="121"/>
<rectangle x1="62.1792" y1="-90.9828" x2="62.738" y2="-90.932" layer="121"/>
<rectangle x1="70.6628" y1="-90.9828" x2="71.2724" y2="-90.932" layer="121"/>
<rectangle x1="62.0776" y1="-90.932" x2="62.5856" y2="-90.8812" layer="121"/>
<rectangle x1="70.866" y1="-90.932" x2="71.4248" y2="-90.8812" layer="121"/>
<rectangle x1

path: /Hardware/_Safety System (SS) Done/SS_rev02.brd

extension: brd