From 92b6b2189518ed7588bc4b17d452923587e523d1 Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Wed, 24 Jun 2020 20:18:00 +0100 Subject: [PATCH 01/48] Added ability to set part numbers --- src/wireviz/wireviz.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 83dba1e..3317c00 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -90,7 +90,7 @@ class Harness: else: # not a ferrule # a = attributes - a = [n.type, + a = [n.part_number, n.type, n.subtype, '{}-pin'.format(n.pincount) if n.show_pincount else ''] # p = pinout @@ -123,7 +123,8 @@ class Harness: for k, c in self.cables.items(): # a = attributes - a = ['{}x'.format(len(c.colors)) if c.show_wirecount else '', + a = [c.part_number, + '{}x'.format(len(c.colors)) if c.show_wirecount else '', '{} {}{}'.format(c.gauge, c.gauge_unit, ' ({} AWG)'.format(awg_equiv(c.gauge)) if c.gauge_unit == 'mm\u00B2' and c.show_equiv else '') if c.gauge else '', # TODO: show equiv '+ S' if c.shield else '', '{} m'.format(c.length) if c.length > 0 else ''] @@ -253,11 +254,14 @@ class Harness: shared = next(iter(items.values())) designators = list(items.keys()) designators.sort() + part_number = shared.part_number name = 'Connector{type}{subtype}{pincount}{color}'.format(type = ', {}'.format(shared.type) if shared.type else '', subtype = ', {}'.format(shared.subtype) if shared.subtype else '', pincount = ', {} pins'.format(shared.pincount) if shared.category != 'ferrule' else '', color = ', {}'.format(shared.color) if shared.color else '') item = {'item': name, 'qty': len(designators), 'unit': '', 'designators': designators if shared.category != 'ferrule' else ''} + if part_number is not None: # set part number only if it exists + item['part number'] = part_number bom_connectors.append(item) bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_connectors) @@ -269,11 +273,14 @@ class Harness: if shared.category != 'bundle': designators = list(items.keys()) designators.sort() + part_number = shared.part_number total_length = sum(i.length for i in items.values()) name = 'Cable, {wirecount}{gauge}{shield}'.format(wirecount = shared.wirecount, gauge = ' x {} {}'.format(shared.gauge, shared.gauge_unit) if shared.gauge else ' wires', shield = ' shielded' if shared.shield else '') item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} + if part_number is not None: # set part number only if it exists + item['part number'] = part_number bom_cables.append(item) # bundles (ignores wirecount) wirelist = [] @@ -309,6 +316,9 @@ class Harness: def bom_list(self): bom = self.bom() keys = ['item', 'qty', 'unit', 'designators'] + # check if any part numbers are set + if any("part number" in x for x in bom): + keys.append("part number") bom_list = [] bom_list.append([k.capitalize() for k in keys]) # create header row with keys for item in bom: @@ -322,6 +332,7 @@ class Harness: @dataclass class Connector: name: str + part_number: str = None category: str = None type: str = None subtype: str = None @@ -372,6 +383,7 @@ class Connector: @dataclass class Cable: name: str + part_number: str = None category : str = None type: str = None gauge: float = None From 1ec9ca4f81c32b6f7c4381cb3019c6d4dfaceae3 Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Wed, 1 Jul 2020 23:17:20 +0100 Subject: [PATCH 02/48] Improved part number support Added internal part number and manufacturer fields Added support for wire part numbers in a bundle Moved part number information to seperate row in table --- src/wireviz/wireviz.py | 113 ++++++++++++++++++++++++++++++++--------- 1 file changed, 90 insertions(+), 23 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 3317c00..be62636 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -89,8 +89,12 @@ class Harness: colorbar=''.format(wv_colors.translate_color(n.color, 'HEX')) if n.color else '')) else: # not a ferrule + # id = identification + id = [n.manufacturer, + 'MPN:{}'.format(n.manufacturer_part_number) if n.manufacturer_part_number else '', + 'IPN:{}'.format(n.internal_part_number) if n.internal_part_number else ''] # a = attributes - a = [n.part_number, n.type, + a = [n.type, n.subtype, '{}-pin'.format(n.pincount) if n.show_pincount else ''] # p = pinout @@ -104,7 +108,7 @@ class Harness: if n.ports_right: p[2].append('{portno}'.format(portno=pinnumber)) # l = label - l = [n.name if n.show_name else '', a, p, n.notes] + l = [n.name if n.show_name else '', id, a, p, n.notes] dot.node(k, label=nested(l)) if len(n.loops) > 0: @@ -122,9 +126,13 @@ class Harness: '{name}:p{port_to}{loop_side}:{loop_dir}'.format(name=n.name, port_from=loop[0], port_to=loop[1], loop_side=loop_side, loop_dir=loop_dir)) for k, c in self.cables.items(): + # id = identification + id = [c.manufacturer if not isinstance(c.manufacturer, list) else '', + 'MPN:{}'.format(c.manufacturer_part_number) if (c.manufacturer_part_number and not isinstance(c.manufacturer_part_number, list)) else '', + 'IPN:{}'.format(c.internal_part_number) if (c.internal_part_number and not isinstance(c.internal_part_number, list)) else ''] + id = list(filter(None, id)) # a = attributes - a = [c.part_number, - '{}x'.format(len(c.colors)) if c.show_wirecount else '', + a = ['{}x'.format(len(c.colors)) if c.show_wirecount else '', '{} {}{}'.format(c.gauge, c.gauge_unit, ' ({} AWG)'.format(awg_equiv(c.gauge)) if c.gauge_unit == 'mm\u00B2' and c.show_equiv else '') if c.gauge else '', # TODO: show equiv '+ S' if c.shield else '', '{} m'.format(c.length) if c.length > 0 else ''] @@ -135,6 +143,11 @@ class Harness: html = html + '' # name+attributes table if c.show_name: html = html + ''.format(colspan=len(a), name=c.name) + if(len(id) > 0): # print an identification row if values specified + html = html + '' # end identification row html = html + '' # attribute row for attrib in a: html = html + ''.format(attrib=attrib) @@ -156,6 +169,21 @@ class Harness: html = html + '' bgcolor = wv_colors.translate_color(x, 'hex') html = html + ''.format(colspan=len(p), bgcolor=bgcolor if bgcolor != '' else '#ffffff', port='w{}'.format(i)) + if(c.category == 'bundle'): # for bundles individual wires can have part information + # create a list of wire parameters + wireid = [] + if isinstance(c.manufacturer, list): + wireid.append(c.manufacturer[i - 1]) + if isinstance(c.manufacturer_part_number, list): + wireid.append('MPN:{}'.format(c.manufacturer_part_number[i - 1])) + if isinstance(c.internal_part_number, list): + wireid.append('IPN:{}'.format(c.internal_part_number[i - 1])) + # print parameters into a table row under the wire + if(len(wireid) > 0): + html = html + '' if c.shield: p = ['', 'Shield', ''] @@ -248,39 +276,53 @@ class Harness: bom_connectors = [] bom_cables = [] # connectors - types = Counter([(v.type, v.subtype, v.pincount) for v in self.connectors.values()]) + types = Counter([(v.type, v.subtype, v.pincount, v.manufacturer, v.manufacturer_part_number, v.internal_part_number) for v in self.connectors.values()]) for type in types: - items = {k: v for k, v in self.connectors.items() if (v.type, v.subtype, v.pincount) == type} + items = {k: v for k, v in self.connectors.items() if (v.type, v.subtype, v.pincount, v.manufacturer, v.manufacturer_part_number, v.internal_part_number) == type} shared = next(iter(items.values())) designators = list(items.keys()) designators.sort() - part_number = shared.part_number name = 'Connector{type}{subtype}{pincount}{color}'.format(type = ', {}'.format(shared.type) if shared.type else '', subtype = ', {}'.format(shared.subtype) if shared.subtype else '', pincount = ', {} pins'.format(shared.pincount) if shared.category != 'ferrule' else '', color = ', {}'.format(shared.color) if shared.color else '') item = {'item': name, 'qty': len(designators), 'unit': '', 'designators': designators if shared.category != 'ferrule' else ''} - if part_number is not None: # set part number only if it exists - item['part number'] = part_number + if shared.manufacturer is not None: # set manufacturer only if it exists + item['manufacturer'] = shared.manufacturer + if shared.manufacturer_part_number is not None: # set part number only if it exists + item['manufacturer part number'] = shared.manufacturer_part_number + if shared.internal_part_number is not None: # set part number only if it exists + item['internal part number'] = shared.internal_part_number bom_connectors.append(item) bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_connectors) # cables - types = Counter([(v.category, v.gauge, v.gauge_unit, v.wirecount, v.shield) for v in self.cables.values()]) + types = Counter([(v.category, v.gauge, v.gauge_unit, v.wirecount, v.shield, + v.manufacturer if not isinstance(v.manufacturer, list) else None, + v.manufacturer_part_number if not isinstance(v.manufacturer_part_number, list) else None, + v.internal_part_number if not isinstance(v.manufacturer_part_number, list) else None + ) for v in self.cables.values()]) for type in types: - items = {k: v for k, v in self.cables.items() if (v.category, v.gauge, v.gauge_unit, v.wirecount, v.shield) == type} + items = {k: v for k, v in self.cables.items() if (v.category, v.gauge, v.gauge_unit, v.wirecount, v.shield, + v.manufacturer if not isinstance(v.manufacturer, list) else None, + v.manufacturer_part_number if not isinstance(v.manufacturer_part_number, list) else None, + v.internal_part_number if not isinstance(v.manufacturer_part_number, list) else None + ) == type} shared = next(iter(items.values())) if shared.category != 'bundle': designators = list(items.keys()) designators.sort() - part_number = shared.part_number total_length = sum(i.length for i in items.values()) name = 'Cable, {wirecount}{gauge}{shield}'.format(wirecount = shared.wirecount, gauge = ' x {} {}'.format(shared.gauge, shared.gauge_unit) if shared.gauge else ' wires', shield = ' shielded' if shared.shield else '') item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} - if part_number is not None: # set part number only if it exists - item['part number'] = part_number + if shared.manufacturer is not None: # set manufacturer only if it exists + item['manufacturer'] = shared.manufacturer + if shared.manufacturer_part_number is not None: # set part number only if it exists + item['manufacturer part number'] = shared.manufacturer_part_number + if shared.internal_part_number is not None: # set part number only if it exists + item['internal part number'] = shared.internal_part_number bom_cables.append(item) # bundles (ignores wirecount) wirelist = [] @@ -293,12 +335,16 @@ class Harness: if shared.category == 'bundle': for bundle in items.values(): # add each wire from each bundle to the wirelist - for color in bundle.colors: - wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name}) + for index, color in enumerate(bundle.colors, 0): + wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name} + wireinfo['manufacturer'] = bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None + wireinfo['manufacturer part number'] = bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None + wireinfo['internal part number'] = bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None + wirelist.append(wireinfo) # join similar wires from all the bundles to a single BOM item - types = Counter([(v['gauge'], v['gauge_unit'], v['color']) for v in wirelist]) + types = Counter([(v['gauge'], v['gauge_unit'], v['color'], v['manufacturer'], v['manufacturer part number'], v['internal part number']) for v in wirelist]) for type in types: - items = [v for v in wirelist if (v['gauge'], v['gauge_unit'], v['color']) == type] + items = [v for v in wirelist if (v['gauge'], v['gauge_unit'], v['color'], v['manufacturer'], v['manufacturer part number'], v['internal part number']) == type] shared = items[0] designators = [i['designator'] for i in items] # remove duplicates @@ -308,6 +354,12 @@ class Harness: name = 'Wire{gauge}{color}'.format(gauge=', {} {}'.format(shared['gauge'], shared['gauge_unit']) if shared['gauge'] else '', color=', {}'.format(shared['color']) if shared['color'] != '' else '') item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} + if shared['manufacturer'] is not None: # set manufacturer only if it exists + item['manufacturer'] = shared['manufacturer'] + if shared['manufacturer part number'] is not None: # set part number only if it exists + item['manufacturer part number'] = shared['manufacturer part number'] + if shared['internal part number'] is not None: # set part number only if it exists + item['internal part number'] = shared['internal part number'] bom_cables.append(item) bom_cables = sorted(bom_cables, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_cables) @@ -316,9 +368,10 @@ class Harness: def bom_list(self): bom = self.bom() keys = ['item', 'qty', 'unit', 'designators'] - # check if any part numbers are set - if any("part number" in x for x in bom): - keys.append("part number") + # check if any optional fields are set and add to keys if they are + for fieldname in ["manufacturer", "manufacturer part number", "internal part number"]: + if any(fieldname in x for x in bom): + keys.append(fieldname) bom_list = [] bom_list.append([k.capitalize() for k in keys]) # create header row with keys for item in bom: @@ -332,7 +385,9 @@ class Harness: @dataclass class Connector: name: str - part_number: str = None + manufacturer: str = None + manufacturer_part_number: str = None + internal_part_number: str = None category: str = None type: str = None subtype: str = None @@ -383,7 +438,9 @@ class Connector: @dataclass class Cable: name: str - part_number: str = None + manufacturer: str = None + manufacturer_part_number: str = None + internal_part_number: str = None category : str = None type: str = None gauge: float = None @@ -437,6 +494,16 @@ class Cable: raise Exception('Unknown number of wires. Must specify wirecount or colors (implicit length)') self.wirecount = len(self.colors) + # if lists of part numbers are provided check this is a bundle and that it matches the wirecount. + for idfield in [self.manufacturer, self.manufacturer_part_number, self.internal_part_number]: + if isinstance(idfield, list): + if self.category == "bundle": + # check the length + if len(idfield) != self.wirecount: + raise Exception('lists of part data must match wirecount') + else: + raise Exception('lists of part data are only supported for bundles') + # for BOM generation self.wirecount_and_shield = (self.wirecount, self.shield) From f67235e326a35f8fcbba33abefae6f65e0b1b449 Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Wed, 1 Jul 2020 23:45:35 +0100 Subject: [PATCH 03/48] Added diagram support for part numbers on ferrules --- src/wireviz/wireviz.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index be62636..f894764 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -68,6 +68,17 @@ class Harness: infostring = '{type}{subtype} {color}'.format(type=n.type, subtype=', {}'.format(n.subtype) if n.subtype else '', color=wv_colors.translate_color(n.color, self.color_mode) if n.color else '') + # id = identification + id = [n.manufacturer, + 'MPN:{}'.format(n.manufacturer_part_number) if n.manufacturer_part_number else '', + 'IPN:{}'.format(n.internal_part_number) if n.internal_part_number else ''] + id = list(filter(None, id)) + if(len(id) > 0): + infostring = infostring + '
' + for attrib in id: + infostring = infostring + '{attrib}, '.format(attrib=attrib) + infostring = infostring[:-2] # remove trainling comma and space + infostring_l = infostring if n.ports_right else '' infostring_r = infostring if n.ports_left else '' From 9c5ea06ca2cce0c2e1b9f8ee37b8454557345d2d Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Wed, 1 Jul 2020 23:47:49 +0100 Subject: [PATCH 04/48] Added spaces after MPN: and IPN: --- src/wireviz/wireviz.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index f894764..be731bf 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -70,8 +70,8 @@ class Harness: color=wv_colors.translate_color(n.color, self.color_mode) if n.color else '') # id = identification id = [n.manufacturer, - 'MPN:{}'.format(n.manufacturer_part_number) if n.manufacturer_part_number else '', - 'IPN:{}'.format(n.internal_part_number) if n.internal_part_number else ''] + 'MPN: {}'.format(n.manufacturer_part_number) if n.manufacturer_part_number else '', + 'IPN: {}'.format(n.internal_part_number) if n.internal_part_number else ''] id = list(filter(None, id)) if(len(id) > 0): infostring = infostring + '
' @@ -102,8 +102,8 @@ class Harness: else: # not a ferrule # id = identification id = [n.manufacturer, - 'MPN:{}'.format(n.manufacturer_part_number) if n.manufacturer_part_number else '', - 'IPN:{}'.format(n.internal_part_number) if n.internal_part_number else ''] + 'MPN: {}'.format(n.manufacturer_part_number) if n.manufacturer_part_number else '', + 'IPN: {}'.format(n.internal_part_number) if n.internal_part_number else ''] # a = attributes a = [n.type, n.subtype, @@ -139,8 +139,8 @@ class Harness: for k, c in self.cables.items(): # id = identification id = [c.manufacturer if not isinstance(c.manufacturer, list) else '', - 'MPN:{}'.format(c.manufacturer_part_number) if (c.manufacturer_part_number and not isinstance(c.manufacturer_part_number, list)) else '', - 'IPN:{}'.format(c.internal_part_number) if (c.internal_part_number and not isinstance(c.internal_part_number, list)) else ''] + 'MPN: {}'.format(c.manufacturer_part_number) if (c.manufacturer_part_number and not isinstance(c.manufacturer_part_number, list)) else '', + 'IPN: {}'.format(c.internal_part_number) if (c.internal_part_number and not isinstance(c.internal_part_number, list)) else ''] id = list(filter(None, id)) # a = attributes a = ['{}x'.format(len(c.colors)) if c.show_wirecount else '', @@ -186,9 +186,9 @@ class Harness: if isinstance(c.manufacturer, list): wireid.append(c.manufacturer[i - 1]) if isinstance(c.manufacturer_part_number, list): - wireid.append('MPN:{}'.format(c.manufacturer_part_number[i - 1])) + wireid.append('MPN: {}'.format(c.manufacturer_part_number[i - 1])) if isinstance(c.internal_part_number, list): - wireid.append('IPN:{}'.format(c.internal_part_number[i - 1])) + wireid.append('IPN: {}'.format(c.internal_part_number[i - 1])) # print parameters into a table row under the wire if(len(wireid) > 0): html = html + '
' if(len(identification) > 0): # print an identification row if values specified - html = f'{html}
{name}
'.format(colspan=len(a)) + for attrib in id: + html = html + ''.format(attrib=attrib) + html = html + '
{attrib}
{attrib}
'.format(colspan=len(a)) + for attrib in wireid: + html = html + ''.format(attrib=attrib) + html = html + '
{attrib}
'.format(colspan=len(a)) From 4d2cb63350ba9a277d7e8e7be173e134ce356e08 Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Thu, 2 Jul 2020 01:20:26 +0100 Subject: [PATCH 05/48] Added part number tutorial --- tutorial/readme.md | 58 +++++++++++++++++++++++++++++++++++++++++ tutorial/tutorial08.yml | 41 +++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 tutorial/tutorial08.yml diff --git a/tutorial/readme.md b/tutorial/readme.md index dc7bbcb..1ed541d 100644 --- a/tutorial/readme.md +++ b/tutorial/readme.md @@ -361,3 +361,61 @@ Output: [Bill of Materials](tutorial07.bom.tsv) +## 8 - Part numbers + +* Part number information can be added to parts + * Only provided fields will be added to the diagram and bom +* Bundles can have part information specified by wire + +[Source](tutorial08.yml): + +```yaml +connectors: + X1: &template1 # define a template for later use + type: Molex KK 254 + pincount: 4 + subtype: female + manufacturer: Molex + manufacturer_part_number: 22013047 + X2: + <<: *template1 # reuse template + internal_part_number: CON4 + X3: + <<: *template1 # reuse template + +cables: + W1: + wirecount: 4 + length: 1 + gauge: 0.25 mm2 + color_code: IEC + manufacturer: CablesCo + manufacturer_part_number: ABC123 + internal_part_number: CAB1 + W2: + category: bundle + length: 1 + gauge: 0.25 mm2 + colors: [YE, BK, BK, RD] + manufacturer: [WiresCo,WiresCo,WiresCo,WiresCo] + manufacturer_part_number: [W1-YE,W1-BK,W1-BK,W1-RD] + internal_part_number: [WIRE1,WIRE2,WIRE2,WIRE3] + + +connections: + - + - X1: [1-4] + - W1: [1-4] + - X2: [1-4] + - + - X1: [1-4] + - W2: [1-4] + - X3: [1-4] +``` + + +Output: + +![](tutorial08.png) + +[Bill of Materials](tutorial08.bom.tsv) diff --git a/tutorial/tutorial08.yml b/tutorial/tutorial08.yml new file mode 100644 index 0000000..56a3800 --- /dev/null +++ b/tutorial/tutorial08.yml @@ -0,0 +1,41 @@ +connectors: + X1: &template1 # define a template for later use + type: Molex KK 254 + pincount: 4 + subtype: female + manufacturer: Molex + manufacturer_part_number: 22013047 + X2: + <<: *template1 # reuse template + internal_part_number: CON4 + X3: + <<: *template1 # reuse template + +cables: + W1: + wirecount: 4 + length: 1 + gauge: 0.25 mm2 + color_code: IEC + manufacturer: CablesCo + manufacturer_part_number: ABC123 + internal_part_number: CAB1 + W2: + category: bundle + length: 1 + gauge: 0.25 mm2 + colors: [YE, BK, BK, RD] + manufacturer: [WiresCo,WiresCo,WiresCo,WiresCo] + manufacturer_part_number: [W1-YE,W1-BK,W1-BK,W1-RD] + internal_part_number: [WIRE1,WIRE2,WIRE2,WIRE3] + + +connections: + - + - X1: [1-4] + - W1: [1-4] + - X2: [1-4] + - + - X1: [1-4] + - W2: [1-4] + - X3: [1-4] From 39ad070ca87432c5eaa86b24e195b0ec22dccd17 Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Thu, 2 Jul 2020 01:26:48 +0100 Subject: [PATCH 06/48] Added rendered output for new tutorial --- tutorial/tutorial08.bom.tsv | 7 + tutorial/tutorial08.gv | 36 +++++ tutorial/tutorial08.html | 294 ++++++++++++++++++++++++++++++++++++ tutorial/tutorial08.png | Bin 0 -> 135924 bytes tutorial/tutorial08.svg | 293 +++++++++++++++++++++++++++++++++++ 5 files changed, 630 insertions(+) create mode 100644 tutorial/tutorial08.bom.tsv create mode 100644 tutorial/tutorial08.gv create mode 100644 tutorial/tutorial08.html create mode 100644 tutorial/tutorial08.png create mode 100644 tutorial/tutorial08.svg diff --git a/tutorial/tutorial08.bom.tsv b/tutorial/tutorial08.bom.tsv new file mode 100644 index 0000000..682dd4a --- /dev/null +++ b/tutorial/tutorial08.bom.tsv @@ -0,0 +1,7 @@ +Item Qty Unit Designators Manufacturer Manufacturer part number Internal part number +Connector, Molex KK 254, female, 4 pins 2 X1, X3 Molex 22013047 +Connector, Molex KK 254, female, 4 pins 1 X2 Molex 22013047 CON4 +Cable, 4 x 0.25 mm² 1 m W1 CablesCo ABC123 CAB1 +Wire, 0.25 mm², BK 2 m W2 WiresCo W1-BK WIRE2 +Wire, 0.25 mm², RD 1 m W2 WiresCo W1-RD WIRE3 +Wire, 0.25 mm², YE 1 m W2 WiresCo W1-YE WIRE1 diff --git a/tutorial/tutorial08.gv b/tutorial/tutorial08.gv new file mode 100644 index 0000000..4eb5221 --- /dev/null +++ b/tutorial/tutorial08.gv @@ -0,0 +1,36 @@ +graph { +// Graph generated by WireViz +// https://github.com/formatc1702/WireViz + graph [bgcolor=white fontname=arial nodesep=0.33 rankdir=LR ranksep=2] + node [fillcolor=white fontname=arial shape=record style=filled] + edge [fontname=arial style=bold] + X1 [label="X1|{Molex|MPN: 22013047}|{Molex KK 254|female|4-pin}|{{1|2|3|4}}"] + X2 [label="X2|{Molex|MPN: 22013047|IPN: CON4}|{Molex KK 254|female|4-pin}|{{1|2|3|4}}"] + X3 [label="X3|{Molex|MPN: 22013047}|{Molex KK 254|female|4-pin}|{{1|2|3|4}}"] + edge [color="#000000:#666600:#000000"] + X1:p1r:e -- W1:w1:w + W1:w1:e -- X2:p1l:w + edge [color="#000000:#ff0000:#000000"] + X1:p2r:e -- W1:w2:w + W1:w2:e -- X2:p2l:w + edge [color="#000000:#ff8000:#000000"] + X1:p3r:e -- W1:w3:w + W1:w3:e -- X2:p3l:w + edge [color="#000000:#ffff00:#000000"] + X1:p4r:e -- W1:w4:w + W1:w4:e -- X2:p4l:w + W1 [label=<
W1
CablesCoMPN: ABC123IPN: CAB1
4x0.25 mm²1 m
 
X1:1BNX2:1
X1:2RDX2:2
X1:3OGX2:3
X1:4YEX2:4
 
> fillcolor=white margin=0 shape=box style=""] + edge [color="#000000:#ffff00:#000000"] + X1:p1r:e -- W2:w1:w + W2:w1:e -- X3:p1l:w + edge [color="#000000:#000000:#000000"] + X1:p2r:e -- W2:w2:w + W2:w2:e -- X3:p2l:w + edge [color="#000000:#000000:#000000"] + X1:p3r:e -- W2:w3:w + W2:w3:e -- X3:p3l:w + edge [color="#000000:#ff0000:#000000"] + X1:p4r:e -- W2:w4:w + W2:w4:e -- X3:p4l:w + W2 [label=<
W2
4x0.25 mm²1 m
 
X1:1YEX3:1
WiresCoMPN: W1-YEIPN: WIRE1
X1:2BKX3:2
WiresCoMPN: W1-BKIPN: WIRE2
X1:3BKX3:3
WiresCoMPN: W1-BKIPN: WIRE2
X1:4RDX3:4
WiresCoMPN: W1-RDIPN: WIRE3
 
> fillcolor=white margin=0 shape=box style="filled,dashed"] +} diff --git a/tutorial/tutorial08.html b/tutorial/tutorial08.html new file mode 100644 index 0000000..4dc11ee --- /dev/null +++ b/tutorial/tutorial08.html @@ -0,0 +1,294 @@ +

Diagram

+ + + + + +%3 + + + +X1 + +X1 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + + + +W1 + + +W1 + +CablesCo +MPN: ABC123 +IPN: CAB1 + +4x + +0.25 mm² + +1 m +  +X1:1 +BN +X2:1 + + + +X1:2 +RD +X2:2 + + + +X1:3 +OG +X2:3 + + + +X1:4 +YE +X2:4 + + + +  + + + +X1:e--W1:w + + + + + + +X1:e--W1:w + + + + + + +X1:e--W1:w + + + + + + +X1:e--W1:w + + + + + + +W2 + + +W2 + +4x + +0.25 mm² + +1 m +  +X1:1 +YE +X3:1 + + + +WiresCo +MPN: W1-YE +IPN: WIRE1 +X1:2 +BK +X3:2 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:3 +BK +X3:3 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:4 +RD +X3:4 + + + +WiresCo +MPN: W1-RD +IPN: WIRE3 +  + + + +X1:e--W2:w + + + + + + +X1:e--W2:w + + + + + + +X1:e--W2:w + + + + + + +X1:e--W2:w + + + + + + +X2 + +X2 + +Molex + +MPN: 22013047 + +IPN: CON4 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + + + +X3 + +X3 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + + + +W1:e--X2:w + + + + + + +W1:e--X2:w + + + + + + +W1:e--X2:w + + + + + + +W1:e--X2:w + + + + + + +W2:e--X3:w + + + + + + +W2:e--X3:w + + + + + + +W2:e--X3:w + + + + + + +W2:e--X3:w + + + + + + +

Bill of Materials

ItemQtyUnitDesignatorsManufacturerManufacturer part numberInternal part number
Connector, Molex KK 254, female, 4 pins2X1, X3Molex22013047
Connector, Molex KK 254, female, 4 pins1X2Molex22013047CON4
Cable, 4 x 0.25 mm²1mW1CablesCoABC123CAB1
Wire, 0.25 mm², BK2mW2WiresCoW1-BKWIRE2
Wire, 0.25 mm², RD1mW2WiresCoW1-RDWIRE3
Wire, 0.25 mm², YE1mW2WiresCoW1-YEWIRE1
\ No newline at end of file diff --git a/tutorial/tutorial08.png b/tutorial/tutorial08.png new file mode 100644 index 0000000000000000000000000000000000000000..3d68820723a6c40507c8e734a9f6f7f49892fb41 GIT binary patch literal 135924 zcmb@u2RxR4-#30rMn-9ntfXaBl#vyZBq3xaBS~3>Y*`JXgj7;S$;eJZMz$g($qd$zXg>;Jf3*RR5Pp2zVWpU-=Jk2|U=C+KNdXh2A{DAVpsS|Rf72&vxuY6R;X~h@H8f7lA08Vui8GTa z(pN1O_T4*gd;DH8qtGQeiaV$DHnEXkSabIj+oPubUEEK|ghQ3&*JX3P-yKcI!s#0o z^*-D0?kPQ04H2V^qmdob8P_e}oy|SVGPWS*^H3-2S9{#Z{?~5t=XNW^s`L2%{h}6c zS?~GxU-2)_mpuCWuYSfoN_YPL%b>Q-fg~p=DpT4Bl=f-j>>89TUuIn_V>pR z3lP8fh`MbOuZTAq8yl0cv`l_m%E^_uwXw0WIsf|MhcEH!`c7+ao{byT$OWxCWpvJ+ zvyhHF+z85C7 z@$XlD$!)yfzrJeul%8z*=N}vY=O3wU?&|NSW@l%YbYIjNX#V}P#>mo=PEb%V&uLtC zV0O4QYX|ijJw3fGm8TRH1>ENCsBe0H`SL~FFM_z+e?}|*4zq;Az8H0$_3Yv?cKgJ{ zwr#qz*2~LFL0MT-oMZcTerX>i0|O4ck9AL(e=cq4>Wgm}t=?(;o%_2bR(?NU;b!*> z4D?A!*{_>*b^qyr0_Vjk+upvu;);rO$Gqu^TQV&M16C9bW$a z^y{}v-J6)W=4CuSKF%!ZBtS{W9QjDVZM>V}!Gj0qt*kbjJ9myG7{`pn4epy7&cYT9OEw1wCH8Ft|vi3U|6ODi9Pb{;gZ=O(E>F-bIEQeVC3 zEXK{m{L3kS9P29GvFXm1O)qh^{q6Y@Em>ClE2ClS&YU`RijGA{fpy29H|754P37g~ znMEv_Rh~=vhljI0di02shiBb^0|zF=qviceQVW;wzIk)#;^oUdZ8^5q_V!+{UcF-4 ziIu{|WzPIWU^nsSg|Yy4KMc|0{9vl6`=aRbLdQy_;Rh;%JxaePCaiya+Qug3%B-I7 zD79zx!}Fu!hDobqh`+@-CH{>Q+ z{`EPL8>AN*)DyPUJeStiDby(Y@PT4wY1D&E#-v1ulaq9lQ-)!!sJQqV64L=aZvHTl zE4tquR(HI@saZv0BdKk!FZA$Gi2X_vC?O`M=^`m4wB^N%7xo)jh`Cj}Rkm$);)oBG zlS>saQvCBb{CAS(&z%1G#{c^t^_xkMFnj8~0|V<$pFX`>aDJ+Ui{3c-aE}=Z2fip) z7m2WdaoN42O|SGb*(o=wMTj|#alSGv{QTS=S60t?khtXfqEAl_-V%J}8-Mbh<0uDy zyq=Gb?~0EsekJC%#s5{=AjW0m##+ABV&~hdr>}1_)O>IYBV&WPKCWqg`-Tl0uK37c zv_3tT-X0JTKw}cVdJP}9Ffm=2`qf}I?8bW{{6`M!hTlvOQJ`DlJ-?n{=BKFFG^Dpu`-rt3i&LP27dGK@DxuD z)S^SvHGyC1U(yw1PaRpINPft_R(5OF6mUf#L+N1Qu6HB@H%NK?S3CFUi z<9?4uY_459wDxGxgWaci^Qq|j#2P2BN4_eTv46gMWBwLaRzK7SVt%5s3@k18jkM<{ zX?$K?ME)PWXtxSD4C$Z=CF|vE!cJxI`;hHAcj)G=TL)cdt@r6>P!|^$Gps$@+SPb> ze#q9$jE8IIPR0kOsjY8JPQ?xzU%1dYGIC($_rtxX?>~5O)A{!gqtW(!QQIGM*rCy1 zezfOb*U7cxX-qXVjBe&b{kwT8{J^#H2MeQ)uKCp{P3=?*U-_`<&u)(NWWBFQX73DC^VFYJtFZZtx(2Kox0H* zxg6vTZja?+K6Z3$f4E2as{^x~oK@!C<)xxOV(MEam!7mBU1e>+81|85t3!d{Al|3rp1HnrF>9 zwtMaD>=-yWURmqa{d^b_LbZ4AUb=0E)}j-n2zl>5^*AykW6SmFp&Peukt-=HcVSCf zSy{dR@L|X9-Ny|a2foId)<#i8MMZr{Gd}U;=~JVxF(=2y$BQc-?j2tkE!2KDnp*e6 zHrXHJz()Q{@)Y(-RM}0UkwwX0KwHeV{ka~CAox;NMY8@ortj|@%cD;OZmE3u;DNw} z_tbdDqq{bBML4z>HyL{PWBy`o`+xoFM#*OuyB3qT{N=^5@$&5+8ryolrC;v)@q-e( zo0)~B4Mz_iSjnhNl$PXVr>^j@!V_Nr;-hH-< zDzoRXpx~|GV8)4wi7l1FZc^XAeH;7zyYwz2Ut-=gTIfbLwtGLS!}uP}4AfDPtbhMd zc7FQqokU~uS#o@NTXajQ7EO+MT1L{QMFQL(G6A=S@t!?%ksU0Ajvz;|4Vy-TUqje!-tn zMrf6uOR@WH!9)o9E!-B2G!qavMFBP1>DJOiWBC>ni)( ztKaXcMa#d)$j~sDi4K&KRZ^mRd!^MoFHbTiHnzCAnVEQlOp7M-wx2OEyUiFjf2`W;5V@lZ9 zgPS*RzU|}FQ{qKSy>6Y_LR;`$Q{l4Lg9n>Fg^O)Qd!C)`3A90H2dGK1f0mrQPttip z?pe&E+Q~V)(ROx^r9s0a`(f;v;+mS%33_iI$45j&FLO1uu-Lw%F;bhx=9 zYmHjn^?hfWjAbG&pCnp}&T1E|SJ2C~Tc@9EcOxh$NOyR8v}420ojY&ez8!g`^({7U zaecy>@#Tflp19}k>WM3hbGG~RvKe;D-}6jJ;F+HsxCQ9K;_U3~d-rbQm^i?vPi*Y& z3l}bYNjZ1e_rryIfB+q?zv)#X#J#W`$Vt04t=qJDGqFt3&r3djq<;JMEij7bix)dk z-Zgrpu=JRjn3#O;-IGHv+`;76H8gauv-7-Owlhhg<^pTB+EhU-0ws{BmKjhDZs zva+PB)aT%(Pt3sL+7bb6ZF)l;h1-d10j_j)b$#>;r5Xr)-FDY8GObs7cRqdkq*x<{ z9SOj|d$^H@pTAssW$tuyOUs4+FE2=*D2-&Kf|cb3^AG$%3iqEq3kZ~&r%pMSRhFok zv?ah|-qoB}LV^_q$lBW4^WnoYu~Xgf1R54Z9?YHewWij0&QU_3`+KH`#5^4ui#Md4g!-lw{_ z(}}pRfp8j_jlUM^KYI$-S$kgMj0Rp5*muItj;-M1=;~PMK`s z;NYNfJKUbn4}y9tPh$fMj78y)L98f|OBMR?mo;h?ZEKbxMi7m<-9H8r&_ z4Go%!51&5eDO};xN|v#<7I?h>oYt^~&?7XN>v~Pb1h$J$xImDL_>K5&uRC|vP5l1d zaFs7eVQe_7qXdNFN=wEKteVNmNe1k$P80PX_LP*Auiv~;=YF``mqXe;d4lEa*|Xf3 zTx{Pho0M;IM(V$FAbA2hts$XNjE#D%us(kLm}obl!WP~ecgk}DHs<8y2#=%>XMm&fdZH#*0ekzcA#0S8@R6>)Av-0SA(jn{sR~V;T4U_`$`?OM|7yENUHDX}CWA ztLigj?FPOcH?rkXUZBf! zJ)Rr&rgGls>eT?Vx|dx*ZlWH`lImy9*bKJ_&(6+jd|L^fU;JHD8+Us9+O=yt$9u|I z3`YS3d;cOJgIW8+bosG{0GJLbN5lpEheUXV}Q9M{V5viJ=pxqoZSBXQ$WK z*H?Oahyt&sDF=%tZent@W4oc-RB+xRdSriH+y;&#F1H^&+5*0|lbf4*$BrFilatA# zR~Z^;{!spPj*gCxf`c`41Gq`|SP!c#&)aBeF}ct6ZFO>S;lfKI#O-flO=Izn{e13` zXlbaYmzJVfSpi z`z%>sU!Ump>Ez1ZDQ!bH;MoJ6@9%7GkopO@MN6VtcSZSG;2xD{lIyl^-HNKnwST{I z!MUZuk+z&$r=^!PO!mFWJjHKVkZeQuD?a5XwW)jHpamVnMzy-H31{{$j+Jge+mas3 zDqK=FFhI#eCBY3*pT5)D#DYon>Kh&FED9_Y3(ZB+S)#}xP__KNu_RKKpD zKYiFG96I}Jqs_DUK}b-^z9eb$JKr2s7QFPylasokeU^%JKrfplW25bYam~HjQQ!|~ z9epnAs)CY|9O}4cqXlp$2#VL(nDwKO5I!~uZ~@Pd73ySuVYh%op=~|$Y~<+KlS
2X2GWdX-yK0?Br-+P;^8r=h+`pe5f)i@*>~yP@4U{?8`GGj$ zUxK9Mv+0!3p`Hj^FcG2-K4sUgU7P{}3@R!rPeg4l1kbcKHEl)N`hZ%R)HamxHbp0G z4W{HhI%{yi?p?c}9e6Dl91sy<3fwNOrJFTj4^6BbSUU}O$J;aov{YW;wg5mGNHpUi z1`sGUA3$ed6(E`O=H|LaM~sb)Z+m-pql`Z}a$SU&LVP4>1BHQs0hYrysg*@r{|jF< zl%GZ4Bl>s7~ii&DZ+<$Ivj^J&krtz-Ta)6OT-_of-V;|Raw!JnYkBW{? zGjHG};22TVB&8O}LNDnAhyn&fr6T+B;|F7z$oV2t%*&T0 zEiEhlb-S(}AD`&$>E`Z{1heg(`8TMOBGmt&_8JMa|&wus<-$ zwx>^@I?a4{G%_)v;OFNj6f3~=spSoCLnX_b60Qdh+R|yvoZYlht%qyV9n^k*K*#Lt z?4q(V`4r(~pr?&YOq7@dQ8BRwqZm2+WA_^;H?slIHPArscwbh=B`(ggN`pn^0iBifZ%FiBi*PL{eZ*lClq6H?z(f> z5_0mNFCK^%B{{Y~1&m78;sX-(F8okFe6`IpI(p}!Lx-$8i^%qzN~m2$MufEI>)Q)B zJzjmdqX?KE$fm6526xG@Z+n%k*EBUJ2!iYYmBD zM8GJ=0y&P1;caBJwYLJH5d}KKtgbiAt6-$J;-R&T%?+r!U%!6s4RhNhto29LT)kpQ z#!}0(#!z{U7N&;Fusn9c{U=Z2Gmh?3GhPM6e{R_b zVv?xqtU$r?yv5|uw=-Q&0s}XI)xEyfrx-43BWo}+I7o}d@#G2flhDvc$B%OMtDJlF z2BNasi27&w?GW8|DK;Qi-a*T6Zz!f`)F0(MB_h%m0h8wkmYcD_y)8Q&b{D#A+1WLszES6C=rQc{wA=^Q;aB`4|`F1cmB7Z!oS zx~5f)cy&m)T>fb5fBq4r{YO6jpMP}xbSoL4H1U;x1>g_zNCIJrC{U~xr}#z)e}r29 z0Yu2UtAs*SRMb==Mt*pHYLHN?9z1+FJ~?p4Zm4-9@G`-`Uqqjo@{=VL;Ev_#!;lA$ zas@>imj}RDDFWjKx9gh%3wjOFg{I~=$a?>Pa9f~1ur2k54dp%Mfd^5g7GW#M#i>MO zuxq72@VgNbvXx-y_wO^HAec(*;!31&cXtO`u6JOjZ^2q%U}Ey_?>B`iYL(-$*t4BP zLSMt=WTr$J>It`({SG zmG_E^+nbl4zY)D0@YPxWY{}%***Jf%{QM&*Beki9($J`0SalQt57j#8WOAXpqdzbo zx=7vlNGabA57JwMY1B5Q32KJ1Jp8VB73%%FD!2#-xeo7{;{s_1TEh!rk z`SMh%hY@57mZ|6$6`wzQKYzYmD_Q4-+Cr$*R_utVEJni$!jEJ5Jv}WCofeX7AUem{ zfoxp)kIxZ)0A#L{wI}+UQn!=N1CBD>k;4!G)=jZH+_J|4>BS(lw;K%T;2K|~rUrI+ ztmJ>S{S;SH|{OemW zY0d8(`Svr(lFPRqF=#E{0bGQSU3m3TD7spRv znZM-Nd3E+pdODemnFBWoGgyQ*V{qd8Z*MOz=-6af0233q0k8*x?cka{)6x#2O41q{ z8iJ2%4YpBGP|QwL@e}(Mq7U}gv3*QEXgGiE8Xrqef|PBZvV?s{2tb7J1q%MI zWhRy|=EH^6X0;WX4J|J%JUMK|(bm?+t0$me2GtE6t=yB0{5ANP<@a31=dKg$ z$^y3=o~{+)fNexIcFjAI7XpCO^w3k?pP#C$KV;kVsH&=Zl2ffmQ`2@&&dX!_@Zkd? zNaNn``TLI#rWRfRrJ1eqSiY5hxkk%^@)x#P-%4s+92I;#D6hP`-k-}fr|9f^sg+r~ zjIKR9S$CRvT{lQ%>d3HDQvGBOLv8Dah6YCPj$>+SL2r-k;QGq)d9@t-y8*5XX=Dq!*x01yso1w=+mNHCfBg6nU7YI6J4Y+8 zp1msJMc6NCSRxtFX3*HI9UaTDXb6oZ*&si+(gGTC36RSRz#pjhyuoBL&^=Nz0`J}} z0oVZaqdUsLNxcS6P2#F6-8J?dFdAjKi+q-vCp`>*t1+Oum{z42}O z6Uw8($xC5|-rnB*^$D9Hq4id^=6!?UOh9qo)GVV?O1Q{)bMyMtB<<9a@88)UKQ^3+ zCjTc3@EH5#byn61Rn_~I@862sr^2cNWXdqDT|>NSV+w1*+z(bzouqrwF)?ciO2A1? zO;4X9(2lsC-w~kG?zcR>Y!7#pl{n|4qXyee(P-j<{+5jszu}Xi0SrOz1<5U8T zoRIXWw!3JI}qfEQatlhN+IWA8c&6>WHR??a>Kj45eR% zUB20=;?nXF!gkj|?YL%ZTl-4?oq5FIe}i4x66>)9F=QDT8Rl6DR?^F}J7d%nNPb+X|;nl@fx?rD_(}rKzT|sVU97 zJ5k$VKx3E4$Bw^@iRsLrX}^W?1VLtecHEfwz1fj>qXIC&z2xF^59WP_=K~0*&U^UK zA@zAn&IKr4+esR8mo)S(6nbc#=H}W^Ejrw0*a;>8zQ?(DFI8=AEup}{FHdtCzYwde z>#?%r2o`P(21HmZXkw}WO<3W^AMfuNo1QMazvCET;|DjTm_6rZAB#lz+nm$@s=-;`V2e47w)@A&a}yfwulfYW&rz;nnO9nwh#8JO z74j%RKj#`nY;5d=e>yLb)F5DfV!LhNfW3HeXiuUNtzW%I-8|V31 z{)g7<|LYa3!{f(~6Q&hbC}D3xAKd|7iw1H8P`}q6ranQkb{z9QKirZTT=vdxK%Lk? zfam?-M-Z_E%)ah|aMlTgPQ$95xVdz2J%^+(XrFQS`#TKOUJM})VE@ajt8a40i~^9x=Q$|P$5b$@Qmq2rn4s6M1%eB6Lh_$^VBbKx>>tS2 zJG2B6iRDM=kS|pt?(RSLwsUdrH!Pd_ONUvKdCt7-glnXjt`r>|{Q}YebocnL(^*y> zWhlP2@Dz6K*%M__^_X{%aqCv&vCd*%LuEfdKXMWstB6vm0VJp^EQnda8Gm(u^1-)4 z4{7*c#D)*P^6%WS#JrJzT@aVIcg^pFa~?b-aZ8 zq7w!OT(7bUO_<6+dmDpk>oVD?f66Hi@2N4zP?z8ZrizuzK;+t zvO3()4U0@Ev-Vj0hXKjg=4+27Lj+Us+8EVotWflwQj|}VcaS=|;l`f0cJ0lgt%>sd zuIPb(=1k)!*xaSh;p>hZIWlMUiE2F?HB>_as8m!`w9vmM(*@2CJ#4ieL57Q$F2UkD z503_A`}q0uoJ0gBHR%_5+F#{__xtM#__UDti-LBZAoLXoE`$XDo=PCGcDEUQ2r6+Z z3t&hMf?&L)BAA820mtR!WS|#by?Rx#9FT$NU{GQK&UYL>ycK1V07>5K*>wlh_Y4dS z5c)!8Rh127Ux2amP%5CW^U3?O?Dly09*r6H#&IVnQABU{TS;I3%!ULDD8R?2Q?E9J zwkIWqOE|745q4FqF?IpLJfMd%Y}ynxox^tsFl=^ijwiUPF*gGe!#lt&$DoG~$**6( z9-9jd#=D@PphW2lA={*SELmiBPr?1fb_}kpfysB2q4&-id*l1#f5D|;iW8}`MtbGF zH$7`7rW($K);oQ-y0Y1p^vfHdK=*bCCZaiYR|fNq&CG;^EI|;*Iw`@f;5)MNi02GR z#$@7Los`)j%K8thsj-F}G^ZU04{jW6O4WWckWFYoaEBp2%DB51FzvK-N={C`4-*NW zRZ?5K5eQ-y$sx2yfwdGAnk~~<{h|n)?Amn4b;si2!o0k^-l?qz^n3vzA-+T-&qmnH z&^5jBn>~ckc}3uO=3Y)tndLlqKV*5XT5sL}Mw*GqawS?}UH5;DrM+NmOt3*`XXxHU zwCkX8Sy4-iZo+r)LJ+(gP;W`BDw+v3XMiBac8jNLDWmvv0^Hn zoNK!e2@3KZ`3cVj77pKc$pkJ~*VM?ZAQ}KNSpO<4B7&ZzD5yq8tVFm(6XL?b=&x|$ z2;mgl{o!5(;X8!p;d|#!F{bkiQYGf)uQB}0+qUuST4dRDB_Nf^ZQ%dr`-?TuLOy*` z%KQCULUWl*?yXXYrC4fHLhD|c-v=WPI<1CP$&?4Nn+ngnxmw#a#;$NcuH9AAGGSG zl{Fz6%CGo7?sD60?t-)nq6S2T!OE@dAQ2wx*|Xa~bCNPPyCB{7wXP0k%8N$~LHU*Q ztyYCbARCHJ*XJjB016J8RBj<4F`KQuJp~DyvEuUmZLF-u7y*K%AerThX50Pnv{W(h zk45atuP?m@`6JcBTc@U`jILavM|J@AsFKNp)0a@HfDX&U#cUx6=}54P}FC2tdAv|chUv-8U1pQA4UlNENl_vQ07PZq`s+|;sAHO2vGkEIt$I9M%L-j05avjX}EfYCt+d6 zh#-j~GWGenbRgnDM8XI;t>6NdBy*;mBo+RWlvbA10{x@4r_!Zx&$ikeQU8F~kA9Ec(to>|DDi5NC z_qI!OEX<6Sj~1>3z|P1tZhm7z3q#^IzQKVtrZqU9mX=1~6>%5~=>bBVnPLSl(?hGi z{$E9GlHqZJBTP6{DO-nCOqud z$2xE11@I#IOBlF>Dlptk5Nou6ov>gLT!6%A?j=Y)cuRaHQDgu~9*F2jK#?J$8kw4E z82vj!(s>gw_Up{d@(=*3%F0R&sq`iw(Dg)p zTKNXA1`v?f!)ziKLJ28;f^j}^K4yUV%a*^HM}Gwfzl1vg@n)zsYr~nBN(p23+P1c~ zaK^aA#LgC6iunWdA{zu;X$>dNzs7c9`pP|yBP^)$$1YrmDxnM&PLM#6VH3M1 zXXbs`&Q6H1M{7@PPhhw3W7?1IZ~!1CIxkPJs~PD75(y@%x`a0YGX=v{2pAuS8g7f@-x)YX+bcDPZI z2+5vEIiu!dsGD><8e%`^Cte|<5)c{E+!h>SjsIq|f}fSb|AKdR@Zdoxd?}f^=r_l~ zt{~rHLntZi+BDRXNejabAX^T_I%%Yn73#-E7M8nUJm-<>%63~2fg9@$Ne}`NAz;n| zbqor5H&tx%#K;MYpFXC^+H(q;4)hVi?IKcBQ-e)CP-$SkV54zCRqO)5qo8Ht4zDUH zSp%aH?5w||P}+TdU@wevg60!A9?m6^=$UE1o~j%6L@Vy})SZ9qh$#88zmAb=aQaUS zA7SkhqAJ$TYvjHzKX)U7g`F_(fmY?4k47)#u=VwlysnQ2gFIh^6whOlK}zqZ z9tnH?JP?xtOo4*>Brk=4S~mSS~!I<`Ag0X{+Al0%Y}5IVasEau-=T7I2TUZ;NL z1hTtwB!gGvM3@!ZfAt7Lmny}@!Myw&K7srri%Uy=sa`>sW`75?JKW^7UeqqdCdRU< zc%Btwk2ny?VC3p)RaI1wjTJtnoSYVO z9AP5`+z1tQo``vSj1!VxBEuiw!#6Wi7@j-A&6-hIp)KogWPAc3G>bD+f1a6{>3WBj z&||&-<$+x6EV>b{uPCSd%+leNWe>xjpZ)(yI1_F5Sp@8))*V7lZ?0!tpScQC!0H_+ z30bF(YuMi|s8Iux1t!AFVF4D3)x@^UT2JHgD}T>us2%YO2q;^X>nS&qiU>oTVe{tb zK81cnjK+Q*XWz8;sEOGB14HINY@DyYkfQ-$-j+tncLJDsVL=jcm91OjhOK$uAJos1 zzsGz7CaRglJ>J!*IObli{x$;INdG{%?J2%R#n>oueR>~6KTc}Yr}%Pe3zf$5=4PE( zV@LvoTM03e5NPXPa{Zg65Klerx^+Pv#+rsuQWy=QU%zI+PC-U=E5AYVp_kr6sGQW) z)I}gGL0Gy-4w*^pN|ZUn;wZeD$pq8-9_c5dc*WoY$k@l10 zQj1;MGn_bR6LSAP=SqR;$G>iv`Av)_4r%q&pYgvwBfCVz6#z{siSPq% zWiX~1A#qh)H6*7ZNL(*pzC_;Vc2?G5ATtEGxl;K~(IqV0oxvcdIsd+-6fUZk;y@oP z$3^D3N4PyS>ZQnt`CrR2YLDqZY1}oZ|5F-Q$V|xVX;i^EYH$Sr1>8*|n({oL4;|qs49ifdgfb z_pH0$uOmtkl#7&yA|!!py$WlosG@PkN<4z$Yr()YY=fy zA0H~x`H9{N%r=?`xoUpe8q)ujH4~xE2DA&OXf2d0&P{j5K1+;tLQ0oM?kCtS{%W}Y zS>>|tQ2)LF8!sZXWbNSKt+US?F)8m2+XKMjdFtJ4>Cb#i&v#!E2U#FAdH~iQ=$54k zXX4CbtwR5v{EA-}ic}xzJc^}aIf_SQbTpA&jy1+55buk)B-F3_NF{wi3d`YjNF9Ylof#K`PB>u~%q@5?$0*4b!89A3UNP(8EZ|M=`B5ae_ zj-v*Eti&-Zf;AF0{cs?=1SQg2I%m)B*twG&$rpJ5k~QSykYT$Od$jj{E=%6i^BD&s z@S`%&fw7h4j+Ii_^wv;EA?{q59qV$!U%jrF)HopX^hEITdYppr11BIXZwR)jlRuU9 z|0WUQ*IjdPkPkVa&wzFVt+28x{mmQe*)gMg+XN|rp%sUj_zmcQ?vZMY0@25r2~31M z!b8YLdBSwnbgG8LOPt;Sk|7)da46!$lU2bSCH&tK^rk-hrsT7?ps|<0b_A6{hg(a; zAJF!R5Ld%5W6;?>r=Q(JQ{;?x*wI*~R5PH=X1cbA%+n%cN!%WaUB zB3MfZ%y|(}d0X4y&*^|y$ZMPj_=7Kf+`q^CWBoS1qALHKg2jnbbj$)IG+h)MTtAV= z!|0#4u<%3at=JryYSo?z)dBo}$F5y#iFd`~C1lQ-4v+29OOt0(%Dyo-*tLNw5ZW2u zo>+?tyJTyg9U-)N$X6P(i z(^@j@iw|IQ#DZ~lM*JKkfXMj9iu}z03&Qx>5>R1Kw}j-ZhQTNnE)mTDSTKS*V68Nr zyD*r(3`j^IOFhWshy%*W$dIJwdN+fL6|}hNA&%7D(}UFL82o?DK}Iv>7L7g7;)uWz z_zoCLBpQ^omVrS4PBjqWQ|M6$-Mt3@LvOt0zBK;=2Yd`>{=?RLBob(DUeC^V2uFk- zuM|Fe#(`XFEzVtdt-TJGO(Nmtk3zf zz_h{jOG`_mE45>U&CUd&_!dE4+qP|+sC6gFWo9JBdJ$OEX>s--(|+CCXpN-+j;IdJ z8D^WWw&&exNYbtv1UmlX5Snc{WgJzZQ;V=OQgE_QIjI47HF(JlKJR)Qq_B&K#dX0A z0Jto|rgd>~!2(cCJXa^m8ulyT9fG&9*9q-u&c@Bn4V#`PBj`vNj0MG-l%%AjdaV;b zO)AyTo#OZlbL!=u{#&yDYGa~#>F%>2B&7OZ z9Y~K-fB~Z8ZA3tp(S2!3J6Q0tMT>ke;phOwaU&850|5+EZ}=^7RBG)}DG3|UQ&GEq z21M+y!_?Fr)?wkZFTeW|M#cX&ar`y1JK5^jJwkoun>r#Opz5yoxYIRa=(2aBF};3| z-xG`l@s(H&DpXWO??_A~$}*TtLb8RiG5JvjjRMLAA|}hO2@v`sI{KFM%3^v;+Lew1 zcBs+v8X8+HuUt83|4Rc$Gd12V4Wd#Wbe_1lnm#c#HI2w5^TdgY5*$AR?+1j3PIyZ_ z0tYn+pwN_Rs4cFgr$?8d!D~1zGhO*6E-tQwP6`}=B!j)ZgIf0CxAO`Q)1nfP4qAj$ z4*Vd8q#o$VS}>6QfdNhDrTKejSj}zQU~KU1w<1L5PLK3DR+vn%^c7<9QAB_Z5;d@s z>ep88gxq8Y!?<3(y8gt86NDImx=m9Kfo83YbA;@+G#!H7ZGdG!Gk9W65!_NEWX&fh?VP{C zy6i-l3yP&ugg7H%u;QhRmr@ceup$Vuh#qkdztng#40gZqWPdHu2#9D3Y|-E;7<0rC zRGd&cH=u(Y73n;X6v<%uNV55K)R6E1u{?Q$Wlx_@)paxPM{yBW!=#W*+w*c{=l&xo ztkL8c-lE#tGlElCnzQMa`8}x5g%0GYRI9<3AVtIod; z<1{=(iZNKk7m$lFpGixIAJIuj_!At~kuIhGCkycJL&O6#O$Sp_MOh^PJP9?laCx4O z5F*g%jB$9&^n0%G9_7%O;j#L%RjWfY9tYiU{A~LegtksAkA<+jJe*%4mOm88KW7Nt z=F)Idix?gF$vW>GQd*jl&919gqi6!YzlUmu-G8R*CClc$D(`_JS(gG*TV7%p{GTzt z`hf6U{xP{=8(Z63I8{UlAO`s^nz~KET*NVGsOKp8{wp=@Zayc@#%|cYB31W5iI<&G zK**m#Ya@m1BTX{$R|oFy%4V?EPxI`&8OHr9&_wO=8_%2Ed`T8$M`cO1Tld+iDli;x zQIEN+zDaTZ;-TR@kK6a&Kb5K6_3-wBt-h_$Oo_u$P<)V=dgQa+{Rs@BoVdus@iJDR*#I2mdBpNU3|VLTXBVh61kKcOhcHCx&(jrd0 zu;BlNrDMO+$~n%2zD&R|Jl@zxp+aU4*3{pmpp^{xUg%K>hw_=aVnRlS5Jfz|&h-?> z>QG@CRgZ<%4qp3$u@PLPwx^=9@|24Q!n+!XN9R3Dhq~C1=WN@60}LkV-xS%Qjj>V0 zW65Zo8=6u+KL453D({7X$C7>E1gt7vnS5OA$eY}DNAur<5e&j)st6}8uRlh8*jfKo z{;!h3<9d4GH0#!lJ2D5WH};&9W-4TmrQRWz>GHe!@X1rB2$oBnq(tWodjDPyCGJRo z|J}Pd+mrb9isqE7jWaMWaWd3oq?eVA?GrM5+u(CzsfP^AX=(%&2qHn1Y99`P*%O#R z@9q8p3B3R9v8|eA;;-$4cPV+{^K6b^N`H#s1`Lx&y@Yl8DMBKvatdb@-?h7CC#EE8 z@qy*`<@|g`@IgpK6@xa4JexLcdLr#1m0B>*3!O0oXx%$HMLMy?5#l8g#7C$DesykD z>?l5wK~`h?*-{PSZ+%~Z-v9=!bM)F=22(=5_sZ0-N8cEks=s;jX7ke))dtdz{cDdfEQUrDg-o)LAP zGWwMVZ=EBm8F8``9{2ga%3wQO3MCiuDYxUZ`3n~xAn)ek({<+0C%kxo&f&dN~ zKHhg$c4p-JHnD5F$^*C0IGRR<+ljMdg%MMV))WS{(a^?x7Du|EbLrz~Qa2{gG*s(Y zZR7Uf0SS=FSd4kIr3fNWVTYQ+RzH=Y;n=2^#K&hRL$t+m7(m1WV*Jt6CP5gYZ0o7+ z+_@tfq2l4g&D)O<6J;khcJ`2sOa3zmfj%IrM7F%vH2KchFaOHP2((*>6GR1tUAR+R zyk$cWEissS-**}D;!od0Jh9B;cHBscLA1ONmxcrbzXpf0zM<7V4Wqi#Vgck*6zr%^ z11 z@mj=Toc+e>d6VxgH1SFu#4{wcl7j2&>-nzI?RGmsth%Uq=0$c-Vt1LxVb3EJcskV} zA6k2IlQCge0A#&~tk8_44Wt#skPq7a_@rLGd+*+d;o)>e_|a^CbYP`rR^m@T!w==< zA@dTFl5G*(?3iKYP$3@eBS=AF--IlTyh{}?Np{5Qp`#=RNm*0LF}Hvu>Tfi`$KPH} zvhVoy7?>gg3(~`9$6D3AU35e0KXJc)E}U%QSN za^h_dJh+`e{JHuM{6}xsy1y?bzMZY`XNCRqJ2pXoio`!J=;pdrNKX9l6%!apxRhHc zRw8yh@Fu6U^m8n+eN41C!^O!}Qk3UBp7&cNx3H8^*4Ml)FNZ!(@RPBRb#yJ1MTMMS zga~LU5;E8fpn{#R7(6iL0$AGS5mtQ(YPn}OyX{Ucu1ZO1ko1UGPD6JpE^>*AHoF;` znsQU#a;@GZTW=^5<_`#ze!h6k%hS(Q)YTsp9@|v%vo}Hyw=(tuga?VQYA9|*NkIqh zf^tTjJ@orEc-mw_tXk{%L?mB0ZSa>W!g!0x6_%0+CAybl! zf&#UCbZvxZzK|K~#*H^#nvEDMZYn7}BA?o{nS*0QrJj<4Vk0wiztrg0i?0}DXLXTh zAg81&x|BYL*-HFVXMGj1#85X~b3aO{m#nNEa)*tnUX0Q*rw# ze_vi+hk!OtBrUQ(U}%tEolH3~NZL06;L{Pwd~5lw1jqC2KG@Px9zn;BwCOo7dyM|} z?S5)%>kC3H2U$}3?T$11pBFN39v17L`Vf8dnd_U}RC!!qRhK90)vTin!wWK$0t+-vZvOE^|{*DyLo zOF}$i`~v%dWUaj}`5Yv_Sn4l5cH;2dJ>}gCD89Vbp|KGS-@^FqwXPp3HB6o0L0vvs zo<5bYfP9TVr&hF1KFGY-I~04T{*CH z#s@)i;xICTAjB!!d`HD`y{O}d={0NaZl*@N6h2dVv(CA1w-U)t+*fj7Ug=O;S$EdrU5!;{~i5PmnP>qg{p5CpO>k#V>>cW zs}dLFP2bh8W@z}7LAIWwI`l?eLTy2Q)3Kq3Jb3{@48X*ooe?7QbQ|>M(A_ zcc3Zt%Gne#?%2xjZ}|tNj*CVdH)RoJ`!Kq9cSYNSl|oTp#)$QAmvw zi*_MbQ}lU>apJZU7ZeGjjrc657DTHocs^5{j9n{fb8L~h{e>)v*RA@*x@e6MWmDPr zSeA6n_O~j{J|@482Z;wllFCAkqbR9m{pl$roRa*20}eH4{$h@wZG}t~eD7Givbpx% zUPU*9l>Tj@f3Gs_hfB2GB@|nKerB{83HJ(T+sj0&vrmt$_MzMOj|7t{@5wCRp zZdBFBJnfSw)0}KV3y<+URG}&^-ZP^hck8H;2-Sr{PY)~)&u=?Fg(#_kf%4p-I^Hi%3i$Kl#bkvo6*<6>V4N2 zV}UJu&8A!gRpMlMHb)wzn_;{9pWEj^=k4h?&U^Q6_{f5#2$f3Q4;Alo`$S|M$6dBi zP-x9Opjq$J(|v8-2O8Rx=HWh8o1`sB=wBQ7x;~`GS`>jn{-!jPBl8U>pU|Kqn4jIp zgm7b#$MWy(pif;k9=9mvbu-`8@d&@pP8mD#y<}wacH&g>(PYZ$(M=Ynq2$(4W-8$-tl|;0@A4U9!?$kEJU~P1 z=8^AmBwH_Mr0|p$CHI_FMSRPHnYL3Q^3=3^`c1n}J!up>^iU3WbNJ8Q{K9Fmn>af+ z0cQcH1P06|U%YT>d29dm?S3J1yMafl>{|~oi@LW#zq=pQRWdLsb>aPa0pzx5U%eX< zXE}UT33LEBh6f=i*k{>?6S=>!m0n0w)zElvk(w{B;QMUv^F_WZE%ohc+E|jB0|Q~! zIX89Q^rjk&)*y^|m479}m3u{H66%T0zQWI&@W>W!VNFR1iPj_gJG!hNwLD6Inwiw_ zYgvMyzb2n4Ui~fvfYhIJp$)&@n@>rdDQ>b8M+%Kg;0rE5Kt390r5NZakDHp}?>INk z5MAq4aZ$Ez2*-RPA4PbQc6Q38YH!^fDFQ&U-iPAW(ZEup<8^x3dh5eKbIGV_Jo0&I zwuP~;>zWw<_HbewDX+r6?nIlh&ZAJuKOwZHc*WsGlZBo~ez!Mkq{*qc>l%LFuXgsU zQAsbYEnMs_>Eh0x)MZpztx1#7n3Zhp_V{%c1a9CoOFd@3j`UD9}-lrH88$34<1=N1~ckn*uO z@`opX8qgd~b-W-#^`dEz%&WLF_o8iFx5-Aj5%#>HwG{e?Tp712GVUE9KfvCoOBtKY z>@PpFi4+oDm-9tPJK@cw-JB7ys=46m5{jR}3Edwa)>K7O=TeKUiBwd=RuOf=@Qvaiu6HUK`4`Xp_{7>5X%eu=F2uu#Wgr>7MS z4|*+6UYq)AJnSHWle{CnS1ZzX?=(O4;4L0FGh&?NS4x(XbG-M5L9T-ZgwUfPI!n7( zk=s-wxXe@dSa33rCdirHqGUPTk!;%9Xm3+)r2cMYHm=0C=qE%+q6q#?A-*QSn^nQwho5}dwmsfD; zPmGHx%HgD&N$m8qYvHgjJW6Fij(7LqsA*W9X-QsJwG z`dE779XUBH5{|s?i)vlhZWyHgyg@b6b7$`}&I1S5Kdk7D>$lh%RxJ;mn$Wh0L_L}) zNBJUhua^+W#v>UBHs=&BjmLEn^$)ZM*TU=Air7kTUx?wQrTHnH6fN)$B*6EIi9Nla zo45ZO{ZnvXoL`*cZW8i`NKuQ&cmSn4{djs=F(qqoSTgvu zVemAKh@-bCH3vdpi6kT>aL2YCe)nBPSC?g`&2|HByf5ekM^3jhEDl!~w1n;hKgV`u zX(l9;g-=rR?Wo374*wrgR&sc?&_t=&=I9ZmxMOL=k$4IT$&^LzMCr~z?x^VE3pY{= zy-lh*KW@ZRcXp2E&v3wpH^w6x^&G$3yBFMTNrHujlXQXb@ot0|x_{Fju@m2hc)xf= zz;QpOV3yb?!NE91xDP7L~(^pWfq))meyBcpg~JkQmM@x4AD2e+m`$<1d&c5VfGwSSQQf?2$yJj)Y&f zhVucKo*lQX6bNc77h#X{)DZltpByx9vj`TsO1HFtBh)08b6F+bA6|P%%bjo}qOeBb z(2~>5#)m>P!j~uGq{o|$13^EPpbS$LA%@U7u$%&(6rDM^5$1CozkHg5NpCKlWkA}9(oAv5>D9Xf%)w&8R zui$aW40w`T8J?dxi${7q6}91l27v<@E^MrfjD7aiWfLrTSW(l&gIK1PNBiXY5-&n) z=$~?N?9Rx8g5libf0#HJjKbh3d|cZ@Bj$g%KJchIV{FM-hfd2zI`@_9$K}>uG%5a3 zeLsi{Y)I+J{r8xV{`MSgjeu{Kdv@>kg35{Wt0!P}LVHZPmJhpNI``PPmC4160!ZLt z=I{9Xr(Aod%@o-J#At}fB&3WZ#buKnA!=2+jGXE~-G=ld zwW{~1T}Bcz5a+_~BNadvS!dSf5Z3)8>?luj&gOy@4!r~Zcv_Sid|gF6N@J1Deu=Ox zA$t)DLsq*BACy<&uOmr8ePV zb=nPMuULYIB{bdsUJl#S5N<$J72<3qZpwb|sbj~wmKPYa+ScGXYZZI(C?p)mu_&1T z#nOG+m1CE6J$4Im zj8ZkcC`swf7ETzt=)-s(sp~fLe66PiXBvJMK+`~7@~!++jdiV{GPU6d7Xp3c4BOUi zkfy5++nTC5U$OUoaBL4`L}MItL^UlhBx^c`$AB0kIY6vw#M-{(Uw4!bV5@*soRm@x zLG3HPVJX5&JRS`DT{|<=KGO-|{2a(EPw|WmBC4ptP8=s282h zYQleJ$^wb!@sPqrFFdm)TxBn*w)RWh2Gh{8Uk!LNhLCwZ@#vgG*l(XMr9X%62U3p8 z9D`B@otYxvpay4;Y(&|xrgK-WxblF#XJ?E4e{{VGIF|4FHT+OXN~uUFr9q}7NhL*! zBFUV2j);tvF%%_{63GxUkC~Erh!B!FDN}|dGK7%nTUYJ3dlad3M9Q+B;0Vj8%T8K_Ja_FE5>i@yPd{YO_Z34|S3=BNs4m$U$4kRk+`L7jDNFidJ1?T6YvD`ZPRP)+b;Qp7PQQ*@l z%#|2?sg`jY5pe=oRKXF~Oj`6LEj3E@1FSAF4{&17FHU*^ygyikon@c(#G z_mD-_xb^7yo^)Zn5LyOro&4*1S*C^KWs}5f=DFOhBSuTKc zpvv5nYN2(Nequ}SoW_dCB!K<*7x(M|j$ak{oS!J@62Gh71(0@&3y{ae7N>Z;^lt8} z9|Qh9W*+Fn;~@$qjx%mjzB~ElHg2MJnvrl6c~-~4r!`9jg=D&}Vd@yPFk8iLi559d z8;pF)(D8FXnjtf-up`#TtAar8aX8$?=c^(eBJqMQ zReA!-LnI=5a2aUqH_tyX*_09_)b3UYLqm@B)RYHH+7%Z4Fn zq+oK=d!{r#;+DpNwgFyg#n`yGKgTv9Ug`XD-1qWENZezH&`8NRo|UQNcbT9dUK(UH z1&nbJh)W8tYLTORZES{FVDFUa_x7xPNbi~a5r0z}ezDo^2gTr6#tVQNHNpqsX67sH zg5Jlma)W8rO$c`NnfLGi&#&G0w>Z5uUBRqNti~{cK!H?kw79@tDZc)sl96#4$wrv$ ze(+}J=D)Y~?*%#Vx56F|CCGGNUxr31rNjA9hxKYkMtn0K3=uHv*t;V(MKxDzKK<`s z_G4f7Ne~&c6(B5zAovIINUYF+pKuJoAe=vjd>Aj5mn`0RSKB;0r6j5Uq7ss{ z54y{LE{UBbI5}Plh0xxliu$N&c^QH-E!V|q=cTzplGn-HXNpF4O*aSK*F*n8QZ#}L z`KZu9(L`Rq>gBsCS*35Xo@vY4!o}Yu4nGp(7q*#B+vI75op5@Jc^3@*ar5!**}eNt zB|mdaoPWsEZ(|Ie3{ju$jyeXUMDD~nI^d)QrBg_pN@6N1NJtZsmG8;LlNs`|!9XTg z=u-F&@AgQrB@;B|U-h6^5xUl~)eWWG1SCJdK3`2EvP4Ws3=ML5j?@2Zbq*pkk@K;` zbz!61@XI?+qg3}!8@BRD%B{!E&(qm+9s`SYVDCF~5HGD^`Gg6&I*fo-L()88;}F)C zr?C6nxt(t|99+wB=7Ku)HnSElkChJD1Pm>dQXx57hMgmFfQ$?wnw| z9RfmSIpLFfqK2Mk1(GHEK+yS}N3JxKUUg8H?#+CemvXfrER#Lnn`<~DAt94}HOG(4 zlP-U(>QBt%K8f9%Z#P8ESicJyDdE7sB2x-@*q@oPdR%&nc$P5(^J;m~%&7&3tzZjK z%|+?IaZc3#Sh-kH$`?JZboi*=@0+;t@3@E zRo5l<-8;9lJ6r;eblI2JE9j`hCL02wJ^0Ny|A1QD>x_BZ@;KbxwKi`&rIZ!SNkye) zD7Z1s)Pu$M89j~Mj-%qq528(Y%luLFzPH?%mmSz=Ba^n_7|Rddc;xwMqb?L$I#33yY@f{ zj4(&X1kM~L6yR9lY1g=qmE0@8#~~~X?J#57 zaM0X?3WKj8;SIo@q1elOKQ#T7b93j46+=4mr51Ag8pUH;>2###@g^Cv1G~OPp1Se6 zZJt#pSH8SaYrEo`t7Yn5`Mr=Dcc50r;5>0Y61h1#GWN)0Jn{47PttJ|*&?o?+q62m zjqZ*R_|y06*vM^ZXdEy&AU|LE z8Mk7Lk7_;D0o|{;^3jhgPkwUSCy}=Az4=SU?W_&r%{;F-&lQ?$@J!-W6`I%Z+m+eewd==;+y&tZj`Rp zP{_v{nWNEI$hRZ1dV{w_3mc(GU6+@DY7k2*v^qb@lQ{M-ZfyZ&xiI19x@W%ED=^gZ zZUPs8NnvxYt~WRF_=T>1e4l2`e*A_H9%T@CvE&KR^uCa{pA>Cf!1hn@bs-)o_z-$=X!aOm6Jsao)-#AomBlaH(8u`c2-$UoZ@@? zwrEYA)NWtii92SKj~GOiJ`BV+4_$$bwDG)PZXpmjeW~4XwJncBo>o4S$=T_#jKQeQ z%*<66jo5iPv&anWnLwN;k@iu zGt{{9-)lS?7)W-+I8(+`+nAWz0UlfRAjr;nsuXwhZ(({oe8)8?A4Fo*%VSW#0;%Y$ zWV1BF2$#oQN48r2GmAU_RtG1KU1%*wG3y0*^4d;8L4Q1w z%`7a^`0ZCZat}%!Xyz@t?^lxBs$|Ai>jVOK2w<4XnIH6K3w&d<{W##pt% znF3n#Xpy-*Y)1xlHVrE76>C~lRbMlZx#=x9Wemsr*#Io&G+J^!L39*z>KYY>~ONn43W@M}JknsoAh5S*tC(6b69d_8yO`mfhIDGb@c|JQ2u z!ri@RvLAaky=7`Q7rs{TQy6*om{pHko8b}`EJT~KlKj{tWwBJ(@eUxoK8N zifo^B3oo6P+jl^_P)tZPjA{i9F*71wL*SB$jtppwD4O=CM*rCAgqioohh!3KyY{H_ z{MgK*&-3z~ksu0M;c2RBo6BDUp2gG0U}3uc^}{p*W)#0HU(t* z)h3VV8TMTaU)d8E+H;p}C+~T~VO2>8%!xz3R)w~A?NwCs1pC9^o?i=wt16&(RjgN` z+H39R*&M}~TrD;Jr`k?Gvq7~Ug2u#g>bv`!ot8nQ2t*}lo&9KIT$C0OO%*y!5*eDz zh1lyN&tW~W?zvnQLDEy3gZ>ARG6J%>M5{@waEE|RKU$Niu6&Z;%}Em`=X>}n5)>EMuEd%;uj`<(Q}LdmGPFN>@x(ME>X2Ue z#Tr8m2&cTsB)O-5Z127SX3c_8H~_%g;oS+j&O`i~u3?dzWd$JZAz_pN5Q?D_4$dd{ z0rpMa6I*ZxI^n22nSKVkwdFr;CAobMk6&p?*eDeZUXZN`EdZ35BiFUhOe6!o#8H6t zpg5d0yxPs<0E);y6L`^aRZ!+Xu!)HDGjE&u=7^=YhJGh1(M+ksN1cMod@t%9l=Mw# zrxmMA0MI}`1Cx~Repa3ghhZXrVRYj+&L>h4C+Y4`30o){nUs@F2J9|Vjb^@Y3^K-D zv9f@04gk6~QRwYgeu`(bb(0FIEOGzM9RJmILx*+Mb~4b9HqaYR7@=U2(LQ|Hy&zI9 z4&e;6qJHhvmqPS0C{+au3Z9NpeE&R*;2#W@C0#b8NPYf0|xORBOJ6IMZGBwjV&>dD#uNzLq~z3q&{>I@bC+P zaZ5vq>oSj}mtq94QGzM`zYtgL4DEmNEryd(w{~M0fdlsz3GP^B#3E>z6j5)cYGfJv z3bOk096UJTJ&5ruZt)8dCyQvJ7_SEwF11{Md%+Lvg}LNLtvuG1urK1w^oaVxO*^|+ zJX~A}AF+DoQzQ=V@Ixy3PH~IXvEuEg>Q=Y@>2;BcR-k7WRdYe%*2;QGl78D!dHiVT z*0)!Cb>%TNTnqdQ-hZ`9fEff6D{B%kWvw5xXekpyujNZGB7~&147o}}|JYqLT!}5QBzN&&&wH3jo zDEv75XjUZ*hC6*2%xF8p^z--z(Q!9AT3UGwKaeZn7KgL!Q0C9p*kUD3-7${@ zZZ{ceX~^twL0fr;r`7H@c+sKp0~St93W*2`?iGLvr*EoB(26+%te=H$lH%okTi8P8 z<9<)*Y0b2AS`0D-u5}!RPw4=A^(Xn}XRFMq@+sV<7fJ$h`e`j@f=Uw1WI8y{E;}3dW#u)X9CG3C=DhKnlQ?x zIIuTO<*Xn3^&sj0B9@oN%FLshFbIDRdP)r7_oGYQD34zsjhn+<3+#i$DEHMHS8kx zaZl}k6cF7e#8vo=l_d6KumM2Yo`VM)`#!;S3E(GB=SKiPg-^#YYh#^PWC$F7c%@CT=hbtqaKqM3;I(?O-oT_%xbrV*=r(){Ms4(kBpma5 z7aRxxi~1_J{>ydH5W$D;0VW)|ah%ddv2|bVE_$JlCHC3sqwdfXL||6H!KZ%{lagRL zF>J(A5R7sRJz=3ivMBE5s(|2#Fh!`vfG0WonzO53LPo`Xc)$H-2XsS0Ctf4q0eS>d z(RrD`Q|Ov6O&gmOtF{(DdHnbddLf9)IfaEkYV-eBxb`kyUxDNQ2a^IwvaQ;FlZ@!W zK;^!V&(uwOe7j!cHqah$TA)PQnn-3DTYX!HWgHNv>30=6oV3Iejwe8rpaaE0q$^zG zK^3uLcR=sT@q+HfhxlUFxZU%j50h0c)C&-&Rb0Z=-a$8seL?WDGCPwpaa2Hzd|v@Wob&alBSSl5(ya?JB*Fr z!FMDexlPVK0@rcu-(T0wff9hL*7Byizjl)65&od_oj@&lV1e_qtEiyG#j#cA>}+{*G3s+RZJ(trK)HA&93_?Y_fB6Q>(Yh+Um||0 z{aaMGc*zwnmQEf8m2=>5Qayq|0;tu1I^%*7Yaoe5)c7k;4)NoFg(7t%MMm~y4!(q^ z6qOk~I#1ruJDDuojR^6;3?`@EK0e9_Qi(R}vNOh7zO^0aFq5b@Vf_mmKM7s7guIzO zty#o_>mJ4gG90JPpdJ`GSY`z726tuRM{-(CT8u=CEq~C15)40}m!WP*4Sg_fb<}3% z`W<&s0SF?tM`Xtb^zK-mU5#*1X^=q?pq*vSWw&3GyW;5ft?v*Baaw&-R5a*oLiBsA zj-Hd1eLH0LCnXhP{c(WXL<;LSFY{5iBgZnL{&TV)kVKN4fp`U-;D;MG!MyTni8{aY z+D*%EoJnzlF8lr$tdBd$e@V0HrbmJkIDUB<0*gNh?O3qqeXvKif(e=RARM`n2P#mW z7qL%5LAsHh{R32@9ampqDZmR;){r>J(^rVYK&wDDZhVcxOySa>Vd6>Yb~UXPP^h`^ zcFos}V_`)&UJgvH3D856d|zps0TW@X6@P)dSHcu>Uv#4 z-5+*fk?`UXfhH4!OO(}yU?pI6qpUN6AqUtR@vnqPfr2Od03lt4Qj<7?!PTr<`(|eamM;xW=xl?c9@f;P zf5d-CVn8-#Dd_wFcykV;(xjZmCA$ng0(L)iU%aF~4@$*{^)Ov>tBjf152hn`{r^Km zx%?B zX*d`*)o5jj{B_??x{FI8`eaoU+_oyAe$9hI9O&XkjQkG1{&LL_{3;*fnbHg4KPlhY4 z!(kbgNbw){(}fJ|4vJ76l+zG39Ha&jQ4}6UE48o7Ks8*31`h;?R9rt~^0_H!7V_hJZw@JnGGXV7 zcYGfVmC-5m^Wa!*gvrcm33RIXrt66-o!z5|vw5B8iVQx|{f4&J|L6<0GR zmEJS!I#Y=^$BBqsr$*8{(#?2L+kWu*O{{!MRAhsWJPNiT5X4fAuS{p;Y7uhetuWJr zx1sZ|>V41Zz9nft`uB%MHNk%913YkZNArgvu_o(mM3)yPN9%t{v@ri=AHJ#p>TsI5 z{9FzVop*e1d~6;Umz#e1-9{ump6m>idkBtakliWu)RS(q7y8!6o{P5k7{>4nz!4X8*D`2{fABurT6|Nf1_E}MYO>w||`m?>FawUbZwVh}%c zwx4npUN9D-nGiBntF8{rVHvO&G`NtYn*WmAK`G?cN8U2!#S-uE*>zi>x_7 zgk~ZqY9=QqGrs&}N=p7K&(nyt$8`ojqLQ?Nhq;6yyAwFLDSU4@pCl?fK&0Z{TW4Si z*2vX^)1&^cF!c;K^y*;fSYsI}CmfF+WYw=)FR8kv1C0)*uwFGy?>J`Tfs@}>^rl(B z`|Q*3;#}h)>7HzsLx4Rz7$B0Th6XtB2V!jh;NYcWPoWE(aWZs(d6~oh`s(Tlk?V(H z*a~__LFZ$iyz1?ASbqcI#m@}C+KE)x)lG99;B`m{*afj+^tPH?VKw>29A`SoTCB7I zEY6Z>7P{H1?DZ$|y+>l4>0uVA!@M*MFqlDhWnnpDqzW%Mu!-^w{1E8d&;QKfU1TS_ zR)`BRh#z`!(Q)=i*AJ>YGGb!`9fIR@T}2Bu!reAtt@x=mDsV7gAcy)9PXS`thXIs1XY5?g3a zRFg(A0XSN+d&18IQOQS|b|f>-bLlXf!e&jSgh326!#WJ%Tt>Kr`$G`Mj%*R1 z0Z{QM`<<5R#uZM`M*@C!2bk{#&fRamiTl~y(YbgfeQ?6@`NQ-cil5DMx!oP+zqnRk zVK84QdNxLCOcA0!&%6%m#a zhJBC2!#|)7!*`eU{Lvuf%jvs|b`9O0U3@ETWl^SbnDK#qB zEIZJlcRF5lnC>v6e(B`r+lSdWMW5U{CBo)jW1Do6QM>RytF4lXQh~(mMVw1{8CV-s zfVpIW1q>Wz(Fq)eezLUt>zc2dGw%|NkkaKaxSgy9EzNE-J0r=B`s&N;yoMn=Xv69a z-DiF|j^+&#wLir|$oI00ev{DXCGR@oaBf*RaW{>>Vi0IEQl}yQXcRC{A+~bRHXK#F zz~<5L(t#_LjpfSr7gx4xiPuIthpcWl-L&q)d%B_zwiX3D_E%Weo$pN^Py}iG@rrVS z{S*z$e^)FzKYV0bA>}RMvc* ziwfwiSG*V0Ny?o_&@Yd(e3oyX)#47J)N@q?i9-}(4=r8ekX>;uV+3yW0F+OJ%q6-x zog?LLy+il5Yk1hqXM4-h{~Bs}TQL@L>Pe4t z@=Oqa0+X<~wG}cwYD#om#u@HwD~+jaxtFZ6;ds98?&pacMj2{kh!pM8L3A?F3GZs{ zq@IKy|MDz%^0S12hIresmIsaf=uRz(7YYe$cYk4$czVK3v>=>1-rbzHzkRx&i79P+ ze8VS)o~<~?##3${Ek6n|Sva0HXwakfxU$AAGrqrovA^98O^a&&_EljAtQOWUk?Q>hYb)yzmT7i}i95Gr#YItQ{|&bZ#F&@p0%s1$jH9Ul7N|(i{hVv%(Fx z><_Ofhx5xD&ZjZn_w@*pyaD!JQH0DB`krb+pDiM6!PDh@1(VYddMoF4;c-2F^r$C1 zf9bX26m>Dh-wjt{5{0cw(luR08L}j9^3CcUF#c8qOD+0vt}~nSPj*IQJpJ3(Hk+<+ zEv`~~VO_bU#!sE*clhg!zIf+bq8q9*Id)rEpvQ*ctGo*57tN;zo zFFb^~=}X^%h!Frr)3T@nknH)+_-3K}oR$gsfG78&A}z|Bc0Un(a9hpw?WsR&j(11g zes01zCp@O~`#{wdA<(A1?44`%8rojQuJK?fi-2oOgHSzp*FbFB@S3%gC+ms|WjQxP zsK9jc02h~6sd)YNZ?Irm^DA?=3!G4lv)ZEz`-^&W!129!5w0{{E3=>te(59U{>vwp zFjV+`I$UWMTaAl8utM7O=8BM`MW2~U;9xexk|3&iz!H^^8<1)~qureJX%I1zHWNv# z4`PpTmXf`)SPn>9&VyUmkue6$N>>hB1J8>AbV-(A-GvuPo6)mNzDY|?0b$FU!16IN zNPul5>Gvoz1{;mhM?k9*(YC=E&z%#PCDA!x@y4aud>DhjBfk(6n~>hXgJ;u@9T(BT zR;{l0-sbeZfrDTx!q+;^!H5-O!VA!AeM4V5p1(f2&X`PnV>6f=(K+Qc&*H@fqXs}k zCELo$*C8YizK&m2eAK}J0)az1`i;1Bc+v7A-KKmJM1B06I zyXw!O=pb}Mu$XIc)s-eT)?t=E$M>Cfjn6&V+veGjxg_Q^vt74&QOs)L`nBI%l3To0 z%$$F+9yB;CrSj<9RpEpSz6nb$d@?^(VrdPed=xdzTD&j#Zc=ed<7=-j8l0T(%g?#L zr@zZ%Ys6sRbnM5INSm3@*+UK1rE9tXvy@^|njfS4X2i&8NFDY>I^yK4KtO zI4!#h`|Co3oacUFvAWrUU~rd7xL?8>!@rG0oeEX2n)NQ}Aa@!j`LVU;zG>v;fGA0o%h% z!Wv7d06Y1(%PUnqYJx*#9)@~De!?e(_VLoD8LV@ugk6)aZug+hohf6u5BN-A$9;NF zw4a?@S+NUG5*?s|NSG~g&Jg$?D_AzTg+`^z(ke^7(WJdbZ7AgzhXS+Res8cX5PdSW zf(xanlADvQctuyPAz7q_`3{!K59*s-f+5VIb!C8d2=rH`p*bpG)XOC3V=A&Fx}`AO_+ zFbolfw!&~}VGdKKEhENwsWjPK6Este}lM~@$Gh8G%^ z+0>#RC6s_w`HNs9fN;-6bW}i`b9&4Ez;EFPY1n;dV!OP$Jt?{#N)y1*e|x7U|hp@x(RYxkw=3yiH6@ z6{u_Ha72bW3yz?%4t%5dpXcl!lXK?bYFW0!W^YTDmqK}VUQUM~4ILga^vJJ*9I^o{ z5q8jL;GKaZ2Ivxj^&QONGkBoz&3wG?B0IJPaVbQtg!NYC^lu6=;+2Zl2auKcu*hbB z4t~Foe(;t16dqAg9j%(&8s`!p)P5AW@UOx8dcXt0i9e!A8>A4hER8KY!N2hP{c; zS-05Pfr3o~*FJ7thp&PQbg$Z-Kw?lQR3l9ay7)}}2|axE=|NiER|yi;{*N9-eto-U zG2{yPGufLKnS&1FJyZw*mF7R@B;=XYR==n6-mc_nw9x9p|4A2*L)-_X~+7T<7}sAw3DAlc^F(b?Io z{Y376j=SUWe*4mv^xqZmI%yiwgf^emm*&8MG@*I8z}~?ZhZj3ecL1~_*uM7xOJ)db zjEu$-J_+;^E&gg1m1AJ5k@5&=1`cN&ubVB)4;NAj^(!_L3BwfO2zxgeWEd8!L#wBm zqn495(C)r11zb@yaeA_JZV+pp)bE7^ME>6 z0edopEY1h=!17WhNwxu;QWIb%S>Ky@BSeL1`Z@w&lB9x3AK@*k&cqFLe?A&04Z^Td_U8$7rtchEs$zglO`0+Y^ zF45EDbB>>!wtMI05yN_7yoirqhUZ55&N$v_ng4kemc`pPJae?Sm(RB|MZ~LrvTs>s zYq8S|KQSN%=@tp{()1zQN#~<5%|aFk+i-H00=p$qQBkr>4B7}ogd>)4TR@cki1+Zx zhSdHJ)&vqoKjs*F@kMcLK71nPeS{;2n(+?cVWR2-MWz1gio#vb$6ZF>y8L`_=Cg1g zK?F)X-X-}RX(U8gf))d97h%i90{L{%0o_~IBEUDDqJ0AZQqWcZ;tBh4vL{;sVHL;h z!ZqTq|JB?cpo|%%QqGWAz`)XUypX*$zDbLiEzTr&OqyC{vh~auqWx%xR0Eay_ zIe<`An0z^G)DLDU7T1Jep%Cy>yz@)TRIM`iy_#c?*x}xNK;HRj&%HYg(Vxkn1_EaV z65ca-#vCkI&<+X+ID-gjZDsY&D$$Rq;UyJjOP1$L?EJ>C$G|)4*>tc4Bxo1zZ`v!* z=!x+4W#m@ZUI--jvHE_?JD-jPieAuzC>GjVgR`S@`JETVbzmVFi`tX(1CA)FhCj!z zT@5QRo52shShNPW5kr8amGu@%?@Z4AJrLER$Jhl_7(HQ=htZZQTqd6{c;pWe&H-JT zJ|q}7v68d5j|tvl`pj$r`i?lKVrX5kr$Pck=VqgIhp&EIx3g6v1YSN6Bzt2%5?t-w zk`gg!v!W5ozG;tN{SY?)*x%3ZV$uQSRdkF5Vnl2OIzC}{$C(DEOI2lMx8Z7Z`O9<+ zBRjhsx~==Lq!ADp&ujKQWX855EzM_ffYKC0BhM-(o;L3HqFOO~BZlDl3nbPP zp$S<7q9w#CyvBX|cr1e!1zLIKcMyuaUC`Db}V|A#%I%Qx1qA6!zTvBhLjQs^@^!?n|85tFk00KOi@h0 z(lGWjGh7(39PiRgt?FM#1$k8WT~5KjpBn891-(eNTiAVB$1eJeL`FV!|8IF4)~}bM zef;&JR0YT06Sfi05z^&TH4Y=izC(9H0y}X`L0M+Zq!Up8@L$2Z$?=>(l5;re_8f~2HOn}Hgk_D!C2Ow?0K;Yvx0v2>)S zN9cqLwIH_5O!80B>;G6hH`IPW4aTNgMUH{ESuA50q(~k?v;v*60VXtcPp=-#MUn&) z@D1z{sH#97m855_AG^BPcb0q4pmVJh{)T_VC_xL?g*EHe83Au=Nm6+Lomo~TncNYN zs5bD1o5w4S{ls(bSP)0iU9kRSGa!Z4S7PxG4=eq)V^N#f)@jeCQyOA5d|x8oS6=_*%5e8z zOgx#W$Kaf97M8m6a*9#4KT%)6BJ2T>*N?f{@y(5~=b43AFNEB7i(@Qw+Gy+DD(wi% zoP#gN!fkwSxM5)vaYO`IFNtXsn=2lcM{L8lD|yQodpY0u_d?#!Xsndg*3u#qA&4=9 zXwt|i?NHNR6kYQjhb5YMbB#Xzj>?vFn)?1&|06LBYkmdU$~IQtyAY(=V57t4wDCHF z(ZzS`SFBziqmgZf?RS%?196RB6xJ+oT^YpxV6MUUnp^9D!LRpK<%fqj8) zbWAH9Cd;DF(!F@`2thZCS`(1_!7Y2{slQXS6d3PD>E_rW-l#9_m5@S7FNymw1Y>;b zHIHjn^?V9q_(ZcUm8tTl=Pxlj)#o^8%V6Y(k74@*=rD(*ot{(9_&>+6Uz1FRV(-BU z0jQ;j<^jC{w|b^g(r@zQbvVRqAK=;JRAW_}7nlY?%+>b&hMpX=i5D^qD#()G^$*8? zn*7Kzl-VdVH}bCpFA{xv>;&ZwE)21G!I3+SsXkP4XewgAygv7M7nireLT>~H#b$gg znv`;_V6s4u&64k?KEWTT0V>L{(2auG8UP^Nn1;Ylg6jzPP z>c&U;)DUk5y7`&49;AU5o0&UzQC!^3dg!4)D}9y{g31cd7J7dRDjKe)A z(UyE>G;q*21jJc@+~ED08u2C&_vXU`$4ubqLBRnRhzYq zP0bKT@wBYN4HRXMuI(6NN^xe#3u_7`+hAZEJvb$R%M)W)xP>K-GEf^-RbGAvT_e$1 zW29^~VpiZaO*jvmwY{uE&h{NX#!4`;o#lyrI3O*_m;CTLZP2?a&*LG9=h+O9cGUU{ z{tUD!VqINbJReGrNLZ~~G_k_B%bJtf$-&`{QmgOhPm6U=ZzF zlc!jsYP#+r8686#_zUG^t)A(Y_Ag&HGculmgc}=G8Mzfba6(P;x_#*8f;Cg*WUeAg zF!F0XBkp8KVr1JGaU>3QnDsWAZm&+zi~Vm@)7drQgGBrI!#DFI!1}4YQ2(~&TA<6M zW^kK@I??9~+)G#OyfNB=(N>HVV1vSbXBU?W^gxo341UV9jpve&bi<-aX1I7(zQ*S% z12{H22>UKtO-)S&WIF7R;DP$00s(>>ap??RyQH&oA>euy6%uD8ae*q3&wZ*kun3;H zBE&j@qNUg;h%@lWz^$zhkv~5)9ixY;z#}v?RGv|iLd@AMTdU1#x>aDMpRAt^Mmyf2Pk9= z&l>xcH?pzu0<_v!^K?Hi&gWhf<^BT)w=Tdt$5f{+pm_1OCY2Y^%#!r9k*TDvv9SiRRE=jkI61Agv>Xd#m%58yB>@8? z6u}c8m|cFy4&qamwYI9DEMv(j`fhvPu^2iYZA#gP4{|sWXW#=A`{l#<&B@7ID7hxR z&n|yEG}yjT!V61K6tavjeC_Gk3H`@(*>B6HtjT=WF6pLP8ZQ{dhq2$?Bi(fTKy-ay z8)rEq*7iQwCFv~>k3nYR*H|l?W!ZfaplAZF7=WEPOjhE22O@*UR6jeP2u=oRQ6A48 zr9L7=6zVG?Ge$-*yn1yl5yg?gD*V$6f!0S+z{x!2lZFHX0=D$9~#K#59r)T7^WFD)rW% zcIP%R8RVPUJCH)8m@vMim|Gkcbz#eNE%8=ei{e1g;l~ujyu_=P>PigP?250f^x9M} zxB#@g?LTa*YlNw0;7G0ZT@oMY=8N5`FZ5g!64F?|oU`^96JJeQ$rAY?gN&1PecdK9 z@QlBx0qa6YYX_l;PL0F+{iLQu$7Jv1w0XyldSnXS*|{b2ja30+0P}81M&ELJHaYT4 zF}+Fr)i*wt&$jcq&DhnTG`5#8toTeY>Rs=WA{_J%!wUV*wX+$k)PB@Rk@>6x6uw5v}$ zLXCjE90)t1_rYi5(A;~68-M`M;Lc-Bfo5Fyq~+(VNfC1Xk{@+V@&E=Za%6E~FHvQQ z!&g)M9V}$JiAeP$uPDs+tT=bB!K$AYOW(+d@DuMgU~#0j!>};rS!@#HDpd-bo8aXd z6d(QOY_1X#)Tl_X_W1$YS&F0TofFy|InT=?fA-9*{gl^FHj5Ixe5Q7)1CQ$e$LM%@8K+i zE-6tV`mVIgL$)IyW<3`+mu|>SYZRbuxFUps?XAa;7nrlSVgoOhtYCO+9YyoJ=VhJr zbSBY|dA1?Fj$lU03D(@a3AY+UOQ`^tmCZnPs9)j08E1&~MqR%eXv0@qRiJ+%4p zh`fp)dxowXejo)_jY;)?I!o^PcW#Ne`I=J6txZ?}4JL$=pmM&VaU;L>?cuhs*d#*~ ze4Nt+@&bWLC(iDBSMvK{)lDUpGT3u0h2-B&FyGQy`;aSvVPGIL{7cFIBrI z>qNxGm`ZNBFk%1uI;DwwA)-vK=(@EE?KispE;T8=;CuH)k~em`V8xRFHzo8jk>kOJ z6VBT!#aA5pw7_yyqdZ7cZ-Sdk;}sY7JRX^2-7|>*`DH6t{X0DAi)w0WNfrcbL6HzF zau)bcLt6HdGm;XC<-tFcWOR*3Yf-6SS!M$-YvY&N4wHR{>TkRMebg~w!WfmnWX;p& z@<%a262{N)rHb~h3y!=SC42blkNDo@`2!ufRA}oC(#dg*W9q)Ba-Rmf zXHG$OmnHfe386XH+R!k4s#$Q{>1=wI;;ebmNi~gv8x}}Qd+)^li);P?<=_-5fkI-- zv$os@Nq-%>e{cHyLih6G4kYi@rFHZ*Pd#Vt>F=!{!mHMN{XRxk9@iF%4PSM|ES128 z(p`ER{&?47Imx?UxjE+T5@;@=?xcx4tMcjlTInQ-X7M+F);2(YjCtEr*t(wSeDc3| z^m{0Ti9Ha(yCFF`c4C{fBX@s*GYZ?BQq*kNFSefY`#0;4R;7*9H^x3*tcVcM=L5zf zlvoeU(gwGM62eQj-LvO~=c?}Sc2|T#%+*iZ;oAU;XU#HL{n10cu17yiB8%yE^UMo4 z=;Ge1sor=>O6Qx(km@HT=^8`CaUV@mUoqA*p|OTP+K1e5VR5qez8mulupjcB$Kmz@ zWOJQ8RrTt^s?i6SLxp4flf>8c57qs8W2XqaOn#&)@1nnxfi~w}w6xjDj zP%j~jXYAe-zd%mS?*e`d&!IqJDLL1YmS$kG+T=rNX8~$}?PM4ClRt&<@4~@bU8)|f z|FyZ;X~^yj<@D+e!doT}wqde`c*z0^rubZ?jb|5Y*v5%^?mK??SCmTOyLy*vguyfdVz+=y{QiRn zwHa5R?%{U%4@8KZo#((|tKS(!}8l+#^62SA^e`QZ!-wJVjs`Y;Tb$fKh zTsX5A9<&MJl#(f33bsnNB<+<~@zgF@DY6~U@E(R5LR$ubZ@qfQUOya|M&GbDNi~Qy|r?Q{>=q^yNx)}|yiCa*Oq}qX_r;Yc1cYU#y ziRp63%!tr%z#GZa@=Xn#19n!YBjStdHH@AQOj9oPMVq;gy$^CXKZEan{a8yLY z@bcyRsj0W0KR+CarS|DG1xRcaU0pwhBC>OH)eN3_8C(wZiH`mn^p@x0LyeS_spI?k z{H<;*jU9hk6e`r~H7VYC^5lfDFzd+A)Qp^* z(#lHeef!Sy?O&B=qpok7Sl-@Fef8@8_3K$jM*P#WSDmfelaf;Ufq%WGCjHZ=)<=&e zitl>)Qrd0HzW8VH?&WXe#VGp6t`GU|3EsJLCqc0o&=tBT8(Za{ULl{f;+}=9({DTRjqk*uk?nbz9$1CpV}id%Fj-G13^f( zDU_8>>H6d=-=5q5RUu5`PV8-0cCvlYG#d+f8%RGve-7BY%%ch?2)!4G7XTP39~uNGkK{+BQ5STF42=hwT;z{vM z=Mc>4P_W5dRb6dbasz_Pt()OyuJ}*{;?+o9et{x&cVyU=Q>z+{GE|2wc6L{g6dj2c zf`OHl?t2?ws@g^aL#Cw#B|UxpYH$nHp-0lBU5L5Pe$CeudFg0@7kYY5%mO43{;FNf{)=)vtKbtKN84Q?>h z^ATqGamQY191fM@!hti+%*c4t)y4lLb=B|RuaOl@lCq;{Z3g}vkTXH`qX~n%}3QYH9RzD&;D$_wJTz7EL7qYEwkZH#T{y|&Z@xYKr<@o zK$O`1rSJ9(4LqV!B7%tb5G50Uk0K|Bl23wbq-+1Vb8g&9#ql61IH%`; z2Ve_0om*@aLu8T~)oJCxtKZu`p$zg>?`s{hBQO#)%hd9VF0|$=q?5|3+;5kRzJWji zR%TJ^izPfsNjASn)CnPk!BIHxd0D6C4dOdQsby#}9=LY#@h(+HF3Q}m#QxeK**CZE zA3e6Wr#DK^@<4i)6HwPb*&qA!jZrE6Tv}w7@;PUDv1aIV@Z)S<<)T!N^s}_Q%B@r? zt&y!FQO&1pGEYcL-|jbJ+q7wAb+zi-ic^aI60$xL22l_9T@-p-wQuA0R1Oi5@K0*= zU%$dqlCG?*_x^q9Z;jC_qoVs9W(78?Fcs##(IGij<~)ro(oWY-v@n8OPG_deUuimn ztEHPWwd8_n$5{1Y*Wbf!erTzw1hi6xtR8eUm7`aOOcAaCc$l5QM=A`yxZJ83)@pELzWEp3ZL`8V#r22^-ded4r^?T?jt zGe5R3y3xqFBP-mN4xeg>ez(VFJ$E^iI}9J;imTiTkJ!D(+NqE#75(W&o=ZsFzAa}W zDRKMh+cU%QtD;kYw7z{SuIS%Wy?Oh@gvhR4cH}8+iQBY&`&pwH8GC!7#>U&LH$*k0 zQ8v%mF|SC6nT-{1xcO_-ZUFfTVZvT-Y&h&omag^gNMfGw)UCNu=tRQiA^j(eak za`dR4#q&IK<2%@C^@2+#Bg;l2to%ips{euNpgsjy0W| z5n-kZjQ<7p$yzY9y9r8mY`S>9&&hdqWYm=jqFI}#Faf2o)XHf z-%M}#ZNGp2#vV=$Lu?FG17U0t6_tW^x}OzIb`jRe-JPFd8W}N*|IF`!T?fW(cV#&_ z-q5MEisn35O_q#re$lG&C}66)ZHG&R1AS7`@^LPlK#!F!^80bYzhBv2UHzxn(7?d! z;cIc)MeD}KH839G{++mIAMcfHjd0QXUrSommw36Rr(JXIDT< zu=SkKtHUdg(EntV8>e1OtX455Z32rx+to_ z)qR8Ni4a_vKL~b_m4ZTG2f_D1nqkC|8mgMv*;xT>;Z`o$2&Rfh*LCsw-9=GLs&A;l z!GOI*-Ko?5XE!SO^6u^k;BlK781#Nwn#Z=-^s>vONkLT%{qO+P36ubyRRguBWqlxG zqQ-t#)ij+8C7R_sKvwl9w zwh|3ES{8-Z#?Q>MH6RNK*Z1thDCLM~=T#0AA$U8sC>0PaewCHRAFCp^I({ercmegw zbX~p$hNKdF-Q9?Y9sA_M^nm(RzP|gu1V~1orS+k!prBD!)WsNP{s5&!%Yo>1Imz^p zzk|;26CHRJ=Z7^Ni@^`sLZJxK*z?cysd%N?z73}gcA;X%3;gk{V+;UbE_5T5MUO~+ zE4gU>q@>=So>Fv|?`xJwQv)xRQz|NqtF~lsYB@mjh5yZ??T^G24na zRYTY|&>8X7VXxEW6E0nZeW6HUVQJm|X-CJ23Dqz$%kr<~YqlMa8%QhZ>2_7|_sWK{$2`9<$P1l2c35;^>e}fYcg2lr_|Bg$ZDM%mti$;&%K{G)weDQz zVLdYoiwol7;`vm~F)@2^ZhR54@`I0CMgh_$Gg@etD}eJ$prhBVIY=B5HBz7AaI+@s z%>VgggHZ)y9*gIas9SP!To-GaTxD@8eTmKDOYP%m1@)RT)b*cf@Wpo+Y0Gt<9vZ+r zH7g(wn$kC?-ZU%enXW0gv4&mjE-^bLbbSXdpp)<7mh5!BD7kxb3gb#D{_dvTu6{u0 zs~0QZz9nd;VfL)$@Tox=t6$*~^Lp;tzS~O{ey!ar6CjW`HWHb{Lw*LS+-@R{*d=*= zucZ6u?8A1WDZPEW-#s~N(lOJ2pUG(^X{0^caQW6zCt;T7{EH>^(BE+@#?by(G+7@3 zdh6FCD8BlbuQ)k5^#zUMsh|xezJjaPYEX1Du04OBkBsvZaLc@xSGr+meww0%>y4k) zKB5K21Cuf9uEYh{e9qxsBo7=#DnmUj9o?oO^II>`*VBnZC?-oWAS}^m0EKdtD9}07 z3}7B)vzHNbq5#tF0)Pa-REBZChVs;K+eP@79920E7z+sdBeO4v8hc?AxgU~_{rLEj zSXM>$DM}g{#bneW-19R^Zp3W5^z{*(C=|obvF{BXfAKggh!>2Ap(FM}lqa$TjAVT@ zKhAjqJ4rSIG?vYB0hB_`05h3w zf8T0jzRdh2d?^n&s6=vWNJm-{>bk0`PnOO8U|Y_7vXaalkl^y(1+|Cl=#k@a_VliJ z!2AH{am?HZxAM8&l|HAmihUS*OClaH?|<80?ZtV4K~*)zR*Rz%ND)~thYhI)MAK@G z{q!%Ihu*Uqs-9epbJVrx*QA_d8`ZJjmb*y7BL+ZQ%+=FwbGF5oEpB+sG3_~!=Yyiw z(a|ye{j)u5H8_9Z=f^M&`}ONr!p=g7L+C5REe4LLD^4MR$*Tl{&BHG7O0Xy-=#x1I zjnpj-%p=4_5M=W=2stYIoTh(xqV&OYtebk(4CEV2LEBL!01b@CD>^W+^$t;C!+Bij z3w`qyC1X=bDJfRw3-u}JZz5aGd_C250x>YSap6@`H55h+5=YDidi8WURT)bAlvI!v>ax{i^-qal7y0Sl2_A z+kyDOaydWP7>Lfa2kMLfG3M49w@cbg!l-Sal2M2{ zvjzq~Z^V`tR(#Kr4i)zFW&8T)dSHg(3nS^HPO9bOUwgjMT(12w`;F~W_FBe@5JHrj ze-eO5{v9fnJePT4qSZTO{5}#bbxW#dkc1~)Y-si0C{N)VbGOyxyLK``p^)dHzHMfvZ74nz>BuhmjdPcLL$jY-x5io<>AiUK&x z%}^mwGoa5Dy!PP1gUuN4enIB9_kkn9u2wf#!U4K=@dePx1aN7y8}@hIdcEU`I&cnV zQhz4MzmQ1cOGm==!pFRi*YW^N=o&)irt6(*gvl(9;M2GW@ZPLdTpsqZEU=93o7V@? zS!og1(TsX$?M{`-YXI@A?CcofY~PDGQTY=>#LaHAa4z!wf_?Iy(b3Upgr$;f9iUaK ziDBGzb*$*Uz>(%%$ukYj&4)TC05Ypmi0xOUMZNJeRvp*!JbFYzPRf%k*~@o_TtVdV z(J^xAy*Elxl#EdS{Ca;`(^dR0MB^g38MaD{| zRE7$fXaBnNw)gk_|M4HkH|*oxd)NKk_jR4aI@elf@lAe69(|seYMb9h(WT45FMSk? zmDNDo&KucY>4$!yjc4K73rdlm>*OL_dUGpwzc^u}g#eHZ!5=vDIUkneSOSI#yNaDE ztU6KZ6k;#@@#8Hz(@+S}7XrNt@1Mkdkq5Z|tNT>%nKY&uNO|adyz&1d?1ksQA?g_b zP-kpxYA{lXrkDn|_y7yP%u zBYQwAKyFyh!=rfU&=fVTdX2eb9|lK zkjuKo+;lpk2;~s{kt1a~^+Taz#}8xBQ^$C=qu|`PEeyw*y(yuw)lbO|Y#NPNdMj#b z%|bH4TI+sGJq78BuuqXeyLx)w;+3f7%A%5nK!xnxhI30{Sy{K2c1HDXp$(`lVgWi} z{1b@Z2?k)W&NQ|iR{w@}U;V3Am1aM8&r$++m+hYuf&&z&nr=&8@D?%Q?ByQ-}i z^nIbz;`(;Q2JSPtF)FV2lT=_!+3uC@%C9lyPbPe8u@nZ(Oo_w=>UW8-l=b0P{_X zf@N_xPv^i*_ST%9R5qIrnVz8OhVL-bHUa??NxvSK04O6E*;+jxm(R`WNt|KM8;_DV zUZ?YzL%=;PIw)Gk<{)t$0vTpESUX^#e8texrMHXpC4c_sq}<1~5)KzH#zIU$%m9!x zQ7*p5h!j-j0lQ{ao-H(PxtG5bt!|H@#dZk3!z~AdQ?-5$loK#hNM=H%q?VgMkUxC~ zVevg`Xn4Ww1wkg<`ulm^0HvD$o68rVD$s&w=T_Wqwjay7GtZPQhC1y4U|Q9+m6c|F z`*(z5qd3G0WK#m@e|K?f@lZgsTda1x8wtC#1k~z>W-j-(#3^7o9WUQ*fgTun!qK+0mm7jN!ld9->XH93_rlQwg zcV#kOe}18n_dLc*Zib!;EcFuq*M5s@A+Dj+_iTtMZW)W%wvH%k4SPCERoeo!V z#2E^fG+qNM7uik_j{?&5%(+ik;P)G2)~>H#55eJH`LFGWqp?DX>QBwhGOa0} zy;Jgmon)M67YlPzuXaH3LZB@3XxBIR=~};>-%nzaBo!1nj`iw+$;rt&;kn-D4=N<) zj9kL{zkl^jlq*9AhQAw|#Adp_?3i=y!45<~Mv|%Se3HcU`rHe;FIF!GSK*CnPv|#%L2wo-!!+47vPG(*I30e-UwZO- zX7ZZSJ;ofHAGZxhe|`+c;71F|By`Wtg_r%v@9fCHW&F!6-LLK+)d!31_u!y0WLKXH z+@rB+cLCFD$$kD@0~1y(^;B_j*@t`r8WntD>K>M$vNNXJix&7a0wYzpXVlQlO`KpG0R?l6VZ5E<5?S%Fjlib54fsnIAiMZhQ& zRAFk_`=zDtL;OnDYc5;RchPL)%YjbN5Py%2?VS6V>1YeW-xFE=-WQ+2o--ZT-=bW#2%P0dvM z5grKmiCuL(bkQ_!Cojd#CXEKdCvvmOE2F|NcvuX<46d-Ti>_U_ZkVKEM>h+8I-0?`H5 z53tI~$pNW4gilHqyWp~yw6;bf_M2Y*i3-&Nk{cq|K($>`UG0y5yQ91N2-sqD?465l1yi*W3S2ujt*oJ1F8YC%pysPQ+okx zD0^OA#`3*-`PZ5y7-`2G%yi0d^KWyTy(($hARNA3jC`&-tAlf^j-zWE9jjZhd1PoP z4)kIOb8aHG$>pTu7vK#Nu_G`*LZv3eWgIp*<9=wzNU;H=eABKy#g$bZXu|Q*=*rZtfb2}XVQDpkVvJJYx zz(m^sRFggLi$A!5*NuL_4!R+lPKrEeg=F6;An8rmVOZGK)|O`F5-jPg{!}^seJ09m z6dj7F_P6L~t^=Ttwe3Ez$kV`5F4TvSX1Q~zYr9j8FI=cb5kLr65EraPLWd!!Bnp&n z|I0ObDad`qDc`@S&gca!KwN7_-Y%V(wn^4WS%wrTJw5w~CW3Bf^Uj?sJlJT;Y{pWV zi(N;j&{DL0bxTrv_y+AN-GOh{*tO-n86%ma9YijcOF;U->o)dKfwc&M8UoXo+w~2T z@4g-=D9&~0`1(k~dbP_)psar1w{N9*XGl*`93lUeMuo@un15fL0SXs1qZ~==RkRM{ z08;#z^fuOiZTJCGaVc=k!1QoS=vJ$FIWlQC(6%3&W-Cx4(Ahe8g@|o83z?ghA;M3> zU^LkInj7KAw4>0I(xAn?nEhbd;o_ULiW41px+H)-U_W6ZXW5jd1hVg)o&3kfbSBp= z8Tml3a_k@kb@~NvuRfl6N6Mwa;b9f322PvXlv2U>AI~n-=4|_%$A*h^8WZZ3;=Mz; zLDBK({I-7Wj$9~CGNcUV41u4nKQOrm8;KGCmb@`OH#albn`CUxGCkINJzoUS>&w~t_EDq6hW{ktI+)FY5ci*H4u%rvF4LMr$VnHiQgAHzVmp^wuP`t-rB3+3UQ$gMQy0sL*KGZ0Tq&e zchzEelVMuH*B-rMg~Y}6F0(seu#{!B`9l^Pa5s4k4KCc~chBrp{(Z8IN&`Fp(5P;q zEmA}rC&Y%B=&S89o-v2m;CQ-bFJoX}Em+Yj#EpCsOq*mw?ga()VAC`q_NeMnmFW)_ z?uh~85gQ;resx0yM;7%^dZ?VTlax8OdWq9HzF;4s@6-Y7XJhI#EFBgC{ z-4M3|nLSaBYt4lsn8iV9q7-sHfdW~p82s*eDNzU1JN`LbeBeO*doDgcAD|9Ot`K*I zBe77FzrU9lJyXl(^==jQ%e~Hjd58vU_Z9-%NY=}ULNKCnua-?)67tw6rKaMQefhQR zXWk6r5dW{w{A=M1YV8EG?+qqF=-@v-PsjcE#QpOp987k(tzNw*l9aSy7*>P~lZ9$4 zrOYUI_2NxZX!NyI>J?UwReSD3r1GGl8?7B7N>Wzvd-0qUxzi+ZDWGFw4W4H0^||O* z(|0m@=el;y?UB)D=GkhA&i%Ar75~BYfniGNd`siA9D_v~Kh@R7P@NC)94zt0Mzf<< z%bf%C4Gy2}j%pXk=~uTj9_IMloIsW*T&4e-n_zCoXX5FeBE$d2ZK#DJYBkka5 zABFv;V@kwc7SoFRCO|qqK2y>J1_20De%j_}?t#<<2?+*PMw(v6I{=napZg)otVZgf z+RH^JXF33V?LHx&h`%cU7h4K$<2qC( zd+othGTyJf9DW2dv!otUMD@g}k4OaJ%<0|C zcLFn90B!U!Ms%EVGIc?5jkTqxRFwIvBK8EMSvP&*h)R((xXQ}xl-8HUc~>CpuB8Q6 zjQt{HI!tiYk-4AF$o}y)yTSEE@$8M1w>!yY?OoP(ZfNq=L$LiohBwETo=W)&6^+8L zPsZmtx@(HtUfq2_gENW(61LW}G`*=0NYx8=+C1D|r*wihD#pgsf+$tPzsm=YHogYo#9IRRXnL5d0Z6oiF^ zot<3R)kwa3N#(wAnX$5XUp%YY@8RKiMAqFW-fUgO#%2PU^^{r&B#W7BV!8t1|@ugP^Zo-VYyJ@+d$j?2>8>ZBqM+o`LCT1AKUi#`{%L4 z9R3E^O8bdH6HIqYkpf1$IXHRFpVy)3u_!1!cjT0p*ZI-~7EKgR4&-8;=hM5;rDEpL z*E|~$N7G^6$?((ztmN%*=itbBY2CU9ZWtb$lfG;P!9*(W)l(32(U(Kw?2WuYdE;O2 zmC#+I(DgG&!M9?Yt6ciM=MQV90+Z5w?A^7tP zLD`cg-N%9}LyM}aI0T|^!K`ClW&HMe6)F`vwB7D=`zYxibO&yrU7^0`<0IZa*t8(o z&_A5?B{kwX17Px|Qy7n7RT^w0L6W4Km^A0x!7gs3F=En-t_pf7_mH;X$Jo{|9n&ni zLf(ZBMg(VfuO|nWgRlg0I1mEYjsC&eQ z)0lMV*0PKQ@on3-0n=nSuu{?F7A+`II7^SZ-jnT2Ssli#968glMZ9_A#-l|lM*_SB z+;61n#h%j+_F;u6y^dv7NE4X$Nh+{)lZiu@GZeWQ58{&(LSo8q4(#A0&J}3;E@B*S z-^|YK!M`Ks^2OGg=En#1!zx}mlVTO-3Oy)Tp9P4xo<{`^S~k0fk?(6|>ZT>Nr>GxU zcJ18@lM^32%9E4{*^?*li=Wt2?+^_Kcwp4`?%t&o*2YRWiW=po)n>+4jQ)_oCJN>y zYa@D{@_w9UqyP8Yy}hyw8<0y1fS-SW7?5NYVCRh)8I$^f>opSCxy5MHlVcYqx&>P0 zI5|1-rng}xwgKeUjPy51{lp{%7L{}p3e*(lG>RJo8Qa2wIHFT6C<=$W;m*8z=>YzN zi9hc6_!Pc>9|%epC4Y`T?^S0X)$6c7ZYCt%ay^;eh*Ny1F;$#^p_9$bupT3K$R)3ejuVosf~#5;o8(eZxG|-5mMSnRl^3lfNhvSzwHA zGyynPMs`z4$syunvXI4D>=}-2Wq+l^qphtC%%~han|I3`ta?VkNpF~(*Kx^kHHh}b z43q&=s~2MfEZ@J-*C&DDKrUsr6%l{J$0sUf?61qE&(DpXDQ}(xu=9V+gts+X!O zDHSy~1|!ANYoxA7)2G|Age?Hid zQqWAIyKd8wfi%fawqZtJQ$L=@M;ECRtW5@5gM))_ZC~QZV@|My!r=emcck!t|#l(n_ZIXG=y1B?Rb_!1AVIId)fZSq-WJfQ+M-(&A`No20$lZeCZqW63G z6Mr_Um4avMmIyTfq@$Q-uJ%BBHAxBPaTyJ+_>_&uV}OcKDzA<9Z!y98dykT_$dgCF zeD7~NC7V>qH4u)gea6_>!_$+_%*+frkbnN!4r^&3ggE#woCen7jloa))uor--u!9l z{{K8tF8RbSJEvdzVHeeX|MvGDPtEIhxvxEa+J1wonwlC|-pe7pcKKy>UslD!LKtob z3RJ3eVKhyd$CyoGrLe)1jaE%*MI|L0i!WrHDww;KGQsS3A>y#FZft5nh>qCASrZXA zczi)^!&LZMo;M^!n6B$hQN(Ty=&E3aDY0Wmwa)avXGpN*$9m5ct}p3!=vqW`Ow7#W zW91X|4TV5gkkr+^D_5|B;d+Vv_q?wNy+#v&qL=yW@aT3)A#e&;wQv6(R;+JNKW*Zz6;8TSx#ea7$HVsjbMT()9`5{Qgm?4Dj; z{f34Q*x-Y9Y4$4r(xrogCcbkoK)vbu{{1lE%YU-7t7H2dtUo{Z#IPCke98#Lo5IWE z)kIT%5GzRD^SB>f6FgPgIdOvX5;Xy?MSlxK%0n=P$IEjL|ahOS{rGB?2(|7)Cbz(nB?5hOvr`Vw z9ne8}wd6SLZ9H=5fDZSg#6+77Ta=t;e_M}HyuD+D?*;|k?{C8>lk6dfaS(AyW@cu# zi3#222*8)X0ia&c+0vUaEaCCer725GSiRxEKYoxh20n8Qcu5`zd#%kDN=nyHy~>+_ z7F6o9HP~t392h;frSoV?HyN>b?yMJUsuDbL8IIg5fC5$NwEpKPJY2VM6z<7n^k3#V zcP_VMey2b{YGo6-`l%+I;5UbAL5SjiLz zI=OXJO*A^@}ZaQ#MLL#%UO7(VJ@}q>5u!mOLrRqUvt3`Vq3&(!(KeLhf(noFOY5?7pICv2{m6sP2 zs!z-j#6fK_wOmtE1uNkg97~wJ@={hA?=@z#*P-rYKw2aku<*ydc6v<+Ojh zO77;F2h;}zEDx3X-om()T`by-{i#_|-W3hfiHaQ`(-n1E_n*4dk6bmUW2e`n=Ga?T z&lE2tH2Be6Bb~p2W_l=ckI?;X(MOA}rP%jS*6gwH+;~Uero)eQ>k97{-*m7W1AdCJ zY-w|IDDDQXw*X4REjr1yRzK8@j8@|Tg?8=Y^QbG-UAL`vjXo1GuEGS>*dpvj#xD$L zN%_CeUBt~SaT0q)>tGi)E2JKOL;*V@Iy_!?6p4V|cmDJ9K!jk^|8eouv~{S|=zX1l zn}K^y)|?ZJ>P4wRHfh$pY6I{(hY&BLA9y)*|J)pLW)%_=A~r+7`B`C%=;!B$u5B}z z6nN=NVU7de1_W-98;IN*(c@sBJMY%n(7>e)X>6SQ2kr?SCXyq|sd?v&lU@aL*Ai4X zce(BnYkm6W%^RX5CUXz;T<3ocql-J&mbV)+9lDO?#;|x^O+UllkZ~#+aFVf^SxE0V zSqOx?%^;B_e!1mG;um+>Be(xa*^MWuZs@54jg1^X3XG^Pv|ul+Lbj!$_$lU7r%n+Y zhu+-(UK+K9OS2)hT@K4oVP0wbt%3(gt^x%3kfwe`bw=dYFPm$*ESs6l%`IA*d?Zb^ zMw(%6y-CHmSBrDWT8sMq&Ct7{D7tg~x#z0n6^A<}V5#rJ00tbi2?3|{5r>k7|A+a%8o@2tRC6f-o-bw z^^Yq&+?gBr5;`vv6wTp}kN>G=1aG`$BNc2Lf5z~1H)xFT$^wJqFj631ouJsS`3*{2 z^+1ou!Vm^u-sZ@F+t-mUnnb<2%IceSUR`y7WL^bYBuQ!w2m_F3bR+3g8Ynv%COz^C zjbh+rLTI!|4d#7oD98jLirvDT8KhQ62ffKJ%lTe0yt&y!kD%7UVKZX?2SF`I6(%9A z!@5}aTrEXN-5ZM%0aBBB-8~FBRGY>BUYf5rWS%~Rz5CZpFm~$DnIx)5zr!hb4(FSH z)xB7#b!ldo-)go^%8xX2#6|Tf%*^~#Bc5l4-Br58M z0lvII$S1nJo_W6Vo9#_fP+k(GPD`Ig6M;0m1H&Z>M@sx6m4MGp5?8i`Ekvt4j++Uv zX(1ZRB1VWWB)umg#$y$hl!Duc%;0u?DZjN_|j%Y9J; z-`VL{bM?$;O?5fjZrt4Z;bT!#y6xaPNHqea-k`50^e-bLBZ9}Ow72Do|!Qow{G3-fqk5W8H-sjtgj04UjZONkq%`ZeIX@`ql#rc zOx<*X*LYyw1NZ;34m6ug z?UPLnG^T?GYh&nu$cY-zH#Ox_hLCR&{vhY!B}06}Y!UoGrgcj)>G&4kpx>bryrB?X zH^~pRwGx#M>R}QD_oDCzYw+o;>fd~>=bvMWOc+`sSU7lpa>-lU2f7d)-!86*$j+*j zob9eGh}%SAE+zF;wD~_s%GZr-s$N`QHogw_?zz#+;B5iF|ZjK#F&1 zI#rr|#31tUQKCpm6A4<3Sl(X$oqR7MqM(MeB>LQENSY$Q1rzox-^oqX32@M78 z(}ZWRkOR%_kfo&v<*A{?c#^Q>zlV>Mr-G8Pn5+;s1Yi_6eU{*=B>Gi=Es-tqvwex&Jjda~xzibR zJ3K9E6-F_b;SjecP`}Qnme<$c13#0YHlE*}#uz$qu1A3N@ZrPcgQ%!fa%6`;cz|1c zVq_KdigT(Cjq%_?b}4f*_A`K)+%vyBe_L0F4E ziffj9uf8te&bWDVPaV^{2+zGekQN??=sECPb!5~C^7>LPF3N#$7k1fds#Z4p8a=Bk zcNtHfTn=|CUGJ7PF!+O`K4Z)|Z8*^BoIbPT@?{H6Dj0;a=u+N2bNicdxOS^)QmL*( zH$djcIWxzUVmI|3*B6Ft5dATto2Y57JN^qtdIlCtKzbO{byMYR%$V;99h{#7Fms)y z`16Z-_s3|p;M~5%&Td$=8IsLA2+^27AXMBK)k(4BynfC2Dj$gyV4lXlKYL!Q2((dR zq=i25Yk7R<#6_{v+X~ZT7|^3wFo)@e!DFl-`IA{LKinrH;TlT6NU&tO^TgB~WSXcz zZ$kPAtK=lPc6N(JeiZB2RVKL>OSwf^-RIa`r-Y$ho6>`uC+^@R9IT({90BbSMztK2 zg55>U&$uqHjR-whB<}_Ct1t{UR$9uS@_~U_1V}xU5OF3aC;j}@dmOI8QiXUv4gvM( z{q&zgBPTFz0kRp^CnyrJ=5WOf<$w=NICN`<5PfJ+w+^Osk^X#fdc1H94+|6bgM$*~q2__Hu}Y)~v(#mZtx z-{PT6tJrp+ye?rS_GktMzLB=(kTUOkU4NYgwDIPCkVVcl(s(e1UirAZrDYXh1B$Z2 zmWgL{JYIKFvksMkmNnxM8F|9Hr45krv;SckEqkP37@iCUhi+h9yqGxcQoc%R>3>TMlHuiOPh571haV2K zAOT5!ZbzPf4_`ZM8=^o5BId>3+jNSP;|Aafsf%AqIC8KC_)i?j+sa{=OF>v~A<}zb zZzze_7B4=Q6MiotuJ#CZ@)&gs<+C>T;bf6|YVe^L5E!el^bciEZ#1j|7NZ<10_o#h zWsdDcX2pXY5-z*A#n{)bW#6(z1mxj$*dmQ@WqkJR$mc1rV-Ex5Q&Ll7>IhgN(zvMj zQ@z9vZX%)q@U>k+;;n5v3nxFY1zt)|+nP_=*HiU&xJ;+7@IPFPl>1L+CNQTj-_~Yy z;_(H7z>M6EX;Or^0=XXR*N~`BPqt|wP!f|!6szEM2KQgpRE#a4)g7l!vij(83qi<{ zEHYl}bsu_;N;`%O{9s}a3IZu{ejoi|WstLYj}x<%Rq(S5JZtx9z~yyIj!iq++yHr( zY~wMIdq7L5-^M2Ke6f8hyLmiME(?=gWI%|y486uxkFj0_JeVC|7<;iuZ z9~u+{hx{4=pPrux+)fI{aXWi^X$;4m`)5IZiboW#c_m&`IXslNZ~mF=Kv&oB>+Xe% zM#`J@mBccP`1pX)1o8eO0NS9o64Lg{TS9G?#K#xi4mQyL1LPk>&WHWE^wP{%>3-?( zZ0PWelQ5wE)};0mUXp2r&r)JS4C&yjL08{62^iYp3mk#sGBZcLu$ec1X4x|vy>sv7 z1tqmip=$cj(()9H3>4x??kA~KaK%euqC;n)PoMXo==xdCca>TDj$WG_b}w#f+F2Y; z?4qCvIkX^460HrA*>>4E^=BI=m8MhP!0jG*5px>TW1+Y!Ha9>CU-(ym&{da(`HB)6 zBm}=Y87CuQlumGGY_$U~tOME=^D%|n|_{&L0z|UWSf)~VtMs+K9t&9HN#|*`y z3X|reUM2`nB#XdCgT>>;i`~Ujqi0Hdmg*ZAm?qyr0AId(wI8Hmk$V)EuiNTpaJF$X_ z2Y!8&7==Q%ZcAd#L)7A)_?l^`G}NfrKwlm3yc26gKX~LBdQQP5hQPLC#N)$ zP%)zul~aAV(;q(;GLyT-RNp0<=r?gsy3nH$!Y2e2SU*#4|07Vgce#Rsk+$|lhV$8m z+y|H(McAL}1Ut}_*@>X&up4Mlh%~6|!XIZKxI#&|95C?I=bljIpHmTFSBQ7k2eJ#w#= z(oqkkdv1xq-oyJ-FYkE&{{8L~*Zx*E2zLezV6Tvh-=y~pcpnt|y?!b{NUzgqMEQUP zo3JQ2psLD&ehba#Qdnw(g8_>?-#M%eaW!!k;^*X)=3lL)eQvRi%jrkwZg|pF*461V zMoc<2PoWsA1CgKjg&z@cy)Whp645d;|3w9=8h**I$0BV1D#!jCiE5p-f`pHjZQ1w* zP&Sf_=V23rwTi8w|CkxwQt*uPeB)&K{)GlE7HtO|8fBsm}|kn;_WwzHXynf&>9O% zOT8wC6_k{KfuaY%EWU&d%~amp+^ID>hQT-Qrq=GKh>D6qPRT&ZmxgI5XB6>DDH{$a zH$3LNxx^}Lm*(y8@RejObYbDT<5PdLqy2xG|tz7@s+#fU(1++||GDR36o! z3A0bCs%<%U-p^lGCE@0h6h<9pcA%Ozyt^)(_jA7_`NQ*iO3KvThEJa!;18%rZh>R@ zla$Rh=BB2lxKkJH?ZKqnZy_z=E{iU!>y7QuqyGE=v7&hXh+A3~ujDszDnQkw2y0f! z(Kb{cU^cKGXr%EU4rmIBNUP0G4QbE`lbz)Swea4FR#>(EdG&2<4Ar>1U& z;shWwv75%SL3Gfct$y8{$b36hP2R)hRpqSOffvxy`hc8AW+kL=P1O}kQdu?-qg*&Q zF~Qq*W^ou@fZk74N_0PksAEpO78DeOI(T?!-^n3bL3XmaW%i?8Do;C21gKuUm z5~!%Y?R}#c#&0;_VadPq#%*4c8fxn+xbnFsGN`5N-Ufve(;`OWpZa3KTZ{8u*`>^q zL0P$poc`!I|3TK@V|I>?LO>?a@xtprs{a#`JdzW3=LQlu01Qa`W{ki`E>H-I28BBq z6vvhWvyA|BC;9?CT?ih&h=GiHeGH zu&}VeDzF@HbM|o3_S@q%n_`l~S2C%omD`-Y79607y8JVxWc+uYmOXy(& zZ%(X%hWtBL@-Y^EHYyI*Ev`%_gVUuot$! ziqW?QRUkyvv#-&lQA9$zq4W(>-}-gyI)d8+(RYGI3rw6+*m7JYTr%@wJX(3e2tt#7 zZ#Hsy#zt&6KOI3JB;1dk2G_zM54C zR)Bi@+cp>1Z_|?hY{b)QJ+gq|y&ULIb!a;f+c(V z4eEyk=AFUu2Nue5RHkC2p#FC>ZrlIJ1y8d7omjL9p%7EO9S~p+g*G&%S~Q(4+=^HF z!0|Fa7P_VFAdQx|7aX5+=gvV%W($E5wx1J03@Il7=@I8qm(fN&D3Se^ZBmYT|7hM) z1^X@MZgEC)D;7a~Ge3N$S{Hmp|m7@>*;K^< zt9?78!uO1`DdHL`kJ$HNP%dsh=8?2{W^ZZ~X>{QC15p0=>v5nd#2=mE?&bh*%n-Sm zfFE>?T|g=N2+{9jo19?D!$z21;NaCUC1UL|=C)DjEPl*Swih;3RQO^zB%9L;hz0m? zDO$qcqoZo$ylVfpN;cpZ-R7#nWH%(i-~7f~R{z5an4_0Jl-Wic3*Gu(K`#&is~2!- zFF|69Q$;kP@B?MA_dKtx>^tX%ElRUK4P~7val%vc1p!#_0~&-92B>`4g+Rc;kjxG| z(5_v(Y=3`Iq=;~Ph@H^!)qkCH+{99tVAS}}z^`2>*J%Lez#=9l>~gb@E{)QxX>-6V zF520h0jUJ^r+vf2J)g2u^J@y`A1CNZw;4sF^IOTBnxQjW9 zsF>ISf2N=?D<=o5ns#8H9x2aIoq#{tWmnMr|0JJZY7R&K-2c^r8_;(=PRJ-oV=@hke#hP&eMtJT-#ZCz`}-iQQDV>u zV+H1Y%%@>oM;^2nFfTr6UHkauPqX)aB+4#U7l___@eAYP#f!;}z^I&~nS4Wjh_q1Y zQ^YEZ-dP);i>tlJS+$=Ly$|Yksn!Q^FjtBLqOp1}bAP{xw>JPGMcpVW9Gk@9T#F$86`XgpF5lH04!RtGlkmg(O$%Rl-@@>frM#pB!07`CETMss z?uTqEUW{zs2V}W4U0OcBKgV_2kuW1+5^x1nf0gzWnh5ZDGAW;$eyQuZ1jw{Fh|rXJ1pHYH)W&qZJvJx# znb->j+zY=~WA+%m9j2guuD0M_oy0~D5<76(z$Cnh<~nH=H5%)UWanq>h+-7P0>X-Q zdvUMqF={Ss5J76e078G~jpYm1T7aA21_Jx=cKCOmC)!5rqcBDTh(W@S;3zdEB@^g* zp*PILujy{%h1DPCO2qsMGIm8zO-|#BRz6A^7FqhH<2>+`-VFa$ObN`Now2k89%3a7 z`9l2RqBs5;FL%z2Jru73ts?=Y5!M;-z;OXoW~M@!c8}YOB6i1{e2_R{oOk}CB;s7~ zKTA~dcK)e{N}NkRehdfGh6!ncRQ27fMQ zj`spHjS=?)V^^%Q?!pIxs^pv3s(t&T65TNoguVJPV6pzjt)R2=vai7fQ>@ zMgbFr+3(R5tppA3Zz)~nYLEWKJ=>2OqmQWpQ_2A(9D)&G+ErLvJDB1;w^wZ*XyqeZ z#GjwC7kNM@p$%rb_=#M`1Etq&V?uq8D}JzFY*~H1a$K4y^Dq$XlZm_5-n; z(zmR-X&P596?Z;9K^4)1hGEYcW+F}kF|;7-KL~%xP347&jUrA{aZODC5*iGxr(Zi~ z8;TKo;=#6boVfkGNp!fFLTJ(bYc zUHj}uEq7fyq!6%{!j8V;5#*2IZqa`sfZzGfSKWFGz&dR^yGEXsSh(2b-q6GBTMW!i zeE?~|GB$~b^m&aR=TG^-eIq_6wpBS;~b#PEZD(md&3A-@x-zmtEg?+GRU*j6u zUb+M~6HgeEP>d~;H9qx~)})_!xdIbe&{UqLhY;&xupsG-P3YX*2FnC;M^$;ZHKm)A zDX{aHOYacf`fegSA!OBsSitH@LP4M)@dt$^3qc}~u^4g>3|0Et_E`lF&vw3?V&BFu z*EcYrj;imLzkl^5jFPHM$X-wGZI4arg(S9n3Mv4Pu)XM+@9Hp)%I6*?tY(vuUq)f> zaOz(a51)m8Vg8n&LnY856nWqWaiRlBI`!<4^>)_L8^P9t7p=X@ojY?1s5*roK1{s0 z&<|cBhTGTBdYR=uCc->Wq$z&>Ji3n?>SE}mEg5g!s!dtGakEv}9v-l%Tw9@_x`X^? zHWm5rFT_Zs|AiHyz259cDu)}wH7FJ^fr;ujtX@B;y}?!_e)`JjmI>>J72ouQjh;&^ za-R(bWDbk9Dpa=7ALmdzq9!8d?c7^+MHRB~kvQS{1@0bQ*mi{k#|s~xaXzzQfvn|q zu{Pgst=l;=Gozs)4|eR>C}g>E-(?9-e(4x+QC7~Wmi!pLoYVuHvfFmkKt4hJbLDQ! z=lP7%9*bo&!0a>I3%Cv%a#SYuKNvd?F7jy#7|u-Z9gRwr zkmMUXS?_h9fqBFffE~yxt7`o>Iyg9(qTE8^gXbq4F&GmhV%1=V&MAl_F|sCWRBF{; z4AiqcHqz{AP*SAsAZupuSW*`Zxz!$uV3)n5$+eJJ1wk~JPEJlxtDoA%uA65N;N&~@ z`*(S#@{I{wCT8aE_G|(XX;oPZ$LaEkvg@-eG^O+v7b9cH_U%^NsHqb4byhl^gM zS@+FGt*h1f(nXL5eDj!&oE%@ZzB6vDk(1CAF z?3vJjyG->aEi8L=nUF|QS^nikTztF%{27sG$ofW908p05{Wvm7cfUNzL`(a*tiGwj z=45RSMHp<(&@U2SlrAx>DrJs;ND{i*JCkCdi5s5mWe z*`9DLfUa$aB{!WqtAsKDOJ%aGTOXjRFflb%1aJX2BvKCHAH=>tD!%Pf8xq6E0(Ute z+&E*G;INft_)B}7CsQIu?S=FnJ@0M4KjhzVr@tOrE}}hN9P7^F=>~5(BF@Dr&8wT{ zQS8Jtt`ra%G?@E_qfm={!L>pE2oF1#zFf>qq3>l}rzh^U!%ByJ#f|szDCfwK8!<#_ z+%F(t3ABcA2EGk$Kx=MMRk-0ECvTuBxsJaoa9hiRw>EDbT^Qt$>wLMLU?{}99a)V6 zcGIk(&tIV^Mr6n$*auO)`mvUau$GqAbAWhoo#+HDiQwfJTVl-92^{cfMKOF1oqgo z;_AZ=#|MSz+zenXG*nwr^Z7Hc*rq!dW{lWn>E!WPCuaCt!D!?K5 zc1idPsY%=SJ=(O6qMLq=>}3F<8Y%^;Mu9-rsMW2af2sqn_1!3Jo|JYKF{?2D>! zT%?06iOhS7-DZ9tL7O&u6L4-~Vj>}(rt4NBi=)jH6cJH&H-aDo5i=+xWUOv%_&C3I zPI8FZChd#DoTftwJsGX)I|~O6@mCg`jPr;Y^7#4t_coLVqbJfpt1UV{fR!aeVq(8u zY*0fRMj#V1?s#t@9kK695E`VQ`}Y|=LU~;#Hvwd~|3%6GKr<_!J-hU9NtVckn&<(WSh%|JE_-v$MTAO;Mg=ymd$CWbCj# zP?%`(q2VSfz2j;ztIj>Z>=~+-s4K1*qd_t80N3ox*RPKR1ksCetYHt`wl(W~O3>XH zWZ?Et>j&H6szXc@#(r%M-^&Zq)eF1qEKB&nu7IT#`lGR`1j^qh_E|z=#qm}wenXEh ziH$RGR#!uVcPV${Z%++w37PFNcfI7p1GG}KISfN@R(J(@j?kTZKfcK(=tFfukK1mAM}$+E*!5VDdQ2^~BG6k}n#m&e7U zK-Yt|$Zgg^1m=$0Ttjc&VuQd5=J*d|6|^myR23>i40G*06I41eoFfP&(8m48r-lDM zexB7?nYDpp0BAhogz>_L@rk9Nbij{@tT(;oq_J|Vu=a~%0>s5 z1nljMW|ff2DTHnp1V*e0y@jX%a!ke!QKr_z8pH}0O=nHsW10v)9uxTV`Y)CR1#w42 z=)8-(4hs@lr~Bhi$>5I|l^h9xS%;Wm`s=E2jkK_ShFP?W@VTqFT2|uRg@^$GKf9tP z7J1k7UTWKdMyL#bFLqrSpFS;*7mWpoby6}9okK{Z>gyxx2Y}n?Bx`s=4GFSDXn#He z3X`H{lruoN{5$=os{{lD0N36Epo~?Joj_rBpU}FaeC${vi0$xPvr<`LLVaBaoz|05 z_%is?XeDpnJh5sPhbsZ0Tz>!^3cs+rcc^6V#)6eU3w{p<56GYnj1x+HJ$q;*UXj{i zzcJ!Y1HDpj)KmCTmY3f`&t_s{6OfW}Zp>jlVV)ArCCZ2nAV)QMWwl)2-!X020QCf% zJ}uhw_n$m@a-~~4hWvOJF!@uc3X7Gr;1V@TE^Rx>TMG{5Jrs>^qmR=SVqW?JS>{;i z?{~z_3$l=Spt~~wyUF$?fCq5IAma}N(yN`r82!F(Y6?LDTMl!X&CxFM(6%Ct5OWuF zWxWHhpkAN=_$E7-GqO*86oVcguQC&@KN%gP3?ak{P?~n1Fua3)G69Gi5Z!{A@8dpc z?Ihm$nsyD-8xPGz|g=jNJTK*_vMQYZwqnHj%#Ul?(Q9`>yyvZ_f21knpSPK z>)$!AZ8k-wA!yY_*DA(+Kb!}gBhC0wG=yI`LXc;yf4+XE; z_Y$uQ^#vgt!y%o=aTik`3IMM)3x&cVA*^$`B!;d7t;I4fuDdC!IgY(3me}`*{=T*- zz|HN#!>}-P_mAf1A$Ecf6!CE@OL*^O?WB6w^VbC8*01 zz=VAbM&krlMdhZXdZXxiHfU@vbGsX8!ENI*?JmT4J@m&|>FsSoLSP!3LmdDTag7dw zv?J^U1zbloy&=$xE~~2YLz-RD7s};DP8YB=ZA58~?&*ZPTnCYF{Der!5KU{SIX#qlQ}bpJac$0gYS<*pr66DT=}dJJIzW9oYZ z^J*EzkBSGbL%|yP;YPhv+t0qeYt&kHyC2xV^OrBBP`ntOh;HuITxg=sZe&PY-%M8R z;KUKPu`HqEWDtPio!8O_mrGZ!T&W4D+?RJ-RHqBf7QpCQ+1CsC(n>rrSs3?nAiom7 z>glT{V>gT^j6rV)(7Hdn4aBKo(@(!J1Gqd~EwkI6b%m(LmXoXVCxtlu57QX~2m1`c zaLugG&s4O1CO2bb%&Pbx(1V(_@<|@zli!-XD^Mn(qK%Q0gD(gWZfpiPqIv%sdk&e& zutRKbV0~2|oj76)#9+1BEwD~83i+}86z~oY09Ac8M#fyCIY?ph>}&EU-zgoDMOCP8p6Pp9|bixgU#vZ;XSG5_L!Xsdj4P5K=}R zhJxft5T2u^uU)Q~d5Syd%@Tf%b&NpLRg!#|@i&t*x z6+z=lku<$2KQ*m^-OwWrmp(m4C5(Ax309uD%LX4~+y0je0E-^l^!lpC@vqHqMg z2j-v;)1P&9bxooc$Num)pFgigkpj`mN6^r~A|b6jkf`m%HEY(H>Sk1c{q(5LykXFV z<6Hi_Msa3yMos*}7nle*Kech_EVhAw_Pi7a2KIgOmo7=dhzGSn7hLZI7ajKbSy3)t z4q{6OUK}ol9dJS{YuOD58_s_nh`>`Vba)$D?~V_vXO=G1uXCeZaOlEYLJ~+??y&fQ?meq3IzM{;~7H;ZmIsZL+e?#orA{ zL|LSarVM5{T2a%>6x;FmbQAFUctR~81K()bHNdA~bd8fVFw8OF1$_$hU`f>owBxRk zKfy}b2ZCxhz5!_yG1(ARfGy_bL@OMSn}_3LZQAp}gAD*OA(y=b=sIev@Xm-hVFWp$ z`rYg5>jYoClEn%TklL|}J0k;D?DD5if6?yZF{u18{HK7O+n_z<#kDORDB2Jhog@sA z$qiJl0J2QLjm^SlKkbkecTHLqTN8KW+Toj;;`~WtTM(9AZ&CjT?j&{4(9Ig3ySW%Z z+2AKD2{Vo~LncB+vyT)H!Q%}BuKT)$`KW;KN$dbY&Zvr9#Ii&r%bN3^P(r)2s;X*K zQ{(b&cW^kL!dnU>`oMU)A-w(g_ZH8u3=2UTRI~jx?{)Ee1Bj8~6^P3OJ{!u83?>u^ zh}!`mP2!kIa)`>RAlztjCmhYteu3@1I@D_0x5nVEBEJZ;pCv=33T#nB?Ro=5zq`Pn zF2Y5O7(>EY*=_1){9flD%$o%ScJ0R&+kw2{#h~z1ydR?5L)fPfhjyVMr*QByg0@}i zyCrXYE%d?|4hUg>-DEz~+jAOg3DD4gt?ZD8v(_M*j~zVT9GXhXb#Ux~uh~?F4?#mA z1^oI#Kr;*Bk%IyT8Moql0k|H~kvJ^uD{pB@n|pw5$+(ehtgJC01mF($yvUe5-avh9 z6pkQH_-d-A;62Dde1vkUFZ|aG_JESm3&1TCQw-7`rW`})fsYnOrsCQLNSMIX0o#3U z_2FWAl>Db?Wc@9?5-tRJPrwVp9-8GqM+m746g%R;={nhkOR_kT-Uad^IFk9G{5G|+ zJcB=Lxsa+cEW4&Slimc}^q@R_VIX4ne7(E~1|11Zfvnsz=uo+FN6gPugN z@+$ZbD2jzDBfmKq41)Uc_S*?oO$i9rv_A;`DL&RS0Kq+Y)w>c2ayKw4#NV?peVX!& zEn_(*FbY{atgqzpekNcF6a8Tha}elVO$mO>$NxHLQ^$`*nwrMuNz2wo<$Hg{TSz+9 zRol>TA365)*|YZrnOnO6;SHNw=En(>={>2O6mP>tiU&%R6z%$f{TR@ofHdQmUXdY0 zrNS+a4_TAY{h=m34(qUY0NoIKoI08H-(uUIGQt+zbT^{E#c*Ti`45Ho^T}u!MOS?@ z8tTnpo}v?<-3?qD{ttvi)90-QNgrVt{n_4Ma2Kq(4y2T1@TbxRuhi2jghH+?$ar%VE~oQixg9EbCadW9=}g*T_R($U(% z^39NqPVI-F`5ruXzP}I%%tn*B!jbjkGjt(9P)SvGcXk)r2N+&p+p93@6E8lKP7%z2 zP+;jiHd=|bI*5nmFvTAH{rifU?q%S$fFd`5Jc3fpOn>b`Cpba;_@Vwl`WDI!FbR&L zPa}k!sHiC1;6Z%jZj0+%G%v%MBiY^U!uj(aBi*`A@5;+l?rvCM&t1+I?mH9x6M+Ny z@xJJK!9$)~X#;X71PL`6=40p6SAKeGu1@$&*e8wqMV7d^tJ@TCw!1Cj+4}lZw!~HG zjhk0}>FzGWj3fGk8Lkz0UPL=+5CX3Vl(hq&TRYBRB1!ygtgSn`S={G2s~=h&Rc+9M z$ODN}9_9E@!nWVgJ};Tgx*RBjQiB5Cal+jVOSiFKndMoGCLXP9p$DDU8eguAGzjiq zF9xxU{b_b~0vcAYHHSkuqE9H|YhOU6P6|>~6%?c1@ zBlG*>hK%RVAzg~(=WF1O=g-d_hvIOefe(S4`1}#k>84HS{57c5dAO*^qYA$cg;CUi z6TmmnivKzPQLW8YFV@aHSY57B(v%&wWi&>c|2Petl;#hAv_SFyy&l|c(Vtv5xH2;1 zW=d0BK0&>5p46;3h%iMJQ2*?sMD|Ke71dq(#*JL$`l=3IDQ|>aGqcc8uiky>Yxwnq zJ($8^#Wcg)eLLjD#5l3Ym1A#Mw=UqNwc=uw4M%97U&ModYtgdP)zS?N8;A!{iY^2M z?tE;%6_s(judsOc*UM2yG{;Lg>M?QSJ-Zrl!rtEAb2N>*6)wI8tsi6RWesgAuj@ z2+3jf>Z&6G=M1vh^Cu4{C@tq4?>~pqmK{b(aZs^c=~r2JIFiqlHx@%*bg2k251=vE z(xnG+f1?bYfD3E0Tphb{pWBWE1pqB}`}Em+wTD5-SD7`_4v@Qg_398tx?i8SrXjre z;R60{)C2m?zQgKu#BM_hf(5)h&*q=aVh2|2fC7r!k#%7V6uxhJvGm4`kJfb|KFlVn zZ}WxU^HZ25Vk6ajRW7f%2e4GavjtCGefAk(2sDR~J;X#;#5m_+%?4--#1;HXA43dI zDH$RW$?c^_6)D>MpFd}vZ%fN`&Z$6Lfu`{3B#2JKpF;s{=+&c;ShSas#3diqKR;X; zml?pG)=S3=va=)Fv-f92s912b`BW(2N_0krh`d9qi}CWejAlM9d#Xx05ljz;KC=*u z4H7uu-v0Qpp)|k#OWg$f-jP!RsOSav?b~;1YT3fi#sBf8C;8FmyzXq#CVT0$_j{kkOt?T{pfG3$nzHLyW|_jO(O@ZP$*A*Z=VspC*aI^sXT5^DSB-lP|XCt_AYq5DzM5PlY|UG9?g zH~iw`@o##!5k9WS>U3k}@y#=z)ACY;A_lpex!vmbH*HlR4(yAe?4m|huQi?(HaybpdN9Y(u=PZ;>BN%;(^+F`@ z;CCs4&WG%91wW&SFpubjg)hDs1(O*iw+_@V>yjhh_)L<=uFr*MO_{DvVY|nM4HvvG zT+)~HTUGe>y+Mdyms_{>ZCkd*nvZR69c%6pLDzY~F@LZixiBcfbS|e?$~65L`w040&!Zf{wG*34X#(zgsWU6i3X}*Ym{zWy_ZB_4m)c z(qgSaJjVkj=|YzK7=cO?@%qx?NG^nZztm^zh#JG>D!(45K24Z7apdUHLS4^J%~^Qq z?5cqW2&L!_oXN0vuJ^cRt9UzbkO;vWtDcS%+GFZ|VNGn6ka}{x!Jg};@~n_Q?Xb~m z&l*O*fmVF--X^S#Z=mG=>hR4Dpp15o=zd}vfh1L)-5v9B;i=@O!-?kJROXvCb<8?Gm5!V%9r&lC=!I7=~?G3rfCA2 z0kuB*)otBo^8~BjBy5T1D_1JBlnQClbYO!ly?nek@dX0T?0J%-MujxiX*>w;ym|9y z%NPJrv7ER5DO`{}M=Y==g4wI|WdbK&>m!h}Bc(WU<2?lhCK8Onkh(bnpDfl+&0EXw zJ&G8U7vKNUB&PxiUoH_JT)%7-v8CRDW4R5hv|rF0FHG;L4~Dpl((pUoMBz;zABc+# zAXhSQZQr4T3rtk6SHUB?^;7ROaqW)PC71rxPy6|C!>0qcvkxv`6=(l@%`7AJ`^eQ` zbf_RvUo&si7a#>t6yxy7n*jM-_Cr;T%)eAozqHp|aJXxbXgEYpx)lity^Wk$7!xouhOUA4_x&rL-xiN<1GK)R*MpMVhNg}!5?Ge z(Ljj84~vhjMmGaM|KZD*^Z629MPNM_lap5v#WmNxxP5zvu}=L?dK^cqJlW-#;e+l~ zbzJbX5@N1UVzuwsI&XLP3C^*p+uI4; z4#K!TBM3_>ved*IY?B1EybH~TIu1a)H9Wfa&{mdzX7{DfRM5~MTb=#$-rg@N zN`XEDc|@DfQ*Xm~wgtqY5*45y6ckJwR;DjA*zQqlbTM`Q?ML&$uD>@_jcKU4Go#zB zTUI-Eyghs3((sWnC)U#?z=^ot+R|tozWKy5RMKp^YPF|VwG8$2@OXmP1v^s?en^E> z9Kh@fFl#zTpj`|#M1{a^uXO!RwIbwWmoIC4`__5!lChhrBQwmfnBTxU9f0k6&bo@K zYVHvoo6Ri6*~So^2qU|B^uGy9m`DjUk~Yfe_4RtSE$Ptaiq>CWwQgPDl`E6LcqDtq z_o$!W!N?#I)`jr-2WrO8ew*#?Vb*Pd;DKxF(kZ0x8POJzPFioEc5t!{kVnF zszv((G*(nSrPl21-D1g{_;bZLB_;Rj8yWbw4_LjrO6&g5*w*H1AGBB0xXDKLpm>x& zDYWCf_CwK|1NQGf%6bg}u}xSUKTxX~Ug4VM!XqG04~`Om4)`n1U<27)al8A>PU-_#xdAc% zZqAsh!pU-`{TU85MQUDB_rouT{o2sbPkh_W}+aUO5XUedn%S%Rr@Y zm#b)89`^`O4)zvjCo8ccmwM~tXwOAwY2KkwOv%!G_4YHl1t2$n>jmR?U%u=Ibf|cQ zfxn`m;peKb&@qQ}YFini!t5k_i#3)EoE$id1p_o~%B%zAG- z|2BHccke+?rrqL?NPf6qQ+CZZ;ajor1haI(H|!PmL?*Jj(Tf$OhN+b}`NCbA`^yVODzbt8FoH=L39VfCeF|E;{<*9+i_0K&d? z33U3fxVNK5jY4$%%PsoUseZ_58R3PMK2BKX!2xT#Z`qzEP>i7^m>4}|%r5pp zp$Aj^vf<8L{Wfz(O}p$K>(kN7remYeay@mU$;0|7v4S)h5asJR=2CDmY{$gtXG^G0LPl)Xc&Y+%nXs@#~ee z+)m6T$AL%ZY?yzpxa|fEeK?3AKbN1l4Y`E|$Mo;60Neb*IJ&2~7OE|Q)-6_5p%i>j z;{BiOy&jWGTo)g3dO2H&Almy<_=tTG@Enh7d!}Z1liq|#k70d7zT6a0F1?1q;8;$8 zd}XDOA6O>5X~qKCW_I26lK>P$NXQ_%kHgXTk||Srj-NRGQF*Du(!{m7y5{q){ywHM zDYu_XzWUE4p*>CHKPBA`Z&cKMW11G+^>w@^Qm@avXNtcBwW}!m;M`{Rz6Lb zi)q}dRRiP(DNM1Ve0Fbb{#AoehE|`gLy!J`5!bK&Yg9h|-!v~g!ckN!3+x|A(0;V5 zn;Y%Vcu|``$r+;Ec_n6405EUgzZcs}!~hKNo+O`m8K*E&q%zM5EL}s=fQ~T!`;$Y-DS&di!J@DRUw!-o#P zzQonM-Oem}T4BuR{Mq#AynqLF;-p+ZiuZOVV@|2R!BE<7_ijckvl*46XU|wJ-P9g!NZ3Q^KbJzQzjvF?%us}9UR(rlYg$#!gw24trzth z4W0q}xwgM55o3O;|74}9;E7^l5cndT!>e=d*AFFAW|pjLaq0i{&{lFIwN`ieU5}&9 zA3Ru|*CzzK%f{NDKQW&e^``MZ3Tqi-!)_EQ$QMjo>)&kz9AlWii-OYxe5QG8$BrH8 zw5GGf1F5>$t0aarc$vtW{n0NQJG;4;zN{vr`7CY|caED&^^nC(m~jXXf{JDs03`n) zmY$wEbxN?LysvF3%Cd8HQ5`eVdpl2zi&LLBH+swj?Gb*5GOgZ@ZP#wa zlP3kvmjy^H{wG9Vls0N?lN&Yvc)m2@k%Le`orTI&H6)+q)pR3;bcAcJJZIU5z_+Lk zVw4JDZwe<6(e{t<9>nG~@|7T?w`ntK)zhvoUnz{91;8(rlcUH~yC*m&8ZHH!M(@Y0 zqnDABTl&oQKXl~ISmOn5Cr-&rb?<%;E4usharAIKa->ckf|qVDcBEAOlg$((|z%&(M`3ByFwIM4h|`dh%M?umkCiP+oml;#T*UC zAJZ=fM@UAN10t)hdwCT7HRE=xghj23c^?RR{@j^&wq~fRstonnx0ieEs}|w9Fma9V z_IA_EqX^C-8w*hSO=BN4FDp!Bg+~lW+T>XjbBf@Ss2-;-$kx`$hXpI|bQdOdIz|b6^fcR&pPavRE&vv((cc1+kyZ1Hpk~y>q+ZP>RApz z0TI3n&?vn|P{n3>qLD-P0R_v@2-?v5rax)v@;$3>bZk1ZEdDQ8gT^^$`X%EhN6(~w2rj=7r6EJybNxG!PVR(T6i3beW~*|uqB(t zY!A4OBG4Pg#H?x8p>6qPD;Zxl9!Vt#xq$}&D1r1ibcu`76=li$x&*goUtxpr^AUEk;>GwaZWluPJ%N6d7eMp*w z8z2npHc)0@3T%WMMtwW?zD`CB*J5gC%j-3FcKY?bl>HxKAi<~CWHy~~ulCW@>Ioa( zW-8^8Bk?MCm}p*2PX{aOpSu3deA=tYXC4>yz0g5_ z`#Qb$6XYj&PX69+@L&XV581l&#Btrn-NNohxSv~2U=NI1{ zfVK;zUf6w}j-yRCdZfA0_WSaX6?d24?~cIih8EjZsA=ZJ2qzj6qyB}97svd~jQ{7k zSgR){U}C~X3-(xqR7I)ZdVSx@P3Sy1z0knN()uU3h@$o}` zR|OEfSash2E`sb71Ftm-*WbQfPTS&oNhcDwy4|OmT3qoq7Vs7|yo#Cm((P&fJL2Ns zOJ8kwZT4631WXxm1F1-}K^=~@5v@_anZxqsdJtg*lDF9tzO-0`Y#CbL(4Y!%kW1N|R*K^JI?PI=}h?Doj zpQyuh$rL#0c6S5*`T5n2!+=#9nkV`X_=|(BVI^x%76OUdqv-sSzBVWK#>+_Um+0R1 z;ozsD)1=t5<$K#YxT)Aloxx$Hn!bEUXehkZnSrH0fBhaoC!A0u&QK8gPO-=0s zefE8<4m4IT|K&8=qC2({tQ)Bk6c>E7DDNXzD;Yc_!HK+JyZhfxM=FQ!Y;R!T-+IW` z*0v)csj>|2UV-wuk4V2_^c7M4%1&;Abf=Cj9seAR>@O7Q{AwVa8dx!D-wOFVLH}ry zj>dgK)w>J*I~^3b`AJDI(TpX@!h)xE7h)BYxtka{;6Qy-*SXx?-9li zCV+A=OgIp&Crz`pV_R#U29VcCqobLm%dO|UJVPbMZBOx4?$Q3J_W6ObvNNEG)r61x zTwd-M7G@c0kEnlk;Kbv?hqmQr?-6#PanSZzReP zTV8akWGX0tX|jfPo%{d7O{WN>{xQI5#J1jsN*o0JILPETn|}`^=)d!6ZIn+qbjVVw zYe#2^8@{WB_?Wlykt=#DH&@ZZ%hJk9mC>S3;};fh!de*upNy!byJYQ++NZ*lE>I+w zT-5-7{}r5Qh_gd2Hh!Fe@a$QJ*HljAo&4&48#i9?xO_WOTd}z@D_{4l^7?`dFHb>3 zVa=Uu(Co4x_SCYosh*dliM@91rmAsT@Fy}dp>t!&^>+iU2gD%e_jzQ9qmwtT2yD#H zt9_pX_0WJa5cF1>7?_*$gnTWR0&2oM z4NXnW>6UBOoG;}YEPncQkz^4L5@oS(u3IZdu7$9nc+wj~MaxiWHk5J*0b`3#EV=G} zQ7RT?r(|!3gQ3SugtEen%CPwH;{`X|f1Da1FQ3#wQZf!gpEK}V@uf?b9Dgqhx^sLg^nVVM&+0sws0{^XAbqF#{xre+ z^R6%ND+>Nc5d{~c=WM%v8#gRFLyrhf3BrzC_>{Be%u&4XY{oZBOUobl-@D-ODGZL9 z>nY84b?v{yFj}l0>DRyi=e%`qG6E>2NUe6zTr|I_C6(;^5(ZAn9hw3a9Ojba=oc65 zIx=p=EYBZwL3ZIz1Dkc$@+6Hjh>+U1Z*M}D72(0RO}hT!Hg$gYBgjz8-H% z3ACUCg{G*o_!|80ofxd66Tm#@%Y@>cai&wdRT=EFCl z?#MNdSw-%zf79AR3EDH>b3eg@8vpsas#jayoVlAdD0EZ1GuKj?M9-tS4g8STg>eUT zq3u9>eaGviZ&vKtlkH$lzXx9bZRN3FY-K>r@D>@y_<}!?lTbVoT)Ir%zfCOKrU%bs zAICFj5>&8va&kJ48g^BL`bN`A7J%vP^X3R1W`Nc*3H^LvNF>*pO0_*9SAcSz@Wx847} zIJl%@`j+MoyHOi}8?a%-1?*O-ksDUV4B7IxctBZ$cZ906Ye_s_0me*%pu=!gY}Eor z$M8wn*exGB4T{V$)SI+|7_{_NR!$l<@(8%I8i=^8fh~oL@%}onC8%*?lPyDfVTRb+ z_@*_vslH6TLj;<(g>WB?bW6Zl9M@%kdH=qqDAh*tFZCl|tPZVb+`f05b$DuK=eMh$ zOxoF&UhzZ3me)B4dLCW|;!8OwnH_G=kZdW4YVxb65Wc!LO)_b4TEY)jEKo9y5Ed%p zMplI?Y~Fmqx%Z{j9d~z+yR`a-?{!FJ45)SDLo==$&6eb`#F0=pYz1NdF6=;=!T(rNFx1)~#M(oBuH1 zgk!Or2_Iix$&s9@>7Ag6#l$32hm8tl6nsr0y609e9g0dg3qB~vLx`RNQ-lp0R=#`< zQ%o-XL)R}sQ)x!UnWAZcQhS7H7L{UG;h`EGZI@VOebajodwUU)3N@H;65_H5Q5~9O zqm8K3jth-3|L*KPzIJQYUhHFo0h|?_Q1$_fCZkQ~YYcyXgw~cfjAIJa3jb_uE&mYdgf96-= zXZd{9X70dZ_7kPPs4P4iq%-#O52Zrxbq%JAWusG@YHoFuzrc8A&JphbX&v9F=~0_j z`4trWa+{|yfWH1gr1n5Q758r0=#BngR&mieuG7yIKe@iuHAiRL?8BoM>>wey&=7q2 z`ZaE8T8&!APlz^J?-=c(PwH(_W-xcYjXX0w*lnn~k7~M(q#ktl@aSW53E8YC`Oa8w z=UkAlOPf>NGin;^M_VMyLFg14Uq~5_^kzUt|E(@te2=YTj+0~x56`2m<@OI2R zeBnLzQ|X^&)QESO>>R`M?x_O)V!`dd;K(r2kl&!->`^f5&VZ$(RTE-#QzQy!pZaJG zEPwogQOmfKvHL>9Gjs&4=dXAMF@i6FNR)1*BT3ndlrHl{s^O~cYBMH+Ux4dzXqD;0 z2%Lcl%ZA)Dm5CFduGi_;tJlv5-a#;o01?N)tP%kRUO&TAhi6wA$9#2CKV~%We59@q z@;o(khE`5Ky>ykgZq&Io`={?S=eYJvI*Xrf~TMHh@ChIGq&LE<$OY6vc{2eP7*BG7!#iwwx&u;%P z$LihlWk`;F%7 zXt*e3UAwBz`{83|TOErB-hKv!9RA@W z`&2}1Szc)tYi0iK${Rd1A3SJz(WCO=q&F*JkFxZoxAV)PUf*A%`2v=wiuYql4F3W2 zN2>Vi$$8zeGuD-r)e74kV84_mRiiourY5G6eLTIvrA~OK3Qj=@=TJyVXf*`|qNNE; z?GKsj)9V}QE$d&*oQF@BfPWkw4&V>}gZm{lys(vpubjfMAN9MQkGe3%s6W{x76vMO zXJNC#G2vAwbse~luyKOU0ad&a(h6R^P^H6Fw)XsbxvAM!woRIsPULWWUAde!{HztL zR_#4^ZgtF*_;^*y%GX;f29dW6R<0~Feeodg*h_>25R-N@$6Vp)c;v%1;h352k~0MJ zq`#Von#$Q#!4)HSK`7>tgaDEkmA|wNRE2*#Mj>_TYmZM(TcS9cz0V8-e2RID;iD(Ls&{ApW)T?;wP2PA>xyL zdP0R*mr6bkn)KQUi7P62pr!rt()R=7Hhn#2tvqgA0Qw+gvg3ez8F-9;nQ60t&qoDJ zVLlIO9MMKX@Lfp6J^J*y2b$eQbB==4OwtIC@5n3@q`~1>z{$M$E6K@B z2LE4wPuo+YrGS7&C@5^_+AQ+%<~XASQsJ5#m54Mf9Lssr(6mCMj3yQTneB6yy%oC& zg0Hkm+ zgI#nKd53z*c-e9KgYtg;`c1$;cU$_2nM@9zKt!T0Aoye=@w)HkHaA>bXRWm`k)L_| zt3$aZFG+pZIg2FKbuTB2P!K)uI4HbeR5HAc2G~lwe*8!f`ydo%w5h~EA4=`ew*91v zhI!31?eVE$IKu`Q=p=L270mA3o*G zt$Q6D@^?8G%X+u;-|oRD89rsH#oBvGu(;MC8VXxD~O-(XmST_{`6z)kO;%dQ+z ziE;dgLX)%j>bPazSOx!6NJ;$xII3P8pfNZV zOTO;M^YxF}?t>Uh?53tDS{a{od}M_AE=M?`YDHUL@&HsG=ea%RWxDw)*#itRbOn zgMYfFy+d2=Hm^3Ugjg)*`M9+hC_F`i;L?d3yfLQ@)8}qWH%zoGs10TL%HJ7oIhbG2Z?DZlRqn?Jt_jcL=nW zbAB5x$NL{+&_`Wm^UStP%={1pvP$7Yud}s6$H~}TmFw87enD`cbhAGtKZ5^tTDOAm zSLFTE9_?HoX;pIiST?{dWsiq{Bpy0!Q(J%C99CpL}P1aX4bv>``zFd6~lA|=nRiR zkkU~rg(x=@JA=rJhr+`jAcdUf`D$0kwAgb4Pv4~Wj#-W32%$%@^!1A3Lr+KK&+f|Y zZ~)d3tWltr^4M0Y1hIGkZ>-2G1Ghepg#{uNzUZ8J$FBWODxTcs8!vgeZ>*LUOn|Vj zsZ3;I2MiccndJ5B6Qqm4_ccP@H%L!-&d*=}GcDbxHDd}lsF+A;E?Z=qWss%&bicMXLtMd4SD21@)~##y2%G|CS;GB& z5i%23nzB5aaHQKFyOJrYBba5o;-T7{hLPXPmoGmt!{Udopar7T+K*tYynOS%>)~4R z^$EnMtLf>25ADqybmv?tJ(5j_s${ zx4qoGpjnD%{{RgB+<7$uJc|K z$qFZTDYXLP(rd(&!X5LZ>G!^VowhKohMIZ=&p&2!kAyGTCkWAW2~TKBKNYKrz>cj150zUYaC{J?`1Ua2X&)xAV4(?pm2*0^fTN`cvE;Sb!F#NXpaE{ z{7;;)*|k55=x2wmH1udXsk{@%m3O$*Y%9CMD@&npS>yFFXU_juFOz0?EhWV@u&OPl zSD_S1Ol86Ry75EB#Eh0z%*(oNEc-wGn#=Snx6Jm+jHr3}G|zB>Yh%*FP6{(J`a`*2 z-LCC3sq5`7wYxny)a%FHzHsLn!q!5^@Po&-(lV7}@ebknOy|TZ z;fD^{rHhY`4*+=VqHZr=-MVXV>*Z2|bAHRxGvCN(G|tcZr(>znT2VNH+(FfJeC<({ zP%%Y&3@ecsxh!qHi11MvKa(D`78n~k+wLBEXYAYsvSNZhVYwdvc%WkXbu0gdn_K>N zmP6kXd&P7gB*sPNYG?J1gAcSMRIxNk?Y#Y=5V{{qJfWiUKXo!bzU46{rxezeYKAGj zjFABT0q(`|1>UsR5@--&ED1aB`s>ZxX~E?%n}Aju93F0z6a4ml+i1fvX!={mP8i>P z;`&|lj>~TTW;Sb1u9iCtX|e2^!W^Jv7m-kmqs2Ni<&C+%ER-}iEz%v``G?|x65Gc^ z^LM+4$kzH)V_t-ML4v3t=wRIpY_&|JkJexK0<=1g=1o}HY4KvGbGZu?L(u()f$L0gDVqgGB3w?X24cWQgq1Qn2610V`PnpPc^i@> zr}b$6_rE)D%ZxMPpK=dUl5*T#QYF0FjCxzPPn~l`O_X$%^6Jp(_!|r zXTyJHNtf*Nx&QZR^L5wX4$>X`{{#9H1xUevbX5xNc zQIV{e;`Dp5V~Fhht?S>J7w`F?U^b$>d0XE$rqg=tbQ#Y68QS?DUp~%Dl<2wA?P0zI zy=)ewmN%1!Y+>YI)WNW~l;pd2?`Q>d-_+Juo=bwa8d!Qskd{e_+HdSbCh`6#loll} z%@Haz-fYcqD#x5=S??JdlO|EKYupu;?k|+bso;HAjf&HS=g`=`lcRZs_4}n=vaDOH+TuarFwi-%P7F-G( zxI0o#4^#VT-vxrB)0@Gsw|1PeSv~XCwE164^SAG49W&3k4vEkDgP@IaJ)= zYgFc~HZr~JeN{GYw7hv{?_Qby{jra)3JxB6FkESr!nEBx+pm?8Svh>T-nQ#-%Z%QC zP@6R?dx(NUz|0_-y+Ou`o4h#tFsm{jJ?ajC&2zJ}E}A-uu$_MNw^fhaBmcLLE{nho z`r6j2de^{q1AU{Ep9oZq>fz^un-D_*5{hDa{|b6SSt0a4OdQgz!g5!t3OXBQL_~Fs zVld9rl-V<>yP!BAXZ>h(|4#d3lR8eFx?w}?{Bw&Mo;_Q+!uixVVsg01tSyENzR5XmuBfF(*_Xa-w(Bjp9OSQv>x^J$LT4SD7r!dbEE-_%m z+%KU_7j_x~I^NQ;ebnKQI$s0xVS&3%LJrscT-N??6p907QWfqWZL_kENhqeLxbtx6 z{!5P55uaG8a`4!(c&T*`%%%E*5G$K3WAt#pwWUt?@+y!v(tosGxw)CJXM@iaj;0WL zWbDX*Co^p1mBvNQALR7x!jwge3>Po{WM>;SGhl!f1o48$kEhL?xqbVz4jvw*D_8EU z$&HoZ9)$!)4|{pd{E*dUB@s?bOJ`^1DHxa47+t!w(5&_8)AL~tux~#6eM4e9N8d-vPXw`oU=y%(e92KR@^X9Eqz4S7zb}XqpGH<-W4=q7CmO-q8JIWcayQyn9SGa-6@|x0`7^m*3_&n)Zq~4 zQPw+0Q^t*j9NJsI;$XY4M#f$ZBcvvR1CM1+UdoggiUG%&g z9;!;?4ymZld6dFf;@wNl$)0^4MHE)N@v+~zd(^>_K_OtP@Vw8^=5G4-GK}FkmAJ_R z&rzNHh8@buy~YbQvmLrzu@foCfB0;{2N~$o`f%QmK2Duax1$&@qbD4&Bw=*O9G3FH zZQ2=c?({pIl9Hq&d2QDG*|Veg1|c(-ReqEf8!YIe7Jc$cm;(XNz3GpNSZBb>584O8 z=6sd@B1~)R1Y6sZyleg(wQ0{V$jJ4p@$EPb$&2s8H*lb10`liIoa7m zXbZ3}A^ICbnI$d6`}DnZ_vS?vb?3vi&QE3-Vy>;eHr_8_-hf@ZDwiA?Ir4V>PyB(y zCr3Rbi+_7v{8Gkz=FHs;;2xiu+t*y8xS-&IUajoT_d^fmpf9}r`0>T_=Z2aMp&Dn5 zb^6J?7Avbe6-VrmV*mHmSfgbSfGK&apX7P(gQ=j(Y=ccyskX53x{Lm>C}t4qV&E~^ z*zp4V-~u@p)~Ffzo(zN1BygwRd-_n21W!xNY6Gu-BFncG+$^!EyzNsxoz&ssiY zQqD1%Xq5vU5HI*r6-7lyM^Ai1r9_xFZM^SJ*8;AWs8^f);K6CID3)E!UfXbdSLYt; zz534Q_1TZo){elwh@R?-A@|EXq zZEf!Pw;+-l!W;*D>t35YUzN<on3zpJPqvpFZz}5ITs5$^@Q8^1kcgQb z(UinrtE+}z41x zxZ(Tq0T(aM*<8Kr#|M_*9FZOb;-%@`G+9SS2Tr4%qvL%DWI6Os3lv>DE~cDlKW+5j zzjwi88h$ttX3GbgNN2Az^nikp7(J2qA+^{T9E1A`S_%) zXBTBqa<5p|y}7|&(xm!T;oX8BcvZ^#FmX0bbL)c6%cJh8p|NpP>1*%}fo{W6xlM-$ zzA7_dfK~aDF`YTC`Wt)wdyG!e-m&&O#Kw1b=1RRPgHqrSjn_)pmOZA99dZ=OGFcfY+9E6L=y1}Dn zQWS4(>X*7cU+U!3q!a!D-S!Xe_98WBwo%c&dmZlW-wwTgZ@|NqCFA>P%-Q94H%}!` zUT0f2ClYm}@DUI`?L6(?w{a$`=mz5lH*^UBi)hlLXQeu@W#((YY*4_Rw2shCM}IF^ z8xrvE9UmfWV&gJ{e7hC2-mM{$x>8~X)I-3ES6NGW<`df4^bN3N3StBX7TCvTbC#8!xiBNv={_pke<#zLPZ=-__A3YXR7}XA| zppvAjlS$I+)?IKpbEmm+)y|z_H_w%Cd2d%ii3PSi!{-oAX`oEBdy6+u9cN|*hjH4- zLs1C{4}qdI61TuWU#Z$(H4HMz$%W@_AKO=dz_ZEa3~QtC!|)}WF%(x^ICvfvs3C+J zp^QK!Pp7Sdjt5>`sND^kgLoY~x1{U4zRWQ)Vo=s6%xIDG&ED*zy2t#F-y~8AQD=^Q zdWgBDTvoi{-x5!;2g-A?@5E(Do1<;Btxu0zd_m7HgTIN%UgwjQb51m8FgVn|Y$%8o z*y>2QTv46Jnnh4N$?++QRRvN1+>7cB4stNBoM~*?9C#9jHZ~_np@(oQ8QV+?kiAls zKF9yYBfk)GBIgcIk~=hlw1zM!g&d|N05w#tq4Lz$DrMy5LeEA0&)wKwy4GsR5|Fsq z&7L5nV~Zr$&ki3*HOATv*)XGfn9kHJJHq!k>`0zq>!~O5nx-?55VI6UD!w1{f7M!e zTO~5jCix##wfA?nwAXQvd~TDrls3+dc;8Ma3Cz701Wvcj4~u^Q*A{-oMf?c|>v})n zHvOSS6866?X%lU2Ek7JDeSQXa-TWkK`fi+R&X;OYxoR{n z|2@3t^J=jbk0}&)g%VX*?R`&nTa^mnN5uN3AF`x31V##>sEG-vO=bn(0kUyDBiXSd zFuy)9r=XaIWZ=wY-rwYRUtLtICy9%K9D`x#27KEnL3c1Vr$eVb!rRXD{jxdxJfizz zP5B|F3`wf^q#(2S9-N%m&l5csc0yKV*KWp7&hM6e?X%0qjksW3&vg6DI|13Vg&(u# zO~$gXQv^Q4Xj*s>)2GU%Z>}kNF@_F^I zH_7?CJnCdADxKqMSR&a?t;|*1|~87DL7rL)!g$A94v0L^FTeF?hny`g}{v=Uf%-@hp%dMi5bR-Xfy-u-7aG7IeKiNSt%49Tx ztu}%d;M3Z&=0$1%$}-uj;TFB`YYr=OaB|v%w4E(v!x3VT$G&6diQ?5&MrL`l$ER0Q zd%3!fXsz?v@crb|eWCX+I0W4JaKC^14z~{|sK#6P^w-j6Au_?uB;euzj-lg`Wz(|f z3VjZcMWBRrDyNYNPA^KClM}1yd_Qwzq3pBLB(`Op*4CP`fEVHg0>zyHGW%3nxnlL| zeOIn*3B0LEu`qr7k)LR5%d!Wu5SnOC( z>9quo$wVkM6Jm?7>Ej^YrB0!Qf@CZ%C@w;@y#rvU5`5vrtV;9{N1nl%U@#v}C7DY-0O*McN#ZPYO~sQGssJlK=rkdSrIWtA_ktF^tJtlJ9X5J#av zh@e2hn_w+b6!gx^2$}R>>~UJXT8$alP~TU+T?+mfl!8WXZTJ;ex(zZNS+Y%9dO7~U zX$6z!L7|A|Cp#C4(M5$x8~qk=3n`>(!sOJse>m$tye1=&1OZ*zCiK^@O>}uP7(Sr8 zY2#wkMAaY!{p6ne!p((*9~Ks-*P`6j&dx4OeU%JN-V7TIbzEKXW4p1mudz6yVCllM zP!Q)|l|W6#7~WHq#!AY$4@0IHq&?1?D?De5HXm&GczpeYNs}Cr=sBk^xjBCH=uTlq zyRKZha?ed1aDV^Xd3pPw$X&mwF1ngp#V4t)8yNl`=PQ*P(J zt~m9`#73@S|A9#)B~DBj*#mCna3+gPF$z-GE_wfc`NIL99uFe~4d2!6pPMZUhs;*> z_~lz$HDa)KF5`uUTGNx!hiWJ3A_C?t3dSmPz@t;#;y)!T%P#)C^OT4eiI<=*3_X&^ z@MV4CB}5mZIb>G#2tbNywmqXjLTLo)|6~2hX8bDfifwad;cP62vHY@yUD4FiSdCC` zuG_dO*0yj#gca`Nea_6xpp;x7YA)4|R-bKbe3pBPb6bjiULRp}A(L}xEmSBbC*@X= z+MD(#BqTUn(%OO&=WTf|f&P?Aw7;M}Nak9Y0f50^m%y{pXUJ?B?$yIO6~FVlUjdvr zfGUaCgsXrsu<+fgkz9!dgOLcYl7^1#C^xZ6%nhFid0l6>9<}vlFw7 za`gP+fR!^q;o3*FZ9o(H_~}!J5tepGy&G246Q+ok|J>X5Ji*AOI#ixSPG0L`-j|96 zR~s|qD>f%2oGGl&=ol`v|HW4-{wju5(N>!QN)l~u&ZihaX)=)i%X^$K8CzM3E3GBb zpDQZ`u7oPbm*62P$?-?}e!Be~gUONDX>zWyH^0x@d|Xm;mVB)_vXznXK+x9s<4SG} ztP#%62~^pz&&Bo3Y}@s}UJq~lyzO_^UW@(%2E4DT%A<~4e078E_PnR3uRiL=1t6Z8 zmo=ab-W8Te-V?=F^0*83to4(`3TKtpm3- zU}uN{(7qctvSqY`907v^6)GoPh2lgk3K4QlNa|@d^=!3e=N4^=6Kjp6nzE*JnjFojuXJ{1;%mN=1OBEu%X z*tRE=0t0U1zV++ZFJ6p-fZ?%J<213-)6tvKaz%pU>@k%pW}{_KpFaH^G9Z0aUlGNh zCy(GWz2z)y?QS7ydEzEQ1o3qdw}l2;IPGG>1UJIw*(=2>|DELI3l~mO*2zh%lNcs( zqwgvh7A4OfI>9R%a3Z#E>Jpuk4R)Q=M)~55|EPGxoY9lrUb&~Vz9MfG8$~Cj&dD>b zTNY+y2v-aISBU>9`i30JsqwNs%34t#Tcl3dt)D)Bwq>;+mBi!X;)g2pKfq6Nf&#`^ z>sWmBq6O;`)yI4Zh#W~74|Dbq;uYcld@pd&@zsN72Y+Wp3blhHb2+Z6TE431uTR^D z&t4xsTLd0 z`$RcBJTg5=)v&u0l{)DRzM<$e3s;=Ed)lO#Y_IP6F9CW4|XHa*Y| zPk7Tf8SfQP+}%_ays3PPlB(NfIdf60@a+RZUV!T%E9Iv+FU~BOasw|ND0XF{Hp7^R z-J60kVE5!U|8fG>nJm{nzPcthd0~Owv4_u}Th^{0H*OpugTiZCpq~40xh~Wi3&$j2@3NU&Ii~zQ#2kzBwMy&mZtZGw;(H3uFHtY$k>Ne=NORguL&H9C^UDwZ+o7Al z3@~i#E$Q6$`P$!<%jY*I_YfBTPZF0+9kOL^0i|!8L&Es|jKiG6C7cQA)Ora8_FW3F z7UfjCv|lVfFOdO;i|LJw8MYb}{Jp$JqEl`<+mv7NyDN;y|pL{~zl z#LCN81)uZ#o%RN4X}NQ4*Zs0CfA{X7-Ny}x*Juf5P*rHsQzu@$Z+&^iT`8IZo_G9) z8^vRCT%#|DMERfYNbCioG+EzuXhus|Mni7Z&j(2yF6%coe)@ugP4-?%F^0Ngl1;sT z}sXBV*`T&#!0R-!EsqD)>- z?hZE79g==tR@Wh=u;3Ny1)= zY4hu6wbv$WRmZREJ~jp9&}638Vm;h2ZH%fJS7qSYNV9;wo2bgg=2syVq3u5RwE1Rh zqppNE(Nw?q%y8L{M-^qIU}d-}9m-jWn^U<}huB?VJI?QJ(rxR9v znV9Id&niFoz#BVvUh~r0aC|8gmn~Ux9IKSF>_g4<1_lP@mZ|zt*&&lW_gu-HJTmpa z;|0ij3NC1q)akY-ZUl#xlo>;&?cj2yy%#v=L5Iseh3!q~Eqc9b^4Bvq4&oJVZ1}Z` zmQ&tUMO2v15vAn9}`+bEl2(TJECBNaG&zAF4Q8 zoU6GP#GD0z9}-MPPf%Akd-&;?4JXXw(2m!iZdBHW-J$op%BEl9ziIK@L%`K4IA&9_ zp1w9q**{ooQqk5zKlh11G4LminXoezis5%{MfmvT%hrIn5F7KaM{i`@q-^V$+;%m$ zyZ({I%lp$tZ$cR7=jXGUZ_?AFw* zmbS$hOW=a|;=J*VSmwLjvDPUpUh870d+2t-&$!REtw*Owwqlh_KkWRxMt}s&OKleJu`{hK> zr-BqtDj+w4mnH(=)Ff7)tA-iXZt$cs_`(i2GIW2oX97T;?)~d%pQm&=@ax2~AMs~c zP64xq-J3Jg;?GWz)ZB%4V_Ib$qQ7%bQrd+l<+ilM%{`ZU=d1!_`)N5VRSoy|yJfe0 z>f5fDwjJz)%jZRnZ0gDI)z=@dG58!RZP`l?4$thhrCjl%?kkj6LQyh(I5>W`(0C|@ z05b!l=5p1{mu*oPn<+zGCB`{uYYz+`WAkcDxl3B<5F>9^49Uq|^{7>(AT3AtQ2{C~ zNFJ0bKWQT3pROhmgQ*lvRwzww4@x7>DluZA(V!&e z_w|T_w#Jx8cJNe=t&ZLEWwzOyUlM8Y|IJR;KzWYOIU#ZHy1Vh*xrLM6)6hiF#U`|zy-!`3VvHFdGj>Y~mRrOM;?CwbAM zWu>^icYx1KM$5*J|0TKLXqV}G zr)7M)o5B+lZ%L&ab(4;yum-0no3KPB5+Zj zg>PEm#xZT^0Os&1U5rj|0i46T$rw;tEI?fS^!z)}-2w97%kM)2az_(`!S#a6rOMy5 zsJWuhozvxSB(*`1FHSr{Nx~O4Y-ZqtkW|8lL~(5kH1Q&xrbpjOy~vQmXD`%<9X(D` zJH`N_fz*N3PGLYiJ!E9s#`;XQDXlF!eKm;hWqDw$qxAY>xC-wR+$Bf-W!>~%%n+jf z?LX3;I*e~~LgM*P_24bD1}Xuwl$^ec zRz(anUuK}|z>r*cm|@v*)#T8b&LRJtIWq!KtBmh9etaVy=tGpc8U`N5oT!(vF$-CD zR~Dy?^v8-+eSYLlW8Dzjm4}Nf)z#Dvp-yFFBlgUK=Pc09mWdA~qPsG10PXp8?^^{8 zf|xYF%i8Tq-^rA~5Q2xezkEEg>uJDGvVgpw{xo8uh;fXm>FGfQOg6c>nU7N$G5fu4 zYrQnuSkOK>Uxq7ae3en(2&aTDmrqd6i}IbWtcI*oHg?vc0xd?CqehJIBLY!N#caF* zE0iXoE8ivw1+em!|Jo(o|fr9b$K%*ZV?-qjc_! z#s6DUkpR1C+QhPVyeia$A1)Sr2*$4{+Ry>jL=Tzdad#~^infm;#yoVS8Dkr-kn;VSy`;S zBqDWfV{-9l&ea~D!m7hRr`u)mjYr^;FeT{K!^Xv-+#=h708TKK3~a5)vmbfbL+ z-rhy{y-2;MwIus8EE3))d|f}B5_wy8ST>1+!{#uPVo5ImBe6qFY?7MUuIwCxAorNT@A=L;3xdF_@|z=BM#-9 zW`+AuHaH|K2^KcM4=moa`AmDNR5MYr7rv!qbbW+7eq2LWu!7@bn;B!p|Drdmn8VaE zeI+g!4L8%%(@&d>E?QSbx(Vg!Mo_WMX7-qzoE)6-=Y5yY^z52XDKR6}k#psgmRdcb z{&s$PevIbSsdM>Y&UuuxX_x31J~N6BA#x9AmKI0h`-EeqG)UXSY;7b=XhB2@<`AC7 zt4CwaGn1MhKMr!qV}7J8bVOk(GX#Wt`emhI!=@*vriSv;57@opUUoh}{p(sT-Ko>) zClhTh6Pk-v(8BI;-nxAG$@a5sw*4^3NHr~T{lL92X*_M&T~7X} zzC6S!_)XQKX*ZG^nwT--eiyy)P2xzwKNvZC#j)uyO8vhHYjAL=FYR?Cj!8_)u6$At ziIxE7T8^Cd$i1*&;eH6I#k|Y|+al-iPjP@W!fiL+vgF(pLJ`IuLmcG$w2#Wg=rZ&1 z*1`mS^4V0^#(DcT@hEp4#`h=xt3m{H$!JS{Mr{N z0A>rA!%~ifx@olU28_f$+#ZOJg;D};{BpcBiqB23m*USoDv0XQC&n*wu)Dk7^5p{@ z^KW0>$Y3k^+M=-`bBY(A6^3)Pe;A0LU9)Arpk}<*`*(`GofP&29Bgx&d|!*Rn?#RT zszv&XzbKzFYIm;pO>zg4%=HJWxTj)Gl16tcA1;<$N^BQy-42r$!D0ulLl?B2;UFBt zQ6miQRo~=p_GcScQ+*Hlq+d>MoQb@h>lJ zlHs9tTI~HBk5K^-Wxn((ec4DGCLT-U0iD{4(iS)_9&Hc z8-Nfoa>9fj_?sV|gKyyWZ?DuYq=p_xs;CUu{C?l>b)Ca;9OrSqwS5xP7ykbrmo2%3(IE;7VNYv{DcA@sVc)lZ znR21z_!tv0d$xa_ySM;D{IsBcgdGt}n)GX314*4G5FLQD`oYK zJ0#Kap`mJ@n)hgVUO^m}+ROFJ`@Z;4h#jb0YEhkSu7AD|IceYeFmbs8@5zt5l*H!^ zdkpohEj#$F?2^tG58s>TFHg)D_FhGAg}V^+vwjf5gGpLcEvsWI$X(xP^$Rc9+S>~y z4d|0WOew0at~tGVfLfULA^gZq9i=@|*kGBkyc81&gH4IW1+6Df?laA3|AXN1cefpP z`=j;q_q3nCuT3(JJ6|;_7mrWu&jFa2bQ}RS5tcIAf483Et=!xN9$mbp>BB8SDZYOD z=D$fYO8(O~>%R1Tq&+M-j&G6_c5e|h&3`NA8CX?N;r?>N*)AVPn8a!dK_QwBm&$#6 z_o7j4Yd6BR=0#@aohOmr{-;kbA|p>cc*G6|aa`J&FdOyc16oiX(3jI%p7X)y0WR}C zsTSwRwC#dQY*WG|w~~K9KUQepUTXXHyc?b~k)NpX9BJ=$MqC#RQFKF(IW zHSq3f?NxlfevO?6Y4q9gzG`hrJvBZYVEWTqe90eButqv}kARY|fbOFb^YJXL)W>k` zf5VQFL~P6zv%`OVXL{r6zH#H{_Ockp-YC=PVQkC-lR2wHd#z7zbJ^wwfQV!j7!$J^~YEG_7yzS*lN+FHZ?!dcf1U%!|oyD0cy zUh^tC{;Y0~brSgGKoR4G)!WOLGXPThOy8zK2p^)Qm4Vbps0W+>k}BO@wrpuPWnUcI=-e6P%tPKTXv9~R?0lKnTDJ|4D16YDO~at(VaU7 z5x`3(LR67iMB;*$>#@Y?eV+sU6j+I_==tO3+dLNogDY!`WEh{fFMgcj*0Y!Lzj4bG zA3b(+T@D@5`S{os59o8|0l88BzCre(IAzKSK2}~&kvpRX{EhiujHW5`+@5xk&$asO zuAn@la<)7d6f2Kgs zF%*ZI_8@)J;lRkO2f<7obsvAZlQ3%iefZPo$X=T_f6VIb^lpjzxN+ULZBw<{dw_wO zBrQ#r8i?LTh!?QNL3|*%UIuR$(~0D?3`}`lQv4fy{h)t!ug}yC?e_3}Rs-Dk;p4~M zk9xh=D6#a(scaZfuTZ2sy;NwHVRk28*yHVuvAdp?mDRo{vy@Unq8QKuv=yRnyJ8XV z4&Sr-S-<_y(xB}m7PM;&KN_B0x8mAnU!+c!Ha5FK$9Q~}5Pcemr>@KHY~Es`w46sxKL73`^)}9i{Z*5GYmwvP(8t04fRh0*`N% z0sZ!vx(0vU*1l&j3JNM8Ybp+ktv&FkLZ{CVi)F1*p9%9q=lFKQ!`yC_Th&2XMa7rZ z9cqggXn34>kh0<9ujYr>u1?y$TSijCMINB(<_9kF7?mvTgD$848)_mDc4Y{K5fsbs zH(Q94D)}qW(DnRyqaF0YH_sJmBjn|s-rVh$=t{}>l_qv)j8Ry8#u->EqNM*a&sLbf z-bWy1_-A{%`)>#{A(7()kACFVUI$V2F3LD=7*V)V=HUwnb()$+;Q|X3F~AlAjQXVO zpg|TdKUn<#$lc^@&v=!QQ4h;^&^@{pe$4&L`F#**;X|zH@gqluPE}W*Pd|PPmxDmdUts5v%rHG>A@gw7 z&gkyA;`HjK$NK!dyoHbPt3;XaG6pBOe1#b@xUW8w?Qm3H_c7ms|BWA!|MA0zhuo`l zi3D$6fB%@DpZun}G86F^#WZ{O_${tWAJ*@|;lj$=S^?{_x6A52d{A!nn846bX5spC zo77Q8dn4ByN0gzI4+DB!KpE$UDaQu$>F=tCHoe<9VY}Aj%G}hW29a)c!*#nG%xU{L zYyZ5_#=|=I4OM2UB>iDW>R3~Uw-XQAa#+AcMUnObxyG|`bM_z8 zQ>>t_5W~y;iW$#7FECQZm}b`wlgncuy|0$X6mjmLO#fL)Gaxp`K@=ibJz@C^i+n&U zR$kocpDQaPqpf)Cm3SRb{x4Nm4DF(s6pf&yaC!IVXDNq~r&Rb_{^7B`W`6{k74v1u z!YRi7a-V+)mtbMvcJSb$gOxnCb}vyhMOnZ8G1Sl+g_W?d=B;-dIB+4e8bV4S%5U9; z{@vvM(b9StV=`(}&GqX$FRpG=mKM3kTsAN0R)qe=ZJz2|>J@toVty65z{A)eEk(s= zQqCW?tgxq$DN0J>P3 zd;=?cv9?rx+x?Km!u6b}h^AD>JzME%^ zsdx}9Z{d02)ala?$QCecsn1f2@UTF7wvsc>(~#5yK!=g{m@{2^*=8XS�dh4=!=N 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

+x=&>CrK0{ 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 + + + + + +%3 + + + +X1 + +X1 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + + + +W1 + + +W1 + +CablesCo +MPN: ABC123 +IPN: CAB1 + +4x + +0.25 mm² + +1 m +  +X1:1 +BN +X2:1 + + + +X1:2 +RD +X2:2 + + + +X1:3 +OG +X2:3 + + + +X1:4 +YE +X2:4 + + + +  + + + +X1:e--W1:w + + + + + + +X1:e--W1:w + + + + + + +X1:e--W1:w + + + + + + +X1:e--W1:w + + + + + + +W2 + + +W2 + +4x + +0.25 mm² + +1 m +  +X1:1 +YE +X3:1 + + + +WiresCo +MPN: W1-YE +IPN: WIRE1 +X1:2 +BK +X3:2 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:3 +BK +X3:3 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:4 +RD +X3:4 + + + +WiresCo +MPN: W1-RD +IPN: WIRE3 +  + + + +X1:e--W2:w + + + + + + +X1:e--W2:w + + + + + + +X1:e--W2:w + + + + + + +X1:e--W2:w + + + + + + +X2 + +X2 + +Molex + +MPN: 22013047 + +IPN: CON4 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + + + +X3 + +X3 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + + + +W1:e--X2:w + + + + + + +W1:e--X2:w + + + + + + +W1:e--X2:w + + + + + + +W1:e--X2:w + + + + + + +W2:e--X3:w + + + + + + +W2:e--X3:w + + + + + + +W2:e--X3:w + + + + + + +W2:e--X3:w + + + + + + From dd1372c31d1551b34c9ec877aa9cacb6bda9f047 Mon Sep 17 00:00:00 2001 From: KV Date: Wed, 1 Jul 2020 22:12:19 +0200 Subject: [PATCH 07/48] Use lambdas for BOM grouping, and rename group variables Avoid duplications of BOM entry grouping definitions by moving each grouping into a single lambda function. Use the 'group' term in the involved variable names for clarity. The BOM output is unchanged by this change. It is verified using: python build_examples.py git diff ../../{examples,tutorial}/*.tsv --- src/wireviz/Harness.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index c50384e..b3dd830 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -253,9 +253,10 @@ class Harness: bom_connectors = [] bom_cables = [] # connectors - types = Counter([(v.type, v.subtype, v.pincount) for v in self.connectors.values()]) - for maintype in types: - items = {k: v for k, v in self.connectors.items() if (v.type, v.subtype, v.pincount) == maintype} + connector_group = lambda c: (c.type, c.subtype, c.pincount) + groups = Counter([connector_group(v) for v in self.connectors.values()]) + for group in groups: + items = {k: v for k, v in self.connectors.items() if connector_group(v) == group} shared = next(iter(items.values())) designators = list(items.keys()) designators.sort() @@ -270,10 +271,10 @@ class Harness: bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_connectors) # cables - types = Counter([(v.category, v.gauge, v.gauge_unit, v.wirecount, v.shield) for v in self.cables.values()]) - for maintype in types: - items = {k: v for k, v in self.cables.items() if ( - v.category, v.gauge, v.gauge_unit, v.wirecount, v.shield) == maintype} + cable_group = lambda c: (c.category, c.gauge, c.gauge_unit, c.wirecount, c.shield) + groups = Counter([cable_group(v) for v in self.cables.values()]) + for group in groups: + items = {k: v for k, v in self.cables.items() if cable_group(v) == group} shared = next(iter(items.values())) if shared.category != 'bundle': designators = list(items.keys()) @@ -287,9 +288,10 @@ class Harness: # bundles (ignores wirecount) wirelist = [] # list all cables again, since bundles are represented as wires internally, with the category='bundle' set - types = Counter([(v.category, v.gauge, v.gauge_unit, v.length) for v in self.cables.values()]) - for maintype in types: - items = {k: v for k, v in self.cables.items() if (v.category, v.gauge, v.gauge_unit, v.length) == maintype} + bundle_group = lambda b: (b.category, b.gauge, b.gauge_unit, b.length) + groups = Counter([bundle_group(v) for v in self.cables.values()]) + for group in groups: + items = {k: v for k, v in self.cables.items() if bundle_group(v) == group} shared = next(iter(items.values())) # filter out cables that are not bundles if shared.category == 'bundle': @@ -299,9 +301,10 @@ class Harness: wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name}) # join similar wires from all the bundles to a single BOM item - types = Counter([(v['gauge'], v['gauge_unit'], v['color']) for v in wirelist]) - for maintype in types: - items = [v for v in wirelist if (v['gauge'], v['gauge_unit'], v['color']) == maintype] + wire_group = lambda w: (w['gauge'], w['gauge_unit'], w['color']) + groups = Counter([wire_group(v) for v in wirelist]) + for group in groups: + items = [v for v in wirelist if wire_group(v) == group] shared = items[0] designators = [i['designator'] for i in items] # remove duplicates From c9895bd28266ea885cd409f041309a7f0d4f9140 Mon Sep 17 00:00:00 2001 From: KV Date: Wed, 1 Jul 2020 23:00:31 +0200 Subject: [PATCH 08/48] Move the cable category filtering before BOM grouping Simplify the grouping loop slightly, by moving the filtering out. The category of bundle entries is allways the same and is therefore not needed for grouping. The BOM output is unchanged by this change. It is verified using: python build_examples.py git diff ../../{examples,tutorial}/*.tsv --- src/wireviz/Harness.py | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index b3dd830..3c678fd 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -271,35 +271,34 @@ class Harness: bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_connectors) # cables + # TODO: If category can have other non-empty values than 'bundle', maybe it should be part of item name? + # Otherwise, it can be removed from the cable_group because it will allways be empty. cable_group = lambda c: (c.category, c.gauge, c.gauge_unit, c.wirecount, c.shield) - groups = Counter([cable_group(v) for v in self.cables.values()]) + groups = Counter([cable_group(v) for v in self.cables.values() if v.category != 'bundle']) for group in groups: items = {k: v for k, v in self.cables.items() if cable_group(v) == group} shared = next(iter(items.values())) - if shared.category != 'bundle': - designators = list(items.keys()) - designators.sort() - total_length = sum(i.length for i in items.values()) - gauge_name = f' x {shared.gauge} {shared.gauge_unit}'if shared.gauge else ' wires' - shield_name = ' shielded' if shared.shield else '' - name = f'Cable, {shared.wirecount}{gauge_name}{shield_name}' - item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} - bom_cables.append(item) + designators = list(items.keys()) + designators.sort() + total_length = sum(i.length for i in items.values()) + gauge_name = f' x {shared.gauge} {shared.gauge_unit}'if shared.gauge else ' wires' + shield_name = ' shielded' if shared.shield else '' + name = f'Cable, {shared.wirecount}{gauge_name}{shield_name}' + item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} + bom_cables.append(item) # bundles (ignores wirecount) wirelist = [] # list all cables again, since bundles are represented as wires internally, with the category='bundle' set - bundle_group = lambda b: (b.category, b.gauge, b.gauge_unit, b.length) - groups = Counter([bundle_group(v) for v in self.cables.values()]) + bundle_group = lambda b: (b.gauge, b.gauge_unit, b.length) + groups = Counter([bundle_group(v) for v in self.cables.values() if v.category == 'bundle']) for group in groups: items = {k: v for k, v in self.cables.items() if bundle_group(v) == group} shared = next(iter(items.values())) - # filter out cables that are not bundles - if shared.category == 'bundle': - for bundle in items.values(): - # add each wire from each bundle to the wirelist - for color in bundle.colors: - wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, - 'length': shared.length, 'color': color, 'designator': bundle.name}) + for bundle in items.values(): + # add each wire from each bundle to the wirelist + for color in bundle.colors: + wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, + 'length': shared.length, 'color': color, 'designator': bundle.name}) # join similar wires from all the bundles to a single BOM item wire_group = lambda w: (w['gauge'], w['gauge_unit'], w['color']) groups = Counter([wire_group(v) for v in wirelist]) From 6f91b6512881a042e72c05d24c6d825d61bc1460 Mon Sep 17 00:00:00 2001 From: KV Date: Wed, 1 Jul 2020 23:17:34 +0200 Subject: [PATCH 09/48] Support named type of cables (or wires in a bundle) Add cable type to diagram and BOM entries. --- src/wireviz/Harness.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 3c678fd..d15b998 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -124,7 +124,8 @@ class Harness: elif cable.gauge_unit.upper() == 'AWG': awg_fmt = f' ({mm2_equiv(cable.gauge)} mm\u00B2)' - attributes = [f'{len(cable.colors)}x' if cable.show_wirecount else '', + attributes = [cable.type, + f'{len(cable.colors)}x' if cable.show_wirecount else '', f'{cable.gauge} {cable.gauge_unit}{awg_fmt}' if cable.gauge else '', '+ S' if cable.shield else '', f'{cable.length} m' if cable.length > 0 else ''] @@ -273,7 +274,7 @@ class Harness: # cables # TODO: If category can have other non-empty values than 'bundle', maybe it should be part of item name? # Otherwise, it can be removed from the cable_group because it will allways be empty. - cable_group = lambda c: (c.category, c.gauge, c.gauge_unit, c.wirecount, c.shield) + cable_group = lambda c: (c.category, c.type, c.gauge, c.gauge_unit, c.wirecount, c.shield) groups = Counter([cable_group(v) for v in self.cables.values() if v.category != 'bundle']) for group in groups: items = {k: v for k, v in self.cables.items() if cable_group(v) == group} @@ -281,15 +282,16 @@ class Harness: designators = list(items.keys()) designators.sort() total_length = sum(i.length for i in items.values()) + cable_type = f', {shared.type}' if shared.type else '' gauge_name = f' x {shared.gauge} {shared.gauge_unit}'if shared.gauge else ' wires' shield_name = ' shielded' if shared.shield else '' - name = f'Cable, {shared.wirecount}{gauge_name}{shield_name}' + name = f'Cable{cable_type}, {shared.wirecount}{gauge_name}{shield_name}' item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} bom_cables.append(item) # bundles (ignores wirecount) wirelist = [] # list all cables again, since bundles are represented as wires internally, with the category='bundle' set - bundle_group = lambda b: (b.gauge, b.gauge_unit, b.length) + bundle_group = lambda b: (b.type, b.gauge, b.gauge_unit, b.length) # TODO: Why is b.lenght included? groups = Counter([bundle_group(v) for v in self.cables.values() if v.category == 'bundle']) for group in groups: items = {k: v for k, v in self.cables.items() if bundle_group(v) == group} @@ -297,10 +299,10 @@ class Harness: for bundle in items.values(): # add each wire from each bundle to the wirelist for color in bundle.colors: - wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, + wirelist.append({'type': shared.type, 'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name}) # join similar wires from all the bundles to a single BOM item - wire_group = lambda w: (w['gauge'], w['gauge_unit'], w['color']) + wire_group = lambda w: (w['type'], w['gauge'], w['gauge_unit'], w['color']) groups = Counter([wire_group(v) for v in wirelist]) for group in groups: items = [v for v in wirelist if wire_group(v) == group] @@ -310,9 +312,10 @@ class Harness: designators = list(dict.fromkeys(designators)) designators.sort() total_length = sum(i['length'] for i in items) + wire_type = f', {shared["type"]}' if shared['type'] else '' gauge_name = f', {shared["gauge"]} {shared["gauge_unit"]}' if shared['gauge'] else '' gauge_color = f', {shared["color"]}' if shared['color'] != '' else '' - name = f'Wire{gauge_name}{gauge_color}' + name = f'Wire{wire_type}{gauge_name}{gauge_color}' item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} bom_cables.append(item) bom_cables = sorted(bom_cables, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 From 77bf3981769b05cf8bca442ac3a386f760b2114c Mon Sep 17 00:00:00 2001 From: KV Date: Thu, 2 Jul 2020 01:16:35 +0200 Subject: [PATCH 10/48] Add cable type in a couple of examples --- examples/ex01.yml | 1 + examples/ex05.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/examples/ex01.yml b/examples/ex01.yml index 83cce3c..9e4340f 100644 --- a/examples/ex01.yml +++ b/examples/ex01.yml @@ -16,6 +16,7 @@ cables: show_equiv: true # auto-calculate AWG equivalent from metric gauge length: 0.2 # length in m shield: true + type: Serial connections: - diff --git a/examples/ex05.yml b/examples/ex05.yml index 9723b1f..fe063c2 100644 --- a/examples/ex05.yml +++ b/examples/ex05.yml @@ -9,6 +9,7 @@ templates: length: 0.2 colors: [PK, TQ, YE, VT] category: bundle + type: I²C connectors: X1: From 94731cdf813767a6972556ebde0cf7db868968ab Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 2 Jul 2020 08:32:12 +0200 Subject: [PATCH 11/48] Fix post-merge bugs --- src/wireviz/Harness.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 81fecd6..231e583 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -145,7 +145,8 @@ class Harness: f'IPN: {cable.internal_part_number}' if (cable.internal_part_number and not isinstance(cable.internal_part_number, list)) else ''] identification = list(filter(None, identification)) - attributes = [f'{len(cable.colors)}x' if cable.show_wirecount else '', + attributes = [f'{cable.type}' if cable.type else '', + f'{len(cable.colors)}x' if cable.show_wirecount else '', f'{cable.gauge} {cable.gauge_unit}{awg_fmt}' if cable.gauge else '', '+ S' if cable.shield else '', f'{cable.length} m' if cable.length > 0 else ''] @@ -343,7 +344,7 @@ class Harness: item['manufacturer part number'] = shared.manufacturer_part_number if shared.internal_part_number is not None: # set part number only if it exists item['internal part number'] = shared.internal_part_number - bom_cables.append(item) + bom_cables.append(item) # bundles (ignores wirecount) wirelist = [] # list all cables again, since bundles are represented as wires internally, with the category='bundle' set @@ -354,14 +355,14 @@ class Harness: shared = next(iter(items.values())) for bundle in items.values(): # add each wire from each bundle to the wirelist - for color in bundle.colors: + for index, color in enumerate(bundle.colors, 0): wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name} wireinfo['manufacturer'] = bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None wireinfo['manufacturer part number'] = bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None wireinfo['internal part number'] = bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None wirelist.append(wireinfo) # join similar wires from all the bundles to a single BOM item - wire_group = lambda w: (w['type'], w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number']) + wire_group = lambda w: (w.get('type', None), w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number']) groups = Counter([wire_group(v) for v in wirelist]) for group in groups: items = [v for v in wirelist if wire_group(v) == group] @@ -371,9 +372,9 @@ class Harness: designators = list(dict.fromkeys(designators)) designators.sort() total_length = sum(i['length'] for i in items) - wire_type = f', {shared["type"]}' if shared['type'] else '' - gauge_name = f', {shared["gauge"]} {shared["gauge_unit"]}' if shared['gauge'] else '' - gauge_color = f', {shared["color"]}' if shared['color'] != '' else '' + wire_type = f', {shared["type"]}' if 'type' in shared else '' + gauge_name = f', {shared["gauge"]} {shared["gauge_unit"]}' if 'gauge' in shared else '' + gauge_color = f', {shared["color"]}' if 'color' in shared != '' else '' name = f'Wire{wire_type}{gauge_name}{gauge_color}' item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} if shared['manufacturer'] is not None: # set manufacturer only if it exists From 65a4d6bd074c09c2a20ed3344e2940bd06895ccb Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 2 Jul 2020 18:57:00 +0200 Subject: [PATCH 12/48] Update example+tutorial input files tut --- examples/ex05.yml | 2 +- src/wireviz/build_examples.py | 2 +- tutorial/tutorial08.md | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 tutorial/tutorial08.md diff --git a/examples/ex05.yml b/examples/ex05.yml index fe063c2..f88815f 100644 --- a/examples/ex05.yml +++ b/examples/ex05.yml @@ -9,7 +9,7 @@ templates: length: 0.2 colors: [PK, TQ, YE, VT] category: bundle - type: I²C + type: I2C connectors: X1: diff --git a/src/wireviz/build_examples.py b/src/wireviz/build_examples.py index 078e4e2..18654ef 100755 --- a/src/wireviz/build_examples.py +++ b/src/wireviz/build_examples.py @@ -10,7 +10,7 @@ from wireviz import wireviz demos = 2 # 2 examples = 9 # 9 -tutorials = 7 # 7 +tutorials = 8 # 7 if demos: for i in range(1,demos+1): diff --git a/tutorial/tutorial08.md b/tutorial/tutorial08.md new file mode 100644 index 0000000..8369e90 --- /dev/null +++ b/tutorial/tutorial08.md @@ -0,0 +1,5 @@ +## Part numbers + +* Part number information can be added to parts + * Only provided fields will be added to the diagram and bom +* Bundles can have part information specified by wire From 16929687d35df62b54fe5663987168b1a2725466 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 2 Jul 2020 19:09:27 +0200 Subject: [PATCH 13/48] Fine-tune cable appearance Add hack to make manufacturer / part number row have vertical separators, to be visually consistent with connectors. In the future, connectors will have to be modified to be HTML tables instead of GraphViz record nodes, in order to support colored bands for the connector, or individual pins (#53). When this is implemented, a cleaner solution should be found for both connectors and cables. --- src/wireviz/Harness.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 231e583..c0df0aa 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -158,9 +158,11 @@ class Harness: if cable.show_name: html = f'{html}

{cable.name}
' - for attrib in identification: - html = f'{html}' + html = f'{html}' # end identification row html = f'{html}' # attribute row for attrib in attributes: From 21b3c9e59b166b344097f55594e0becce2750dfa Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 2 Jul 2020 19:16:26 +0200 Subject: [PATCH 14/48] Rebuild examples --- examples/ex01.bom.tsv | 2 +- examples/ex01.gv | 2 +- examples/ex01.html | 164 ++++++++------- examples/ex01.png | Bin 43342 -> 44282 bytes examples/ex01.svg | 162 +++++++------- examples/ex05.gv | 4 +- examples/ex05.html | 334 ++++++++++++++--------------- examples/ex05.png | Bin 38933 -> 39929 bytes examples/ex05.svg | 334 ++++++++++++++--------------- tutorial/readme.md | 2 + tutorial/tutorial08.bom.tsv | 4 + tutorial/tutorial08.gv | 2 +- tutorial/tutorial08.html | 409 ++++++++++++++++++------------------ tutorial/tutorial08.png | Bin 135924 -> 128248 bytes tutorial/tutorial08.svg | 407 +++++++++++++++++------------------ 15 files changed, 923 insertions(+), 903 deletions(-) diff --git a/examples/ex01.bom.tsv b/examples/ex01.bom.tsv index 6eeb436..8af2691 100644 --- a/examples/ex01.bom.tsv +++ b/examples/ex01.bom.tsv @@ -1,3 +1,3 @@ Item Qty Unit Designators Connector, Molex KK 254, female, 4 pins 2 X1, X2 -Cable, 4 x 0.25 mm² shielded 0.2 m W1 +Cable, Serial, 4 x 0.25 mm² shielded 0.2 m W1 diff --git a/examples/ex01.gv b/examples/ex01.gv index eda6ecc..d1ccbd3 100644 --- a/examples/ex01.gv +++ b/examples/ex01.gv @@ -20,5 +20,5 @@ graph { W1:w4:e -- X2:p3l:w edge [color="#000000"] X1:p1r:e -- W1:ws:w - W1 [label=<
{attrib}
' + for attrib in identification[0:-1]: + html = f'{html}' # all columns except last have a border on the right (sides="R") + if len(identification) > 0: + html = f'{html}' # last column has no border on the right because the enclosing table borders it html = f'{html}
{attrib}{identification[-1]}
W1
4x0.25 mm² (24 AWG)+ S0.2 m
 
X1:1BNX2:1
X1:2RDX2:2
X1:3OGX2:4
X1:4YEX2:3
 
X1:1Shield
 
> fillcolor=white margin=0 shape=box style=""] + W1 [label=<
W1
Serial4x0.25 mm² (24 AWG)+ S0.2 m
 
X1:1BNX2:1
X1:2RDX2:2
X1:3OGX2:4
X1:4YEX2:3
 
X1:1Shield
 
> fillcolor=white margin=0 shape=box style=""] } diff --git a/examples/ex01.html b/examples/ex01.html index 5c03d91..6e7d4d8 100644 --- a/examples/ex01.html +++ b/examples/ex01.html @@ -4,10 +4,10 @@ - + - + X1 @@ -39,47 +39,49 @@ W1 - - -W1 - -4x - -0.25 mm² (24 AWG) - -+ S - -0.2 m -  -X1:1 -BN -X2:1 - - - -X1:2 -RD -X2:2 - - - -X1:3 -OG -X2:4 - - - -X1:4 -YE -X2:3 - - - -  -X1:1 -Shield - -  + + +W1 + +Serial + +4x + +0.25 mm² (24 AWG) + ++ S + +0.2 m +  +X1:1 +BN +X2:1 + + + +X1:2 +RD +X2:2 + + + +X1:3 +OG +X2:4 + + + +X1:4 +YE +X2:3 + + + +  +X1:1 +Shield + +  @@ -117,59 +119,59 @@ X2 - -X2 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 - -GND - -VCC - -RX - -TX + +X2 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + +GND + +VCC + +RX + +TX W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + -

Bill of Materials

ItemQtyUnitDesignators
Connector, Molex KK 254, female, 4 pins2X1, X2
Cable, 4 x 0.25 mm² shielded0.2mW1
\ No newline at end of file +

Bill of Materials

ItemQtyUnitDesignators
Connector, Molex KK 254, female, 4 pins2X1, X2
Cable, Serial, 4 x 0.25 mm² shielded0.2mW1
\ No newline at end of file diff --git a/examples/ex01.png b/examples/ex01.png index 935b4844bc09d521bed3d179a23a3afdafbca8b8..f9fa61f31872be0a265951878aca70fc06a69f86 100644 GIT binary patch literal 44282 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

Q4_ksR_;?(DK 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 SPIf21Py3L*dbz4i=>Gt;@HkKa diff --git a/examples/ex01.svg b/examples/ex01.svg index a22e320..8d5dbbb 100644 --- a/examples/ex01.svg +++ b/examples/ex01.svg @@ -4,10 +4,10 @@ - + - + X1 @@ -39,47 +39,49 @@ W1 - - -W1 - -4x - -0.25 mm² (24 AWG) - -+ S - -0.2 m -  -X1:1 -BN -X2:1 - - - -X1:2 -RD -X2:2 - - - -X1:3 -OG -X2:4 - - - -X1:4 -YE -X2:3 - - - -  -X1:1 -Shield - -  + + +W1 + +Serial + +4x + +0.25 mm² (24 AWG) + ++ S + +0.2 m +  +X1:1 +BN +X2:1 + + + +X1:2 +RD +X2:2 + + + +X1:3 +OG +X2:4 + + + +X1:4 +YE +X2:3 + + + +  +X1:1 +Shield + +  @@ -117,58 +119,58 @@ X2 - -X2 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 - -GND - -VCC - -RX - -TX + +X2 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + +GND + +VCC + +RX + +TX W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + diff --git a/examples/ex05.gv b/examples/ex05.gv index b44ced5..5507799 100644 --- a/examples/ex05.gv +++ b/examples/ex05.gv @@ -19,7 +19,7 @@ graph { edge [color="#000000:#8000ff:#000000"] X1:p4r:e -- W1:w4:w W1:w4:e -- X2:p4l:w - W1 [label=<
W1
4x0.25 mm²0.2 m
 
X1:1PKX2:1
X1:2TQX2:2
X1:3YEX2:3
X1:4VTX2:4
 
> fillcolor=white margin=0 shape=box style="filled,dashed"] + W1 [label=<
W1
I2C4x0.25 mm²0.2 m
 
X1:1PKX2:1
X1:2TQX2:2
X1:3YEX2:3
X1:4VTX2:4
 
> fillcolor=white margin=0 shape=box style="filled,dashed"] edge [color="#000000:#ff66cc:#000000"] X2:p1r:e -- W2:w1:w W2:w1:e -- X3:p1l:w @@ -32,5 +32,5 @@ graph { edge [color="#000000:#8000ff:#000000"] X2:p4r:e -- W2:w4:w W2:w4:e -- X3:p4l:w - W2 [label=<
W2
4x0.25 mm²0.2 m
 
X2:1PKX3:1
X2:2TQX3:2
X2:3YEX3:3
X2:4VTX3:4
 
> fillcolor=white margin=0 shape=box style="filled,dashed"] + W2 [label=<
W2
I2C4x0.25 mm²0.2 m
 
X2:1PKX3:1
X2:2TQX3:2
X2:3YEX3:3
X2:4VTX3:4
 
> fillcolor=white margin=0 shape=box style="filled,dashed"] } diff --git a/examples/ex05.html b/examples/ex05.html index f8fc416..fc60fbc 100644 --- a/examples/ex05.html +++ b/examples/ex05.html @@ -4,10 +4,10 @@ - + - + X1 @@ -39,41 +39,43 @@ W1 - - -W1 - -4x - -0.25 mm² - -0.2 m -  -X1:1 -PK -X2:1 - - - -X1:2 -TQ -X2:2 - - - -X1:3 -YE -X2:3 - - - -X1:4 -VT -X2:4 - - - -  + + +W1 + +I2C + +4x + +0.25 mm² + +0.2 m +  +X1:1 +PK +X2:1 + + + +X1:2 +TQ +X2:2 + + + +X1:3 +YE +X2:3 + + + +X1:4 +VT +X2:4 + + + +  @@ -106,189 +108,191 @@ X2 - -X2 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 - -GND - -VCC - -SCL - -SDA - -1 - -2 - -3 - -4 + +X2 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + +GND + +VCC + +SCL + +SDA + +1 + +2 + +3 + +4 W2 - - -W2 - -4x - -0.25 mm² - -0.2 m -  -X2:1 -PK -X3:1 - - - -X2:2 -TQ -X3:2 - - - -X2:3 -YE -X3:3 - - - -X2:4 -VT -X3:4 - - - -  + + +W2 + +I2C + +4x + +0.25 mm² + +0.2 m +  +X2:1 +PK +X3:1 + + + +X2:2 +TQ +X3:2 + + + +X2:3 +YE +X3:3 + + + +X2:4 +VT +X3:4 + + + +  X2:e--W2:w - - - + + + X2:e--W2:w - - - + + + X2:e--W2:w - - - + + + X2:e--W2:w - - - + + + X3 - -X3 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 - -GND - -VCC - -SCL - -SDA + +X3 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + +GND + +VCC + +SCL + +SDA W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + diff --git a/examples/ex05.png b/examples/ex05.png index 4470666206c7cbdac2b73da2421c8670c1f5fec4..c6df384a46e6daf0cdd4d5bc30c5c4abaad18c96 100644 GIT binary patch literal 39929 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 diff --git a/examples/ex05.svg b/examples/ex05.svg index acc8178..943e3a6 100644 --- a/examples/ex05.svg +++ b/examples/ex05.svg @@ -4,10 +4,10 @@ - + - + X1 @@ -39,41 +39,43 @@ W1 - - -W1 - -4x - -0.25 mm² - -0.2 m -  -X1:1 -PK -X2:1 - - - -X1:2 -TQ -X2:2 - - - -X1:3 -YE -X2:3 - - - -X1:4 -VT -X2:4 - - - -  + + +W1 + +I2C + +4x + +0.25 mm² + +0.2 m +  +X1:1 +PK +X2:1 + + + +X1:2 +TQ +X2:2 + + + +X1:3 +YE +X2:3 + + + +X1:4 +VT +X2:4 + + + +  @@ -106,189 +108,191 @@ X2 - -X2 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 - -GND - -VCC - -SCL - -SDA - -1 - -2 - -3 - -4 + +X2 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + +GND + +VCC + +SCL + +SDA + +1 + +2 + +3 + +4 W2 - - -W2 - -4x - -0.25 mm² - -0.2 m -  -X2:1 -PK -X3:1 - - - -X2:2 -TQ -X3:2 - - - -X2:3 -YE -X3:3 - - - -X2:4 -VT -X3:4 - - - -  + + +W2 + +I2C + +4x + +0.25 mm² + +0.2 m +  +X2:1 +PK +X3:1 + + + +X2:2 +TQ +X3:2 + + + +X2:3 +YE +X3:3 + + + +X2:4 +VT +X3:4 + + + +  X2:e--W2:w - - - + + + X2:e--W2:w - - - + + + X2:e--W2:w - - - + + + X2:e--W2:w - - - + + + X3 - -X3 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 - -GND - -VCC - -SCL - -SDA + +X3 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 + +GND + +VCC + +SCL + +SDA W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + diff --git a/tutorial/readme.md b/tutorial/readme.md index 1ed541d..c46011c 100644 --- a/tutorial/readme.md +++ b/tutorial/readme.md @@ -419,3 +419,5 @@ Output: ![](tutorial08.png) [Bill of Materials](tutorial08.bom.tsv) + + diff --git a/tutorial/tutorial08.bom.tsv b/tutorial/tutorial08.bom.tsv index 682dd4a..01e17ba 100644 --- a/tutorial/tutorial08.bom.tsv +++ b/tutorial/tutorial08.bom.tsv @@ -3,5 +3,9 @@ Connector, Molex KK 254, female, 4 pins 2 X1, X3 Molex 22013047 Connector, Molex KK 254, female, 4 pins 1 X2 Molex 22013047 CON4 Cable, 4 x 0.25 mm² 1 m W1 CablesCo ABC123 CAB1 Wire, 0.25 mm², BK 2 m W2 WiresCo W1-BK WIRE2 +Wire, 0.25 mm², BN 1 m W1 +Wire, 0.25 mm², OG 1 m W1 +Wire, 0.25 mm², RD 1 m W1 Wire, 0.25 mm², RD 1 m W2 WiresCo W1-RD WIRE3 +Wire, 0.25 mm², YE 1 m W1 Wire, 0.25 mm², YE 1 m W2 WiresCo W1-YE WIRE1 diff --git a/tutorial/tutorial08.gv b/tutorial/tutorial08.gv index 4eb5221..1bbf045 100644 --- a/tutorial/tutorial08.gv +++ b/tutorial/tutorial08.gv @@ -19,7 +19,7 @@ graph { edge [color="#000000:#ffff00:#000000"] X1:p4r:e -- W1:w4:w W1:w4:e -- X2:p4l:w - W1 [label=<
W1
CablesCoMPN: ABC123IPN: CAB1
4x0.25 mm²1 m
 
X1:1BNX2:1
X1:2RDX2:2
X1:3OGX2:3
X1:4YEX2:4
 
> fillcolor=white margin=0 shape=box style=""] + W1 [label=<
W1
CablesCoMPN: ABC123IPN: CAB1
4x0.25 mm²1 m
 
X1:1BNX2:1
X1:2RDX2:2
X1:3OGX2:3
X1:4YEX2:4
 
> fillcolor=white margin=0 shape=box style=""] edge [color="#000000:#ffff00:#000000"] X1:p1r:e -- W2:w1:w W2:w1:e -- X3:p1l:w diff --git a/tutorial/tutorial08.html b/tutorial/tutorial08.html index 4dc11ee..20615ca 100644 --- a/tutorial/tutorial08.html +++ b/tutorial/tutorial08.html @@ -1,294 +1,295 @@

Diagram

- - - - -%3 - + + + + X1 - -X1 - -Molex - -MPN: 22013047 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 + +X1 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 W1 - - -W1 - -CablesCo -MPN: ABC123 -IPN: CAB1 - -4x - -0.25 mm² - -1 m -  -X1:1 -BN -X2:1 - - - -X1:2 -RD -X2:2 - - - -X1:3 -OG -X2:3 - - - -X1:4 -YE -X2:4 - - - -  + + +W1 + + +CablesCo + +MPN: ABC123 +IPN: CAB1 + +4x + +0.25 mm² + +1 m +  +X1:1 +BN +X2:1 + + + +X1:2 +RD +X2:2 + + + +X1:3 +OG +X2:3 + + + +X1:4 +YE +X2:4 + + + +  X1:e--W1:w - - - + + + X1:e--W1:w - - - + + + X1:e--W1:w - - - + + + X1:e--W1:w - - - + + + W2 - - -W2 - -4x - -0.25 mm² - -1 m -  -X1:1 -YE -X3:1 - - - -WiresCo -MPN: W1-YE -IPN: WIRE1 -X1:2 -BK -X3:2 - - - -WiresCo -MPN: W1-BK -IPN: WIRE2 -X1:3 -BK -X3:3 - - - -WiresCo -MPN: W1-BK -IPN: WIRE2 -X1:4 -RD -X3:4 - - - -WiresCo -MPN: W1-RD -IPN: WIRE3 -  + + +W2 + +4x + +0.25 mm² + +1 m +  +X1:1 +YE +X3:1 + + + +WiresCo +MPN: W1-YE +IPN: WIRE1 +X1:2 +BK +X3:2 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:3 +BK +X3:3 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:4 +RD +X3:4 + + + +WiresCo +MPN: W1-RD +IPN: WIRE3 +  X1:e--W2:w - - - + + + X1:e--W2:w - - - + + + X1:e--W2:w - - - + + + X1:e--W2:w - - - + + + X2 - -X2 - -Molex - -MPN: 22013047 - -IPN: CON4 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 + +X2 + +Molex + +MPN: 22013047 + +IPN: CON4 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 X3 - -X3 - -Molex - -MPN: 22013047 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 + +X3 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + -

Bill of Materials

ItemQtyUnitDesignatorsManufacturerManufacturer part numberInternal part number
Connector, Molex KK 254, female, 4 pins2X1, X3Molex22013047
Connector, Molex KK 254, female, 4 pins1X2Molex22013047CON4
Cable, 4 x 0.25 mm²1mW1CablesCoABC123CAB1
Wire, 0.25 mm², BK2mW2WiresCoW1-BKWIRE2
Wire, 0.25 mm², RD1mW2WiresCoW1-RDWIRE3
Wire, 0.25 mm², YE1mW2WiresCoW1-YEWIRE1
\ No newline at end of file +

Bill of Materials

ItemQtyUnitDesignatorsManufacturerManufacturer part numberInternal part number
Connector, Molex KK 254, female, 4 pins2X1, X3Molex22013047
Connector, Molex KK 254, female, 4 pins1X2Molex22013047CON4
Cable, 4 x 0.25 mm²1mW1CablesCoABC123CAB1
Wire, 0.25 mm², BK2mW2WiresCoW1-BKWIRE2
Wire, 0.25 mm², BN1mW1
Wire, 0.25 mm², OG1mW1
Wire, 0.25 mm², RD1mW1
Wire, 0.25 mm², RD1mW2WiresCoW1-RDWIRE3
Wire, 0.25 mm², YE1mW1
Wire, 0.25 mm², YE1mW2WiresCoW1-YEWIRE1
\ No newline at end of file diff --git a/tutorial/tutorial08.png b/tutorial/tutorial08.png index 3d68820723a6c40507c8e734a9f6f7f49892fb41..76a2ff698ce4e1fecfb1bea0ddfeadef18c7c853 100644 GIT binary patch literal 128248 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 z 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%0AqkDq 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�+ch~ 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�dh4=!=N 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

+x=&>CrK0{ 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 - - - - -%3 - + + + + X1 - -X1 - -Molex - -MPN: 22013047 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 + +X1 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 W1 - - -W1 - -CablesCo -MPN: ABC123 -IPN: CAB1 - -4x - -0.25 mm² - -1 m -  -X1:1 -BN -X2:1 - - - -X1:2 -RD -X2:2 - - - -X1:3 -OG -X2:3 - - - -X1:4 -YE -X2:4 - - - -  + + +W1 + + +CablesCo + +MPN: ABC123 +IPN: CAB1 + +4x + +0.25 mm² + +1 m +  +X1:1 +BN +X2:1 + + + +X1:2 +RD +X2:2 + + + +X1:3 +OG +X2:3 + + + +X1:4 +YE +X2:4 + + + +  X1:e--W1:w - - - + + + X1:e--W1:w - - - + + + X1:e--W1:w - - - + + + X1:e--W1:w - - - + + + W2 - - -W2 - -4x - -0.25 mm² - -1 m -  -X1:1 -YE -X3:1 - - - -WiresCo -MPN: W1-YE -IPN: WIRE1 -X1:2 -BK -X3:2 - - - -WiresCo -MPN: W1-BK -IPN: WIRE2 -X1:3 -BK -X3:3 - - - -WiresCo -MPN: W1-BK -IPN: WIRE2 -X1:4 -RD -X3:4 - - - -WiresCo -MPN: W1-RD -IPN: WIRE3 -  + + +W2 + +4x + +0.25 mm² + +1 m +  +X1:1 +YE +X3:1 + + + +WiresCo +MPN: W1-YE +IPN: WIRE1 +X1:2 +BK +X3:2 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:3 +BK +X3:3 + + + +WiresCo +MPN: W1-BK +IPN: WIRE2 +X1:4 +RD +X3:4 + + + +WiresCo +MPN: W1-RD +IPN: WIRE3 +  X1:e--W2:w - - - + + + X1:e--W2:w - - - + + + X1:e--W2:w - - - + + + X1:e--W2:w - - - + + + X2 - -X2 - -Molex - -MPN: 22013047 - -IPN: CON4 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 + +X2 + +Molex + +MPN: 22013047 + +IPN: CON4 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 X3 - -X3 - -Molex - -MPN: 22013047 - -Molex KK 254 - -female - -4-pin - -1 - -2 - -3 - -4 + +X3 + +Molex + +MPN: 22013047 + +Molex KK 254 + +female + +4-pin + +1 + +2 + +3 + +4 W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W1:e--X2:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + W2:e--X3:w - - - + + + From 4796c7cc9748d3208e4d5ed0cd3189b1c4500453 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 2 Jul 2020 19:45:28 +0200 Subject: [PATCH 15/48] Fix bug of non-bundle wires appearing in BOM --- src/wireviz/Harness.py | 2 +- tutorial/tutorial08.bom.tsv | 4 ---- tutorial/tutorial08.html | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index c0df0aa..4d1693b 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -350,7 +350,7 @@ class Harness: # bundles (ignores wirecount) wirelist = [] # list all cables again, since bundles are represented as wires internally, with the category='bundle' set - bundle_group = lambda b: (b.type, b.gauge, b.gauge_unit, b.length) # TODO: Why is b.length included? + bundle_group = lambda b: (b.category, b.type, b.gauge, b.gauge_unit, b.length) # TODO: Why is b.length included? groups = Counter([bundle_group(v) for v in self.cables.values() if v.category == 'bundle']) for group in groups: items = {k: v for k, v in self.cables.items() if bundle_group(v) == group} diff --git a/tutorial/tutorial08.bom.tsv b/tutorial/tutorial08.bom.tsv index 01e17ba..682dd4a 100644 --- a/tutorial/tutorial08.bom.tsv +++ b/tutorial/tutorial08.bom.tsv @@ -3,9 +3,5 @@ Connector, Molex KK 254, female, 4 pins 2 X1, X3 Molex 22013047 Connector, Molex KK 254, female, 4 pins 1 X2 Molex 22013047 CON4 Cable, 4 x 0.25 mm² 1 m W1 CablesCo ABC123 CAB1 Wire, 0.25 mm², BK 2 m W2 WiresCo W1-BK WIRE2 -Wire, 0.25 mm², BN 1 m W1 -Wire, 0.25 mm², OG 1 m W1 -Wire, 0.25 mm², RD 1 m W1 Wire, 0.25 mm², RD 1 m W2 WiresCo W1-RD WIRE3 -Wire, 0.25 mm², YE 1 m W1 Wire, 0.25 mm², YE 1 m W2 WiresCo W1-YE WIRE1 diff --git a/tutorial/tutorial08.html b/tutorial/tutorial08.html index 20615ca..a031af8 100644 --- a/tutorial/tutorial08.html +++ b/tutorial/tutorial08.html @@ -292,4 +292,4 @@ -

Bill of Materials

ItemQtyUnitDesignatorsManufacturerManufacturer part numberInternal part number
Connector, Molex KK 254, female, 4 pins2X1, X3Molex22013047
Connector, Molex KK 254, female, 4 pins1X2Molex22013047CON4
Cable, 4 x 0.25 mm²1mW1CablesCoABC123CAB1
Wire, 0.25 mm², BK2mW2WiresCoW1-BKWIRE2
Wire, 0.25 mm², BN1mW1
Wire, 0.25 mm², OG1mW1
Wire, 0.25 mm², RD1mW1
Wire, 0.25 mm², RD1mW2WiresCoW1-RDWIRE3
Wire, 0.25 mm², YE1mW1
Wire, 0.25 mm², YE1mW2WiresCoW1-YEWIRE1
\ No newline at end of file +

Bill of Materials

ItemQtyUnitDesignatorsManufacturerManufacturer part numberInternal part number
Connector, Molex KK 254, female, 4 pins2X1, X3Molex22013047
Connector, Molex KK 254, female, 4 pins1X2Molex22013047CON4
Cable, 4 x 0.25 mm²1mW1CablesCoABC123CAB1
Wire, 0.25 mm², BK2mW2WiresCoW1-BKWIRE2
Wire, 0.25 mm², RD1mW2WiresCoW1-RDWIRE3
Wire, 0.25 mm², YE1mW2WiresCoW1-YEWIRE1
\ No newline at end of file From 407a9235b7c58dfd1f07262c9db8981502c6b97d Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 4 Jul 2020 12:37:32 +0200 Subject: [PATCH 16/48] Simplify and fix bug in BOM generation --- src/wireviz/Harness.py | 47 +++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 4d1693b..95775fe 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -311,23 +311,19 @@ class Harness: name = f'Connector{conn_type}{conn_subtype}{conn_pincount}{conn_color}' item = {'item': name, 'qty': len(designators), 'unit': '', 'designators': designators if shared.category != 'ferrule' else ''} - if shared.manufacturer is not None: # set manufacturer only if it exists - item['manufacturer'] = shared.manufacturer - if shared.manufacturer_part_number is not None: # set part number only if it exists - item['manufacturer part number'] = shared.manufacturer_part_number - if shared.internal_part_number is not None: # set part number only if it exists - item['internal part number'] = shared.internal_part_number + # if shared.manufacturer is not None: # set manufacturer only if it exists + item['manufacturer'] = shared.manufacturer + # if shared.manufacturer_part_number is not None: # set part number only if it exists + item['manufacturer part number'] = shared.manufacturer_part_number + # if shared.internal_part_number is not None: # set part number only if it exists + item['internal part number'] = shared.internal_part_number bom_connectors.append(item) bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_connectors) # cables # TODO: If category can have other non-empty values than 'bundle', maybe it should be part of item name? # Otherwise, it can be removed from the cable_group because it will allways be empty. - cable_group = lambda c: (c.category, c.type, c.gauge, c.gauge_unit, c.wirecount, c.shield, - c.manufacturer if not isinstance(c.manufacturer, list) else None, - c.manufacturer_part_number if not isinstance(c.manufacturer_part_number, list) else None, - c.internal_part_number if not isinstance(c.manufacturer_part_number, list) else None - ) + cable_group = lambda c: (c.category, c.type, c.gauge, c.gauge_unit, c.wirecount, c.shield, c.manufacturer, c.manufacturer_part_number, c.internal_part_number) groups = Counter([cable_group(v) for v in self.cables.values() if v.category != 'bundle']) for group in groups: items = {k: v for k, v in self.cables.items() if cable_group(v) == group} @@ -340,12 +336,10 @@ class Harness: shield_name = ' shielded' if shared.shield else '' name = f'Cable{cable_type}, {shared.wirecount}{gauge_name}{shield_name}' item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} - if shared.manufacturer is not None: # set manufacturer only if it exists - item['manufacturer'] = shared.manufacturer - if shared.manufacturer_part_number is not None: # set part number only if it exists - item['manufacturer part number'] = shared.manufacturer_part_number - if shared.internal_part_number is not None: # set part number only if it exists - item['internal part number'] = shared.internal_part_number + # TODO: merge following 3 lines into line above + item['manufacturer'] = shared.manufacturer + item['manufacturer part number'] = shared.manufacturer_part_number + item['internal part number'] = shared.internal_part_number bom_cables.append(item) # bundles (ignores wirecount) wirelist = [] @@ -359,6 +353,7 @@ class Harness: # add each wire from each bundle to the wirelist for index, color in enumerate(bundle.colors, 0): wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name} + # TODO: merge following 3 lines into line above wireinfo['manufacturer'] = bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None wireinfo['manufacturer part number'] = bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None wireinfo['internal part number'] = bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None @@ -379,12 +374,10 @@ class Harness: gauge_color = f', {shared["color"]}' if 'color' in shared != '' else '' name = f'Wire{wire_type}{gauge_name}{gauge_color}' item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} - if shared['manufacturer'] is not None: # set manufacturer only if it exists - item['manufacturer'] = shared['manufacturer'] - if shared['manufacturer part number'] is not None: # set part number only if it exists - item['manufacturer part number'] = shared['manufacturer part number'] - if shared['internal part number'] is not None: # set part number only if it exists - item['internal part number'] = shared['internal part number'] + # TODO: merge following 3 lines into line above + item['manufacturer'] = shared['manufacturer'] + item['manufacturer part number'] = shared['manufacturer part number'] + item['internal part number'] = shared['internal part number'] bom_cables.append(item) bom_cables = sorted(bom_cables, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_cables) @@ -392,10 +385,10 @@ class Harness: def bom_list(self): bom = self.bom() - keys = ['item', 'qty', 'unit', 'designators'] + keys = ['item', 'qty', 'unit', 'designators'] # these BOM columns will always be included # check if any optional fields are set and add to keys if they are - for fieldname in ["manufacturer", "manufacturer part number", "internal part number"]: - if any(fieldname in x for x in bom): + for fieldname in ['manufacturer', 'manufacturer part number', 'internal part number']: # these BOM columns will only be included if at least one BOM item actually uses them + if any(fieldname in x and x.get(fieldname, None) for x in bom): keys.append(fieldname) bom_list = [] bom_list.append([k.capitalize() for k in keys]) # create header row with keys @@ -404,5 +397,7 @@ class Harness: for i, subitem in enumerate(item_list): if isinstance(subitem, List): # convert any lists into comma separated strings item_list[i] = ', '.join(subitem) + if subitem is None: # if a field is missing for some (but not all) BOM items + item_list[i] = '' bom_list.append(item_list) return bom_list From 84c10e2c1a0e7ad6214a0d692b242ea4f2246aa7 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 4 Jul 2020 12:50:45 +0200 Subject: [PATCH 17/48] Clean up code --- src/wireviz/Harness.py | 49 +++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 95775fe..9b9642e 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -309,14 +309,8 @@ class Harness: conn_pincount = f', {shared.pincount} pins' if shared.category != 'ferrule' else '' conn_color = f', {shared.color}' if shared.color else '' name = f'Connector{conn_type}{conn_subtype}{conn_pincount}{conn_color}' - item = {'item': name, 'qty': len(designators), 'unit': '', - 'designators': designators if shared.category != 'ferrule' else ''} - # if shared.manufacturer is not None: # set manufacturer only if it exists - item['manufacturer'] = shared.manufacturer - # if shared.manufacturer_part_number is not None: # set part number only if it exists - item['manufacturer part number'] = shared.manufacturer_part_number - # if shared.internal_part_number is not None: # set part number only if it exists - item['internal part number'] = shared.internal_part_number + item = {'item': name, 'qty': len(designators), 'unit': '', 'designators': designators if shared.category != 'ferrule' else '', + 'manufacturer': shared.manufacturer, 'manufacturer part number': shared.manufacturer_part_number, 'internal part number': shared.internal_part_number} bom_connectors.append(item) bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom.extend(bom_connectors) @@ -332,19 +326,16 @@ class Harness: designators.sort() total_length = sum(i.length for i in items.values()) cable_type = f', {shared.type}' if shared.type else '' - gauge_name = f' x {shared.gauge} {shared.gauge_unit}'if shared.gauge else ' wires' + gauge_name = f' x {shared.gauge} {shared.gauge_unit}' if shared.gauge else ' wires' shield_name = ' shielded' if shared.shield else '' name = f'Cable{cable_type}, {shared.wirecount}{gauge_name}{shield_name}' - item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} - # TODO: merge following 3 lines into line above - item['manufacturer'] = shared.manufacturer - item['manufacturer part number'] = shared.manufacturer_part_number - item['internal part number'] = shared.internal_part_number + item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators, + 'manufacturer': shared.manufacturer, 'manufacturer part number': shared.manufacturer_part_number, 'internal part number': shared.internal_part_number} bom_cables.append(item) # bundles (ignores wirecount) wirelist = [] # list all cables again, since bundles are represented as wires internally, with the category='bundle' set - bundle_group = lambda b: (b.category, b.type, b.gauge, b.gauge_unit, b.length) # TODO: Why is b.length included? + bundle_group = lambda b: (b.category, b.type, b.gauge, b.gauge_unit, b.length) groups = Counter([bundle_group(v) for v in self.cables.values() if v.category == 'bundle']) for group in groups: items = {k: v for k, v in self.cables.items() if bundle_group(v) == group} @@ -352,42 +343,36 @@ class Harness: for bundle in items.values(): # add each wire from each bundle to the wirelist for index, color in enumerate(bundle.colors, 0): - wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name} - # TODO: merge following 3 lines into line above - wireinfo['manufacturer'] = bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None - wireinfo['manufacturer part number'] = bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None - wireinfo['internal part number'] = bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None + wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name, + 'manufacturer': bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None, + 'manufacturer part number': bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None, + 'internal part number': bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None} wirelist.append(wireinfo) - # join similar wires from all the bundles to a single BOM item + # join similar wires from all the bundles to a single BOM item wire_group = lambda w: (w.get('type', None), w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number']) groups = Counter([wire_group(v) for v in wirelist]) for group in groups: items = [v for v in wirelist if wire_group(v) == group] shared = items[0] designators = [i['designator'] for i in items] - # remove duplicates - designators = list(dict.fromkeys(designators)) + designators = list(dict.fromkeys(designators)) # remove duplicates designators.sort() total_length = sum(i['length'] for i in items) wire_type = f', {shared["type"]}' if 'type' in shared else '' gauge_name = f', {shared["gauge"]} {shared["gauge_unit"]}' if 'gauge' in shared else '' gauge_color = f', {shared["color"]}' if 'color' in shared != '' else '' name = f'Wire{wire_type}{gauge_name}{gauge_color}' - item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} - # TODO: merge following 3 lines into line above - item['manufacturer'] = shared['manufacturer'] - item['manufacturer part number'] = shared['manufacturer part number'] - item['internal part number'] = shared['internal part number'] + item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators, + 'manufacturer': shared['manufacturer'], 'manufacturer part number': shared['manufacturer part number'], 'internal part number': shared['internal part number']} bom_cables.append(item) - bom_cables = sorted(bom_cables, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 + bom_cables = sorted(bom_cables, key=lambda k: k['item']) # sort list of dicts by their values (https://stackoverflow.com/a/73050) bom.extend(bom_cables) return bom def bom_list(self): bom = self.bom() keys = ['item', 'qty', 'unit', 'designators'] # these BOM columns will always be included - # check if any optional fields are set and add to keys if they are - for fieldname in ['manufacturer', 'manufacturer part number', 'internal part number']: # these BOM columns will only be included if at least one BOM item actually uses them + for fieldname in ['manufacturer', 'manufacturer part number', 'internal part number']: # these optional BOM columns will only be included if at least one BOM item actually uses them if any(fieldname in x and x.get(fieldname, None) for x in bom): keys.append(fieldname) bom_list = [] @@ -397,7 +382,7 @@ class Harness: for i, subitem in enumerate(item_list): if isinstance(subitem, List): # convert any lists into comma separated strings item_list[i] = ', '.join(subitem) - if subitem is None: # if a field is missing for some (but not all) BOM items + if subitem is None: # if a field is missing for some (but not all) BOM items item_list[i] = '' bom_list.append(item_list) return bom_list From b2387378c3eeef166de911b32b0c73f0a5470a62 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 4 Jul 2020 13:11:53 +0200 Subject: [PATCH 18/48] Make parts of BOM code more pythonic --- src/wireviz/Harness.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 9b9642e..03336dd 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -343,11 +343,10 @@ class Harness: for bundle in items.values(): # add each wire from each bundle to the wirelist for index, color in enumerate(bundle.colors, 0): - wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name, - 'manufacturer': bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None, - 'manufacturer part number': bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None, - 'internal part number': bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None} - wirelist.append(wireinfo) + wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name, + 'manufacturer': bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None, + 'manufacturer part number': bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None, + 'internal part number': bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None}) # join similar wires from all the bundles to a single BOM item wire_group = lambda w: (w.get('type', None), w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number']) groups = Counter([wire_group(v) for v in wirelist]) @@ -379,10 +378,7 @@ class Harness: bom_list.append([k.capitalize() for k in keys]) # create header row with keys for item in bom: item_list = [item.get(key, '') for key in keys] # fill missing values with blanks - for i, subitem in enumerate(item_list): - if isinstance(subitem, List): # convert any lists into comma separated strings - item_list[i] = ', '.join(subitem) - if subitem is None: # if a field is missing for some (but not all) BOM items - item_list[i] = '' + item_list = [', '.join(subitem) if isinstance(subitem, List) else subitem for subitem in item_list] # convert any lists into comma separated strings + item_list = ['' if subitem is None else subitem for subitem in item_list] # if a field is missing for some (but not all) BOM items bom_list.append(item_list) return bom_list From 8b067e58738c98ee432b815f7fc025d0a58fbbbf Mon Sep 17 00:00:00 2001 From: Greg Stein Date: Sat, 4 Jul 2020 09:52:15 -0500 Subject: [PATCH 19/48] Update requirements.txt (#58) Include graphviz and pyyaml in requirements.txt (the graphviz/dot commands are needed at the OS level, but that can't be fixed here) Co-authored-by: Daniel Rojas --- requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index 9c558e3..d24fc95 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ . +graphviz +pyyaml From ebf1e5a6f2e949ca893ac2edf8be43d69c846a2a Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 4 Jul 2020 11:03:04 -0400 Subject: [PATCH 20/48] Add ability to export PNG data directly to other programs. (#55) --- src/wireviz/Harness.py | 9 +++++++++ src/wireviz/wireviz.py | 31 +++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 03336dd..eba63e2 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -255,6 +255,15 @@ class Harness: return dot + @property + def png(self): + from io import BytesIO + graph = self.create_graph() + data = BytesIO() + data.write(graph.pipe(format='png')) + data.seek(0) + return data.read() + def output(self, filename, directory='_output', view=False, cleanup=True, fmt='pdf', gen_bom=False): # graphical output graph = self.create_graph() diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 27d9d55..75dfd0c 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -4,6 +4,7 @@ import argparse import os import sys +from typing import Tuple import yaml @@ -14,7 +15,19 @@ if __name__ == '__main__': from wireviz.Harness import Harness -def parse(yaml_input, file_out=None, generate_bom=False): +def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, str, Tuple[str]) = None): + """ + Parses yaml input string and does the high-level harness conversion + + :param yaml_input: a string containing the yaml input data + :param file_out: + :param generate_bom: + :param return_types: if None, then returns None; if the value is a string, then a + corresponding data format will be returned; if the value is a tuple of strings, + then for every valid format in the `return_types` tuple, another return type + will be generated and returned in the same order; currently supports only 'png', + but could easily support other types + """ yaml_data = yaml.safe_load(yaml_input) @@ -180,7 +193,21 @@ def parse(yaml_input, file_out=None, generate_bom=False): else: raise Exception('Wrong number of connection parameters') - harness.output(filename=file_out, fmt=('png', 'svg'), gen_bom=generate_bom, view=False) + if file_out is not None: + harness.output(filename=file_out, fmt=('png', 'svg'), gen_bom=generate_bom, view=False) + + if return_types is not None: + # gather the harness data and return it as a single data type + if isinstance(return_types, str): + if return_types.lower() == 'png': + return harness.png + + else: + # gather the harness data and return it as a series of tuples + returns = [] + if 'png' in return_types: + returns.append(harness.png) + return tuple(returns) def parse_file(yaml_file, file_out=None, generate_bom=False): From 144c99e0216b7cd83988ccf2f636d8bbabd96692 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 4 Jul 2020 17:16:00 +0200 Subject: [PATCH 21/48] Refactor #55 --- src/wireviz/wireviz.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 75dfd0c..5f10dc8 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -197,17 +197,16 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st harness.output(filename=file_out, fmt=('png', 'svg'), gen_bom=generate_bom, view=False) if return_types is not None: - # gather the harness data and return it as a single data type - if isinstance(return_types, str): - if return_types.lower() == 'png': - return harness.png + returns = [] + if isinstance(return_types, str): # only one return type speficied + return_types = [return_types] - else: - # gather the harness data and return it as a series of tuples - returns = [] - if 'png' in return_types: - returns.append(harness.png) - return tuple(returns) + return_types = [t.lower() for t in return_types] + + if 'png' in return_types: + returns.append(harness.png) + + return tuple(returns) if len(returns) != 1 else returns def parse_file(yaml_file, file_out=None, generate_bom=False): From de1e45f72ba9215fa7177be2352066dbf37808ff Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 12:24:51 +0200 Subject: [PATCH 22/48] Fix bug in refactoring of #55, add SVG output option --- src/wireviz/Harness.py | 9 +++++++++ src/wireviz/wireviz.py | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index eba63e2..2e87edb 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -264,6 +264,15 @@ class Harness: data.seek(0) return data.read() + @property + def svg(self): + from io import BytesIO + graph = self.create_graph() + data = BytesIO() + data.write(graph.pipe(format='svg')) + data.seek(0) + return data.read() + def output(self, filename, directory='_output', view=False, cleanup=True, fmt='pdf', gen_bom=False): # graphical output graph = self.create_graph() diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 5f10dc8..465b389 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -205,8 +205,10 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st if 'png' in return_types: returns.append(harness.png) + if 'svg' in return_types: + returns.append(harness.svg) - return tuple(returns) if len(returns) != 1 else returns + return tuple(returns) if len(returns) != 1 else returns[0] def parse_file(yaml_file, file_out=None, generate_bom=False): From 4e9933f01dbd69566f142e8695fc30f3e00cb56c Mon Sep 17 00:00:00 2001 From: kvid Date: Sun, 5 Jul 2020 16:52:10 +0200 Subject: [PATCH 23/48] Simplify BOM code (#62) * Remove bundle grouping as it is not needed for the wire grouping Grouping the bundles has no purpose, as the same wires can be collected by just looping all bundles. * Allow one common value or list of values for each wire Allow one common value when they are equal for all wires, or a list of values to allow each wire a different value. * Fix the minor issues commented by the owner The owner review comments can be seen here: https://github.com/formatc1702/WireViz/pull/62 * Make grouping code more pythonic --- src/wireviz/Harness.py | 29 +++++++++++------------------ src/wireviz/wv_helper.py | 4 ++++ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 2e87edb..c92053e 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -4,7 +4,7 @@ from wireviz.DataClasses import Connector, Cable from graphviz import Graph from wireviz import wv_colors -from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, flatten2d +from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, flatten2d, index_if_list from collections import Counter from typing import List @@ -316,8 +316,7 @@ class Harness: bom_cables = [] # connectors connector_group = lambda c: (c.type, c.subtype, c.pincount, c.manufacturer, c.manufacturer_part_number, c.internal_part_number) - groups = Counter([connector_group(v) for v in self.connectors.values()]) - for group in groups: + for group in Counter([connector_group(v) for v in self.connectors.values()]): items = {k: v for k, v in self.connectors.items() if connector_group(v) == group} shared = next(iter(items.values())) designators = list(items.keys()) @@ -334,10 +333,9 @@ class Harness: bom.extend(bom_connectors) # cables # TODO: If category can have other non-empty values than 'bundle', maybe it should be part of item name? - # Otherwise, it can be removed from the cable_group because it will allways be empty. + # The category needs to be included in cable_group to keep the bundles excluded. cable_group = lambda c: (c.category, c.type, c.gauge, c.gauge_unit, c.wirecount, c.shield, c.manufacturer, c.manufacturer_part_number, c.internal_part_number) - groups = Counter([cable_group(v) for v in self.cables.values() if v.category != 'bundle']) - for group in groups: + for group in Counter([cable_group(v) for v in self.cables.values() if v.category != 'bundle']): items = {k: v for k, v in self.cables.items() if cable_group(v) == group} shared = next(iter(items.values())) designators = list(items.keys()) @@ -353,22 +351,17 @@ class Harness: # bundles (ignores wirecount) wirelist = [] # list all cables again, since bundles are represented as wires internally, with the category='bundle' set - bundle_group = lambda b: (b.category, b.type, b.gauge, b.gauge_unit, b.length) - groups = Counter([bundle_group(v) for v in self.cables.values() if v.category == 'bundle']) - for group in groups: - items = {k: v for k, v in self.cables.items() if bundle_group(v) == group} - shared = next(iter(items.values())) - for bundle in items.values(): + for bundle in self.cables.values(): + if bundle.category == 'bundle': # add each wire from each bundle to the wirelist for index, color in enumerate(bundle.colors, 0): - wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name, - 'manufacturer': bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None, - 'manufacturer part number': bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None, - 'internal part number': bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None}) + wirelist.append({'gauge': bundle.gauge, 'gauge_unit': bundle.gauge_unit, 'length': bundle.length, 'color': color, 'designator': bundle.name, + 'manufacturer': index_if_list(bundle.manufacturer, index), + 'manufacturer part number': index_if_list(bundle.manufacturer_part_number, index), + 'internal part number': index_if_list(bundle.internal_part_number, index)}) # join similar wires from all the bundles to a single BOM item wire_group = lambda w: (w.get('type', None), w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number']) - groups = Counter([wire_group(v) for v in wirelist]) - for group in groups: + for group in Counter([wire_group(v) for v in wirelist]): items = [v for v in wirelist if wire_group(v) == group] shared = items[0] designators = [i['designator'] for i in items] diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index 222fd74..69d6550 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -65,3 +65,7 @@ def tuplelist2tsv(inp, header=None): for row in inp: output = output + '\t'.join(str(item) for item in row) + '\n' return output + +# Return the value indexed if it is a list, or simply the value otherwise. +def index_if_list(value, index): + return value[index] if isinstance(value, list) else value From d4ac4da6511e1dc97af74ab04628e4c5f01c91ce Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 17:41:18 +0200 Subject: [PATCH 24/48] Implement line break parsing for some fields Implemented in `type`, `subtype`, `notes` fields --- src/wireviz/Harness.py | 17 ++++++++++------- src/wireviz/wv_helper.py | 9 +++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index c92053e..9f841d3 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -4,7 +4,7 @@ from wireviz.DataClasses import Connector, Cable from graphviz import Graph from wireviz import wv_colors -from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, flatten2d, index_if_list +from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, flatten2d, index_if_list, html_line_breaks, graphviz_line_breaks from collections import Counter from typing import List @@ -74,6 +74,8 @@ class Harness: infostring = f'{infostring}{attrib}, ' infostring = infostring[:-2] # remove trainling comma and space + infostring = html_line_breaks(infostring) + infostring_l = infostring if connector.ports_right else '' infostring_r = infostring if connector.ports_left else '' @@ -99,8 +101,8 @@ class Harness: f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else '', f'IPN: {connector.internal_part_number}' if connector.internal_part_number else ''] - attributes = [connector.type, - connector.subtype, + attributes = [graphviz_line_breaks(connector.type), + graphviz_line_breaks(connector.subtype), f'{connector.pincount}-pin' if connector.show_pincount else''] pinouts = [[], [], []] for pinnumber, pinname in zip(connector.pinnumbers, connector.pinout): @@ -111,7 +113,8 @@ class Harness: pinouts[0].append(f'{pinnumber}') if connector.ports_right: pinouts[2].append(f'{pinnumber}') - label = [connector.name if connector.show_name else '', identification, attributes, pinouts, connector.notes] + print(attributes) + label = [connector.name if connector.show_name else '', identification, attributes, pinouts, graphviz_line_breaks(connector.notes)] dot.node(key, label=nested(label)) if len(connector.loops) > 0: @@ -145,7 +148,7 @@ class Harness: f'IPN: {cable.internal_part_number}' if (cable.internal_part_number and not isinstance(cable.internal_part_number, list)) else ''] identification = list(filter(None, identification)) - attributes = [f'{cable.type}' if cable.type else '', + attributes = [html_line_breaks(cable.type) if cable.type else '', f'{len(cable.colors)}x' if cable.show_wirecount else '', f'{cable.gauge} {cable.gauge_unit}{awg_fmt}' if cable.gauge else '', '+ S' if cable.shield else '', @@ -166,7 +169,7 @@ class Harness: html = f'{html}
' # end identification row html = f'{html}' # attribute row for attrib in attributes: - html = f'{html}{attrib}' + html = f'{html}{attrib}' html = f'{html}' # attribute row html = f'{html}' # name+attributes table @@ -217,7 +220,7 @@ class Harness: html = f'{html}' # main table if cable.notes: - html = f'{html}{cable.notes}' # notes table + html = f'{html}{html_line_breaks(cable.notes)}' # notes table html = f'{html} ' # spacer at the end html = f'{html}' # main table diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index 69d6550..387e38c 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -69,3 +69,12 @@ def tuplelist2tsv(inp, header=None): # Return the value indexed if it is a list, or simply the value otherwise. def index_if_list(value, index): return value[index] if isinstance(value, list) else value + +def html_line_breaks(inp): + return inp.replace('\n', '
') if isinstance(inp, str) else inp + +def graphviz_line_breaks(inp): + return inp.replace('\n', '\\l') if isinstance(inp, str) else inp # \l generates left-aligned new lines. http://www.graphviz.org/doc/info/attrs.html#k:escString + +def remove_line_breaks(inp): + return inp.replace('\n', ' ') From 46ed2418b4ca274e6cd253479336c2ecfe5bf1fd Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 18:00:26 +0200 Subject: [PATCH 25/48] Remove any newlines in fields for BOM generation --- src/wireviz/Harness.py | 11 +++++------ src/wireviz/wv_helper.py | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 9f841d3..e68b795 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -4,7 +4,7 @@ from wireviz.DataClasses import Connector, Cable from graphviz import Graph from wireviz import wv_colors -from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, flatten2d, index_if_list, html_line_breaks, graphviz_line_breaks +from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, flatten2d, index_if_list, html_line_breaks, graphviz_line_breaks, remove_line_breaks from collections import Counter from typing import List @@ -113,7 +113,6 @@ class Harness: pinouts[0].append(f'{pinnumber}') if connector.ports_right: pinouts[2].append(f'{pinnumber}') - print(attributes) label = [connector.name if connector.show_name else '', identification, attributes, pinouts, graphviz_line_breaks(connector.notes)] dot.node(key, label=nested(label)) @@ -324,8 +323,8 @@ class Harness: shared = next(iter(items.values())) designators = list(items.keys()) designators.sort() - conn_type = f', {shared.type}' if shared.type else '' - conn_subtype = f', {shared.subtype}' if shared.subtype else '' + conn_type = f', {remove_line_breaks(shared.type)}' if shared.type else '' + conn_subtype = f', {remove_line_breaks(shared.subtype)}' if shared.subtype else '' conn_pincount = f', {shared.pincount} pins' if shared.category != 'ferrule' else '' conn_color = f', {shared.color}' if shared.color else '' name = f'Connector{conn_type}{conn_subtype}{conn_pincount}{conn_color}' @@ -344,7 +343,7 @@ class Harness: designators = list(items.keys()) designators.sort() total_length = sum(i.length for i in items.values()) - cable_type = f', {shared.type}' if shared.type else '' + cable_type = f', {remove_line_breaks(shared.type)}' if shared.type else '' gauge_name = f' x {shared.gauge} {shared.gauge_unit}' if shared.gauge else ' wires' shield_name = ' shielded' if shared.shield else '' name = f'Cable{cable_type}, {shared.wirecount}{gauge_name}{shield_name}' @@ -371,7 +370,7 @@ class Harness: designators = list(dict.fromkeys(designators)) # remove duplicates designators.sort() total_length = sum(i['length'] for i in items) - wire_type = f', {shared["type"]}' if 'type' in shared else '' + wire_type = f', {remove_line_breaks(shared["type"])}' if 'type' in shared else '' gauge_name = f', {shared["gauge"]} {shared["gauge_unit"]}' if 'gauge' in shared else '' gauge_color = f', {shared["color"]}' if 'color' in shared != '' else '' name = f'Wire{wire_type}{gauge_name}{gauge_color}' diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index 387e38c..f5293ec 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -77,4 +77,4 @@ def graphviz_line_breaks(inp): return inp.replace('\n', '\\l') if isinstance(inp, str) else inp # \l generates left-aligned new lines. http://www.graphviz.org/doc/info/attrs.html#k:escString def remove_line_breaks(inp): - return inp.replace('\n', ' ') + return inp.replace('\n', ' ').rstrip() if isinstance(inp, str) else inp From 54f114e59247961e0a44fa5143e0a7a368728581 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 19:01:42 +0200 Subject: [PATCH 26/48] Refactor ferrule GraphViz code generation Cleaner code, better graphical output, more flexible (splices look as good as ferrules) --- src/wireviz/Harness.py | 47 +++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index c92053e..d47aa04 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -59,40 +59,27 @@ class Harness: for key, connector in self.connectors.items(): if connector.category == 'ferrule': - subtype = f', {connector.subtype}' if connector.subtype else '' - color = wv_colors.translate_color(connector.color, self.color_mode) if connector.color else '' - infostring = f'{connector.type}{subtype} {color}' - # id = identification - identification = [connector.manufacturer, - f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else '', - f'IPN: {connector.internal_part_number}' if connector.internal_part_number else ''] - identification = list(filter(None, identification)) - if(len(identification) > 0): - infostring = f'{infostring}
' - for attrib in identification: - infostring = f'{infostring}{attrib}, ' - infostring = infostring[:-2] # remove trainling comma and space + rows = [[connector.type, connector.subtype, connector.color, '' if connector.color else None], + [connector.manufacturer, + f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else None, + f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None]] + rows = [list(filter(None, row)) for row in rows] # remove missing attributes - infostring_l = infostring if connector.ports_right else '' - infostring_r = infostring if connector.ports_left else '' + html = '' + for row in rows: + if len(row) > 0: + html = f'{html}' + html = f'{html}
' + for cell in row: + html = f'{html}' + html = f'{html}
{cell}
' - # INFO: Leaving this one as a string.format form because f-strings do not work well with triple quotes - colorbar = f'' if connector.color else '' - dot.node(key, shape='none', - style='filled', - margin='0', - orientation='0' if connector.ports_left else '180', - label='''< + if connector.color: # add color bar next to color info, if present + colorbar = f'' + html = html.replace('', colorbar) - - - {colorbar} - -
{infostring_l} {infostring_r}
- - - >'''.format(infostring_l=infostring_l, infostring_r=infostring_r, colorbar=colorbar)) + dot.node(key, label=f'<{html}>', shape='none', margin='0', style='filled', fillcolor='white') else: # not a ferrule identification = [connector.manufacturer, From 981b585540cd1f266a6a70f92bc707dd4a541e81 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 19:02:03 +0200 Subject: [PATCH 27/48] Fine-tune examples including ferrules --- examples/demo02.yml | 1 + tutorial/tutorial06.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/demo02.yml b/examples/demo02.yml index 00ee554..f03e7a2 100644 --- a/examples/demo02.yml +++ b/examples/demo02.yml @@ -13,6 +13,7 @@ ferrules: ferrule_crimp: type: Crimp ferrule subtype: 0.25 mm² + color: YE connectors: X1: diff --git a/tutorial/tutorial06.yml b/tutorial/tutorial06.yml index f69499c..7ff042f 100644 --- a/tutorial/tutorial06.yml +++ b/tutorial/tutorial06.yml @@ -5,7 +5,7 @@ connectors: subtype: female F_10_1: # manually define a ferrule (with unique designator) category: ferrule - type: Ferrule, crimp + type: Crimp ferrule subtype: 1.0 mm² color: YE From 501303cbee1e617fc07ba60e0f8c2bdec55f2058 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 19:54:14 +0200 Subject: [PATCH 28/48] Implement line break parsing for ferrules --- src/wireviz/Harness.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 1d5a79c..37a8043 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -60,10 +60,11 @@ class Harness: for key, connector in self.connectors.items(): if connector.category == 'ferrule': - rows = [[connector.type, connector.subtype, connector.color, '' if connector.color else None], + rows = [[html_line_breaks(connector.type), html_line_breaks(connector.subtype), connector.color, '' if connector.color else None], [connector.manufacturer, f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else None, - f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None]] + f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None], + [html_line_breaks(connector.notes)]] rows = [list(filter(None, row)) for row in rows] # remove missing attributes html = '' @@ -71,13 +72,13 @@ class Harness: if len(row) > 0: html = f'{html}' html = f'{html}
' for cell in row: - html = f'{html}' + html = f'{html}' html = f'{html}
{cell}{cell}
' if connector.color: # add color bar next to color info, if present - colorbar = f'' - html = html.replace('', colorbar) + colorbar = f' bgcolor="{wv_colors.translate_color(connector.color, "HEX")}" width="4">' # leave out ' tag + html = html.replace('>', colorbar) dot.node(key, label=f'<{html}>', shape='none', margin='0', style='filled', fillcolor='white') From 0252476248d28035b121c00a0da8ce29dd9f9dfd Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 20:07:46 +0200 Subject: [PATCH 29/48] Fix bug in bundle wire BOM generation --- src/wireviz/Harness.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 37a8043..bbd1034 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -343,7 +343,7 @@ class Harness: if bundle.category == 'bundle': # add each wire from each bundle to the wirelist for index, color in enumerate(bundle.colors, 0): - wirelist.append({'gauge': bundle.gauge, 'gauge_unit': bundle.gauge_unit, 'length': bundle.length, 'color': color, 'designator': bundle.name, + wirelist.append({'type': bundle.type, 'gauge': bundle.gauge, 'gauge_unit': bundle.gauge_unit, 'length': bundle.length, 'color': color, 'designator': bundle.name, 'manufacturer': index_if_list(bundle.manufacturer, index), 'manufacturer part number': index_if_list(bundle.manufacturer_part_number, index), 'internal part number': index_if_list(bundle.internal_part_number, index)}) @@ -356,8 +356,8 @@ class Harness: designators = list(dict.fromkeys(designators)) # remove duplicates designators.sort() total_length = sum(i['length'] for i in items) - wire_type = f', {remove_line_breaks(shared["type"])}' if 'type' in shared else '' - gauge_name = f', {shared["gauge"]} {shared["gauge_unit"]}' if 'gauge' in shared else '' + wire_type = f', {remove_line_breaks(shared["type"])}' if shared.get('type', None) else '' + gauge_name = f', {shared["gauge"]} {shared["gauge_unit"]}' if shared.get('gauge', None) else '' gauge_color = f', {shared["color"]}' if 'color' in shared != '' else '' name = f'Wire{wire_type}{gauge_name}{gauge_color}' item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators, From e1e665583f3c8378df995e7e351b1fb13946cd59 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 20:36:02 +0200 Subject: [PATCH 30/48] Outsource nested HTML table creation to helper function --- src/wireviz/Harness.py | 11 ++--------- src/wireviz/wv_helper.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index bbd1034..394640a 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -4,7 +4,7 @@ from wireviz.DataClasses import Connector, Cable from graphviz import Graph from wireviz import wv_colors -from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, flatten2d, index_if_list, html_line_breaks, graphviz_line_breaks, remove_line_breaks +from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, nested_html_table, flatten2d, index_if_list, html_line_breaks, graphviz_line_breaks, remove_line_breaks from collections import Counter from typing import List @@ -67,14 +67,7 @@ class Harness: [html_line_breaks(connector.notes)]] rows = [list(filter(None, row)) for row in rows] # remove missing attributes - html = '' - for row in rows: - if len(row) > 0: - html = f'{html}' - html = f'{html}
' - for cell in row: - html = f'{html}' - html = f'{html}
{cell}
' + html = nested_html_table(rows) if connector.color: # add color bar next to color info, if present colorbar = f' bgcolor="{wv_colors.translate_color(connector.color, "HEX")}" width="4">' # leave out ' tag diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index f5293ec..83ee46e 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -44,6 +44,20 @@ def nested(inp): l.append(str(x)) return '|'.join(l) +def nested_html_table(rows): + # input: list of lists + # output: a parent table with one child table per parent list item + # purpose: create the appearance of one table, where cell widths are independent between rows + html = '' + for row in rows: + if len(row) > 0: + html = f'{html}' + html = f'{html}
' + for cell in row: + html = f'{html}' + html = f'{html}
{cell}
' + return html + def int2tuple(inp): if isinstance(inp, tuple): From 6a2924fa1262fc73360a21a4584669c2ae067173 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 9 Jul 2020 18:10:38 +0200 Subject: [PATCH 31/48] Check for duplicate pin numbers and raise an exception Closes #72. --- src/wireviz/DataClasses.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/wireviz/DataClasses.py b/src/wireviz/DataClasses.py index 52ff983..4469417 100644 --- a/src/wireviz/DataClasses.py +++ b/src/wireviz/DataClasses.py @@ -51,6 +51,9 @@ class Connector: if not self.pinout: self.pinout = [''] * self.pincount + if len(self.pinnumbers) != len(set(self.pinnumbers)): + raise Exception('Pin numbers are not unique') + def loop(self, from_pin, to_pin): self.loops.append((from_pin, to_pin)) if self.hide_disconnected_pins: From 8f5b1aaf16d1d1d0a34b50b04e79c0575d8d8225 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 9 Jul 2020 19:21:53 +0200 Subject: [PATCH 32/48] Allow using connector pin names to define connections Pin names from pinout list can now be used in addition to pin numbers when defining connections, provided the identifier is unambiguous. Closes #71. --- src/wireviz/Harness.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 394640a..bcc3d28 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -26,6 +26,30 @@ class Harness: self.connectors[connector_name].loop(from_pin, to_pin) def connect(self, from_name, from_pin, via_name, via_pin, to_name, to_pin): + + for (name, pin) in zip([from_name, to_name], [from_pin, to_pin]): # check from and to connectors + if name is not None and name in self.connectors: + connector = self.connectors[name] + if pin in connector.pinnumbers and pin in connector.pinout: + if connector.pinnumbers.index(pin) == connector.pinout.index(pin): + # TODO: Maybe issue a warning? It's not worthy of an exception if it's unambiguous, but maybe risky? + pass + else: + raise Exception(f'{name}:{pin} is defined both in pinout and pinnumbers, for different pins.') + if pin in connector.pinout: + if connector.pinout.count(pin) > 1: + raise Exception(f'{name}:{pin} is defined more than once.') + else: + index = connector.pinout.index(pin) + pin = connector.pinnumbers[index] # map pin name to pin number + if name == from_name: + from_pin = pin + if name == to_name: + to_pin = pin + # TODO: what happens with loops? + if not pin in connector.pinnumbers: + raise Exception(f'{name}:{pin} not found.') + self.cables[via_name].connect(from_name, from_pin, via_pin, to_name, to_pin) if from_name in self.connectors: self.connectors[from_name].activate_pin(from_pin) From b4791900f2af2efbf628a973ff816d5c447bffa8 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 9 Jul 2020 21:26:27 +0200 Subject: [PATCH 33/48] Make connecting components together easier and more flexible Closes #67. - Allow defining arbitrarily long lists of alternating connectors and cables in a connection set. - Start work towards removing 'ferrules' as special case, merging them with normal connectors - Stramline auto-generation of simple, one pin connectors (ferrules, wire splices, ...) --- src/wireviz/DataClasses.py | 1 + src/wireviz/wireviz.py | 218 +++++++++++++++---------------------- src/wireviz/wv_helper.py | 29 +++++ 3 files changed, 115 insertions(+), 133 deletions(-) diff --git a/src/wireviz/DataClasses.py b/src/wireviz/DataClasses.py index 4469417..f481d28 100644 --- a/src/wireviz/DataClasses.py +++ b/src/wireviz/DataClasses.py @@ -24,6 +24,7 @@ class Connector: show_name: bool = True show_pincount: bool = True hide_disconnected_pins: bool = False + autogenerate: bool = False def __post_init__(self): self.ports_left = False diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 465b389..84fb182 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -13,6 +13,7 @@ if __name__ == '__main__': from wireviz.Harness import Harness +from wireviz.wv_helper import expand def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, str, Tuple[str]) = None): @@ -31,40 +32,6 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st yaml_data = yaml.safe_load(yaml_input) - def expand(yaml_data): - # yaml_data can be: - # - a singleton (normally str or int) - # - a list of str or int - # if str is of the format '#-#', it is treated as a range (inclusive) and expanded - output = [] - if not isinstance(yaml_data, list): - yaml_data = [yaml_data] - for e in yaml_data: - e = str(e) - if '-' in e: # list of pins - a, b = tuple(map(int, e.split('-'))) - if a < b: - for x in range(a, b + 1): - output.append(x) - elif a > b: - for x in range(a, b - 1, -1): - output.append(x) - elif a == b: - output.append(a) - else: - try: - x = int(e) - except Exception: - x = e - output.append(x) - return output - - def check_designators(what, where): - for i, x in enumerate(what): - if x not in yaml_data[where[i]]: - return False - return True - harness = Harness() # add items @@ -74,11 +41,12 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st if sec in yaml_data and type(yaml_data[sec]) == ty: if len(yaml_data[sec]) > 0: if ty == dict: - for key, o in yaml_data[sec].items(): + for key, attribs in yaml_data[sec].items(): if sec == 'connectors': - harness.add_connector(name=key, **o) + if not attribs.get('autogenerate', False): + harness.add_connector(name=key, **attribs) elif sec == 'cables': - harness.add_cable(name=key, **o) + harness.add_cable(name=key, **attribs) elif sec == 'ferrules': pass else: @@ -90,108 +58,92 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st yaml_data[sec] = [] # add connections - ferrule_counter = 0 - for connections in yaml_data['connections']: - if len(connections) == 3: # format: connector -- cable -- connector - for connection in connections: - if len(list(connection.keys())) != 1: # check that each entry in con has only one key, which is the designator - raise Exception('Too many keys') + def check_designators(what, where): # helper function + for i, x in enumerate(what): + if x not in yaml_data[where[i]]: + return False + return True - from_name = list(connections[0].keys())[0] - via_name = list(connections[1].keys())[0] - to_name = list(connections[2].keys())[0] + autogenerated_ids = {} + for connection in yaml_data['connections']: + # TODO: check that items are of alternating type CONNECTOR/FERRULE/FERRULE_LIST and CABLE/WIRE + # TODO: special case: loops! - if not check_designators([from_name, via_name, to_name], ('connectors', 'cables', 'connectors')): - print([from_name, via_name, to_name]) - raise Exception('Bad connection definition (3)') + # check that all iterable items (lists and dicts) are the same length + itemcount = None + for item in connection: + if isinstance(item, list): + itemcount_new = len(item) + elif isinstance(item, dict): + if len(item.keys()) != 1: + raise Exception('Dicts may contain only one item here!') + itemcount_new = len(expand(list(item.values())[0])) + elif isinstance(item, str): + continue + if itemcount is not None and itemcount_new != itemcount: + raise Exception('All lists and dict lists must be the same length!') + itemcount = itemcount_new + if itemcount is None: + raise Exception('No item revealed the number of connections to make!') - from_pins = expand(connections[0][from_name]) - via_pins = expand(connections[1][via_name]) - to_pins = expand(connections[2][to_name]) - - if len(from_pins) != len(via_pins) or len(via_pins) != len(to_pins): - raise Exception('List length mismatch') - - for (from_pin, via_pin, to_pin) in zip(from_pins, via_pins, to_pins): - harness.connect(from_name, from_pin, via_name, via_pin, to_name, to_pin) - - elif len(connections) == 2: - - for connection in connections: - if type(connection) is dict: - if len(list(connection.keys())) != 1: # check that each entry in con has only one key, which is the designator - raise Exception('Too many keys') - - # hack to make the format for ferrules compatible with the formats for connectors and cables - if type(connections[0]) == str: - name = connections[0] - connections[0] = {} - connections[0][name] = name - if type(connections[1]) == str: - name = connections[1] - connections[1] = {} - connections[1][name] = name - - from_name = list(connections[0].keys())[0] - to_name = list(connections[1].keys())[0] - - con_cbl = check_designators([from_name, to_name], ('connectors', 'cables')) - cbl_con = check_designators([from_name, to_name], ('cables', 'connectors')) - con_con = check_designators([from_name, to_name], ('connectors', 'connectors')) - - fer_cbl = check_designators([from_name, to_name], ('ferrules', 'cables')) - cbl_fer = check_designators([from_name, to_name], ('cables', 'ferrules')) - - if not con_cbl and not cbl_con and not con_con and not fer_cbl and not cbl_fer: - raise Exception('Wrong designators') - - from_pins = expand(connections[0][from_name]) - to_pins = expand(connections[1][to_name]) - - if con_cbl or cbl_con or con_con: - if len(from_pins) != len(to_pins): - raise Exception('List length mismatch') - - if con_cbl or cbl_con: - for (from_pin, to_pin) in zip(from_pins, to_pins): - if con_cbl: - harness.connect(from_name, from_pin, to_name, to_pin, None, None) - else: # cbl_con - harness.connect(None, None, from_name, from_pin, to_name, to_pin) - elif con_con: - cocon_coname = list(connections[0].keys())[0] - from_pins = expand(connections[0][from_name]) - to_pins = expand(connections[1][to_name]) - - for (from_pin, to_pin) in zip(from_pins, to_pins): - harness.loop(cocon_coname, from_pin, to_pin) - if fer_cbl or cbl_fer: - from_pins = expand(connections[0][from_name]) - to_pins = expand(connections[1][to_name]) - - if fer_cbl: - ferrule_name = from_name - cable_name = to_name - cable_pins = to_pins - else: - ferrule_name = to_name - cable_name = from_name - cable_pins = from_pins - - ferrule_params = yaml_data['ferrules'][ferrule_name] - for cable_pin in cable_pins: - ferrule_counter = ferrule_counter + 1 - ferrule_id = f'_F{ferrule_counter}' - harness.add_connector(ferrule_id, category='ferrule', **ferrule_params) - - if fer_cbl: - harness.connect(ferrule_id, 1, cable_name, cable_pin, None, None) + # populate connection list + connection_list = [] + for i, item in enumerate(connection): + if isinstance(item, str): # one single-pin component was specified + sublist = [] + for i in range(1, itemcount + 1): + if yaml_data['connectors'][item].get('autogenerate'): + autogenerated_ids[item] = autogenerated_ids.get(item, 0) + 1 + new_id = f'_{item}_{autogenerated_ids[item]}' + harness.add_connector(new_id, **yaml_data['connectors'][item]) + sublist.append([new_id, 1]) else: - harness.connect(None, None, cable_name, cable_pin, ferrule_id, 1) + sublist.append([item, 1]) + connection_list.append(sublist) + elif isinstance(item, list): # a list of single-pin components were specified + sublist = [] + for subitem in item: + if yaml_data['connectors'][subitem].get('autogenerate'): + autogenerated_ids[subitem] = autogenerated_ids.get(subitem, 0) + 1 + new_id = f'_{subitem}_{autogenerated_ids[subitem]}' + harness.add_connector(new_id, **yaml_data['connectors'][subitem]) + sublist.append([new_id, 1]) + else: + sublist.append([subitem, 1]) + connection_list.append(sublist) + elif isinstance(item, dict): # a component with multiple pins was specified + sublist = [] + id = list(item.keys())[0] + pins = expand(list(item.values())[0]) + for pin in pins: + sublist.append([id, pin]) + connection_list.append(sublist) + elif False: # TODO: placeholer; a loop inside a connector was specified + pass + else: + raise Exception('Unexpected item in connection list') - else: - raise Exception('Wrong number of connection parameters') + # actually connect things using connection list + for i, item in enumerate(connection_list): + id = item[0][0] # TODO: make more elegant/robust/pythonic + if id in harness.cables: + for j, con in enumerate(item): + if i == 0: # list started with a cable, no connector to join on left side + from_name = None + from_pin = None + else: + from_name = connection_list[i-1][j][0] + from_pin = connection_list[i-1][j][1] + via_name = item[j][0] + via_pin = item[j][1] + if i == len(connection_list) - 1: # list ends with a cable, no connector to join on right side + to_name = None + to_pin = None + else: + to_name = connection_list[i+1][j][0] + to_pin = connection_list[i+1][j][1] + harness.connect(from_name, from_pin, via_name, via_pin, to_name, to_pin) if file_out is not None: harness.output(filename=file_out, fmt=('png', 'svg'), gen_bom=generate_bom, view=False) diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index 83ee46e..9c19a5e 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -59,6 +59,35 @@ def nested_html_table(rows): return html +def expand(yaml_data): + # yaml_data can be: + # - a singleton (normally str or int) + # - a list of str or int + # if str is of the format '#-#', it is treated as a range (inclusive) and expanded + output = [] + if not isinstance(yaml_data, list): + yaml_data = [yaml_data] + for e in yaml_data: + e = str(e) + if '-' in e: # list of pins + a, b = tuple(map(int, e.split('-'))) + if a < b: + for x in range(a, b + 1): + output.append(x) + elif a > b: + for x in range(a, b - 1, -1): + output.append(x) + elif a == b: + output.append(a) + else: + try: + x = int(e) + except Exception: + x = e + output.append(x) + return output + + def int2tuple(inp): if isinstance(inp, tuple): output = inp From b988e9b06396a22c00591c10c6b28fe5a41293da Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Fri, 10 Jul 2020 19:21:33 +0200 Subject: [PATCH 34/48] Update example YAML files --- examples/demo02.yml | 10 +++++----- examples/ex04.yml | 14 +++----------- tutorial/readme.md | 8 ++++---- tutorial/tutorial05.yml | 4 ++-- tutorial/tutorial06.yml | 4 ++-- 5 files changed, 16 insertions(+), 24 deletions(-) diff --git a/examples/demo02.yml b/examples/demo02.yml index 00ee554..600b135 100644 --- a/examples/demo02.yml +++ b/examples/demo02.yml @@ -9,11 +9,6 @@ templates: # defining templates to be used later on gauge: 0.14 mm2 colors: [BK, RD, YE, GN] -ferrules: - ferrule_crimp: - type: Crimp ferrule - subtype: 0.25 mm² - connectors: X1: <<: *molex_f # copying items from the template @@ -27,6 +22,11 @@ connectors: X4: <<: *molex_f pinout: [GND, +12V, MISO, MOSI, SCK] + ferrule_crimp: + category: ferrule + autogenerate: true + type: Crimp ferrule + subtype: 0.25 mm² cables: W1: diff --git a/examples/ex04.yml b/examples/ex04.yml index b9eb707..3fe5bed 100644 --- a/examples/ex04.yml +++ b/examples/ex04.yml @@ -1,13 +1,3 @@ -# connectors: -# X1: -# type: D-Sub -# subtype: female -# pincount: 4 -# X2: -# type: Molex KK 254 -# subtype: female -# pincount: 3 - cables: W1: gauge: 0.25 mm2 @@ -17,8 +7,10 @@ cables: wirecount: 6 category: bundle -ferrules: +connectors: ferrule_crimp: + category: ferrule + autogenerate: true type: Crimp ferrule show_name: false show_pincount: false diff --git a/tutorial/readme.md b/tutorial/readme.md index c46011c..b82d7cb 100644 --- a/tutorial/readme.md +++ b/tutorial/readme.md @@ -203,9 +203,9 @@ connectors: pinout: [+12V, GND, GND, +5V] type: Molex 8981 subtype: female - -ferrules: # ferrules F1: + category: ferrule + autogenerate: true type: Ferrule, crimp subtype: 0.5 mm² color: OG # optional color @@ -253,9 +253,9 @@ connectors: type: Ferrule, crimp subtype: 1.0 mm² color: YE - -ferrules: # ferrules F_05: + category: ferrule + autogenerate: true type: Ferrule, crimp subtype: 0.5 mm² color: OG # optional color diff --git a/tutorial/tutorial05.yml b/tutorial/tutorial05.yml index e238f30..dda905e 100644 --- a/tutorial/tutorial05.yml +++ b/tutorial/tutorial05.yml @@ -3,9 +3,9 @@ connectors: pinout: [+12V, GND, GND, +5V] type: Molex 8981 subtype: female - -ferrules: # ferrules F1: + category: ferrule + autogenerate: true type: Ferrule, crimp subtype: 0.5 mm² color: OG # optional color diff --git a/tutorial/tutorial06.yml b/tutorial/tutorial06.yml index f69499c..bcf9c8c 100644 --- a/tutorial/tutorial06.yml +++ b/tutorial/tutorial06.yml @@ -8,9 +8,9 @@ connectors: type: Ferrule, crimp subtype: 1.0 mm² color: YE - -ferrules: # ferrules F_05: + category: ferrule + autogenerate: true type: Ferrule, crimp subtype: 0.5 mm² color: OG # optional color From cf6d3676c405574bad15f87321f318e88f52fc90 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 11 Jul 2020 11:25:59 +0200 Subject: [PATCH 35/48] Ensure items in a connection set alternate between connectors and cables --- src/wireviz/wireviz.py | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 84fb182..672dbdd 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -67,19 +67,46 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st autogenerated_ids = {} for connection in yaml_data['connections']: - # TODO: check that items are of alternating type CONNECTOR/FERRULE/FERRULE_LIST and CABLE/WIRE - # TODO: special case: loops! + # find first component (potentially nested inside list or dict) + first_item = connection[0] + if isinstance(first_item, list): + first_item = first_item[0] + elif isinstance(first_item, dict): + first_item = list(first_item.keys())[0] + elif isinstance(first_item, str): + pass + + # check which section the first item belongs to + alternating_sections = ['connectors','cables'] + for index, section in enumerate(alternating_sections): + if first_item in yaml_data[section]: + expected_index = index + break + else: + raise Exception('First item not found anywhere.') + expected_index = 1 - expected_index # flip once since it is flipped back at the *beginning* of every loop # check that all iterable items (lists and dicts) are the same length + # and that they are alternating between connectors and cables/bundles, starting with either itemcount = None for item in connection: + expected_index = 1 - expected_index # make sure items alternate between connectors and cables + expected_section = alternating_sections[expected_index] if isinstance(item, list): itemcount_new = len(item) + for subitem in item: + if not subitem in yaml_data[expected_section]: + raise Exception(f'{subitem} is not in {expected_section}') elif isinstance(item, dict): if len(item.keys()) != 1: - raise Exception('Dicts may contain only one item here!') + raise Exception('Dicts may contain only one key here!') itemcount_new = len(expand(list(item.values())[0])) + subitem = list(item.keys())[0] + if not subitem in yaml_data[expected_section]: + raise Exception(f'{subitem} is not in {expected_section}') elif isinstance(item, str): + if not item in yaml_data[expected_section]: + raise Exception(f'{item} is not in {expected_section}') continue if itemcount is not None and itemcount_new != itemcount: raise Exception('All lists and dict lists must be the same length!') @@ -119,12 +146,10 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st for pin in pins: sublist.append([id, pin]) connection_list.append(sublist) - elif False: # TODO: placeholer; a loop inside a connector was specified - pass else: raise Exception('Unexpected item in connection list') - # actually connect things using connection list + # actually connect components using connection list for i, item in enumerate(connection_list): id = item[0][0] # TODO: make more elegant/robust/pythonic if id in harness.cables: From 9e11051caca68191be469129f7efba1325b8c1c9 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 11 Jul 2020 11:53:29 +0200 Subject: [PATCH 36/48] Simplify connector loop code --- src/wireviz/DataClasses.py | 13 +++++++------ src/wireviz/Harness.py | 4 ---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/wireviz/DataClasses.py b/src/wireviz/DataClasses.py index f481d28..0e82492 100644 --- a/src/wireviz/DataClasses.py +++ b/src/wireviz/DataClasses.py @@ -25,11 +25,11 @@ class Connector: show_pincount: bool = True hide_disconnected_pins: bool = False autogenerate: bool = False + loops: List[Any] = field(default_factory=list) def __post_init__(self): self.ports_left = False self.ports_right = False - self.loops = [] self.visible_pins = {} if self.pincount is None: @@ -55,11 +55,12 @@ class Connector: if len(self.pinnumbers) != len(set(self.pinnumbers)): raise Exception('Pin numbers are not unique') - def loop(self, from_pin, to_pin): - self.loops.append((from_pin, to_pin)) - if self.hide_disconnected_pins: - self.visible_pins[from_pin] = True - self.visible_pins[to_pin] = True + for loop in self.loops: + # TODO: check that pins to connect actually exist + # TODO: allow using pin labels in addition to pin numbers, just like when defining regular connections + # TODO: include properties of wire used to create the loop + if len(loop) != 2: + raise Exception('Loops must be between exactly two pins!') def activate_pin(self, pin): self.visible_pins[pin] = True diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index bcc3d28..a5e5d6e 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -22,9 +22,6 @@ class Harness: def add_cable(self, name, *args, **kwargs): self.cables[name] = Cable(name, *args, **kwargs) - def loop(self, connector_name, from_pin, to_pin): - self.connectors[connector_name].loop(from_pin, to_pin) - def connect(self, from_name, from_pin, via_name, via_pin, to_name, to_pin): for (name, pin) in zip([from_name, to_name], [from_pin, to_pin]): # check from and to connectors @@ -46,7 +43,6 @@ class Harness: from_pin = pin if name == to_name: to_pin = pin - # TODO: what happens with loops? if not pin in connector.pinnumbers: raise Exception(f'{name}:{pin} not found.') From 0cef5e36870da4748036440a6cc041c363845646 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 11 Jul 2020 14:57:03 +0200 Subject: [PATCH 37/48] Add changelog in preparation for release of v0.2 --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ README.md | 8 +++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8ddf91b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,29 @@ +# Change Log + +## [0.2](https://github.com/formatc1702/WireViz/tree/v0.2) (2020-XX-XX) + +### Backward incompatible changes + +- Change names of connector attributes ([#77](https://github.com/formatc1702/WireViz/issues/77)) +- Remove ferrules as a separate connector type ([#78](https://github.com/formatc1702/WireViz/issues/78)) +- Change the way loops are defined ([#79](https://github.com/formatc1702/WireViz/issues/79)) + +### New features +- Add bidirectional AWG/mm2 conversion ([#41](https://github.com/formatc1702/WireViz/pull/41)) +- Add support for part numbers ([#11](https://github.com/formatc1702/WireViz/pull/11)) +- Add support for multicolored wires ([#17](https://github.com/formatc1702/WireViz/pull/17)) +- Add ability to export data directly to other programs ([#55](https://github.com/formatc1702/WireViz/pull/55)) +- Add support for line breaks in various fields ([#63](https://github.com/formatc1702/WireViz/issues/63)) +- Allow using connector pin names to define connections ([#72](https://github.com/formatc1702/WireViz/issues/72)) +- Make defining connection sets easier and more flexible ([#67](https://github.com/formatc1702/WireViz/issues/67)) + +### Misc. fixes + +- Improve BOM generation +- Add various input sanity checks + +### + +## [0.1](https://github.com/formatc1702/WireViz/tree/v0.1) (2020-06-29) + +- Initial release diff --git a/README.md b/README.md index b96dd42..22c9a49 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,13 @@ If you would like to rebuild all of the included demos, examples and tutorials, ```cd src/wireviz ./build_examples.py + ``` + +## Changelog + +See [CHANGELOG.md](CHANGELOG.md) + ## Status This is very much a [work in progress](https://github.com/formatc1702/WireViz/projects/1). Source code, API, syntax and functionality may change wildly at any time. @@ -123,4 +129,4 @@ Ubuntu 18.04 LTS users in particular may need to separately install Python 3.7 o ## License -GNU GPLv3 +[GPL-3.0](LICENSE) From 3eed9681da04c5efc91c09f6706a49d04ca38329 Mon Sep 17 00:00:00 2001 From: Jason Date: Sun, 12 Jul 2020 02:21:28 -0400 Subject: [PATCH 38/48] Remove unused parameter, fix default parameter (#76) --- src/wireviz/Harness.py | 9 +++++---- src/wireviz/build_examples.py | 6 +++--- src/wireviz/wireviz.py | 11 +++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index a5e5d6e..5b50bb4 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -4,7 +4,9 @@ from wireviz.DataClasses import Connector, Cable from graphviz import Graph from wireviz import wv_colors -from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, nested_html_table, flatten2d, index_if_list, html_line_breaks, graphviz_line_breaks, remove_line_breaks +from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, \ + nested_html_table, flatten2d, index_if_list, html_line_breaks, \ + graphviz_line_breaks, remove_line_breaks from collections import Counter from typing import List @@ -23,8 +25,7 @@ class Harness: self.cables[name] = Cable(name, *args, **kwargs) def connect(self, from_name, from_pin, via_name, via_pin, to_name, to_pin): - - for (name, pin) in zip([from_name, to_name], [from_pin, to_pin]): # check from and to connectors + for (name, pin) in zip([from_name, to_name], [from_pin, to_pin]): # check from and to connectors if name is not None and name in self.connectors: connector = self.connectors[name] if pin in connector.pinnumbers and pin in connector.pinout: @@ -274,7 +275,7 @@ class Harness: data.seek(0) return data.read() - def output(self, filename, directory='_output', view=False, cleanup=True, fmt='pdf', gen_bom=False): + def output(self, filename, directory='_output', view=False, cleanup=True, fmt=('pdf', )): # graphical output graph = self.create_graph() for f in fmt: diff --git a/src/wireviz/build_examples.py b/src/wireviz/build_examples.py index 18654ef..e622941 100755 --- a/src/wireviz/build_examples.py +++ b/src/wireviz/build_examples.py @@ -16,7 +16,7 @@ if demos: for i in range(1,demos+1): fn = '../../examples/demo{:02d}.yml'.format(i) print(fn) - wireviz.parse_file(fn, generate_bom=True) + wireviz.parse_file(fn) if examples: with open(os.path.abspath('../../examples/readme.md'), 'w') as file: @@ -24,7 +24,7 @@ if examples: for i in range(1,examples+1): fn = '../../examples/ex{:02d}.yml'.format(i) print(fn) - wireviz.parse_file(fn, generate_bom=True) + wireviz.parse_file(fn) file.write('## Example {:02d}\n'.format(i)) file.write('![](ex{:02d}.png)\n\n'.format(i)) @@ -36,7 +36,7 @@ if tutorials: for i in range(1,tutorials+1): fn = '../../tutorial/tutorial{:02d}.yml'.format(i) print(fn) - wireviz.parse_file(fn, generate_bom=True) + wireviz.parse_file(fn) with open(os.path.abspath('../../tutorial/tutorial{:02d}.md'.format(i)), 'r') as info: for line in info: diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 672dbdd..dfdf887 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -16,13 +16,12 @@ from wireviz.Harness import Harness from wireviz.wv_helper import expand -def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, str, Tuple[str]) = None): +def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = None): """ Parses yaml input string and does the high-level harness conversion :param yaml_input: a string containing the yaml input data :param file_out: - :param generate_bom: :param return_types: if None, then returns None; if the value is a string, then a corresponding data format will be returned; if the value is a tuple of strings, then for every valid format in the `return_types` tuple, another return type @@ -171,7 +170,7 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st harness.connect(from_name, from_pin, via_name, via_pin, to_name, to_pin) if file_out is not None: - harness.output(filename=file_out, fmt=('png', 'svg'), gen_bom=generate_bom, view=False) + harness.output(filename=file_out, fmt=('png', 'svg'), view=False) if return_types is not None: returns = [] @@ -188,7 +187,7 @@ def parse(yaml_input, file_out=None, generate_bom=False, return_types: (None, st return tuple(returns) if len(returns) != 1 else returns[0] -def parse_file(yaml_file, file_out=None, generate_bom=False): +def parse_file(yaml_file, file_out=None): with open(yaml_file, 'r') as file: yaml_input = file.read() @@ -197,7 +196,7 @@ def parse_file(yaml_file, file_out=None, generate_bom=False): file_out = fn file_out = os.path.abspath(file_out) - parse(yaml_input, file_out=file_out, generate_bom=generate_bom) + parse(yaml_input, file_out=file_out) def parse_cmdline(): @@ -238,7 +237,7 @@ def main(): file_out = args.output_file file_out = os.path.abspath(file_out) - parse(yaml_input, file_out=file_out, generate_bom=args.generate_bom) + parse(yaml_input, file_out=file_out) if __name__ == '__main__': From 8b69e9a8a89605e59ee70304b9441f397e827e96 Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Mon, 13 Jul 2020 17:23:23 +0100 Subject: [PATCH 39/48] Add ability to include aditional BOM lines (#80) --- src/wireviz/Harness.py | 15 +++++++++++++++ src/wireviz/wireviz.py | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 5b50bb4..28f8b74 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -17,6 +17,7 @@ class Harness: self.color_mode = 'SHORT' self.connectors = {} self.cables = {} + self.additional_bom_items = [] def add_connector(self, name, *args, **kwargs): self.connectors[name] = Connector(name, *args, **kwargs) @@ -24,6 +25,9 @@ class Harness: def add_cable(self, name, *args, **kwargs): self.cables[name] = Cable(name, *args, **kwargs) + def add_bom_item(self, item): + self.additional_bom_items.append(item) + def connect(self, from_name, from_pin, via_name, via_pin, to_name, to_pin): for (name, pin) in zip([from_name, to_name], [from_pin, to_pin]): # check from and to connectors if name is not None and name in self.connectors: @@ -316,6 +320,7 @@ class Harness: bom = [] bom_connectors = [] bom_cables = [] + bom_extra = [] # connectors connector_group = lambda c: (c.type, c.subtype, c.pincount, c.manufacturer, c.manufacturer_part_number, c.internal_part_number) for group in Counter([connector_group(v) for v in self.connectors.values()]): @@ -379,6 +384,16 @@ class Harness: bom_cables.append(item) bom_cables = sorted(bom_cables, key=lambda k: k['item']) # sort list of dicts by their values (https://stackoverflow.com/a/73050) bom.extend(bom_cables) + + for item in self.additional_bom_items: + name = item['description'] if item.get('description', None) else '' + if isinstance(item.get('designators', None), List): + item['designators'].sort() # sort designators if a list is provided + item = {'item': name, 'qty': item.get('qty', None), 'unit': item.get('unit', None), 'designators': item.get('designators', None), + 'manufacturer': item.get('manufacturer', None), 'manufacturer part number': item.get('manufacturer_part_number', None), 'internal part number': item.get('internal_part_number', None)} + bom_extra.append(item) + bom_extra = sorted(bom_extra, key=lambda k: k['item']) + bom.extend(bom_extra) return bom def bom_list(self): diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index dfdf887..518dcca 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -169,6 +169,11 @@ def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = Non to_pin = connection_list[i+1][j][1] harness.connect(from_name, from_pin, via_name, via_pin, to_name, to_pin) + if "additional_bom_items" in yaml_data: + for line in yaml_data["additional_bom_items"]: + harness.add_bom_item(line) + + if file_out is not None: harness.output(filename=file_out, fmt=('png', 'svg'), view=False) From 9de33b49bd10988ff176bfbd23d5f2e1ebcdfafe Mon Sep 17 00:00:00 2001 From: "Jason R. Jones" Date: Mon, 13 Jul 2020 12:58:33 -0400 Subject: [PATCH 40/48] Make file output more consistently behaved. --- src/wireviz/Harness.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 28f8b74..ca9f8e6 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -9,6 +9,7 @@ from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, \ graphviz_line_breaks, remove_line_breaks from collections import Counter from typing import List +from pathlib import Path class Harness: @@ -279,13 +280,13 @@ class Harness: data.seek(0) return data.read() - def output(self, filename, directory='_output', view=False, cleanup=True, fmt=('pdf', )): + def output(self, filename: (str, Path), view=False, cleanup=True, fmt=('pdf', )): # graphical output graph = self.create_graph() for f in fmt: graph.format = f - graph.render(filename=filename, directory=directory, view=view, cleanup=cleanup) - graph.save(filename=f'{filename}.gv', directory=directory) + graph.render(filename=filename, view=view, cleanup=cleanup) + graph.save(filename=f'{filename}.gv') # bom output bom_list = self.bom_list() with open(f'{filename}.bom.tsv', 'w') as file: From c8dc6978457118aa89386d76b8f1a70c654eeb18 Mon Sep 17 00:00:00 2001 From: Jason Date: Tue, 14 Jul 2020 16:01:00 -0400 Subject: [PATCH 41/48] Add ability for `parse()` to return the `Harness` instance (#87) --- src/wireviz/wireviz.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 518dcca..b410c65 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -25,8 +25,10 @@ def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = Non :param return_types: if None, then returns None; if the value is a string, then a corresponding data format will be returned; if the value is a tuple of strings, then for every valid format in the `return_types` tuple, another return type - will be generated and returned in the same order; currently supports only 'png', - but could easily support other types + will be generated and returned in the same order; currently supports: + - "png" - will return the PNG data + - "svg" - will return the SVG data + - "harness" - will return the `Harness` instance """ yaml_data = yaml.safe_load(yaml_input) @@ -173,7 +175,6 @@ def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = Non for line in yaml_data["additional_bom_items"]: harness.add_bom_item(line) - if file_out is not None: harness.output(filename=file_out, fmt=('png', 'svg'), view=False) @@ -188,6 +189,8 @@ def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = Non returns.append(harness.png) if 'svg' in return_types: returns.append(harness.svg) + if 'harness' in return_types: + returns.append(harness) return tuple(returns) if len(returns) != 1 else returns[0] From 34cd9c26126231eeb25f93af245b0a24e8d45ed8 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 15 Jul 2020 02:07:15 -0400 Subject: [PATCH 42/48] Match parse() return tuple order to input tuple order (#89) Fixes #88. --- src/wireviz/wireviz.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index b410c65..d52d3b1 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -185,12 +185,13 @@ def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = Non return_types = [t.lower() for t in return_types] - if 'png' in return_types: - returns.append(harness.png) - if 'svg' in return_types: - returns.append(harness.svg) - if 'harness' in return_types: - returns.append(harness) + for rt in return_types: + if rt == 'png': + returns.append(harness.png) + if rt == 'svg': + returns.append(harness.svg) + if rt == 'harness': + returns.append(harness) return tuple(returns) if len(returns) != 1 else returns[0] From ba8b83f792eb3eb791e67d09e51cc6b54e6f1586 Mon Sep 17 00:00:00 2001 From: KV Date: Wed, 15 Jul 2020 11:16:11 +0200 Subject: [PATCH 43/48] Make multi-line connector attributes centered for consistency --- src/wireviz/wv_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index 9c19a5e..95bf408 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -117,7 +117,7 @@ def html_line_breaks(inp): return inp.replace('\n', '
') if isinstance(inp, str) else inp def graphviz_line_breaks(inp): - return inp.replace('\n', '\\l') if isinstance(inp, str) else inp # \l generates left-aligned new lines. http://www.graphviz.org/doc/info/attrs.html#k:escString + return inp.replace('\n', '\\n') if isinstance(inp, str) else inp # \n generates centered new lines. http://www.graphviz.org/doc/info/attrs.html#k:escString def remove_line_breaks(inp): return inp.replace('\n', ' ').rstrip() if isinstance(inp, str) else inp From 12d3002af865361c1b232aa180192edfc46e8f69 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 15 Jul 2020 13:30:23 -0400 Subject: [PATCH 44/48] Add type hinting (#92) --- src/wireviz/Harness.py | 12 ++++++------ src/wireviz/wireviz.py | 7 ++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index ca9f8e6..95e7a2a 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -20,16 +20,16 @@ class Harness: self.cables = {} self.additional_bom_items = [] - def add_connector(self, name, *args, **kwargs): + def add_connector(self, name: str, *args, **kwargs) -> None: self.connectors[name] = Connector(name, *args, **kwargs) - def add_cable(self, name, *args, **kwargs): + def add_cable(self, name: str, *args, **kwargs) -> None: self.cables[name] = Cable(name, *args, **kwargs) - def add_bom_item(self, item): + def add_bom_item(self, item: dict) -> None: self.additional_bom_items.append(item) - def connect(self, from_name, from_pin, via_name, via_pin, to_name, to_pin): + def connect(self, from_name: str, from_pin: (int, str), via_name: str, via_pin: (int, str), to_name: str, to_pin: (int, str)) -> None: for (name, pin) in zip([from_name, to_name], [from_pin, to_pin]): # check from and to connectors if name is not None and name in self.connectors: connector = self.connectors[name] @@ -58,7 +58,7 @@ class Harness: if to_name in self.connectors: self.connectors[to_name].activate_pin(to_pin) - def create_graph(self): + def create_graph(self) -> Graph: dot = Graph() dot.body.append('// Graph generated by WireViz') dot.body.append('// https://github.com/formatc1702/WireViz') @@ -280,7 +280,7 @@ class Harness: data.seek(0) return data.read() - def output(self, filename: (str, Path), view=False, cleanup=True, fmt=('pdf', )): + def output(self, filename: (str, Path), view: bool = False, cleanup: bool = True, fmt: tuple = ('pdf', )) -> None: # graphical output graph = self.create_graph() for f in fmt: diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index d52d3b1..6c9a186 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -3,8 +3,9 @@ import argparse import os +from pathlib import Path import sys -from typing import Tuple +from typing import Any, Tuple import yaml @@ -16,7 +17,7 @@ from wireviz.Harness import Harness from wireviz.wv_helper import expand -def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = None): +def parse(yaml_input: str, file_out: (str, Path) = None, return_types: (None, str, Tuple[str]) = None) -> Any: """ Parses yaml input string and does the high-level harness conversion @@ -196,7 +197,7 @@ def parse(yaml_input, file_out=None, return_types: (None, str, Tuple[str]) = Non return tuple(returns) if len(returns) != 1 else returns[0] -def parse_file(yaml_file, file_out=None): +def parse_file(yaml_file: str, file_out: (str, Path) = None) -> None: with open(yaml_file, 'r') as file: yaml_input = file.read() From 7e54c7aaef6d16e1cdce07bfa124854db0f12a36 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 21:36:13 +0200 Subject: [PATCH 45/48] Refactor connector GraphViz code generation (#66) --- src/wireviz/Harness.py | 42 ++++++++++++++++++++++++++-------------- src/wireviz/wv_helper.py | 18 ++++++++++------- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 95e7a2a..b7be17f 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -92,7 +92,6 @@ class Harness: f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None], [html_line_breaks(connector.notes)]] rows = [list(filter(None, row)) for row in rows] # remove missing attributes - html = nested_html_table(rows) if connector.color: # add color bar next to color info, if present @@ -102,24 +101,37 @@ class Harness: dot.node(key, label=f'<{html}>', shape='none', margin='0', style='filled', fillcolor='white') else: # not a ferrule - identification = [connector.manufacturer, - f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else '', - f'IPN: {connector.internal_part_number}' if connector.internal_part_number else ''] - attributes = [graphviz_line_breaks(connector.type), - graphviz_line_breaks(connector.subtype), - f'{connector.pincount}-pin' if connector.show_pincount else''] - pinouts = [[], [], []] + rows = [[connector.name if connector.show_name else None], + [html_line_breaks(connector.type), + html_line_breaks(connector.subtype), + f'{connector.pincount}-pin' if connector.show_pincount else None], + [connector.manufacturer, + f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else None, + f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None], + '', + [html_line_breaks(connector.notes)]] + html = nested_html_table(rows) + + pinouts = [] for pinnumber, pinname in zip(connector.pinnumbers, connector.pinout): if connector.hide_disconnected_pins and not connector.visible_pins.get(pinnumber, False): continue - pinouts[1].append(pinname) - if connector.ports_left: - pinouts[0].append(f'{pinnumber}') - if connector.ports_right: - pinouts[2].append(f'{pinnumber}') - label = [connector.name if connector.show_name else '', identification, attributes, pinouts, graphviz_line_breaks(connector.notes)] - dot.node(key, label=nested(label)) + pinouts.append([f'{pinnumber}' if connector.ports_left else None, + f'{pinname}' if pinname else '', + f'{pinnumber}' if connector.ports_right else None]) + + pinhtml = '' + for i, pin in enumerate(pinouts): + pinhtml = f'{pinhtml}' + for column in pin: + if column is not None: + pinhtml = f'{pinhtml}{column}' + pinhtml = f'{pinhtml}' + pinhtml = f'{pinhtml}
' + html = html.replace('', pinhtml) + + dot.node(key, label=f'<{html}>', shape='none', margin='0', style='filled', fillcolor='white') if len(connector.loops) > 0: dot.attr('edge', color='#000000:#ffffff:#000000') diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index 95bf408..5759a3c 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -45,16 +45,20 @@ def nested(inp): return '|'.join(l) def nested_html_table(rows): - # input: list of lists - # output: a parent table with one child table per parent list item + # input: list, each item may be scalar or list + # output: a parent table with one child table per parent item that is list, and one cell per parent item that is scalar # purpose: create the appearance of one table, where cell widths are independent between rows html = '' for row in rows: - if len(row) > 0: - html = f'{html}' + if isinstance(row, List): + if len(row) > 0 and any(row): + html = f'{html}' + else: + html = f'{html}' html = f'{html}
' - for cell in row: - html = f'{html}' - html = f'{html}
{cell}
' + for cell in row: + if cell is not None: + html = f'{html}' + html = f'{html}
{cell}
{row}
' return html From 6c7d700a1f76ecbf4b9324d2aa40ebcedb7f5838 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 21:45:39 +0200 Subject: [PATCH 46/48] Remove obsolete nesting function, fine-tune table generating behavior --- src/wireviz/Harness.py | 3 +-- src/wireviz/wv_helper.py | 16 +--------------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index b7be17f..0ccbcaa 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -4,7 +4,7 @@ from wireviz.DataClasses import Connector, Cable from graphviz import Graph from wireviz import wv_colors -from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, nested, \ +from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, \ nested_html_table, flatten2d, index_if_list, html_line_breaks, \ graphviz_line_breaks, remove_line_breaks from collections import Counter @@ -91,7 +91,6 @@ class Harness: f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else None, f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None], [html_line_breaks(connector.notes)]] - rows = [list(filter(None, row)) for row in rows] # remove missing attributes html = nested_html_table(rows) if connector.color: # add color bar next to color info, if present diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index 5759a3c..016fe96 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -30,20 +30,6 @@ def awg_equiv(mm2): def mm2_equiv(awg): return mm2_equiv_table.get(str(awg), 'Unknown') -def nested(inp): - l = [] - for x in inp: - if isinstance(x, list): - if len(x) > 0: - n = nested(x) - if n != '': - l.append('{' + n + '}') - else: - if x is not None: - if x != '': - l.append(str(x)) - return '|'.join(l) - def nested_html_table(rows): # input: list, each item may be scalar or list # output: a parent table with one child table per parent item that is list, and one cell per parent item that is scalar @@ -57,7 +43,7 @@ def nested_html_table(rows): if cell is not None: html = f'{html}{cell}' html = f'{html}' - else: + elif row is not None: html = f'{html}{row}' html = f'{html}' return html From 11baf0f507117aa77bf1a6ab38cdc5282aadd772 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sun, 5 Jul 2020 22:11:39 +0200 Subject: [PATCH 47/48] Move part number info directly below designator (to be consistent with the changes proposed in #11) --- src/wireviz/Harness.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 0ccbcaa..3461cc9 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -86,10 +86,10 @@ class Harness: for key, connector in self.connectors.items(): if connector.category == 'ferrule': - rows = [[html_line_breaks(connector.type), html_line_breaks(connector.subtype), connector.color, '' if connector.color else None], - [connector.manufacturer, + rows = [[connector.manufacturer, f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else None, f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None], + [html_line_breaks(connector.type), html_line_breaks(connector.subtype), connector.color, '' if connector.color else None], [html_line_breaks(connector.notes)]] html = nested_html_table(rows) @@ -102,14 +102,14 @@ class Harness: else: # not a ferrule rows = [[connector.name if connector.show_name else None], - [html_line_breaks(connector.type), - html_line_breaks(connector.subtype), - f'{connector.pincount}-pin' if connector.show_pincount else None], [connector.manufacturer, f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else None, f'IPN: {connector.internal_part_number}' if connector.internal_part_number else None], - '', - [html_line_breaks(connector.notes)]] + [html_line_breaks(connector.type), + html_line_breaks(connector.subtype), + f'{connector.pincount}-pin' if connector.show_pincount else None], + '', + [html_line_breaks(connector.notes)]] html = nested_html_table(rows) pinouts = [] From d1b48861ec82a53b6a279924821eb6f304600b54 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 15 Jul 2020 14:21:09 -0400 Subject: [PATCH 48/48] Add initial contribution guidelines --- CONTRIBUTING.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7a94ac7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,18 @@ +# Contribution Guidelines + +When contributing to this repository, please first discuss the change you +wish to make via issue, email, or any other method with the owners of this +repository before making a change. + +## Pull Requests + +1. Fork this repository to your repository +1. Clone the repository to your local machine +1. Checkout the `dev` branch +1. Make any changes to the code on the `dev` branch +1. Push your changes to your fork +1. Create new pull request + +## Documentation Strings + +Documentation strings are to follow the Google Style ([examples](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)).