From 7d9eeb91e730448a36de8f0cf23c17f62c2a7b60 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 10 Sep 2017 15:57:21 +0200 Subject: [PATCH] Added package creation scripts for Debian --- scripts/deb-data/.control.swp | Bin 0 -> 12288 bytes scripts/deb-data/control | 11 + scripts/deb-data/debian-binary | 1 + scripts/deb-data/postinst | 7 + scripts/deb-data/postrm | 5 + .../usr/share/applications/klayout.desktop | 10 + .../deb-data/usr/share/doc/klayout/changelog | 1794 +++++++++++++++++ .../usr/share/doc/klayout/changelog.Debian | 278 +++ .../deb-data/usr/share/doc/klayout/copyright | 27 + .../deb-data/usr/share/pixmaps/klayout.png | Bin 0 -> 73051 bytes scripts/makedeb.sh | 127 ++ 11 files changed, 2260 insertions(+) create mode 100644 scripts/deb-data/.control.swp create mode 100644 scripts/deb-data/control create mode 100644 scripts/deb-data/debian-binary create mode 100755 scripts/deb-data/postinst create mode 100755 scripts/deb-data/postrm create mode 100644 scripts/deb-data/usr/share/applications/klayout.desktop create mode 100644 scripts/deb-data/usr/share/doc/klayout/changelog create mode 100644 scripts/deb-data/usr/share/doc/klayout/changelog.Debian create mode 100644 scripts/deb-data/usr/share/doc/klayout/copyright create mode 100644 scripts/deb-data/usr/share/pixmaps/klayout.png create mode 100755 scripts/makedeb.sh diff --git a/scripts/deb-data/.control.swp b/scripts/deb-data/.control.swp new file mode 100644 index 0000000000000000000000000000000000000000..a7ac9e32ce407fd6656966714446d20e1320eaf1 GIT binary patch literal 12288 zcmeI&!EVz)5CG5(S5!d284VyG9k)~Mz=2<2oH!Q_r8iUbxDXH+n=6&ymPH} z^@0#H>3yN3tCvo?iYnBy@}@dz6Ro{j6^y1@9-Fz3X3}}IkxQ+ryo)j%hne&;N=@ml z(SNAN%PhbGrxcj`JiNOmZr|EiuQP7mxDHn?KRIPGZ({)#U;!3j0Ty5Z7GMDu_!k6x z)e>*%Am^IHoNva~Z)0=I0}HSK3$OqSumB6N01L1H3$OqSu)rASS!VF`U=-GKlY>7puxzJxZ2^1BDJTaLCRSF3 zN~MNZ3Xjl2ZY;>QX~V-_632^5-S`3IN+TuraM_5hOxb~Mp(>#M>}gXREY?L9IhZLA zbFZ}W$6{!eu{7y`sXV1hEfP%YSqBz<+-e-nluN06g=OYCpw;-L-wZQ!YEu3$hYouE zVSm4u1R^e-ms(>MCh9eIAV}ip{Xh()Dm?|-4h)*kd)WK(InU8*R3+S7wa?$58eBbX wXSgGFZCWT#==8&(db^|Uqd**@b&D?{IP8y-_+UQ>H^fk;Q#qkcO$WaC1=nT?h5!Hn literal 0 HcmV?d00001 diff --git a/scripts/deb-data/control b/scripts/deb-data/control new file mode 100644 index 0000000000..9e46cbf60b --- /dev/null +++ b/scripts/deb-data/control @@ -0,0 +1,11 @@ +Package: klayout +Version: %VERSION%-1 +Architecture: %ARCH% +Maintainer: Matthias Köfferlein +Installed-Size: %SIZE% +Depends: %DEPENDS% +Section: contrib/misc +Priority: optional +Description: Chip mask layout review and edit utility + Klayout is a graphical viewer for a.o. GDSII and CIF files. + Its features include net highlighting and XOR-ing of two layouts. diff --git a/scripts/deb-data/debian-binary b/scripts/deb-data/debian-binary new file mode 100644 index 0000000000..cd5ac039d6 --- /dev/null +++ b/scripts/deb-data/debian-binary @@ -0,0 +1 @@ +2.0 diff --git a/scripts/deb-data/postinst b/scripts/deb-data/postinst new file mode 100755 index 0000000000..d0d5f4dfe3 --- /dev/null +++ b/scripts/deb-data/postinst @@ -0,0 +1,7 @@ +#!/bin/sh +set -e +# Automatically added by dh_installmenu +if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ]; then + update-menus +fi +# End automatically added section diff --git a/scripts/deb-data/postrm b/scripts/deb-data/postrm new file mode 100755 index 0000000000..a30dbac677 --- /dev/null +++ b/scripts/deb-data/postrm @@ -0,0 +1,5 @@ +#!/bin/sh +set -e +# Automatically added by dh_installmenu +if [ -x "`which update-menus 2>/dev/null`" ]; then update-menus ; fi +# End automatically added section diff --git a/scripts/deb-data/usr/share/applications/klayout.desktop b/scripts/deb-data/usr/share/applications/klayout.desktop new file mode 100644 index 0000000000..a84e2abcfa --- /dev/null +++ b/scripts/deb-data/usr/share/applications/klayout.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Name=Klayout, viewer and editor of mask layouts. +GenericName=layout viewer +Comment=Klayout is a viewer (and editor) of mask layout in a.o. GDSII and CIF format. +Exec=klayout +Icon=klayout +Type=Application +Categories=Development;Engineering;Electronics; + diff --git a/scripts/deb-data/usr/share/doc/klayout/changelog b/scripts/deb-data/usr/share/doc/klayout/changelog new file mode 100644 index 0000000000..1cfa581889 --- /dev/null +++ b/scripts/deb-data/usr/share/doc/klayout/changelog @@ -0,0 +1,1794 @@ +0.25 (2017-09-10): +* Enhancements: Major overhaul of the build environment + - Qt5 supported now + - Employs qmake as build system + - Reorganisation of the sources + - Continuous integration enabled (unit tests + integrated in .pro files, JUnit output etc.) + - Compatible with the clang compiler +* Enhancements: Buddy tools: KLayout now comes with a set of + additional executables that provide some functionality + subset in a lean way. These binaries are named "strm..." + and are installed along with KLayout. + - strm2cif: converts any format to CIF + - strm2dxf: converts any format to DXF + - strm2gds: converts any format to GDS2 + - strm2gdstxt: converts any format to GDS2/text + - strm2oas: converts any format to OASIS + - strm2txt: converts any format to plain text (internally) + - strmclip: creates a clip from a file + - strmcmp: compares two files (logically) + - strmxor: compares two files (geometrically) + For more information, use the "-h" or "--help" option. +* Enhancements: HTTPS support for loading files from URL's directly +* Enhancements: Numerous enhancements and optimizations in the RBA/pya + area and in the debugger. +* Enhancements: KLayout notifies the user when a file was changed and + asks whether to reload. +* Enhancements: "File cell or layer": type into the cell or layer list to jump to the + cell name typed. +* Enhancements: Advanced search features in the filter entry box + for the cell selection form: Case sensitive/insensitive, + glob pattern, clear button. +* Enhancements: Tree expansion icons have a better contrast now on Windows + with dark background. +* Enhancements: Forward and backward navigation buttons in the main window. + These buttons jump to the previous or next display state: + zoom window, hierarchy depth, etc.. +* Enhancements: A Package manager is provided. Packages are add-ons for + KLayout and can include macros, script libraries, fonts + for the TEXT PCell, technologies, DRC scripts etc. + Packages can be published on GitHub or any server + supporting WebDAV. After registering a package, users + can install or update packages with a few clicks. + For more information see https://github.com/klayoutmatthias/klayout/wiki + or "About Packages" in the "Various Topics" area of the main + documentation. The package manager is found in the "Tools" + menu under "Manage Packages". +* Enhancements: LEF/DEF reader: + - Compatibility fixes with version 5.8 + - Regions and Groups are supported now + - LEF/DEF is a standare format now and + can be used with "File/Open" for example. +* Enhancements: Libraries can be associated with a technology. Only libraries + associated with the selected technology are shown in the selection + dialog. +* Enhancements: Overlapping instances are easier to select now (instance + selection cycling). +* Enhancements: Many more methods in RBA/pya. For example: + - Ability to directly insert "D" types (such as DBox + into layouts and cells. + - RBA::RecursiveShapeIterator now supports complex (non-rectangular) + search regions + - A more consistent type framework (consistent complex transformation + types, vectors) + - More intuitive interface in certain objects (i.e. CellView, + LayerPropertiesNode, Annotation etc.). Changing an attribute + usually has an immediate effect on the respective property now + ("live objects") + - Hash functions for certain objects - Box, Edge, Trans, Polygon, + and other objects can be used as dictionary keys now. + - New import methods for Region, EdgePairs and Edges + - New features for LayerMapping and CellMapping + - Multiple selected cells in LayoutView + - RBA::TextGenerator to supply the Basic.TEXT PCell's + functionality as static feature + - Receivers can be added to signals and removed from + signals now. + - Individual instance iterator for CellInstArray + - ... +* Enhancements: Enhanced layout statistics form with detailed shape + statistics. +* Enhancements: Line styles (dashed, dotted etc.) available now. + Works best with manhattan layouts. +* Enhancements: "Marked box mode": boxes are drawn with a cross. +* Enhancements: Arbitrary pattern size for custom fill pattern (no + limited to multiples of 8). Max size is 32x32. + Enhanced annotations: + - Ellipses + - Position markers + - Text alignment + - "Auto measure" rulers (place a ruler measuring the + distances between adjacent objects with a single + click) +* Enhancements: DRC enhancements: + - Text support + - "smoothed" function + - "layers" function delivers all layers read + - Polygon with edge interactions + - middle and extent_refs methods for center point and other + references + - "corners" function + - "collect...", "select" and "each" methods +* Enhancements: GDS2 paths can now use the MultiXY extension too. +* Enhancements: X2 Support for Gerber import. +* Enhancements: A function to reset the window state after the + window has been misconfigured (i.e. detaching or closing + the dockable windows). This feature is found in + View/Restore Window. + +0.24.10 (2016-04-01): +* Enhancements: New method CellView#is_dirty? + This method indicates that a cell view needs saving +* Bugfix: DEF reader was not able to read routing + Routed segments with vias plus continued wiring + were not read. Instead an error message was shown + saying "Invalid orientation specification" +* Bugfix: Setting "technology-data" configuration property did not work + Reading or writing the "technology-data" configuration + property is the only way to access technology data from + a script. Hence it's important that this property can + be set. With this patch, "technology-data" can be set + to an XML string which has the same format than the + one stored within the configuration file. +* Bugfix: Reader issues with some RVE files + The RVE reader could not read files with cell names + containing hyphens (like "A-B"). +* Bugfix: Inplace operators are now working in Python too + For example "r1 += r2" was not working where r1 and r2 + were pya.Region objects. + +0.24.9 (2016-11-28): +* Enhancements: The RBA::Region#smooth function was enhanced to + give somewhat better results +* Enhancements: DXF's circle approximation can now also specified + through an "accuracy" parameter: if less than the number of + specified points is required to achieve the given accuracy, the + number is reduced accordingly. This also applies to the polygon + interpolation of spline and arc curves. +* Enhancement: RBA integration now is compatible with Ruby 2.3 + which allows building on Ubuntu 16 as well. +* Enhancement: OASIS files with instance angles >360 were rejected + before. Now, this has turned into a warning. +* Bugfix: DEF reader was failing to read MASK/via combinations. +* Bugfix: The marker browser's "show only rules with errors" option + was enabled again on sorting of errors. +* Bugfix: Using Layout objects for inputs didn't work +* Bugfix: Copying Hierarchy treets containing PCell's made the + PCell's being turned into static cells. + +0.24.8 (2016-06-19): +* Bugfix: XOR and different or big database units: + With tiling, XOR between two layouts with different database + units was still not working correctly. Also, when the database unit + was larger than 1nm, the XOR feature was dropping results sometimes + when tiling was on. +* Enhancements: progress bar shown also for "-z" mode scripts: + The solution of 0.24.7 has been modified to avoid annoying + progress bar windows popping up in background-window mode: + Now, progress bar windows will only pop up if an active main + window is present. This will enable progress bars for scripts that + open their own main windows but still keep the application GUI-less + when the script does not do so. +* Bugfix: Crash on empty panel: + When "New/Panel" is used a view without a layout is created. + An attempt to create layout on such panels crashed the application. +* Bugfix: LEF reader now can read PIN statements including VIA +* Bugfix: Polygon smoothing was not working properly in some cases + Previously the smoothing function was sometimes dropping vertexes + from the polygons. + Smoothing now does also guarantee not to exceed the given + distance. +* Bugfix: Sorting cells by area now sorts cells by name as second choice + In the previous version, cells with identical area were + grouped but the order was arbitrary. Now the name is used as + the second-level sorting criterion which keeps such cells + sorted by name. + +0.24.7 (2016-05-01): +* Bugfix: XOR and different database units: + With tiling, XOR between two layouts with different database + units was not working correctly. +* Enhancements: progress bar shown also for "-z" mode scripts: + Scripts running in KLayout with the "-z" option (don't + show main window) were not experiencing progress reporting + before. Now a small modal window is shown during long-running + operations that indicates the progress and provides a Cancel + button to abort the operation. +* Bugfix: Crash on using "Edit/Make cell": + This happened sometimes if the selected objects contained + instances. +* Bugfix: Invalid behavior of paths with reflecting segments: + For example a path made of the points (0, 0), (0, 1000) + and (0, 0) had a reflecting segment which cause some + computations (for example the bounding box) to return + invalid results. + +0.24.6 (2016-03-22): +* Bugfix: Early delete of plugin object when returning a new object + from PluginFactory#create_plugin. The returned object was + not held, so in Ruby the GC could destroy the object. This + could lead to crashes in applications employing the Plugin API. +* Bugfix: It was possible to edit read-only macros. + For example, it was possible to enter new lines in macros + marked as read-only. However, these changes were not saved. +* Bugfix: Shift+Tab not working in macro editor. + On some platforms, Shift+Tab was not working as expected. + This key combinations was supposed to left-shift a selected + block an undo indents. +* Bugfix: Wrong scaling of layers when doing XOR's with layouts + with different database units. + This happened when the layouts had different layers and + "summarize missing layers" was disabled. +* Bugfix: "Search & Replace" was not working properly if named + layers were present. Specifically the shape search was not + working due to an incorrectly formed query. +* Bugfix: Sizing produced incorrect results in case of slowly + varying polygon contours. The effect was a contour with + spiky distortions where two "almost parallel" edges + connected. +* Bugfix: The diff tool was not reporting differences correctly when + layers were present in one layout while they were not present + in the other. This happened specficially when "Summarize + missing layers" was disabled. +* Enhancement: New context mode in marker browser: "Current or Any". + In this mode, the markers are displayed in the context of the + current cell. If that is not possible because the markers are + given for cells outside the cell tree of the current cell, the + fallback is to show the markers in the current cell as in "Any" + mode. +* Enhancement: More consistent behaviour of cell and category filters + in the marker browser. For example, the category filter is + now also applied when selecting a node for a certain cell in + the cell branch and if nested categories are present, the + category filter is applied smarter - not just on each category. + +0.24.5 (2016-02-26): +* Bugfix: Instance browser was messing up array instances sometimes. + After browsing instances, in some cases array instances got + messed up. This specifically happened with OASIS files. +* Enhancement: Diff tool does not care about text alignment and + font properties unless in "exact" mode. Previously alignment + flags and font properties were compared in non-exact mode too + causing some confusion for example when comparing OASIS vs. + GDS. +* Enhancement: XOR on layouts with different database units. + Previously, the XOR tool refused to run on layouts with + different database units. +* Bugfix: The OASIS writer's S_TOP_CELL standard property now will + correctly use an "n-string" value in strict mode. +* Bugfix: The OASIS writer bailed out on 1x1 cell arrays. + Now these pseudo arrays are written as single instances. +* Bugfix: GUI type support for QVariant. + RBA/pya did not provide constructors for QVariant from + GUI types like QColor and QFont. These have been added now. + The corresponding conversion functions to QColor, QFont etc. + are provided as well. +* Bugfix: Problems with QVariant constructor: some feature were not + usable. For example, a double value could not be passed to + the constructor. Disambiguators have been provided to solve + these issues. +* Enhancement: Cell/Category filter for marker browser. The marker + browser now has a filter entry box to select specific cells + or categories. +* Enhancement: Images are cached now for faster image update. + Specifically the "fit" image will be cached and if "fit" is + selected again, the image is restored rather quickly (provided + the window is not resized). The cache depth can be configured + in "Setup/Display/Optimization". +* Bugfix: "Read all other layers" option in LEF/DEF reader was + potentially assigning GDS layers which have been defined in + the layer mapping. Now, layers used in the layer map for + targets are blocked and not used for automatic assignment. +* Enhancement: The database unit can be configured now in LEF/DEF + import options. Previously it was fixed to 1 nm. +* Bugfix: RBA::LayerProperties#id was not always unique as stated + by the documentation. Specifically not after a file was loaded. + +0.24.4 (2015-12-17): +* Enhancement: Layer colors are iterated for named layers without + layer numbers as well. Such layers are created when reading + DXF files for example and all layers had the same color + initially. Now, these layers will be assigned different colors. +* Bugfix: RBA::TilingProcess#threads was not working properly + when assigning a value of 1. +* Bugfix: The perimeter computation now has changed to 64 bit numerics + reducing the risk of numerical overflow. In earlier versions, + the perimeter computation of integer type shapes (polygons, + boxes, regions) was performed with 32 bit length which is + not sufficient to represent total perimeters of full layouts. +* Bugfix: The OASIS writer's S_TOP_CELL standard property now is + set to the correct value when using "Save cell as". +* Bugfix: Some patches are provided for enhanced compatibility with + MacOS. One MacOS-only bug was related to a crash when re-registering + of PCell's while developing then. +* Bugfix: PCell guiding shape parts could not be selected in partial + editing mode using a drawn selection box. +* Enhancement: The color of the guiding shapes can now be configured + individually. +* Bugfix: OASIS reader was not properly associating CELLNAME properties + with cells as the standard requires. Instead CELLNAME properties were + ignored. +* Bugfix: Strict mode compatibility issues in OASIS writer: + File level PROPERTY records were not put right at the beginning of the file, + empty tables were not listed with 0 position, property value strings were + not referenced by ID and the property modal variables were referenced + sometimes after name records (specifically CELLNAME with standard + properties enabled). According to the specification, the name records + reset these variables so this is not correct. Other readers may report + errors for such files. +* Enhancement: OASIS writer file size reduction. Now, the OASIS writer + will opimize the arrangement of cell array instances so that + modal variables can be used for a better compaction. +* Enhancement: During script debugging now the Assistant window is active + even while the debugger is executing a script. The main window is + still inactive however to avoid fatal cross-interactions between + the debugger and the user interface. +* Bugfix: The Python PCell sample was broken. +* Bugfix: slowly bending paths have not been displayed correctly. +* Bugfix: coordinates might have been swapped in the box properties + page when switching from local to absolute coordinates and + back. +* Bugfix: certain ruler styles with independent x and y axis have not + been displayed properly when using a global transformation. +* Enhancement: the performance of "Flatten cell" is enhanced significantly + in cases of many instances. +* Bugfix: DRC output was producing new layers with an empty layer name + selector (no major issue, but confusing). + +0.24.3 (2015-11-05): +* Enhancement: PYTHONPATH does not mess up the Windows installation any + longer. If you want to set the PYTHONPATH for KLayout, use + KLAYOUT_PYTHONPATH. +* Bugfix: The oasis_write_std_properties attribute of RBA::SaveLayoutOptions + did not work as described. To maintain backward compatibility and + enable the cell bounding box feature, a new attribute called + oasis_write_cell_bounding_boxes was introduced. +* Bugfix: "Hide all" only hides the top level layer properties, not the + members of layer groups. +* Bugfix: S_BOUNDING_BOX standard properties now appear after CELLNAME + records in OASIS files as required by the OASIS specification. +* Bugfix: The unintuitive behavior of the "Writer Options" has been changed. + Now, the writer options are applied to the saved layout always, not + just on the first save. Previously, the program remembered the options + and reused the previous options on following saves. This was quite + unintuitive since changing the properties did not necessarily affect + the way files were written. +* Enhancement: The starting directory for files dialogs is the "Documents" + folder on Windows now. Not the current directory which is the + installation directory usually. +* Bugfix: Signal names are property set for RBA::QListWidget and other + objects. This enables the use of "indexesChanged" signals and eliminates + Qt runtime warnings. +* Bugfix: Library cells were not properly loaded again after reloading + a layout which used libraries which itself referred to other libraries. +* Bugfix: The program crashed sometimes when using report databases with + properties. +* Bugfix: Layers with a single box rendered wrong results in the DRC's + size function with strong undersize. The boxes did not vanish as + expected but instead were inverted. +* Enhancement: The build now is compatible with Python 2.6. +* Bugfix: Reading OASIS files in strict mode with cell names consisting + of a "$" character followed by an integer number (like "$1") sometimes + messed up the cells. +* Bugfix: RBA::TilingProcessor could not be used both with tile size and + tile count set since setting the tile size was resetting the tile + count and vice versa. + +0.24.2 (2015-10-02): +* Bugfix: Flip and Rotate function did not work as expected when the view + was descended into the hierarchy. +* Enhancement: RBA::BrowserDialog now also accepts a parent parameter + which are important to better integrate such dialogs into the + application. +* Bugfix/enhancement: "klayout_vo.exe" now is a pure viewer application + again. By calling this executable, the edit functions cannot be + enabled and the save functions are disabled as well. Under Linux, + renaming the binary to "klayout_vo" switches KLayout into this + mode as well. +* Bugfix: The zoom and selection rectangle can now be dragged outside the + visible area and still define the zoom or selection rectangle. +* Bugfix: expressions were not coercing floating-point values consistently: + The expression "to_i(2)+1.4" rendered 3 instead of 3.4 as expected. + The sum was treated as an integer sum because the first operand is + an integer. Now the integer is converted into a floating-point value + as expected. + +0.24.1 (2015-08-26): +* Enhancement: switched to -O2 instead of -O3 to avoid issues with certain + gcc versions for which -O3 appears to be broken. +* Bugfix: fixed a backward compatibility issue in scripting. Specifically + "view.each_object_selected { |s| s.shape }" will work again. +* Bugfix: the layer matching algorithm in the .lyp file layer assignment + is compatible with the previous version again. This specifically applies + to "wildcard" specifications. In 0.24, named and unnamed layers were + considered different even if GDS layer and datatype numbers were identical. + The effect was that if a named layer was present, a .lyp file specification + without that name was not matching the named layer and with "add other layers" + the named layer was produced again. +* Enhancement: "Apply all" in the object properties dialog behaves somewhat + more intuitive now. Specifically changing the path endcap styles now + works as expected. For the other properties, a choice was provided + between applying changes in a relative or absolute way. For example, + when the left edge of a box is changed, the left edges of all selected + boxes are shifted by the same amount in relative mode. In absolute mode, + the left edge will be set to the specified position for all selected boxes. +* Bugfix: Python iterators will keep a reference to the source object now. + This avoids problems when fetching iterated properties (typically "each..." methods) + from short-living objects. +* Bugfix: Python's StopIteration exception does no longer appear in the debugger + now. This is an exception used internally to mark the end of an iteration + sequence. +* Bugfix: "Path#width=" does no longer reset the round end flag. +* Enhancement: the "Show All" mode of the marker browser is persisted now. + +0.24 (2015-07-25): +* Enhancement: Python support: Scripts and PCells can now be coded in Python as well. Python and Ruby + scripts may coexist in the same application and they can be debugged together. The macro + IDE features a Python tab in which Python scripts can be managed. + The language features of Python and Ruby are very similar, so the features of the + integration are highly comparable and easy to translate. The Python module + name is "pya". +* Bugfix: When using a layer with special hierarchy level settings (i.e. #*), the ruler did not snap to that shapes. +* Bugfix: Qt item ownership is now transferred on some methods. For example, "QTreeWidget#insertItem" now will + transfer ownership of the item to the tree widget. Hence, when the variable holding the item goes out of scope, + the tree item will not be destroyed. +* Enhancement: The shape selection can now be manipulated through scripts (new LayoutView methods "object_selection=", + "select_object" etc.) +* Enhancement: New edge vs. region operations are supported (edge AND region and edge MINUS region) +* Enhancement: RBA/pya objects now in general feature a "_manage" and "_unmanage" method will allows releasing + the ownership over an object in cases where object lifetime control is important (specifically when passing + objects around in Qt applications). +* Enhancement: Many new RBA methods, i.e. + Annotation#id + Cell#change_pcell_parameters + Cell#pcell_parameters_by_name + DPolygon#assign_hull (raw argument) + DPolygon#assign_hole (raw argument) + DPolygon#each_edge (with contour argument) + DPolygon#insert_hole (raw argument) + DPolygon#transform + DSimplePolygon#initialize (raw parameter) + DSimplePolygon#initialize (raw parameter) + DSimplePolygon#set_points + DSimplePolygon#transform + EdgePairs#+ + Edges#& (with Region) + Edges#&= (with Region) + Edges#- (with Region) + Edges#-= (with Region) + Edges#inside_part + Edges#select_inside_part + Edges#outside_part + Edges#select_outside_part + Instance#change_pcell_parameter + Instance#change_pcell_parameters + Instance#convert_to_static + Instance#flatten + Instance#is_pcell? + Instance#pcell_declaration + Instance#pcell_parameters + Instance#pcell_parameters_by_name + Layout#begin_shapes (with cell ref) + Layout#begin_shapes_overlapping (with cell ref) + Layout#begin_shapes_touching (with cell ref) + Layout#create_cell (with PCell parameters and/or lib name) + Layout#delete_property + Layout#flatten_into + Layout#has_prop_id? + Layout#pcell_ids + Layout#pcell_names + Layout#prop_id + Layout#prop_id= + LayoutView#clear_object_selection + LayoutView#object_selection + LayoutView#object_selection= + LayoutView#replace_annotation + LayoutView#select_object + LayoutView#unselect_object + MainWindow#cm_close_all + MainWindow#cm_save_all + MainWindow#cm_sel_move_to + MainWindow#instance + MainWindow#manager + ObjectInstPath#== + ObjectInstPath#!= + ObjectInstPath#< + ObjectInstPath#append_path + ObjectInstPath#clear_path + ObjectInstPath#cv_index= + ObjectInstPath#layer= + ObjectInstPath#seq= + ObjectInstPath#shape= + ObjectInstPath#top + ObjectInstPath#top= + RdbItemValue#initialize (with float argument) + RdbItemValue#float + RdbItemValue#is_float? + RdbItemValue#tag_id + RdbItemValue#tag_id= + SaveLayoutOptions#gds_write_file_properties + SaveLayoutOptions#gds_write_file_properties= + SaveLayoutOptions#oasis_write_std_properties + SaveLayoutOptions#oasis_write_std_properties= + Shape#each_edge (with contour argument) +* Enhancement: Qt API is aligned better with C++ Qt notation. Several bug fixes, new features and stability enhancements. + For example: + New: RBA::Qt::white or RBA::Qt::GlobalColor::white + Old: RBA::Qt_GlobalColor::white +* Enhancement: the debugger can now be disabled in the macro editor IDE for enhanced + script execution performance with IDE window open and less interactions between + Qt code and Macro IDE +* Bugfix: DRC crashed when outputting shapes to a layer that was used as an input + in further parts of the script but has been declared as input befor the layer + was output. +* Bugfix: ".lyp wildcard replacement" now honors transformations as well +* Bugfix: Gerber import issues fixed: Zero-diameter circular apertures moves are translated into lines, + Zero-length moves must not be clear for G1 and circular apertures. +* Bugfix: The technology button now applies the technology even if the technology did not change. +* Enhancement: Polygons with holes are better supported now (for example in partial editing). Such + polygons cannot be written to GDS or OASIS (they will be converted to ones without holes), but + they may be created in DRC scripts. +* Bugfix: "Reload layout" now doesn't forget the technology that was attached to a layout. +* Bugfix: Box side setters now behave more consistently in scripting. Before this fix, it was not possible to + assign the sides of a box this way: "b = Box::new; b.left = 100; b.right = 300". +* Bugfix: recursive library references (library referencing itself indirectly) made the application + crash. +* Bugfix: Subclass mapping sometimes failed in certain cases. This was particular annoying in Qt's event + handlers since "QKeyEvent" (or similar classes) only showed up "QEvent". +* Enhancement: "Move selection to" function available in "Edit/Selection/Move To". With this function, + the selection (shapes are instances) can be moved to a specific position. You can specify the + reference point to use. For example the center of the bounding box. +* Bugfix: Menu icon assignment was not working in some cases within scripts. +* Bugfix: Readonly (global) macros could be edited but not saved. +* Bugfix: Instances could be selected even if they had only invalid layers. +* Enhancement: The application now features a crash handler. This handler gives some debugging information + about the crash which you can send together with a bug report. In some cases, the crash handler will + allow continuing to work with the application although it's highly advisable to save and close. +* Bugfix: Registering plugins through the script's plugin API sometimes disabled view features. +* Bugfix: The macro IDE is not automatically put in the foreground any more. This sometimes interfered with + modal dialogs shown from a macro. +* Enhancement: The macro IDE now features watch expressions which are automatically evaluated when in a + breakpoint. +* Enhancements: The "Save Layout" options are now separated from the save function. That means they can + be configured once and the dialog will not pop up always when saving. This way, "Save All" is provided + which will save all open files with the current options. +* Enhancement: A "Close All" function to close all open layouts. +* Enhancement: In scripted layout loads, multiple files can be loaded into the same layout object. In that + case, the content of the files are merged. This worked so far with GDS. Now this also works with OASIS. +* Bugfix: OASIS int-typed properties now as written as such. Before, they have been written as strings. +* Enhancement: sizing code and path to polygon translation now will better maintain 45-degree edges. +* Enhancement: DRC support for edge/polygon booleans ("edges AND polygons" will select the edges inside the polygons, + "edges MINUS polygons" will remove the edges inside the polygons) +* Enhancement: Global layout properties supported as well. Layout properties can be edited by selecting + "User Properties" in "File/Layout Properties". They are written to OASIS. Writing to GDS2 is optional since + that may create compatibility issues with other tools. +* Enhancement: The OASIS writer will now produce some standard properties: "S_TOP_CELL", "S_BOUNDING_BOX", + "S_CELL_OFFSET", "S_MAX_SIGNED_INTEGER_WIDTH", "S_MAX_UNSIGNED_INTEGER_WIDTH" and "S_BOUNDING_BOXES_AVAILABLE". +* Enhancement: User properties of cells are available in cell context menu too: this way there can be + browsed in non-editable mode too. +* Enhancement: "Degenerated" polygons (one or two points) can be created in scripts now when using "raw" mode. + Such polygons are useful in the context of Minkowsky sums for example. +* Bugfix: The application crashed when the macro currently running was deleted. +* Enhancement: "Search & replace" now is available in viewer mode too, but without the ability to replace or + delete. +* Enhancement: In menu paths, appending a "+" to the path means to add something after that item. +* Bugfix: Guiding shapes are only selected if the PCell corresponding to them is visible. +* Enhancement: there is a clearer indication now that 'Show layers without fill' is on. +* Enhancement: a new mode is available in which PCell content can be selected too. When editing things inside + PCells however, PCell recomputation may revert these edits. + The mode is found in "File/Setup", "Application/Selection" page. +* Enhancement: Edge set boolean operations have been too selective with respect to almost-parallel edges. + Now a tolerance is applied allowing edges to deviate by ~1 dbu. +* Enhancement: Search & replace: texts, paths and boxes are exported into report databases. + Shapes and instances are shown in micron coordinates and as seen in top. +* Enhancement: "Apply all" in properties dialogs: with this function, a specific change is applied to + all shapes or instances of the same class. For example a path width change is applied to all other selected + paths. The change will be applied smartly (hopefully), so that the intention of the change is preserved. + For example a left edge shift for a box will be turned into the same shift for all other selected boxes. +* Enhancement: multiple categories can be selected in the marker browser now. +* Enhancement: the instance properties page now shows the cell dimensions (which are not editable of course). +* Enhancement: box property editing is less tedious - the left and right coordinates will now swap if the order + changes and the mode (width/center or coordinates) is maintained. +* Enhancement: Report databases now support "tagged values" (values with a name) which are shown in the marker + list. The markers can be sorted by these values, provided they are string or numerical values. + RVE properties are read as tagged values. + +0.23.11 (2015-05-23): +* Bugfix: partial edit mode - a cell could be selected even if not visible + With the new version, the selection behavior of normal selection + and partial selection are somewhat more consistent. +* Bugfix: The CIF reader was not able to read CIF files with line breaks + Commands with line breaks separating arguments were not read + correctly. +* Bugfix: Printout now considers global transformation correctly + Previously, the global transformation was ignored on printout + and for screenshots. +* Enhancement: Partial edit mode now also supports polygons with holes + Polygons with holes are rare since they cannot be represented + in GDS or OASIS files. But they can be generated in DRC scripts. + Now, such polygons can be edited in partial edit mode too. +* Bugfix: LEF/DEF reader now correctly uses half the path width for path extension + Previously the default value was 0. +* Bugfix: Library update was not working properly for OASIS reader + OASIS files with library references had as issue when updating + the library cells: cell deleted in the library were not deleted + in the layout. +* Enhancement: Warning, when drawing on invisible layers + Previously there was not feedback: the shape was drawn, but not + visible. Now, a warning pops up when trying to draw on invisible + layers. This warning can be disabled. + +0.23.10 (2015-03-07): +* Bugfix/Enhancement: CIF compatibility. The reader was not fully + compatible with the specification. For example, lower-case + characters have not been ignored as specified. This has been + fixed among other compatibility issues. +* Enhancement: The CIF writer now has an option to use blank characters + as x/y separator. Some tools apparently don't like comma + characters for separators (that is still the default). +* Enhancement: The CIF writer now has an option to emit dummy cell + calls on top level to reference the top cells. The top-level + entity is unnamed and does not correspond to a cell. Despite + that some tools require these entities not to be empty and + hold dummy references to the real top cells at least. +* Bugfix: Key bindings to default grid menu entries were not working +* Bugfix: When a layer was deleted and a shape on that layer was + selected, the application crashed +* Bugfix: Search and replace sometimes gave an internal error, for + example with the following query: + 'with * do cell.name = "A" + cell.name' +* Bugfix: Search and replace was crashing when trying to delete + instances. +* Bugfix: Net tracer bug: the first selected shape was always taken as + a whole even if parts were disabled through boolean NOT + operations. +* Bugfix: Net tracer was using the wrong origin when working in + "descend" mode. +* Bugfix/Enhancement: The technology setup now features "read all" and + "add other layers" flags for the reader mapping table and + the layer properties. Before, the global flags were used + causing some confusion. With the new options the behavior + can be configured consistently. +* Enhancement: The file dialogs now remember the file type chosen. +* Bugfix: The application issues a error message when trying to + write very big images instead of crashing +* Enhancement: Two new Ruby methods to write image files. These new + methods are LayoutView#save_image_with_options and LayoutView# + get_image_with_options. These methods allow configuration of + more features for the image generation like box to draw, + oversampling etc. +* Enhancement: DXF reader now converts ATTDEF entities to texts too. +* Bugfix: The application crashed when the top cell was deleted. + +0.23.9 (2014-12-28): +* Bugfix: DEF reader: E and W pin orientation was swapped. +* Bugfix: DEF reader: PIN definitions are read correctly even if + the PLACED statement comes before the LAYER statement. +* Enhancement: LEF reader: deprecated keyword TOPOPSTACKONLY is + ignored for VIA statements now instead of giving an error. +* Enhancement: DEF reader: the reader now is able to read BLOCKAGE + definitions. Currently, routing and placement blockages are + supported. The layers they appear on can be configured the + in the same fashion than for the other elements. +* Bugfix: Typing in the Macro Editor was slow if many macros were + bound to menus. +* Enhancement: GDS AREF's with pitches not a multiple of the database + unit are split into individual arrays rather than simply + rounding the pitch. The disadvantage of the rounding solution + was an accumulation of rounding errors over the array instances + leading to a substantial deviation from the target location. +* Bugfix: Paths have sometimes not been displayed properly, + specifically paths with a small segment length and sharp bends. +* Bugfix: DXF reader: bulges have not been ignored on the last vertex + of a non-closed POLYLINE as they should. + +0.23.8 (2014-11-15): +* Bugfix: DRC: "inside", "not_inside", "outside" and "not_outside" were + broken +* Bugfix: LEF/DEF reader: VIA PATTERN support was broken +* Enhancement: LEF/DEF reader: Support for LEF/DEF Version 5.8 syntax +* Bugfix: The Tab order of certain dialogs was weired +* Bugfix: Multi-layout layer properties files in technology setups behaved + strangely. Now, the behavior of layout properties files (.lyp) is + the same in the technology context and the usual application context. + +0.23.7 (2014-10-11): +* Bugfix: DRC was crashing on second run if it was overwriting an input file. +* Bugfix: RBA::InputDialog::ask_double was not accepting negative numbers. +* Bugfix: With a net highlighted in the net tracer, so view zoomed to show + the whole net if a layer was shown or hidden. +* Bugfix: Ruler snapping was disabled for moderately complex hierarchies. + The threshold has been increased. Now snapping of the ruler to objects + also works for denser and more complex layouts. +* Bugfix: Some signals were not available to Ruby (i.e. QIODevice signals). +* Enhancement: When using "Hide empty layers", the layer list will scroll to + keep the selected layer visible (unless it is empty and hidden therefore). +* Enhancement: A "split view" for the cell trees. When multiple layouts are + loaded in a panel, you can choose split view (right mouse in cell list, + check "Split View"). In split view, up to 5 cell trees are shown at the + same time. + +0.23.6 (2014-08-20): +* Bugfix: A DRC issue was fixed. Sometimes errors were reported too many times. + This happened for big polygons wrapping smaller ones. +* Enhancement: Now, macro key bindings can be edited on the key binding page + of the setup dialog too if the macros are shown in the menu. + Before, those changes were reset when the program was closed. +* Enhancement: The DXF reader now also considers thin (width = 0) POLYLINES + as mergable edge contributions in the "merge edge" modes if the + POLYLINES are closed ones too. +* Bugfix: The float function in the OASIS writer was fixed. + This is a code cleanup, and did not have effect on functionality (yet). + +0.23.5 (2014-07-04): + * Bugfix: DXF polyline mode could not be set in reader options in Ruby. + A value of 3 and 4 was not allowed. + * Enhancement: CIRCLE AND ELLIPSE objects are treated as thin lines in DXF reader's + "merge edges" mode. Hence they participate in region formation. + * Enhancement: A warning is displayed when an ambiguous keyboard shortcut is triggered + * Bugfix: An assertion in the boolean processor was fixed. + * Bugfix: The following command caused the program to crash on the Ruby console: + "require 'net/http'; uri = URI('xyz')". + * Bugfix: The "cell" function in DRC scripts was creating a new cell if is was not existing + yet. In general, the DRC function is not supposed to change the layout's hierarchy. + * Bugfix: The macro editor now can distinguish between the same file with different suffixes. + Before, "test.rb" and "test.lym" were not presented as different files. + * Enhancement: The marker browser now indicates if the number of markers exceeds the + specified maximum and the list is shortened. + * Bugfix: The "browser.rb" sample was not working any longer because of a backward + compatibility issue. + +0.23.4 (2014-03-15): + * Bugfix: UTF8 encoding in XML was ignored - special characters have not been + read properly. This in particular caused issues in the .lym macro files + when UTF8 characters are employed. + * Bugfix: Backward compatiblity issue: layout files with PCells written with 0.23 + could not be read with 0.22 and vice versa. + * Bugfix: Label text centering and right-alignment was not working propertly + with the default font. + * Bugfix: A segmentation fault occuring when rerunning a PCell macro has been + fixed. + * Bugfix: PCell layer parameters can be set to "no layer" now. This was possible + before, but caused some issues - i.e. creation of dead layers. + +0.23.3 (2014-02-23): + * Bugfix: DRC bug fixed: "@x" notation was not working for layout, source and + target. + * Bugfix: A boolean processor bug was fixed that cause an internal error in + some rare cases with certain edge configurations. + * Bugfix: Image documentation was wrong about the offset meaning: it's the center, + not the lower left corner. + * Bugfix: Layer table tab names were lost when sorting or regrouping a layer + list. + * Enhancement: The net tracer now can be configured to auto-color the nets with + a set of predefined colors. 8 colors can be configured in the + configuration dialog or the net tracer setup page in the setup dialog. + * Enhancement: The net tracer now has a "Redo" button which will trace all + nets in the list again using the original start and stop (for path + tracing) locations. + +0.23.2 (2014-01-26): + * Bugfix: Build issues fixed for MacOS and some Qt versions. + * Bugfix: DRC log to file was not working. + * Bugfix: Ruby script was crashing when using ruby-implemented tiling + processor receiver and multi-threaded tiling. + * Bugfix: Layout move function was using database units instead of micron. + * Bugfix: Search & replace markes where not shown in a reasonable context + for search in "All cells", instance markers are not shown + correctly. + * Bugfix: DRC now also handles the case of different database units for + multiple inputs. The database unit of output files is now taken + from the input. + * Enhancement: Search & replace layer selection combo boxes now show display + string + * Enhancement: Unexpected elements are ignored in XML files. + * Enhancement: Options are provided for making boolean operations not + optimize the "single empty input" case for XOR tool + and DRC (strict handling mode). + +0.23.1 (2013-12-07): + * Bugfix: RBA SimplePolygon#inside? and Polygon#inside? now work as expected + * Bugfix: DRC output to marker browser now works as expected + * Bugfix: HTTP URL's now are written as such into the MRU list + * Bugfix: A net tracer crash was fixed + * Bugfix: Net tracer connectivity setup: the move buttons now work as expected + * Bugfix: a DRC issue was fixed when assigning the output of modifying operations (i.e. + "layer=layer.move(...)". + * Enhancement: compatibility with clang 3.3 was established as well as compatibility + with Ruby 2.0. + * Bugfix: some memory and static code analysis issues have been fixed after + analysis with valgrind, clang and Coverity. + +0.23 (2013-11-24): + * Enhancement: Net tracer: Nets can now be colored individually. + * Enhancement: The OASIS writer now uses CBLOCK compression also for tables. + * Enhancement: Transparency is now supported for images (as a mask only - not a real + alpha channel, but close to). + * Enhancement: The layer/datatype assignment for purely named layers originating from + DXF or CIF has changed. It's now no longer done when reading DXF or CIF but when + writing the file. This solution is more general and allows some level of control, + i.e. by scripts. + * Enhancement: "http:..." URLs are now allowed as file names - such files are loaded + from the URL instead. Such URL's can be used from the command line or within scripts + for example. Drag and drop of HTTP URLs is also support. This allows dropping of + URLs from the browser into KLayout. + * Enhancement: Menus have been rearranged: + The "Tools" menu was split into "Tools" and "Macros", "Verification" menu has been + resolved into the "Tools" menu. + * Enhancement: New command line options are available: + "-nn" to load .lyt (technology file) on command line. "-b" for batch mode (implies some + batch-mode specific options), "-zz" for display-less applications. + * Enhancement: "Adjust cell origin" now adjusts the cell in their parents as well (optional). + * Enhancement: Cells can have properties now: Cells can now have user properties as well. + However, writing these properties to files is subject to some constraints. Cell + properties are fully supported on OASIS and optionally supported on GDS using + an extension feature. + * Enhancement: Transformations are now available for whole layout (applied to all cells). + This is specifically useful for scaling layouts. + * Enhancement: A function now is available to convert PCell's to normal (static) cells. + * Enhancement: The printout now has a header and footer. + * Enhancement: The XOR can now be confined to a region. + * Enhancement: There is an option now to hide guiding shapes for PCell instances. + * Enhancement: New option to pan/zoom or do nothing on paste - Option is in "Navigation/Zoom + and Pan" in setup dialog. + * Enhancement: Cells can now be copied in "shallow copy" mode without creating copies of the + child cells. + * Enhancement: A "Tap" function is provided now. The tap function selectes and changes to the + layer of the currently selected shape. New shapes will be put on that layer. + * Enhancement: There now is a function to convert instance arrays to single instances. + * Enhancement: The instantiation path of an object is now shown in the status bar. + * Enhancement: An option is now provided for configuring the replacement character for + OASIS and GDS. The replacement character is used instead of illegal characters. + * Enhancement: Some unicode support for texts in default font ("µ" now is available). + * Enhancement: There is a GDS2 writer option now to eliminate zero-length paths. + * Enhancement: There are new save options: disable or enable writing of PCell and library cell + contexts, drop hidden cells, keep instances even if cells are dropped. + * Enhancement: Layers can now be made invalid. Invalid layers don't participate in selection or + snapping. + * Enhancement: Multi-selection on 'open layout' allows to open many files at once. + * Enhancement: DRC functionality: a rich DRC engine was integrated in the tool. The + implementation is flat, so performance is limited compared to hierarchical tools. A tiling + approach is available to distribute tasks on multiple CPU's to somewhat mitigate that issue. + * Enhancement: Search and replace feature plus custom queries: the search & replace functionality + is just the tip of the iceberg. "custom queries" are a powerful feature to perform + queries and modifications using a SQL-like language. + * Enhancement: Some enhancements on LEF/DEF import: i.e. proper default routing rule with octagon + ends implementedin DEF, NONDEFAULTRULES for LEF reader + * Enhancement: Auto-import feature for technologies: technologies can now be imported from + the installation folder automatically. + * Enhancement: RBA enhancements: Tiling processor, fill tool bindings, regions, edge collections, + edge pairs and edge pair collections, numerous new methods and classes. + * Enhancement: More configuration options for macro IDE: stop on exception will ask whether to stop + in the debugger when an exception is thrown. The editor font can now be configured. + * Enhancement: The diff tool now has an option to disable smart cell matching and enable + name-only cell matching. + * Enhancement: cells can now be dragged and dropped from the cell list to the canvas. + * Bugfix: Layout diff reported texts as different which are not. + * Bugfix: Instance editor options problem fixed: magnification could not be edited in some cases. + * Bugfix: DXF reader: anisotropic scaling of block deletes subcells of that block, error messages + on coordinate overflow. + * Bugfix: OASIS output files were corrupt when edge objects were written. + * Bugfix: Problems with boxes having odd width are solved now. + * Bugfix: Close function - "Cancel" now works properly on the "which view to close" dialog. + * Bugfix: Closing the main window while layouts are loaded crashed the application. + * Bugfix: Net tracer did not work properly with OASIS in viewer mode. + * Bugfix: Diff tool was not matching cells propertly in some cases + +0.22.9 (2013-09-19): + * Bugfixes: LEF/DEF reader: NONDEFAULTRULES, TAPERRULE implemented now, + correct octagon style for default rules for non-rectangular routing, + POLYGON and RECT implemented for routing. + * Bugfix: DXF reader crash fixed for ARC objects with identical start and end angle, + polygons have not been read in some cases. + * Bugfix: It is possible again to use "Show as new top" after "Descend/Ascend hierarchy" + without clicking at the cell list. + +0.22.8 (2013-06-21): + * Enhancement: "gds2" now is recognized as extension of GDS files. + * Bugfix: CIF reader was broken in some cases. Layers have not been assigned properly + and sometimes, identical or no GDS layers were assigned. + * Bugfix: RecursiveShapeIterator (RBA) had an issue when iterating shape arrays. + This was the case when working on OASIS files in viewer mode for example. + * Bugfix: DEF reader had some issues (TAPER and RESISTANCE keywords have not been + supported properly). + +0.22.7 (2013-03-22): + * Bugfix: The output mode in the XOR tool dialog was not shown properly. Instead of + "Report database", "Other layout" was shown etc. + * Bugfix: When creating a third layout for output of the XOR tool, the database unit + was not set to the input layout's database unit. + * Bugfix: Layout numbering was not done correctly when multiple layouts were loaded + with the same file name. + * Bugfix: In viewer mode sometimes it was not possible to move to the next selected + item in the shape properties dialog. A message appeared saying "Shape array members + cannot be modified." + * Enhancement: OASIS writer performance is significantly better now in cases where + shape compression is relevant. Also, shape arrays are maintained as such which + avoids repeated compression. + * Bugfix: A drawing bug was fixed which caused shape arrays to disappear on certain + zoom levels. + * Bugfix: "Add missing layers" now adds all existing layers, not just the ones + present in the currently selected cell also in viewer mode. + +0.22.6 (2013-03-03): + * Bugfix: It was possible for example to add shapes to a PCell. This feature does + not make sense since PCell's are updated when required. In that case, changes + are lost. This feature has been disabled for PCell's. + * Bugfix: RBA::Application#get_config was crashing in some cases (i.e. in -zz mode) + * Bugfix: The "create cell variants" function was not working properly if a single + instance array was present for a cell. + * Bugfix: The radius was limited too strictly for end segments for the ROUND_PATH + PCell of the Basic library. + * Enhancement: Some additional RBA methods have been enabled which disambiguate + various constructors for Qt objects (i.e RBA::QVariant#new_i allows to create + a variant with "int" type) + * Bugfix: the Ruby-less build was broken. + * Bugfix: Copy & paste was not working for the layer list. This is an effect of the + modified key handling in KLayout 0.22. New menu functions are provided in the layer + list's context menu to resolve the ambiguities involved in that feature. + These menu functions allow to copy, cut and paste parts of the layer list to other + windows or tabs. + * Bugfix: PCell's are now cleared before the production method is called. + * Enhancement: OASIS layer names are also recognized if the LAYERNAME record + appears after the layout's body. + * Bugfix: in previous versions it could happen that the layout panels got + locked and it was no longer possible to switch between different tabs. + * Bugfix: a potential crash in the drawing engine was fixed. + +0.22.5 (2013-02-02): + * Bugfix: Layer properties file in technology definitions can be given as relative path + in which case KLayout uses the base path + * Enhancement: Windows installer now provides a useful default installation path when + started as non-administrator. + * Bugfix: GDS reader: a false warning was issued sometimes indicating that an + AREF might be off-grid. + * Bugfix: Fixed build for MacOS and some Linux distributions. + * Bugfix: Fixed a crash that happened when KLayout was closed while a instance + property form was still open. + * Enhancement: PCell names are now shown in the status bar + * Bugfix: Fixed a crash that happened when a macro was run that was already closed. + * Bugfix: MRU list for macro editor's console was getting huge when the macro editor + was closed and opened again in the same session. + * RBA bugfixes: "destroyed?" was not working properly in some cases. Infinite + recursion happened for for PCell implementation without "get_layers". + * Enhancement: Better error messages for RBA including class and method names. + * Bugfix: PCell implementation issue. Some methods were passed a deep copy + of the layout object which first created a potential performance issue and + second made it impossible to modify the layout. + * Enhancement: DXF writer now provides a header which enables some tools to + read the generated DXF files. + * Bugfix: DXF reader: degenerated polygons for HATCH objects don't cause an + assertion now. + +0.22.4 (2012-12-30): + * Bugfix: a drawing problem was fixed which created invalid images in certain + cases. + * Bugfix: multi-tab .lyp files could not be used correctly as default layer + properties files. + * Bugfix: the macro IDE crashed sometimes when adding a new location. + * Bugfix: the application crashed when the net tracer window was open and a new + layout was loaded into the same panel. + * Bugfix: a memory leak was happening when a boolean operation (in particular + inside the XOR tool) was cancelled. + * Bugfix: when inserting an instance using the lower left corner of the bounding + box as the reference point, rotations have not been handled correctly. + * Enhancement: the "detailed" view of a net's properties in the net tracer now + reports area and perimeter of the net's shapes (only available for nets up to + ~2000 shapes to avoid timeouts on computation). Thanks to Peter for providing + the raw version of that code. + * DXF reader enhancements: + Support for "999" comment records. DIMENSION and SPLINE entities are supported + now to some extent. "fit" formatting of TEXT objects supported now. + Holes are correctly formed now from multiple POLYLINE/LINE items when combining + them into polygons. + * DXF writer: HATCH entries are written in a compatible way now. Text formatting + flags are fixed (top and bottom formatting was swapped). + +0.22.3 (2012-11-25): + * Bugfix: a segmentation fault sometimes happened in the drawing engine + * DXF reader enhancements: + Anisotropic scaling of instances is supported. LWPOLYLINES with both common and + variable width are handled more gracefully. Closed polylines produce closed shapes + now, not closed paths. + * Selecting of instances with non-orthogonal transformations is easier now + * The local config files now override the global one again like this was in 0.21.x. + * A compile problem with older gcc's (namely gcc 4.4) was fixed. + * Selection of cells in the cell tree now has been fixed (before that sometimes + cells were selected in addition to current ones instead of being the only + one selected). + * The RVE DB reader was enhanced to read error waivers and certain new forms of the + RVE file. + * The align operation now works also if there is not a primary and secondary + selection (i.e. selection by box) + * "Layer pollution" does not happen when instantiating a PCell or library cell + which is instantiated in another panel + * PCell layer parameters now can be set to any layer which is present in the + layer list, not just the ones which are created already in the database + * The round corners function has been fixed for certain cases. In particular + the limitations are less strict (for example it is possible now to create + a donut from a square with a hole). Changing of the radius later now works + more reliably. + * "Shallow copy mode" now works again for copy & paste of instances. Previously + instances were always copies in deep copy mode which creates new cells. + * Move of partial selection now works like the move function for other objects: + select a subset of edges, click on them to start dragging and click again to + drop them. + * Arrow keys don't interfere with move by mouse mode any longer. Previously using + the arrow keys while moving objects with the mouse had strange effects. + +0.22.2 (2012-11-01): + * Copy & and paste of PCell or library instances across layouts did not work + Instead, the cell was duplicated, but it's no longer a PCell or library cell. + * "klayout -v" was segmentation faults + The -v option is supposed to print the version number. After printing it, + the executable terminates with a segmentation fault. + * 'Real' unicode file names could not be used + Using Unicode filenames (i.e. Chinese) file names did not work properly. + In particular these files were not opened on Windows. Unicode file names were + not recorded properly in the "recently used" list. + In version 0.22.2, unicode files names can be used in all places on Windows + and Linux. + * Some LEF import issues solved + The outline layer was not always generated correctly. Pin labels were not generated + on pin shapes for LEF import. + * KLayout was crashing on exit when the clipboard contained something + The application issued a segmentation fault on exit (or "is not working" on Windows) + when the clipboard contained data. + * Ruby debugger crashed in some cases + In some cases (i.e. breakpoint in a widget callback) the debugger crashed with a + "Stack level too deep" message. + * Instances of leaf cells were always copied "flat" to another layout + There was no way to copy the instance plus cells before this was fixed. + * Sometimes PCell variants remain as top level cells + If the Instance function was cancelled and a PCell was active, a new top cell remained + which held the PCell that was about to be placed. These cells could be deleted manually, + but that may be annoying. + * Help index cache was growing large in some cases + When switching between versions, the help index that KLayout creates once grew larger + every time a new program version was used. This increased startup times of the program. + * An "abs" function was missing expressions + * Experimental support for 64bit coordinates is provided. + To enable 64bit coordinates, use "-with-64bit-coord" on the build script. This feature + requires gcc >= 4.4 and a 64bit platform. 64bit coordinate support is "experimental" + because of some known issues (i.e. it is possible to write corrupt GDS files with such large + coordinates). OASIS on the other hand supports 64bit coordinates. + +0.22.1 (2012-10-09): + * Edit/Select/Disable All was not working + This function was supposed to disable all selectable items. Instead, an internal + error message was issued. + * Build problems with gcc 4.0 were solved + * GDS text size as based on micron instead of user units + Because of this the text object size were not be correct if the user unit was not micron. + * Arrow keys behaved differently + This had annoying effects if one was used to a particular behavior. The operation of the + arrow keys was restored in some places but still moving with the keys in move mode is + possible. + * -z option worked differently + "-z" is not a true "non-GUI" mode, in which no XServer connection is made on + Linux. The advantage of this is that KLayout can be used as a engine on display-less + servers. In 0.22, some user-interface related objects were not available in Ruby code. + Some scripts depending on MainWindow or LayoutView objects were not working + because these objects are no longer available. In 0.22.1 the original behavior of "-z" + was restored and instead, "-zz" was implemented as a different, true display-less mode + * KLayout was crashing when using custom key bindings on some platforms + On some platforms, apparently Linux and recent Qt versions, KLayout crashed when + custom key bindings are defined and the respective key is pressed. + * Some issues with the macro tree solved + Drag & drop was not working correctly within the macro tree on Windows. KLayout + crashed when trying to open a macro file that is not writable. + +0.22 (2012-09-19): + New available features: + * A script (macro) development environment is now integrated into KLayout. + It features a simple debugger, a syntax highlighting editor. For details + see About Macro Development at http://www.klayout.de/doc/about/macro_editor.html. + * KLayout now features an integrated help system (available through the "Help/Assistant" menu entry). + * Support for libraries. See About Libraries for details. + http://www.klayout.de/doc/about/about_libraries.html + * KLayout now supports parametrized cells (PCells). + There is a cool feature called "guiding shapes". Learn more about that here: + About PCell's (http://www.klayout.de/doc/about/about_pcells.html). + * A basic library is provided adding text generation for example to KLayout. + See About The Basic Library for details. + * The net tracer now allows to use layer combinations (derived by boolean operations) + for the conductive and via layers. See The Net Tracing Feature for details. + * A technology management is integrated into Klayout. + That allows to switch various settings depending on the choosen technology. + See About Technology Management for details about this feature. + * The drawing can now be rotated or flipped without having to modify the layout. + This function can be found in the "Display" menu under "Global Transformation". + * The "background" combination mode allows to erase parts of existing shapes or + add new parts to existing shapes. The background combination mode is available + as a new drop-down button in the toolbar. + * A "cell variant" generation function simplifies hiearchical editing. + See Create Cell Variants for details about this feature. + * General performance improvement of the render. + This has been achieved by bitmap caching of cells and various optimisation measures. + * Images now can be aligned with a layout using landmark points. + The possible image transformations now include shear and perspective distortions. + See Using Landmarks To Align Images + * Images can now be stacked and moved to the bottom and to the top. + The configuration now is stored along with additional configuration data + (i.e. libraries) in a per-user directory in "~/.klayout" on Linux and in the application + data path on Windows. The configuration file now is found there and is called "klayoutrc". + New locations can be added using $KLAYOUT_PATH. + * The database unit of the layout can be changed now in the layout properties page + (menu: "File/Layout Properties"). + * Most numeric input boxes now accept formulas, + i.e. "1254+3221" instead of a single value. + * By clicking a on single point multiple times you can now cycle the selection through all objects below the point. + * Layers can be copied (menu: "Edit/Layer/Copy Layer"). + * The selection can be duplicated (menu: "Edit/Duplicate" or Ctrl+B). + * The size of the default font can now be adjusted (choose between small (current), + medium and large on the Display/General page of the setup dialog). + * The number of points used for circle interpolation can now be adjusted + on the Application/Circles page of the setup dialog. + * Some changes to make the user interface more consistent, i.e. "Synchonized views" + has been moved to "Display" where most users where expecting it to be. + * The selection now can be moved with the cursor keys in move mode. + * The cell selection dialog allows to specify glob pattern wildcards in the filter box now. + * OASIS CBLOCK compression and strict mode writing is supported now. + * Multiple cells now can be selected in the cell tree. Some functions operate on that set (i.e. delete, copy, hide). + * KLayout now has a LEF/Def import feature. See About LEF/DEF Import for details. + * This feature is somewhat experimental. Feedback is welcome about that feature. + + Solved bugs: + * Edit/Select/Disable All not working + This function is supposed to disable all selectable items. Instead, an internal error message is issued. + * Build problems with gcc 4.0 + * GDS text size is based on micron instead of user units + Because of this the text object size may not be correct if the user unit is not micron. + * Arrow keys may behave differently + This can be annoying effects if you are used to a particular behavior. On the other hand, moving with + the arrow keys now is possible in move mode. + * -z option works differently + "-z" not is a true "non-GUI" mode, in which no XServer connection is made on Linux. The advantage of this + is that KLayout can be used as a engine on display-less servers. But some scripts depending on MainWindow or + LayoutView objects will not work because these objects are no longer available. The solution will be to + restore the original behavior of "-z" and implement a different, true display-less mode (i.e. "-zz"). + * Crash when using custom key bindings on some platforms + On some platforms, apparently Linux and recent Qt versions, KLayout crashes when custom key bindings + are defined and the respective key is pressed. + * Issues with the macro tree + Drag & drop does not work correctly within the macro tree on Windows. KLayout crashes when trying to + open a macro file that is not writable. + +0.21.19 (2012-06-19): + * Gerber file reader enhancements: Negative contrast layers supported now + with an option to provide a background and 'real' inversion. + * Gerber reader bugfix: SR command implemented correctly now also for + negative contrast. + * Enhancement: transient selection markers are drawn over other markers + for better visibility. + * Bugfix: XOR tool can be canceled without crash. + * Fixed build problems with gcc 4.7.0. + * Fixed a layout import bug (cells have been deleted which should have been kept). + * OASIS writer bugfixes: don't accumulate rounding errors when writing type 0 + or type 1 pointlists. Avoid writing invalid type 0 and 1 pointlists in certain + cases. + +0.21.18 (2012-05-14): + * Gerber file reader enhancements: SR (step-and-repeat) is supported now. + * Gerber reader bugfix: AM macro expansion was not done correctly sometimes. + * Gerber reader enhancements: removed some superfluous warnings. + * CIF writer: convert OASIS circles correctly to "R" round flash primitives. + * Bugfix: copy & paste of layers in the layers tree now works and the copied + layers are pasted to the current position. + +0.21.17 (2012-04-12): + * The memory footprint of 8-bit images has been reduced significantly. + * The "Save current cell as" bug (see here) has been fixed: this function now works as expected. + +0.21.16 (2012-03-05): + * GDS format readers and writers now support time stamps: by default, the + current time is written to the files. This option can be turned off in the + "Save Layout Options" to simplify comparison of binary files for example. + In addition, the timestamp of the BGNLIB record is read and displayed in the + "Layout Properties" page. + * The GDS reader now is somewhat less strict and also accepts certain broken versions + (i.e. missing ENDEL records). + * Several bug fixes related to scripting applications: Proc objects are held by the + application now, Application does not abort in non-GUI mode in operations that take + some time and try to display a progress bar. + * DXF bugfix: layer names now do no longer contain blanks which made files unreadable + by other tools like AutoCad. + * Bugfix: foreground objects (i.e. rulers) are now correctly rendered in printout. + +0.21.15 (2012-01-22): + * Bugfix: the correct initial cell now is selected. Formerly, the largest + cell was selected even it is was not a top cell. + * "Show only selected" in the layer panel does not clear the selection any longer. + * GDS reader now is less strict with respect to record order of STRANS, MAG and ANGLE. + * Excellon drill file reader is now conforming to the specification in many respects. + * Instances are not selected if the cell does not contain shapes in visible layers. + * Marker browser does now work correctly when layer view transformations are present. + * DXF reader enhancements: read LAYER table and assign GDS layers in that order, + except for layer which got a layer name through their name (i.e. L1D100). + Bugfix: don't suppress INSERT's if the layer is not mapped. Write TEXT and + MTEXT correctly (multi-line support, small chunks for MTEXT, character alignment). + New option: keep all cells for DXF reader. Added elliptic interpolation edge type + (not really tested yet). HATCH objects with bulges and various edge types are + implemented now. MTEXT supported now. New option: convert text to polygon for + unicode support. + * Changed default sorting of layers: always sort by layer number first, even if there + is a name. If there is no layer number, sort by name. + +0.21.14 (2011-11-28): + * "Synchonized views" and "Select top level only" configuration shortcuts + added to the "Views" menu. + * Gerber reader bugfixes and enhancements: less strict parsing of aperture + definitions, rotation of aperture macro elements is not considered + correctly. Enhanced drill file reader. + * Disabled cell copy & paste in viewer mode (was not working correctly). + * Bugfix: it was possible to create an invalid configuration when removing + all default stipples (lead to a crash on the next KLayout start). + * Bugfix: an error appeared when switching the tabs in the layer panel in + certain configuration involving groups. + * Correct initialization of ruby interpreter to support Ruby 1.9.2 and + later. + * Bugfix: marker browser was only partially reporting collected markers + for certain categories. + * XOR now has an option to make use of multiple cores using a configurable + number of threads. + * Bugfix: reset of configuration required a restart. + * Bugfix: OASIS reader now is more robust against overflow for g-deltas. + * GDS reader enhancement: An invalid angle (outside the range of -360 to + 360 degree) now is no longer an error and the angle is automatically + restricted to the valid range. + +0.21.13 (2011-09-19): + * A bug in the clip function was fixed which was related to empty cells + (reported in the forum) + * By default, the first level of hierarchy is shown now if a new layout + is opened. That feature can be adjusted using the "Default levels of + hierarchy" setting on the "General" page in the setup dialog. + * For multiple top cells, the cell with the larges footprint is selected + initially. + * A simple print function (available in the "File" menu) + * Support for command 93 in CIF (AREF) + * Improved handling of single point paths. In particular with round ends. + They now render a circle in OASIS. In reverse, OASIS circles now render + single-point paths with round ends in GDS. + * Ruby scripts now work more reliably under ruby 1.9 (i.e. Windows binary). + Formerly, some operations failed due to improper initialization of the + encoding system (i.e. Dir.glob). + * Clean uninstaller under Windows (removes all registry entries). + +0.21.12 (2011-07-29): + * Bugfix: GDS2Text format was not recognized correctly in some cases. + * Texts: strings with line breaks can be edited now (line breaks are shown + as \n). Text size is shown more realistic now. Alignment flags are + supported in GDS2 and can be edited now. + * Layer and datatype is shown in addition to OASIS layer names in the layer + list. The old behaviour can be configured by unchecking the "Always show + layer and datatype" checkbox on the "Layers" page in the setup dialog. + * For most file dialogs, the specific filter is the default now (i.e. + "*.lyp" is default instead of "All files" for the layer properties file + dialogs.) + * There is a "all layout files" filter for the layout file selection dialogs. + +0.21.11 (2011-06-26): + * Bugfix: command line option -p was not working correctly. + * Bugfix: writing layouts with large coordinates was producing invalid OASIS + files in some cases. + * The tarkit now contains the files necessary for a build with Visual Studio + on Windows. + +0.21.10 (2011-05-07): + * Bugfix: content of cell was not shown correctly when the cell was moved. + * Bugfix: PCB import was not working properly (Bottom mounting mode was + broken, top cell and dbu were not set correctly when a PCB project file + was imported directly). + * Bugfix: RVE reader was not correctly handling check names with a dot. + +0.21.9 (2011-04-20): + * Bugfix: Loading of layer files with tabs was not working properly: the + first tab's name was discarded. + +0.21.8 (2011-04-06): + * Bugfix: navigator was broken. It was not functional if KLayout was closed + with the navigator open. + +0.21.7 (2011-03-24): + * DXF bugfixes (arc interpolation of polylines). + * Performance enhancement of "test for shapes in view" feature of layer list. + +0.21.6 (2011-02-20): + * DXF enhancements (support for bulges for polylines). + * Bugfix: RBA::Edge.intersect? reports intersections correctly also if edges + are collinear. + * Performance bugfix: selection was slow for certain cases of hierarchy. + +0.21.5 (2011-02-03): + * DXF enhancements (some polylines now have the correct width). + * An option to select how instances are placed (at origin or lower left + corner of bounding box). + * Bugfix: when placing an instance at the lower left bounding box corner, + it is guaranteed that the origin is on grid. + * Stable operation on UTF-8 filesystems and with non-english locales on + Linux (i.e. consistent use of dot as decimal point). However, UTF-8 file + names are not correctly displayed although the file is opened correctly. + This will be fixed in the next major release. + +0.21.4 (2011-01-19): + * Correct installation of the image reader plugins for the Windows packages. + * Bugfix: rotate counterclockwise was clockwise and vice versa. + * Bugfix: "draw border instances of arrays" feature was broken. + * Fixed a ruby crash on some systems (related to an initial 'require' on a + ruby module loaded with -rm). + * CIF reader enhancement: "DS" statements are now accepted with a single + value also. + * The Windows installation now also includes the standard Ruby modules. + +0.21.3 (2010-12-27): + * DXF reader and writer enhancements. The reader now allows to specify how + POLYLINE entities are read. In most cases, the "Automatic" mode will be + appropriate. The writer was enhanced by providing an option which + determines how to write polygons. The default method is POLYLINE. A + comprehensive description of the DXF format, as KLayout understands it, + together with a description of the modes, is given here. + +0.21.2 (2010-12-19): + * RBA bugfix: RdbItem.each_value was not working on const references. + * DXF reader and writer enhancements for improved interoperability with + other tools. + * Unit option for DXF input (to specify the units of the drawing). + * Bugfix: layer mapping was not working correctly for DXF and CIF output. + +0.21.1 (2010-12-06): + * Added cell margins for fill utility. + * A couple of bugs fixed (related to Diff tool, marker database reader, + Ruby scripting). + * Source is compatible with earlier versions of Qt now (down to 4.2.3). + * Bugfix: persistency of reader options was broken. + * Enhanced DXF and CIF reader and writer functionality with improved + compatibility with other systems. + +0.21 (2010-11-28): + * Support for DXF format (reading and writing). + ASCII and binary format are supported. There is an open issue how to + represent layouts with multiple top cells. Currently, the ENTITY section + is always empty and all cells are put into BLOCKS sections. DXF units + will be micron and the database unit must be selected manually when + layouts are read. + * Support for CIF format (reading and writing). + There is an open issue how to deal with paths. By default, CIF states + that paths are supposed to have round ends. Obviously that interpretation + is not commonly used. Options are provided which control how path objects + are read and written. + * Tabs for the layer panel. This feature is explained here. + * Flat cell list and cell list sorting modes. The feature is explained here. + * Dockable tool boxes. + Layer list, cell list, layer toolbox and navigator are now dockable and + can be dragged to another location, torn off the main window or closed + with Qt's standard dockable window controls. The position and the state + of the dockable windows is saved in the settings and session files. + * A ruler embedded in the background image. + Now, a small ruler is embedded into the background which shows the + dimension scale similar to a map. It can be disabled in the setup dialog + on the "Display/Background" page. + * Image quality enhancement by oversampling. The feature is explained here. + * The "Diff" tool. The Diff tool produces a marker database containing a + description of the differences. A detailed description can be found here. + * Snapping to objects is provided as an option for edit mode. In this mode, + the mouse snaps to vertices and edges of visible objects. This mode can + be enabled with the "Objects" checkbox on the "Editor Options" page (F3 + key or "Edit/Editor Options" menu). + * The reference point for the placement of instances now is the lower left + point of the placed cell's bounding box, not the origin. + * Dialog geometry persistent now. + Marker, shape and instance browsers now save their geometries and + splitter pane configurations when the application exits. + * Instance placement now uses bbox origin, not cell origin. + This simplifies placement of cells with their origin not aligned with + the content. + * Fill (tiling) tool. The tool is found in "Edit/Utilities/Fill Tool". A + detailed description can be found here. + * In some places, particular in the ruler display string, expressions can + be used. For rulers, the previous display string placeholder scheme is + replaced by the more powerful expression expansion scheme (see Ruler + properties for details). + * Build support for VC++ and Visual Studio 2010. The Windows 64bit build + now is based on that environment. Note: Visual Studio 2010 no longer + supports Windows 2000. To use KLayout on Windows 2000, a legacy build + based on MinGW is provided. + +0.20.2 (2010-05-25): + * Bugfix: marker browser crashed when opened from menu and the maximum + number of markers was set differently from default. + +0.20.1 (2010-05-23): + * Navigator now allows to drag a zoom box in the usual way. + * Paths with odd width (in database units) are shown correctly. + * Some bugfixes (for a list of fixed bugs see Known bugs in version 0.20) + concerning the net tracer and the Gerber import feature. + * Support for Ruby 1.9 (experimental). + * Support for 64 bit Windows (experimental). + +0.20 (2010-05-01): + * Import option for Gerber PCB data ("File/Import" menu entry). Details + about this function can be found in the Importing Gerber PCB files + section in the advanced features manual. + * A function to import another stream file into the current file. + This avoids having to use copy & paste and provides a couple of nice + options. Details about this function can be found in the Importing other + layout files section in the advanced features manual. + * A simple XOR tool providing a flat XOR between two layouts. A tolerance + can be set to suppress small deviations. A tiling option is provided to + reduce memory requirements for large layouts. The flat approach probably + limits the application to "almost flat", small to medium sized layouts. + Details about this function can be found in the The XOR tool section in + the advanced features manual. + * A net tracing tool to trace single nets of conductive layers connected + through via shapes. The function is intended for extracting single small + nets and it's not performance optimized for the case of huge power nets. + Details about this function can be found in the The net tracing feature + section in the advanced features manual. + * A navigator window that shows current view's rectangle and allows to + control the rectangle by dragging or resizing it. + * Multi threading support for drawing increases the drawing performance on + multi-core CPU's by rendering different layers on different CPU's. The + number of threads to use can be set in the setup dialog in the "Display" + group under "Optimizations". By default, a single thread is used. + * "Make array" method ("Edit/Selection" menu) to multiply the selection + into an array arrangement. + * A function to add a layout already loaded to a view ("File/Pull In + Other Layout"). + * A function to scan a layer's geometry and create a marker database from + that. The menu function is found in the "Tools/Verification" menu. It + will scan all selected layers either flat or hierarchical and create a + marker database containing the shapes as markers. + * Layer mapping on input: the reader options now allow to specify a + mapping together with a layer specification. In addition to specifying + the layers to read, a target can be given which specifies which layer + the shapes will be stored under (See "Reader Options" dialog found in + the "File" menu). + * A couple of new display options: + o Abstract mode (shows only the outer interfacing shapes of child cells. + o Child hierarchy level layout can be configured to be shown in different + brightness, hollow fill or static neutral color to differentiate top + level from bottom level layout. + o Enhancements for the hierarchy level specifications in the layer source + notation. + * A log viewer is provided to catch warning messages. The menu entry to open + the log viewer is found in the "File" menu. + * The setup dialog has been reorganized to make room for more property pages. + * Instances now show the cell's content when being moved instead just a + rectangle. This feature can be disabled. + * Various usability enhancements (i.e. mouse cursor now shows activity, + status bar shows short shape statistics etc.). + * An option to not write empty cells. + * Support for missing cells in the input layout: those cells get marked and + are not produced in the output unless they have received content. That + allows to load and save layouts with missing cells without producing empty + cells for those missing cells. + * Some new functions in the layer list context menu ("Show All", "Hide All", + "Show Only Selected"). + * Various bug fixes (i.e. for clip function). + * A couple of new RBA methods. + +0.19.3 (2009-12-17): + * Some bugfixes (for a list of fixed bugs see Known bugs in version 0.19.2). + * To specify the installation path (where the ".rbm" files are looked up), + a new environment variable "KLAYOUT_PATH" is provided. This variable + currently supports a single entry only. In that sense it's not a "path" + right now. + +0.19.2 (2009-12-05): + * Some bugfixes (for a list of fixed bugs see Known bugs in version 0.19.1). + +0.19.1 (2009-11-30): + * Some bugfixes (for a list of fixed bugs see Known bugs in version 0.19). + +0.19 (2009-11-21): + * Images: it is possible now to load image files (JPG, GIF, TIFF etc.) and + display them below the drawn layout. The display of the images can be + adjusted in many ways, i.e. placement, scaling, rotation, mirroring, + color/contrast/brightness adjustments and false color mapping for gray + level images. Images are fully supported by RBA. The feature is described + in detail in Adding images. + * Marker browser: the marker browser is based on the report database (RDB). + This is a new concept that has been introduced as a container for report + items, in particular marker objects but also for a number of additional + annotations including screenshots for documentation. An import of Calibre + DRC databases is provided. The RDB is fully supported by RBA. + The feature is described in detail in The marker browser. + * Some enhancements for the layer views: invisible layers are now shown + differently in a "collapsed" way. Thus, the layer's colors and styles are + still recognizable. The new features are described in detail in Telling + used from unused layers. + * In the layer list, unused layers can now be hidden and layers without + shapes in view can be marked unused or hidden. The normal mode of marking + layers unused when the cell does not contain any shapes at all is still + available. Both modes are available as checkable items in the layer list's + context menu. + * A "View" menu has been added with fast access to certain display options, + i.e. turn grid on an off. A number of default grids can be defined for + quick selection in the "View" menu. On request, the tool bar can now be + hidden as well as the layer and hierarchy lists. + * A key binding editor is provided. This way, all menu functions can be + assigned arbitrary key shortcuts in a more comfortable ways. + * The mid mouse button can be used to pan (drag) the view window now. + * Various RBA enhancements, i.e. a method to compute the intersection point + between edges. + +0.18.2 (2009-11-05): + * Enhancements for building with gcc 4.4.x and Qt 4.5.x. + * OASIS reader now also supports text objects with forward references to + text string definitions. + +0.18.1 (2009-08-02): + * Some bugfixes (for a list of fixed bugs see Known bugs in version 0.18) + in particular for MacOS users. + +0.18 (2009-07-07): + * Some bugfixes (for a list of fixed bugs see Known bugs in version 0.17.2). + * Added support for the GDS2 text format. This is a contribution by + Romain Gauci from Oscillated Recall Technology (http://www.or-tech.co.jp). + * Session persistence: sessions (files, layers, bookmarks, setup) can be + saved and restored. Details for this feature can be found here. + * Reader options can be specified in a dialog now (File menu). Some GDS2 + specific reader options are available: allow multi XY, allow big records + and several box record handling modes. Details for this feature can be + found here. + * GDS2 specific writer options (max vertex option, multi XY record option, + max cell name length). + * The stipple palette now is editable. A corresponding page has been added + in the setup dialog. + * Flatten cell function. A cell can be flattened which will remove the cell + and all the subcells unless not specified otherwise. This function can be + found in the cell's context menu. Details for this feature can be found + here. + * The 'Make Cell' operation provides a nice origin now. Before, the origin + of the new cell was far off sometimes. + * Accept drag & drop of .lyb, .lys, .lyp, .rb, .rbm and layout files. + * Switched to standard file dialogs where this has not been the case yet. + In particular on the Windows platform, the application will behave somewhat + more consistent. + * Added an option to draw only border instances of arrays. This option can be + found on the 'Misc.' tab of the setup dialog. + * Added the capability to define global ruby modules using the ".rbm" + extension and putting them into the installation directory. + * Full cell copy & paste functions can now be found in hierarchy panel + context menu. + * Enhancement of grid snapping in partial mode. Before, a offgrid vertex could + not be brought on-grid because movement was confined to grid steps. + * Number of points for polygons is shown now in the polygon property dialog. + * Hole resolution for GDS2 and OASIS writer. Before, polygons with holes + (which can be produced by scripts) were rejected. + * Some bugfixes for clip, using booleans for clip to overcome some problems + with hole connectors and spikes - slow but safe.. + * '#' character is not longer used when creating cell variants - instead '$' + is used to enhance the compatibility with other tools which do not allow + the "#" character as part of cell names. + * On paste, a 'fit selection' is done to show what has been pasted. + * Mouse wheel mode is configurable now (shift/ctrl modifier behaviour). + The 'alternative mode' can be found on the 'Misc.' tab in the setup dialog. + * Option to clear all rulers when cell is changed. This option can be found + on the 'Misc.' tab in the setup dialog in the 'On Cell Change' group. + + RBA enhancements: + * A new class: ICplxTrans and related functions. + * A recursive shape iterator simplifies hierarchical region queries and + "as if flat" traversal of cells. + * Polygon: hull and hole can be assigned now, compress method, point accessors. + * The installation path now is available. + * Added a method which allows to display a message in the status bar. + * The transient selection now is available for RBA procedures. + * New events are generated if selection and transient selection changes. + * Added a generic assign method for copyable objects. + * Added new classes 'LayerMap' and 'LoadLayoutOptions'. + * Added two 'read' methods to Layout class. + * Added a couple of methods to 'LayerInfo' (constructors, compare, ...). + * Added a 'load_layout' method to LayoutView. + * Added more cm_* methods to MainWindow. + +0.17.2 (2009-04-20): + * Some bugs are fixed now (for a list of fixed bugs see Known bugs in + version 0.17.1). + * The GDS2 writer now normalizes AREF records. This way compatibility with + other EDA systems is enhanced. + +0.17.1 (2009-03-27): + * The display freezing bug on Windows is fixed now (i.e. see Known bugs + in version 0.17). + +0.17 (2009-03-23): + * Various layer operations are now available: boolean operations (AND, XOR, + NOT), layer merge and sizing. For a detailed description see Layer boolean + operations and Layer sizing. These operations are also available in RBA + (see RBA::EdgeProcessor and RBA::ShapeProcessor). + * Boolean and sizing operations are also available Shapewise boolean + operations and Shapewise sizing. + * Objects can now be aligned. For a detailed description of the alignment + function see Object alignment. + * The cell origin can be adjusted relative to the cell's bounding box. + For a detailed description see Cell origin adjustment. + * A 'corner rounding' function has been implemented to support + soft-cornered layout which is common in power applications. For a detailed + description see Corner rounding. + * Various layer operations are now implemented in edit mode: clear layer, + delete layer and edit layer properties. For a detailed description see + Layer operations: clear, delete, edit specification. + * The selection can now be scaled (The "Scale" function is available in the + "Selection" submenu of the "Edit" menu). + * An option is available that allows to select all hierarchy levels + automatically when a cell is opened (found in the "Misc." tab of the setup + dialog: "Select all hierarchy levels" must be checked). + * Various bug fixes (i.e. see Known bugs in version 0.16.1). + +0.16.1 (2009-01-07): + * Various bug fixes (i.e. see Known bugs in version 0.16). + +0.16 (2008-12-27): + * Some new editing capabilities: flatten, make cell, clear layer and a clip + function. + * Some RBA extensions, in particular the ability to modify layout by deleting + shapes and instances, replacing and transforming them, changing property + handles etc. + * Support for global preset of configuration (through a file called "layviewrc" + beside the executable binary) and a global RBA initialisation file (a file + called "rbainit" beside the executable binary). + * Transient selection: indicates by a faint selection marker what object is + below the mouse (can be disabled). + * The layer specification (layer, datatype, name) can be now be edited which + allows to move a complete layer to a different one. + * Undo buffering can now be disabled on the command line with the '-i' option. + This saves the memory otherwise required for storing the replay information. + * Directional constraints can be modified by using the Shift and Ctrl modifiers + on various operations such as rulers, movement, drawing etc. + * Now there is a 'most recently used' list ("Open Recent" in the "File" menu) + which shows the last layouts opened for easy re-opening. + * Reduced memory requirements for particular OASIS constructs (random repetitions) + * The instance browser now has a "Choose cell" button where the cell can be + chosen whose instances will be presented. + * For most editing operations, the status bar will now indicate more detailed + informations such as move distance. + * Pasted shapes and instances now are selected initially. + * Enhanced OASIS compression mode (can be chosen from the options dialog on + saving). Reduces file size considerably by creating regular shape arrays if + possible at the cost of higher memory consumption and longer writing times. + * Various bug fixes (i.e. see Known bugs in version 0.15). + +0.15 (2008-08-16): + * Editing capabilities. "klayout" in it's basic form still operates as pure + viewer. However, a mode is available that enables editing capabilities. + See Editor mode quickstart manual for a more detailed description + * Some RBA extensions: i.e. conversion from "double" type polygons to "integer" + type ones. + * A default layer table can be configured in the "Application" tab of the + setup dialog. This table will be loaded whenever a layout is opened or + created. + * A installer for Windows is provided now. + * Properties are supported on instances now as well. + * Code is compatible with gcc 4.3.0 now. + * Enhanced compatibility with SunStudio 11 compiler (in particular in RBA). + * Various bug fixes (i.e. in GDS reader and OASIS writer). + +0.14 (2008-04-04): + * Several RBA extensions: i.e. alternative methods replacing different 'new' + variants by one 'new'. Markers now can be filled. + * Fixes for the bugs mentioned in the issues list. + * OASIS and GDS writing capabilities. Menu functions are provided to save a + layout and single cells as well as RBA extensions that allow to write a + layout. See Saving a layout or parts of it for details. + * Rulers and markers are drawn with a thin halo in background color to + enhance their visibility. This can be switched off in the setup dialog if + this is not desired. The screenshots illustrate the differences. + +0.13 (2008-01-16): + * A couple of RBA extensions: API's for shape properties, rulers and geometry + selections. + * A bugfix for the OASIS reader (sometimes crashing the reader on + CBLOCK-compressed input) + * A function to descend into a cell in the hierarchy but keeping the context, + which is shown in dimmed colors. This function can be found in the "Display" + menu and is called "Descend". To use this function, select a shape or instance + inside the cell into which to descend. "Descend" then enters the next cell + along the path that leads to the selected shape or instance. + * The mouse wheel can be used to zoom in and out. + * Shift+right mouse button pressed now allows to "drag" layout in a "Google maps" fashion. + * Copy & paste now is available for layers as well. + * A ruby console is provided where ruby commands can be executed interactively. + * The way how the selection is displayed can be configured now (color, line width + and vertex size). + * The interrupt signal now is enabled again even if Ruby is activated (Ctrl+C + now works again). + +0.12 (2007-11-02): + * Support for arbitrary angles on cell instances. + * A bugfix for the OASIS reader (CTRAPEZOIDS have not been read in some + cases). The OASIS reader now uses shape arrays to achieve are smaller + memory footprint in some cases. + * Multiple transformations are now allowed on layer source expressions + (see Transforming views and property selectors for a detailed description). + * Rulers now are configurable to a large extent. Multiple ruler templates may + be defined from which a certain ruler type can be chosen. Some of the new + ruler styles are no longer "rulers" but rather "annotations". See Ruler + properties for a description of that feature. + * Last, but not least: KLayout now can be scripted to some extend using Ruby + as the scripting language. For more information about this feature, see + RBA introduction. + +0.11 (2007-06-26): + * Some bugs were fixed in the OASIS implementation. CBLOCK compression now + is supported. Forward cell name references (numerical ID is used before + being associated with a string) are supported as now. File global properties + are now read correctly. A bug reading certain CTRAPEZOID objects was fixed. + (Still, forward references are not allowed for text/property strings or + property names). + * A layout properties dialog has been added that shows basic properties of + the layout such as top cells, layers and others. + * The "Select Cell" dialog has been enhanced with the capability to hide + and show multiple cells in the cell list. + * A "zoom fit" mouse gesture was implemented: moving the mouse up and right + with the right mouse button pressed now fits the current cell into the window. + Moving up and left still zooms out. + * A bug in the GDS2 reader, dropping polygon points in rare cases, was fixed + +0.10 (2007-05): + * The build script has been enhanced and supports Qt installations with + different locations for binaries, libraries and headers. See the Build + section for details about this. + * OASIS files can be read as well now. The reader automatically determines + the kind of file. OASIS layer names are supported. Due to the complexity + of the OASIS specification, or more precisely the effort required to test + a reader for meeting the specification, OASIS support currently is regarded + to be in "beta" state. + * Layers can now be organized hierarchically. Layers can be grouped which + allows to control visibility and other properties for the group as a whole. + Layers can be removed from the layer view list or new layer views can be created. + * The layout can be transformed (rotated, shifted, mirrored) now. This + transformation is specified in the layer panel as a part of the layer + source specification. An optional transformation can be applied per layer + or layer group. This way for example, different layouts can be aligned + over each other. + * Shape properties now are supported. Each shape may carry optional + properties that are read from GDS or OASIS files. A property selector + can be applied per layer view, so that a layer only shows these shapes + that match the given property selection. + * As an experimental feature, the inverse layout tree can be visualised + by allowing the minimum hierarchy level to go into the negative range. + The effect of this is, that a cell is shown in the context of all of + it's direct parents, if the first hierarchy level is set to -1. If set + to -2, the cell is shown in the context of all of it's parents and + grandparents and so on. Since there is no particular optimization for + this feature, performance may be poor, if a cell must be painted in a + huge number of contexts. In addition, the context displayed does not + participate in selection or ruler snapping. + +0.9 (2006-04): + * This was the first official release + + +Other contributions and 3rd Party Sources + +1.) contrib/gds2_txt + + The original version of the code for the GDS2 text format reader and writer has been contributed + by Romain Gauci from Oscillated Recall Technology (http://www.or-tech.co.jp). + +2.) contrib/zlib + + ZLIB 1.2.5 + See license terms and conditions in zlib.h + + Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/deb-data/usr/share/doc/klayout/changelog.Debian b/scripts/deb-data/usr/share/doc/klayout/changelog.Debian new file mode 100644 index 0000000000..eb924c70be --- /dev/null +++ b/scripts/deb-data/usr/share/doc/klayout/changelog.Debian @@ -0,0 +1,278 @@ +klayout (0.25-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 10 Sep 2017 13:25:07 +0200 + +klayout (0.24.10-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sat, 01 Apr 2017 18:19:15 +0200 + +klayout (0.24.9-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Mon, 28 Nov 2016 00:06:43 +0100 + +klayout (0.24.8-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 19 Jun 2016 18:34:44 +0200 + +klayout (0.24.7-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 01 May 2016 00:01:16 +0200 + +klayout (0.24.6-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Wed, 23 Mar 2016 22:24:16 +0100 + +klayout (0.24.5-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Tue, 23 Feb 2016 20:56:55 +0100 + +klayout (0.24.4-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Wed, 16 Dec 2015 22:20:44 +0100 + +klayout (0.24.3-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Thu, 05 Nov 2015 20:49:53 +0100 + +klayout (0.24.2-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Fri, 02 Oct 2015 23:10:57 +0200 + +klayout (0.24.1-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Wed, 26 Aug 2015 21:09:08 +0200 + +klayout (0.24-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Thu, 30 Jul 2015 23:05:10 +0200 + +klayout (0.23.11-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sat, 23 May 2015 13:50:39 +0200 + +klayout (0.23.10-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Fri, 06 Mar 2015 23:07:24 +0100 + +klayout (0.23.9-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 28 Dec 2014 22:21:36 +0100 + +klayout (0.23.8-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sat, 15 Nov 2014 22:06:31 +0100 + +klayout (0.23.7-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Wed, 11 Oct 2014 11:40:22 +0200 + +klayout (0.23.6-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Wed, 20 Aug 2014 22:50:32 +0200 + +klayout (0.23.5-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Fri, 04 Jul 2014 22:27:49 +0200 + +klayout (0.23.4-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sat, 15 Mar 2014 22:18:50 +0100 + +klayout (0.23.3-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 23 Feb 2014 18:15:42 +0100 + +klayout (0.23.2-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 26 Jan 2014 14:18:13 +0100 + +klayout (0.23.1-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sat, 6 Dec 2013 17:41:21 +0100 + +klayout (0.23-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 24 Nov 2013 11:56:45 +0100 + +klayout (0.22.9-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Thu, 19 Sep 2013 23:18:30 +0100 + +klayout (0.22.8-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Fri, 21 June 2013 23:24:31 +0100 + +klayout (0.22.7-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Fri, 22 Mar 2013 22:31:37 +0100 + +klayout (0.22.6-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 3 Mar 2013 22:18:01 +0100 + +klayout (0.22.5-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sat, 2 Feb 2013 21:06:01 +0100 + +klayout (0.22.4-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Tue, 30 Dec 2012 09:08:01 +0100 + +klayout (0.22.3-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Sun, 25 Nov 2012 12:16:10 +0100 + +klayout (0.22.2-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + * Dependencies according to Ubutu 12.04LTS and -with-qtbinding option: + - libqt4-designer (>= 4.8.1) + - libqt4-xml (>= 4.8.1) + - libqt4-sql (>= 4.8.1) + - libqt4-network (>= 4.8.1) + - libqtcore4 (>= 4.8.1) + - libqtgui4 (>= 4.8.1) + - zlib1g (>= 1.2.3.4) + - libruby1.9.1 (>= 1.9.3) + - libstdc++6 (>= 4.6.3) + - libc6 (>= 2.15) + + -- Matthias Köfferlein Thu, 1 Nov 2012 19:23:10 +0100 + +klayout (0.22.1-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + - package now created with dpkg and fakeroot + * Added dependencies + - libqt4-network (>= 4.6.2) + - libqt4-sql (>= 4.6.2) + - liqqt4-designer (>= 4.6.2) + - libstdc++6 (>= 4.4) + + -- Peter C.S. Scholtens Sun, 21 Oct 2012 19:58:13 +0100 + +klayout (0.21.19-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Peter C.S. Scholtens Thu, 28 June 2012 21:59:48 +0100 + +klayout (0.21.18-1) unstable; urgency=low + + * Added dependencies + - ruby (>= 1.8) + + -- Peter C.S. Scholtens Thu, 17 May 2012 19:10:11 +0100 + +klayout (0.21.14-1) unstable; urgency=low + + * First Debian package for klayout + Created control files, added desktop icon and file. + Copied release notes from website http://www.klayout.de/development.html + to file /usr/share/doc/klayout/changelog. + Set package maintainer to Peter C.S. Scholtens . + (still missing man page) + * Added dependencies + - libqtgui4 (>= 4:4.2.3), + - libqt4-xml (>= 4.6.2), + - zlib1g (>= 1:1.2.3), + - libc6 (>= 2.11.1) + Other dependencies all have been satisfied since Ubuntu 10.04LTS. + + -- Peter C.S. Scholtens Sat, 10 Dec 2011 19:14:11 +0100 diff --git a/scripts/deb-data/usr/share/doc/klayout/copyright b/scripts/deb-data/usr/share/doc/klayout/copyright new file mode 100644 index 0000000000..61f6751f7e --- /dev/null +++ b/scripts/deb-data/usr/share/doc/klayout/copyright @@ -0,0 +1,27 @@ +klayout is packaged by Peter C.S. Scholtens +and Matthias Köfferlein +and was obtained from http://klayout.de/klayout-0.25.tar.gz + +Authors: + Matthias Köfferlein + +Copyright: + Copyright (C) 2006-2017 by Matthias Köfferlein. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + + On Debian GNU/Linux systems, the complete text of the GNU General + Public License can be found in `/usr/share/common-licenses/GPL'. + diff --git a/scripts/deb-data/usr/share/pixmaps/klayout.png b/scripts/deb-data/usr/share/pixmaps/klayout.png new file mode 100644 index 0000000000000000000000000000000000000000..4451152f6422fdc159579036cb43c756534a3228 GIT binary patch literal 73051 zcmcF}^;^}?^Y-fm4Tn^^LC`nSNOyN54T69m9nx?PAl;!fh_rM_!=Xj#IsyWRmhP^{ z&kx@};kkDAn%((rXYQSud#{Po(oiJ8rNRXOfIwMEP6q%$|F$3i8}pwqbuYF3C!luH z>e2vEn}B!s2IJou(@IrQ4tV_E$nPjg`KQ5gRWkAb06fzFEfA2IP4Q2O<*BSLkF@}T zJf#=1#VZ>J00ux=PFl}rey_u~{jHro=Uv5l=iyRYIN#a!)FP$m>39YNN<>6}jctwu zC2GqPQIaT7(sX|FX%S)wU|&5?dF@tB^R}!7^Vb z*AU_jgW+vYJ< zcE2Qi{28%y(daEXhUy1RZ^#MFJ=2MQn_NA$bHo1d+a>VEe9L!kcXSXEy!LaB-hC6W z-4!*W51jdWw7$IjPU$ePf9$B(oVf0RclD<7oN&^!#=?5Zts#>{Ra{19aJ08M}0YXVApa|sX2H}9{lbi zB3Bqb2Zj^2pSbyKQcKiMpt<~fcm?KRP9*FVPP3R zc)EFdMZu)I>cAlQ0_^_W5U|AxfoH?hkvfQU>Frkxj+iKBhNt<4U?zqS01bdyI-3$> zvrEDxjb_*bJ(H7*B#XQ@%#qzMdRA;q^OK7G7fBII1op$4mzjBYJb8yRYvoUFYg?aFeDRC>HBhfiR zn(I+3H0X3>F1r2Th69R;_zEBDwxNuCQL~Kej*(76KZCigV9(uDf4>xYSB?(K!FU{)lY&U^U!VedpEh6*$r;7H+xcvKu zGQ0;%jK0%Gj^Q&3v(-3``h=jFNT^~;q?UX~Rx;2uWyhr5#0Ut|JlNLFQm#hM^*cc} zElvo$2>1flLXgZ7EZPfIKONzY!C(jLK)j0Lr5up5JRl~eAqFBXh}5)+KG+mQ3E;pB z0TO@?j0I*OWAuurU`uS3;!vGt(wWJ9F_gGPs+YX~&Hm_#)g^+7tCQz>xyhJscix}h z0T!svHT&PkcZ6e{g&B~mvHGRkRr>z=$D{hGyyfd2dJ)@k`lV`Amgs~&)`O~RfbCx{ z`lMo<$wUS%RyyJ9X3Rs%T*^%CEms0RLZmjv1!xavkDm$M3TOj%CZ2W?K;y@=Drf+- z9bmx5QR>5AcptI#_UsO|Uv1Ro#rXd0dO%^uL>5$c^OV zyt&!~X9>d(wR?l-KKfidE*xAOcK(eBE?hp8WWqUXU%fut4TiG7(eUB>YF<(5Ftz_jY<&swPkHZ5#r#*C}_@_E{7;^#2l$whtIF5}IVV7jJ^&k0fI7vvU^MWJfcpFSzI~ zl23IvrzVl7lp9K5#$%3doNG_IT$QV4TzcNCB_`8WN*LS&UlGm>;zLtd%E_P8Zqxs# zu-K3T&@h^YDv1m@Dwsn`anRUrTf#4_^63g5_A(dmxfL0n(nV4{vkc$ci(V-m`&d7X zY}|(I5fwpjONeDkN49;WL^PyAXk{665ak2JWKy(@jZ#E%ELujy&z@)*xD}x{0$j(a%v@!8Nq;yjLw>NB-i(PouNSMLh_#>=mlM|5qxl zXMdocwz*o$K`)3G3%nr2r@&sM>2&Z8j-;$d1dih84f9CBf96iL=YH+H4C7GGf6Ad& z(D~g;`~x`uNXn_2K!6B4vO8OCJj=(6w-#ECQ%Hpk8 zOMIhjdB!8x-lP88tbza%wS25Av~f+JWtRW%PKWgmfBO>#V;;0T#+pp;Qc1%PMjz)r zHrD)cHm4H9Qz@dDaiX+bW6=~#JYu3gnn$M8_H0Pzo;Tpp@1-kv=sJ8(I_O7XhG9gx zK7$FS-!Cl+t`{d7MN5fI*qwS*H;RyTF_3tz+2Xfa?HbySnw-25^hmdmojw?HW%(S5 z3Dg*DY4K|D>;D57fSi%qHW_AQ6!3Z0=*uXc_d8qH>XAfC6YfV_`b;WKwwy{&F;4Eq z2E9~vUvg<=SOLecW1j}z+|+?dxV1D6PlU5?ax| zoJY;PLCJ;PV+OoE9Ze+~RaXsyJkfzeid@hZ4xN)xg3;kE!<1H@5C(#w3MisX{hSs~LZP;pEyZ-~q=Z>!^Xo8w zQk7EnK&M%1UG)%2%% zJHDWjJ@G*(8;mo`wU6QJwnG^#zi=)`6|Tx)hIzxbV?FvGJJy14(WFTQT;-QzqK@oM zr{R+2fNH1w?!J%lD4(TP!2?bENo2o0l~&9r63A|C(fHbQi#{D#i{%5powkg-#y0r{ExG6Uvj@HM(wJ-b=S~uCiK%#^lDOF)uuEcLd|0Y#) zc7XN4Q>Q4{bpTJ&eQ?9&&e!xP`f_DfG7vXDc+_H)bMIevn%%w3Yk^eXARG6`#zbyQ zIaXpY%i2npJv=&66ETweNLiN{eHQmat)V&&Ri~B5{vjIVny#Up(d z(_5ZTB~js^THimzlls7cCb8VW&2Lht$BS`Dto@$t3++o1#suqtNxt1{BBU0Ez9Is2 z877$UInRG{0{Q^1LwCFIsjmG?2xZf(l( zorpMec*sR{+)@hNx6o&s{r&euD^Z8yr)MAEa0xGnUJjW5B&2y8%fYBjqrFNIDly9*utZhXu`}9?LgEnhb7IFA{~c+0Z)jgR)qL)*je85H|t}I;^vVsYJi! z5(GDZ$p*~vMCU3l_^weP3oC!|!9i#DD--VbIc~s~-@0-NrvEv85v(m@K#QmnnzqLw}ZR+yH)JV-t1jtXor6CU8G@GkSR!-AGX-vDQK_!rxZ+uiTSBQ3tQ6wXcpt_s;cOugA%F>p!5pd0}Y28W~CAyEYe`LW7U*q?9OdN}qFS;2$SU)?p@n>*cl( zV1-51ql$Na-?g96M8e&luwOu~%^5_cc_7c>4z#5P=Rqs{FWL9+n7&rYMNd#w#;L}t zJeWc|R<)KM=dZbZ#;%IJB}v)DFCqV28`^39cs6zXp1xJX``#|cEnw%5M_p>J;EzAE zL9WTZ#eJkCV@e!}QPKYJ!WQaNn5Cpl){t_Q zN;Y~h-IX83$B&0hR(@h)xoK8SCDKc%^cd@LS*Ie91H=hg;wI`vs9#}8#gUehMJ1?5 zX^)Y|KdGz^<-z;m(%4xttu|t0CKdtexwHv9w zyItp0iObeW;aJ>+(@{aTlpt$WMH=Y>iXrU8pI=5jGGb@#J4!FrUR+kS;|BZ9pFZ3f z0L?3AV*_Pl{)hj9| zBg35=R712Z`fJ;1%X?ZR2qF^^V_BGAOlAoB(Nf7#layrjWsAWIq3UFhS5cS9PV{$#*tNJi<4rr)9@l?VtcMHioFbBL2y)IB?IHu7gwtob zq2K~{@A=VR5ua*!3lQN}O(Y*U4T3zS-9EMgR?hKAA*iKJbcV5!)ludeK+fK`v6N6-Vh4 z|FpOH6hyLQKz6o@+9B|8K5M1s4ZeWZ5~iB-)Zl&g#v>>{NcEE7mxJDrftQ%0sCWvM zISNOq(ndzpZ%ytvbineov`AJBAp1};?fOwB!Q!=nO{CwSR=q()J}ina#+XW^HjV3> z%2$$FYckM{oLxnl zQzZ(2;%^wp^ZA}B(fFoo--yR=&clxi)|P+0BjNm0&>g#L)1j)q5q{1m#>3#dHKRHkgg{i?hex?rUSv9Z=d z$OhT*5B`GVp1tQ}!AegNLnE0}C5rDgB+8tya{v0;6tsz5;#(`l-9Z-4QI)334%1eq zTZZf~M0pW5%Jv6b0rE$eZCopAEt@;9XEHP+e zdw*&M*~xS)#0G7I9l+rSkTf+MSdb%s!FhS8czCz@k`&R@ZZn+l*@p@8+MgA%%7%T z!;BfcDt%a4nXV&$PT2I|bm$rX}2?;0#_>VJXI^WG9qM1!umUYV+HCATA6tn;pqto=me^Lmd5VLXD%Si%uA%26wmcgEW5mxZBwxN4X#g?#2G zV*o>&Brtz5{IB%7G_4N2DZ3gWT!iC|8LdVf8g}|5-aLwY{#X>WGp?CaxTL+Bb8sas z`+&r!$3OFEUGN_~diT>0%J%dmONWq6ol28xM6lyB-k3i}L>rzCu~a2MI#F46!?#_H zDHC5t*AP(`9VEX|CMXKVPoyhL=x)T+dQBx>IQjjur;NuBJPAr%2K2DvaNf1w760RD zrEGEh=@d;;{LxCA!x@Gh%TAa(%#HO4Oo`JD)0`OGP}mYo?c!T#hA15cUD4&Qs1BE! zEh-q3{I3rc9x-&W(KKJ56JvPj7)Zan!MA)8UT2VBldkp^8U>`?m?`V4($E(i&%ZEu z_PfjA)WyPYt0~Ky5N9lCd4(9xT#yj`Lw1LviR0z)u?M}^i`+BhNb*Y< zb~gmUNF%lDkHLz~h+rXZu-V=XS*1UU=jTD`Txuc z06yz;Cgx&!9|gH=-`M~5_-m)Zd&uquE3;pM#nseW8y%tJ)1GA-Op zpI;4`v-OAN$98+cXAv#x#&gIQu4o6#$28>42$lYoFy3|5V z>A$^rXm@qRxA>`82p^>(8PoT|0xVLmfI4A@ZO|wJEM2D;T1E7O;B!$|b8P-%n;CRRl!r+5WAedvp*g?6SJcbt_YEIS0&-Q^=Y54kZ5Ye zz4r^czc~u9U%%jzpdTm#E&ld`YmLH{=VX{7#{TXc{37Y!iKxjDq&7q<7NBX0C*_*u$4JLuqkyalv{$}v$Jf+=;oW9=2E)A*_ekx=Y?x}eDtZD98(Wisq6EEZt#_y z*qXEn_ny8|xcKp-Z zK%eHKf6S?S`%mb=qn$;ZSsOB6=9uCgD3|chYMu61xv^1S1Amf^d1(p46q%_-43a z827_L`CA7eo!*AiV_6reQX7>4Mt>lEkojdajuI)uE{L(w-3E$*g`@GDa*pQXwG(fX z&|ucqqVQ?&*<{x8=@~0Pl!PKpA|-yt#0ZB~#k!(81BooYCg=0VHi{Effw}r>bC3>{~Ql)vtv>=I1PTWt6!$gh##yLD;y(VQqU=i{9^_E_bL2ElK9 z$=V$M;(ZR4xv;c;z}l5dmET zag={WiX`gY(0MtV!cAoZ=sc&x@i}ZND(9CHGh>*f5^+xjBKaObjg>RA zooW>trfc@zD%^cSn5ElC=|an~-2~d4G}Z$#(Y1Rb>w9m><`57}p@Q(sXHL zO*G%4sR6aOIuX099fQZeEwjc!b(SZBIV(qq|I1&rsAqs$PCH0UG@k|(GpJVfP)W?1 zso7Lo1PU(u1defGN7(8?mT2U7X5CG=%B}y)7U6R_6pfoKn*rtLhnpYjIKnY6no(m2 z+#{2b$heNbTj%P#JX#0Z@uAf7zJe*yeX&i9n%zHRKk+6W(*_JGyINhVei^)oBSjm4 zlvUQ=`u1C!0Uk1Cnj7;jd!jooRlmI*$@mAl-aKJlD=m_UH`7p;NkV$z?6`pY_4OS_ zzeDP|=?>;GwBIb&wydLCDbW zhG8YaaR-C)E#2Jo6)nkD5)0DgFlnuh)n|`*@W_+GUx$ zff3A!oQ{drsZWh@O0mB^vUx74A||%c`h|bM}Z_R}yfcdcEP#fa;jAoT4F##d){!$&^t=cRLT+{Fzf9`tjj6u%=qnw&w9+7rn z2~keom+~uCpk*&n=_zGHUS*Ej9aZ**yqj~sBd`o;d!=|StlF3@f=$jrTcgK_Plhj7 zM2z6uV|*(`)u7okqmt{6kBfiwVm#|BVX!ZOe(G)CNIH)H>w#vQORCvZDtTJ%PZ$N< zg}iKnb66F@v`4B^z6s~PG$7+e)w*5x>^AEw+1HC_v&@;iYyTkkKK4<0Yt38Y1MT;` z6W2YT^{BA}wiQTB2i$yzU6tZ_%E?vER81~zh)49_g(}IMN|e(&qcgqry)0i!w6{9eg4H-)!g?UdBR(hCzu5?`~cn3Q;3dt+`b}ohjLm&k6ev zgU)!-?A`L0w;fxTe%o!EnBr$TpN9F0l%x6Gl-e2GLeR9}{}LoAfWIv-_dhBW$C#|Z zP}=7iqeHF(yDrIY@qQCR@7Lt*UKc*|{A@s5f|EnKn|YcemN(JKS@2|SJ^YW=z%t;f ziy%x{rXoq)l*%(HqDQ^=_SbM!l>c_LAVh}y!G@+X5WM|N0DBpQVlmIrb=p>aBZipQ zyq`Ps;D0{e@FLlslDEp}1-IRow$c?{kGuP)Mn`Vn|F0Kd#)r=jNIMs4?i8l&)0QM#f{xdneYd3viwF_EpJZ6G2S3@eMad#fr9 zprRd6oZ7Z>xT+}XNUpT#o}@d_%f|TB7E^F91GqGb(HhYHE|^gH(^mT?l7jv6g(U@M zCKEU0YZiayku1UPsTuO8fHBoRZRKEANW>S2oQ~Zq8MfFRm9NC`2cqDU+V{2Zm$6e$ zvP1zU8GXe+ZexrzjqNy!oG#!vSO{SdM#Fc^_>b`hDYfQo+u9d`jBp2R;`q7m&9`iH zK|O31x8F4@gPROKR#1l_^%1Ik3!X z+6XyVj0?#e;Q`8J3MgH9tFGvx3{rfOJ+{}0RsZ2cSdN=GvSa32)bcgtkNPkDs>;ur zY)492O|M=XeeH{ZDI!(d>OT-aZr)oG%Ue+er%{@`c&RkYeie^H0cPjbKaBD&1+{z$ zpIv#^kIRnn)=c}dEZwdQOHCK4kNo+Txhkn%CjfF5#Lt{nETWacNi<%)a8}$cW*Kg_ zTs*iTfh4eh2X1CYgdt80Wkby8oKa%3#}7Pm$p?fi!sKK3&d}5 z*DhWg(eKxlC*J9(VnAUE$InV56d+q;><( z!UGfaj?S@rSl&o8kWEHh{wI**;;uWUBcJYXhnE?j z&%qteM1?4C=An?Uj?GW(MG{ziSmNVm6m=DeLS(T)oZG#(bOEhE-e`9l5J3{J(s4*p zWgg)nO&R0{b#S*$FMW0k17@f9CT92Auq8z*BwlF`+YW9k;OmNTH|hptYBBI*w~04N zRIHB6QS{uj^<)O$Xn51}9OLW37iLfXmJDdV6ziiyi^8?1sP@P#i2nL(+7W4Gh45>{ zjeip8@RZrdq-o@qIM8P<5rBVsiIHwNW0|r|Q}M0=oUXJj_m$+;iH@Pp8s`O|N@#FY zV_ZMlBWoNz?1EZGeUl3MEP%U@kq8VGYY5l6*}}+ZoLk%oIXm`XWbz+nzv|d8F)j0x z9L3jep((ItJ+i$gNp5gL@3a&fBgls7lFy{i%U524zu>NmOPn;Jg7#l8pImn>ds{BQ z`}a{c)Ot0saQsQN6SLj?=w}C^kNwz_YWlEp$s?vY%c#i*-bqh5S{>P&9?&h&E8Ngo zEpQ)+938(0KI5ZPK&Ib~f^BKnyCpFEe&u)bsJN(al4+fY7a<3dLNttl?*=CS5xjcz zTgaeooL=7aCNLBzf-N-UJY(4!?aLkKVL^SN5G<3LQtK;d4ZzpmQ~n|Ip7cqQ06~%c zsIgbze}WS7v{=Rw^!uPsez+X7)0_JOP5N<4FRmBQsB4nKP4|QVPZ}wYs<=1g@c#gg z3{r~sKYLXDs^UoBA!p{Zf%7N#m#04&T|HE+%JK3|CyEO(Q(3jKhz1oR%gNX%4)q7q zIh)Et0Bo2=ryqIM)ja1ku_5i}(n`^jEMb5c;T?PbjdZVl1Bjm!L!K0?Gn64EKCS^L zkjO*C9St1k$A;nJYjpL)7J*>!NnIOP((3rlFzC;q-^yD20Da&I3<@_Fx%(A!(;3vu z9XDrLV>H=KQY0ZAqR-MHjBy15c{sF33&BsHny_SI(8^ZNbA0m2bTYMz#;IaOFiD!fKr1x&_8@+FNU_Bum`a^y zfR-p_=R=Nz%-;ISeY^;v5xw{&U;#dtu-SHdw=~@P@MAud9N`I5I?$`r;udk+uSlK< zyZE4C-;j%FXO$4RQjleIo(!{pVN*GA4#J?Qeaku=CC~QDuZyZt<4MJcY)KEWR*W(#?%8$I$e zID>!x9wx28XkIuUG<#*iM*A+@@ydB;oFdUN73NZW(CnNxe}ftBRU)VKlIb9OzcmZg z)KRqXszT(s=xVMkLp40@N!opU)yIT(VFVGPVkhx^wgBBnjm8WSZfvKwg0I>0%_BR&e>7)rG+WZPSS9 zUF42>;#)qSsb>K@^i{n-jpO@7W215PUy8KLcY3uR&{(IwzM4dNukCst^oM#of>bNF z0b(IZ>;mvLBB}k5aBsom)ORZ&zT)T61tXZ}n=T)GX*q9tmQByb0T zAiF-2546$M^?voG6A`}p>qDPjnwq1?-b732w%xjn-)|YPMv8l1Z zXc$tO|I=26iLd6#_aW95^52BRiStw{PD$8R&$CCvkD-F^uS~19PjBe{zJ6gliO%{0 zV%-0;((p+4g;sKDMhp$3n5R*Ec44*%v22NhqEqu2NEs|9^jLU8bOf}`Ku!4yT=Jsh zsk)Xvbyi>o;6DXI=NC-fM;N4{m9u*9SU2+>2!6a;DbBiB88wR_`sijE7*ampd`miU zHY@aT^HMFWy~1s9$?I;h>rZ&y?1+thdQVcX0BRXw;eYsf`-J);=-Kg^U7Poz#ML72 z!y~^wJcizzY3U{^t9I{o6I4UE`}GL!Q(uK39kY!V~=fq#8r zO?6d0dZ(*?g~LL0;7~rqx&z#M8y2fZxYU3nm=D=g0D}@l#Z5RzT-a3svC9GOUyg#lyoZ-KC0v(aIQo zx-?>{_=+AcMfytwGB4c{3VxvGU{zq0>g-eV?_BtPE=~^;+v-_6j@MicA-}(h`W3Y` z#&MQ1azFirJY8o@iH3S|83=kVrmy5vP}#oLHqF>aZ0dp|aYlwd1ugjsZLOGsw;<^> zH2#azFH>3VDtMg}{UAfF#M0K&e=_0*-%d}-s}t0{d=}hT49_|(ChNNl%+fJ0Bd~89 zmQk!MG?Z=K4v8l4F%)jp<#Or*i_AmFD#!%&q_lQE>B-inT^9U&+xH6O?09-t9`_{b z*;wAej+soaU^lpwI!);|!@6ih#+@AQRBYuq6@T}1-`lk;o)B-~U4_CcwYP#qmq3t7 z7OyhKSprsco4(m^g~V_59xqpLUqy8LTKe#^@M?%T(d9i1Qu7SG$M>h}9e(4a(|rpi z3_wGUlRvjZ+42H-ojb2>E2^rN*pz9BPm=YP4#&~?vymqd1XyK?d!k6Oym!DF!Yzk@CI zBeMQruvxqELhI|tyVM&?-saiQ{Ok$lU(fjc=2m-`#mWx)IsGYpiQme#Q?%6WbdLe) zIoj0)l=v*cCDCOk(SYg!MEglX4M(1Ku9k!Dg2wq6C{Ht${RM2AzbVuRcK zQVgTFY4S_|+n^=)q1`=+b z&8JU~|0+siCiwqZ<5%xkjV?Q0BA5CtX8TzFZ8~*jL)81=?&^ObGDp;VlnDT?w(;Wo zA|!&@a@|&VBy55PSCNudiFIdS-A_U+(%1LOe1%_`XDM~$uW1{62Q^#nF;BFM&L7Ze zSGs!!GKusrP~!^z18)9xjSMxV;)zq!v4Tt*1gb@bsm6av3$N31S_Z zzeG6xlv!ur1w;BLr1&E@53zREvsA~aa2gH0hQja9$~T)CzZVTS(2{&#z1k-=z3DoD z`b5@cGvI+Fpd1{|;M!jD&La%d4|6u@YR{H=!Q7#FRFcFU1W5XSSZjN5-h5a-g`wx$ zW{==&O)Lwad+|2?4+MH+i#~JPludmyFLCOqJkBzGZN)^#Es#e*AYpD4JQ^BUpbr>@ zs`|OkylDQ7QH5e)mmYey*b%51_Y^bH7v;V^XQG(nBKn(ZR5(UpAze$6&o*msIsKbf zxGG|a=M@gygt6yq`egxeXwC}b6m5#hhb2An^vbk!(Y1DERYZ$$<;=JS(~AxjyVtu8 z6pk<3tlkKy9b`G-PE7X>o6rR&9G_=JV(e&HPGFggE_0I+l8YC?6fJj}MalqoC+6aR zKWX2UEZ=P_epz;M=g>Mp-Q~OnUQ-3bW3g(SCyW&nSwx54juSdi);iY^&i|e?O_1Jr zk(d*W_kpGPWJk32(GtfhTsBVhu$}aA7taFuxw;t~0jvBjJtAl{+4m?VFGmkLYWoMk z_N_MBn_x{*xJ5vpcJs+6eN&%-)u~Ot1GCeNl%RpsqKcOtILyiw5zFs&69{WGB)xFs zadJgce7~Gt(=_G;@3n`7@P??8qbKDfW2Mid4}PjEbItCf2`-`&QOqgD#d|xvJWK_ zwG3#Y`$lDw`c!b0>l~^>(_=ZsJ1Rc3GEYtT=1@An3a`(Qk^Wz=kBZP>Ce46P-uLBv z=8C-YN+8I0Yc%Kffm!D9&}xlU{&Y zOUck~RD5GVg0c%Of2rln2iKJK5W^G=oWhu=(kxU)J`l>5*&hrG<&FDqW8~>) z7eC>vQ3XtbUr(uosL$D;>^--!eQMl@a8-3_;Oj~Z;&T!%b0P2%!$aFq^t4-&&bxk3 ztg^po*fTus?uqoa60KraHov-c=|XnO`*w`u{b8T5q6I&E> z+RrAgV}l*4wz#qBj9h;t!};~E5Bh|&PC|6q#MlOFLQ*IERv7o-tcjqDGBj@k3Qql0qqG%WY2q`uoXBp$l_ zYG-#$j2f}!c)wctv2u8Ky5Vd?F2S&9DtXe*H)A|OoOMBv}TFd+W*lNqaI&H z*5l^>)%t|{%HRN&qw2gDXMu-6(7_wU)iKFn!Jvl~lVEQ*PT!e3hA+~_s^L-{eT?d2 zB!_y#e2n@RZxoa~^_s{_D5NZ*LOIjD_=K#FLYl2}GKzlcU*Y+UK@MR;ZE_jTa}{%) z#XWi7b%h-rk1KOd=B<|wV%3YJVn2RXTCgPDtRUrdxRMka{g7W?PpwM*BIe`j=wzhd zVlnjf4uuxr2_)WAy-}(mnX9eLw@U&Z$W&hsS0yU*VdSh1G<#4H@W+?P{`WNInU&UedR8g-)NSl|psDcejdvzV+S{(8 zmz%@u8u{&{>@RYd)QFFSi6W#r3Uk6Zfo~Sjoz7S48(8X2zdfO=(LtN>q=|;1lQ#Fc z&oDli*WSB1p&d@Zq#O4Q0aQU-`n=beCo8{KtfGE+_JG;*CU(_z$?jQuJdcBV2B`LYJ8(d z_alVZoeI%;05cbe>Pkuv|IOV<9(C}kR3zco8;$&$t=PSDh^U6vs00k$Jdulvr2H@) zUl^V$pwvo*GfBz&!l|VpD&6w8v@UBY$A0N+glnp>L9GP9yX8uPWP8D`oc4wUl-Pzi zvCZcWx5|D8mCr)ZAn#!L^WT!BOvlS)u3JTh=fl7JYz0R)z8_3)^Nq9s)M4!Yu65Kp z*cS=@>>fEPVyH3hYzwWeWX04J8H3lT?eWe9LK+&)pyQw}_w8lV`(nklz0bi8|0^wf zbOZfPju*HxcI^@}cm2--5$5bk7z(RT?gcoab3KK1axt##TLcV`;t6O07dHa zrupYLStS6o8!r@@pUUu78=!qv`t?`SFqMk2{YkOubz9q17{mVCr^sZ ztAPdy1p-`Bom0Z&sp0+gu{x$+_(cs9%dF`4G_9M?cjwEd5#Ku9u)kys;HjMk74-W5 zUJI9O&wn50{u^V$3;XFu!^Namj=Rx03nBF`eI|Zv-hF zv1Si3*V!$7XlibR;Z55VwewVQ(O&x;90xo#uNsj*TIrup+`jjg{aIUE>g4=o6OiIy zv>{yo%qahHs1W(nI4aHG`T9)VA4UK88+CtpCpo#<$ySOSyGlwq>K za-JN&yQ8raVT8hAzw!H@j@qE!^6A_&OO;pInNK@GDpiE|@u*i;iO~kB{_67YmQ><$ zI`7^}&xPuE$Cs_OLqY2_Ro89R=wABes2srqMeV^d&7B*so2Q()t*I+6P0akPwf@3U zE;>8laXeVHZ~xqHw{8P3c$^-E7iL^d97T$y;YU72S>qhn+B6;6N>P#53YxH1*$6dS z1b(c004>@Zs8eNzmIF($Ffe-IOx)ueK9mRPpLr*l>Ac!wgxslA$x?Wi zV=vAdk&4)n(G4?v&i*bfi!*p9&0Mg-0YceCh;nxGsX0u{kGRxlv4^zq!`cPW+n(@;ch3tB2kKT zJ6)nd?Q^1eL7|ABZ+Rlf{bBk0Ko(4lIiv9KJZoE=pjT6b+_fp(>94y@ z$5yDWfJG_^#UUoGDHp z23YLiZjJo=%gbdR6rrY>63%^v6qlY-3K^wlqR)UC7IvEf_slL~ZcQ>?RmZoUFSTkL zi##@_0<1P6a+beBdSmG7DG4R5;eI_LbAnH_dIw$J)w|Bm7%cRoXxF71YDYCHcqda- zo|kn%l|stL!kCSzTpArnonpgyz3a?bhO*V?UM`3QP$dt(;%8IUOomfSdO^&ui^mE| znW$d)>Z-UjJ_?EeU*e`ZiedQ+{0%FY5f&7cY)LLFzz)TP2kbBy<%`W$Y?=9bkSgxr zPs7-Ue(fZPTi52g(zLI;6^Z#Gv3=S$jnHCFj6d8pHmMdyp(O|^haL@5dboWP0Z~yu zw^#OlY|H`Z!LM?@c7X1HeYZqn?v|%NTm<&RSuN|FwR?CIbHOytKaZk2%U&s}YySkZ zD?G)Zu&+4yMq~1XF{Sj$%+gTg*A5Czm5TM}v$!`gi?^$%!B-nDl4p=7AhDHhwpEud zA3nhH4dXTI;oq{*u(x9>8m}!rTkGIr7iqKamcf<>!UgX&sXNaKX5-Y=;1ir`#P~V` z$|mAgvC&tG+l4KYOy?w`{06sXGZYf|cl8I~iDtA}W+`;ZUlF>bgddOI%=8-k@>MLB z@@S*-$pF4CkVR=eZFKU&4SSBur2{X7y2VjT`a{f*2UN9ZF*N0ean{9M}FYi&V`T85EMc$;$KE>_nok9dN?IfW~Jr*p3vHJP# z*aSbb6#vLW*_m&7gN1k9tA`rFoGu-DLc3B~bg@n?Os_5NznX1D#LO>vM-wRPGkj+k zpetN2IMcho{d5WRgYMh3V5x2JcIc}dtO`??y0^tzeQ62;LsA}(4kOueU!HBsZIh+} zDJD|R#LDaw)wmgQemgQd_n;;B6%$UDDa^PBH4UIQ}`3&?v)&3OsAzXZnepYPC zP%#C}KTl3~X|P*4Vh^3zZrM{$k$jP<34MENY(lpPOSOKl-8eh5lOG;GM509xovnJk z#obB3{y}=xFiJVSmrWvoHE3(!LP~oE4Qp16kR_uI@wD&4+nEo%ee9irAAB>hTNw8^ z7yUGQL(oeucFa?PrX2Hy_DqsMv!waK<9uPcB42*IDP$db(xPa~zkGjTL+%u+2MOqr z5~AQsLREg*QImbF?2?Q>+f3kL7#AWt|6Tm7=tZ<~b?KY7;q22o0Vu3hYaxZNwu%!;>tG^`8fswX#Wqo`<5WGpNB73z-R&>$j$2ZT zhpPFN;2)NWc|m`N0Qlga$7cD%;~o}thDQyt^M2AutA}ID*NUh0E8x?w2W&8;_?}V#!oeL(Pa5vfc@5u}y z!JY>$^x0|RgPYWEXfn-p)qA(0TdwX~i4)d!8?WEqCr%eG4qq9rpSHD|r%^*7*S1L^ z4Wg2yU-JCKR(ke*Zu-d?=8~nkK|@+`^x|n`DUfHYbFNe(oC-TnE7_DQ3t@^+(&8N{?dV%4EYi@DKxurqw?+H6Pe#tt}Fmg2#xScXjd z&wJpSRQUez!|vfxNRfbEB^kgOY;Bg1qfPV0s^)Z@-FXbL8kt+ezbMYph659 zxe@8+{{vw_p1(HtH3E?7`0Z{AurUJIxEneqoPKnIN1i=ET{eSz2^1Uh5854Ss%+Dp z;)BDet>_3^bVMy&r~7R>fWpK>y-lWJ(y%f)TJuh@iCe0EfN%g&jaWyl?a%Q?e{?-Q ze93Ld>$rh!Ye~)q`n>kr(1uL?Ufs6cw1B9^O}Xs$vg1)XPgbc z$PiQ@G4&&y2;eR?T1u>z?%GhQVJTt)(CPNPV|64sb{VC2pav{tD#4kFgErVmY^BG< za_~xQ$9KA0%Sew&nYI^Kxu$8=ni{Gf0^>dUe)(>#zVN`BjJ6t=W7Qgx5{(-2J9Oqi z?X{Z2iG44u&NPm#qqD2>6sM`C)HSHCKz;$Jb3$F9jNvrz!)M-c$>q1b>+iq({Tl&1 z@xh9=KJkZ6T6B<$dqIYYCrLeFT+}Elx%buje}!8L7W#|}&+2I}w~M+FH8c1uG@F8M zVxzjeMF4g8ceY!K?fQr|ORjEf<<0M#pJUYbXv8+F*zd_Qa}7rL)B|K1@$Hx0OVIB*}W{nI={5JezS zaMHFpJn6Bg0xTtF{9}ODjiNl!yc*ke=WUdJQRsIku-=Fqz+M2WnD+h4(OMOd zgKD^bPMMXQXk^fgPb1r{InflMB49iM#)qt)|9`l9(;(Zjt32>qd!Ok}IcL6nW6hzuK?qr6%uW)k1VP_(x<&`Udc<7p z;K;U)6K+5*8(DaTNJ?Uh?%9T$S_gg0BD+=MMz^a)JJpbqyqrYj^h6g8uP5$5gJ1jI z$ME?_cVMhw9vm&raYzPQ=7&vN+J^%)r##WYKp}yes^Ngd+u(l;=NXm=cipm%cYXgW z@v1l9jAX5+W4<6FVzmMYFU*Rv2bFP1d%~M=Y5`7tJ=sfu=OJPv+Uj_nt=k&`Y^XeV zA+3ekRV*dfb|4k*z|;X{rH`Rtt#iQ6S%DGklG2u^fZG)?FPW1)jPioYg-t{W*`yNq z*^25RZUM=>-se+5JW-DwDOYBYjH)JlESiyqxr*y5uM>SW7bC?Q0x0>ss@z+sIyPN4U7R7J#dw&Ffh&g=?Qf1b4H92fGEJnIcwFaglS&o+h_;!G9 z2e6=5cUXISr}AE^?88<9eli4x8)C*;IvLY#JppV!2Dn^W4Oal8U10Z&oa)`1fqY4- zhVki!5$a2zI4s~{HI%h!ngga2xt1&}8mX%jb7Oo;K5}|C^{z>1J<0DP@k6AErGAkj zG4^K{<`xD3aNqy+?r*IM;NeqS_^wwUH>u?x=;h|W>30(@GEcd!;5=}4n=mTTI`zN4 z3ZUtb8Nh1a;>W&y0J01d(Eo5c2Xx<=sIR9+!@nhGHKW@fAOA!%&NtCVeEeD^lLg%| zmXgqIR`~FT&)_%z-)C|E$vtGLk&{2F4eFGw@>2V70L(1f>2KEeLHpZ)a4%P^0$5J| zwLyV*y!BSR^9SF6#am8DO~782lV^1P**6M1poTq1XGHGXEa+BV377#uI{;n^&|$3> zyaYZKa$-|g?`Ksj3O)7FRl!v!MMLEz081xrSLw9p2T-z(;VuhtD_zq)gHkF1uA~wu z4oN#OIx9N^NmmkE(iiMzbXvDMbu2lVL{{k3B>3>h^1jhF2z{F4`fMO3&~z7Uy70_g zIxLpV5B%_3U-FgL{=@fw!>fQ7od>WwAdE}?#ZJc{O&lfcky+r<97(K9ObG?6W)H6?j zMm8SgEpT~)5B3Gj+70?54 zi;V9iy5;`a3Rs9ap!$kb7L(Ibwk!8uFb1Ox!H$&qZd;}@o&i258Uy{Cq|)#ez}xad zbXI}RHNZ|Kq@R^Sj!l%^NpLPEPp%wc@h@yuN-Z zgDQh$bO~vCh`O1_sKhU>EMNP3-*PR$-FF?u*2w>8k(=c#@hntdQSzBoglTzon(1?s z8hQV?3c$1yaE92_r*pjs<4Bk0d{eetR?>-=Hw^ja4g-P6aHDb)*n6SOucf9v(5u8q zvtKF0P}_!*WLd{m_~ZZYB!2T_XRup(WQp0|Qp}X`d;oISdiJ~@MH=LPG|9G?uXQYi3WhZ9koutG?(t9VmYCGBGrRk5J2(Y{!_rt-n#>bzXF_tY zb=Am5oScpINO_Dr%ej-%^47*HmCB_~%yyFf%$C;qF&pR*7?8ThLMY?v}0~g__|HdBi7Hv zM54bpRg8fF4#E_dO8odweF6XOBd4)Dbx6$2F5XOQPWuP=`{w}%P6PCIJfp#R6)a#{ zI(*0LZp8Qg;2UxMt8W0Mxv~zW#cH0Yi9W~r^U06GgKuaf?|dPJ3! ztD1DwR50PXe3S%A8P{d60VY#*`ptj|$!k5Wb!;;) z?}N#f{AdWB%o9fAWL4_vgRsTO$E{@N=he_nn7-qLZV@jN`;4V$p30yJN=o zm>bFX=Ud)CM-dR7;9N)StcYSA{+QkiL69?jQ#)$+{*1QXJ;&b*djZs_0yDLfl_$CH ziokOfsPMS=?^_TV{2g45FB z+NCbu_5*j}$V-j`lxZ7l(5wZwU_$+{Ge3*}?X(J5mf)eT2zJmJApIM_^s^0Cz(E2m zlly38Llpz1iAt7rfcZB9gPTQDG0mh3C?RwDs!~hv5zt?fyX+2tA_s~Epi=#SY+h7` zDwd!h?$kRIf7J2+?6UZ%)j096)^*RiWObodlc6A&Gm1dLH zNZ8FJJR+VT&%4~ovf{Hp|F)la?LYePH-7?n`<+J=jW@qgqzG0=Hn!fPMf+~VT!{wjd6Z@Uk1;9s!{kUC*BsqmdIS;Ig7?Z1x`FFgh_ zP8ND7KFO=-!F=?A==28~agtCCi~-!FAEhn;JtedG?5$evryAUs0QYCYDWGiTqIKj* zg{fK82fgJxWL5~CK`iMZN&+n8>cS$Z5dqryNA3ie$#`2T4sSWgM1=l|57 zUBIvY-brlkR5O4l?@wCIGGNJU3cc0PFuV-W?Irzt~Oj4}a_~{LjDq zZVZ;X2v%N1)l7N{<2^r<1VUdF0^Uan!$v1~M~Oc}CDMEuNY(*&1~qpd5c;lrKTtiO zV>Jz`8duOH0KLA>D$u`PCkg6qoam`O|4Iq=)mKV6K6ePnMsjiwjsw%jfbkQe>wum} zrI)+FbQf5?3z!_1YwArzer)ul?0r-_;z`)Q9q8Nw3>M`5!;x-es0vM2T8rS{U>o|1~O4e$9V?s@M!zB$K$kDL~(q+5^lKHe`t-ONyyTI7is zd*qqHsZGXX=NYMKh&=npfT)*&>M|?{i=DA+VqBxUejbRo_|%(_ zLIR2M52DwAT7$y2kI2k7iMjO}GRuO>Qa8o-zw0)O=91P&dvj8>)&8MN1!{!(;{;+5jlG9OO7w}&Yu+Xe&{~s^{ojTOG0m(L@ zDS*i)Fy4?CD_;Q22ymxGZY}F8HF+rQ0T}`MCKm+Y1NU5jFrCA5-jCGJ4l)RF70`a3vi{7` z_aiKTqb0Sv(`Rs4A!e?Fe|4dQ@BN-z@wRuo6nSdF!(GtuvdV4^^~9ev*4t1gAe5R2 z0^5nvUY1BA%s|I@(1jXIG!bklHn1r{ncW3U{#;LS2CxL!0YK-J*Pk^!``IdkoFww% z5HNp>1p4&6$huF|;%wuS!1P(5cdM>xL*&G)l{N0_JTN&cr@GI8sp>SkpB4TwRyBeF(8KGKgSp7s>D>a?_!HH}jwP=Wl<@ zH)RX(_B)sLL8^a}<(#Bs#h@b!e$NJ_qpK>+TpbSB&tgLaoG}9^)27@qX2!JAG=vos zmHX^TIcxLI=>6{nBxIumnFP4-%mhFC&mP9Fec&`kWkYl3efcb?^vrVb z+weXe#OiyliNL-)lfX}`!Hw&4_{kr6E#CbjccDuLys-z`8Ux#Vz}B|B*-Pd3(^Q{m zjPi4I68q@Xj}u%x8gYsRxMohq+q!}Ifb`h*IytS8$cTf4<#}M|FJ)VAa66D6mUUn^lF7pO6fi!g&OwQk`PGgD?$#GY zt8uz5!8|@KbneNng2V}6SLJ8jNGCB2NmyGGo3359bGEp}jo4CblD z-?;5C{=qwL$MtJn;N&K7eg|}62e>=}wuZoV2>MF&^9+U3CJOjiy~svpqkH(v04@R9%K`Vae82%b2bkB%IoBb*5*_W5mf*!QP#hQ0Q0~hIrE+Tf2{3*Z*t}0hhTZG*`9W?oKCb~iFV|LXh+KO* zrvRxHA`vQCDW2}>reY?E!znE~3A-h(85^5G4&oMe#D+jHf+hD-B;{%3oyFe5+=-t9 zfRF#&cmL;G0sK!t{8rrir6&~plRxy0YuUfj)4yTj@x{NsjNkZ=XYjEHcQDsY8enopQLoL-Z!``tBhs_K3fRA=A6EhK z{s7M`_Gf8=mtC`f8xQp{9#8Pt=?$DbyM;3sc5q>H7rVP7RKqD!?_r!rk{C&VvFT{* zZ4;0GD8d1GUnZ6NnkjimCJ8ucrTT#~$MU$E68ia|!#)E(g1z?HjPp=YNqTmRKRx&OVt z_0h-v^GE9A8IJRRY(G?y7d9jll9JfKevHj`OsNBd$~e4JAl?x z@7r*_k3jo&m-d5!)FSkn=!}o51dghN=;t+f$P@I70_>)EW5Kb7U2O#`eW_^xB$>)$WqWz$V#vZgqTE5 zc>WTQy$mq70(eMUwc|qUNna1}CxPj`Kz3&|>Z}9=42xb|%B7fjpnnUn^JUoxv^`*A zwX)Oo%&Kfue3DEBTBmwYbRxU;u>|zs8er=YnG{eaZPNIhcs^1tQ?kXW`ude*0tp>|J=vd*1)zC4j&6#+TAZ?s&6|A1o=;krtP@=s7?BYV zY9^Fr`K=%NnY&;4miN5>3omK~@R55S;5WbimiG*L-FGd{bxssnN=a%~vLr#0hy$-R zhCxJSQF#G1 z>y0`<#Ydt*uGM*>V4qpTKd=hWB*+M@Lu(VD&SMQ|$U;Q&Q&6=B_$f*dETu38$TN$6 zkz#4Cz}iBABTHSJSf0c6Yx7uI@58L*z+wU{Wx|_}g*#D1FWM~g&qd#-C<#!*9iS5c z&Imsr%K)7QMvnr?abeZ7o z1n`_wfV->KqoZjV@J+{2O>fm{j}q?OGi6gW&RLP|o1}lYsCK0@9R#u>nR67*|tDV_^@9 zc>guBA7=hhJ76?JX9iE4+`&Kn`G@g=&uzf5pzF;Lg4?Bjou}H_?w~55bsq;#1e!Le zb(ay>pUHsAEzoom@TItz5g|z|dPRbMkz!@Oi?xLwj;{=G?fL*OIX;J#^#Samd0=e` zytD`ueO=t?DuCA0&kOo72T}Z)*RSXF=UoN)!tIr@$EBWh>uL#htT~6=(_-X_O#A62 z^;_5is{56T@M@_V@M(1_&QycYN3V+q@*_aLrj^9Az~B&&6;j$4>)NL)KEcZ0cd8GW zXksuux#q;{qR*BpK4;QGAQL6%Y#@oiDB!sDAh3H@K)>Ft@_n}{Y{QO{ncPUmjosra zq2`(->8T}wZw();3NO%5571c;3H3+!`*MX+`7CuN1vxWsTY0Y;mcGrPzWAR~(;u}G{zk{fscCpR26_q;L!57zYyU>TxG zKtm6{G7y+1gdcvxsw#Yory#OeKraIOC}M22P`mgx8qB%DvrmoiYkzne_ddKUev?#V z`MPU>`f=hapi%E_=)H7670{jxU{>e1t^z3P`fIu`JWRO(@&Ztiu`uM2=L7VM0(1Qo ztMgqPTI%D(+5p$D_i@9K0p^eNK`ZmXQXjn71LXrHt>mi8)6)R&Yf$$A4A8g+7g{Og z8vOYTb1+n1PUy7sq~7k7jNz;m%|Jf}>>(lQz^Xj>Sbk<8%S3b$pa)f)^++?mi@h7O zWkK#oPm3b6%|y{B?Mr(QWV@}Jw<2!_7)s7Trr>901VBvY!~g_J`r%T7-VT82hO`0! z6wMX|9AqyEz^UIL)NIC;@_XK@rvNp)s#JhL_6!FPR}s4@XyRS=ec$=o`@j1i|L)T- z<`f`%ERq>JT0-eHw1RiqG!kA=8Ht!e62x} z8YC&9V!|_*DqP<4kp*6y0Gg7wX6#ZE2K#pcxE>)A2sR=7@Eg|P9cye;Bl{JLd&cA- zgBg+#MFj(aEaBXl34ZgB&f?P#?x6C@)hE*=shUU6iqcbiT{n_9XKi1aBoIwEqAb{A z2ZEc|C$c~zco;W=DYrmgj7iC6u-2f{nMbeJ!(u0bYPNfSe-X%*^(5X>}F zv=vmn5PGmF?LZlfRn#xgj{&a&SEJ>dfv(wV5=a+Nd;Gaw z(e@jk1=61O@ha?TS@#3F(R;xPpqQ%Wzu8sk@D*7-1~o~5Ak%JI56A!wwO>ji@=BoR^Qvd5otO%FexF!I#mhhDE000_n# z0qwGAo*y&+W|Kh8&(>>53?90F8$bPTp2U5R@3pq}LaP#-c$lJPA4D90s0wIi_z{O; zrWKe42W!M1T(ctsb=mkS$PGb$su&2vrd<@4(djK>p_k$CQV;8kT^wJT!|}B_96vIL z-r4}PJ^(NGK>1vw)Qco4<5vKz>&LR5`r(vUfUv%8Projr!1o6%3U#!cw|c@GIgNvj znx9G%Faw#byItY!LxDT&>9s8D&ca!sd|l|p*fFtbzN9r8?SpM4)DyV$fKHqCzZ>c+k5smKKkef|5Jnid0_yLJ$=6Q@3L}9 z;OKkr;2gtyMp-$OWrfN)jP`cH(;ZmDLb|if(oZOrIhgO%&GAfs&j-xV4#EL+cF20# za@028d2J8Ok;!K6K$&ait%x?YIQnIdPJIQgUB!6pfo=T4`%dAhi&JEYX>H(fRKwT3 zdaRc*g9R`(K^$7BgPvxS5F#0ZXyHf3-wvi4g329`ufQb0Y+@~XDKJ+gSX=1f$Z{Wt zmO41GKER2!0j@o?g#OYZXl)+6JOFh%8YHQhXw;?r0z`%Phz7p70!$lk{dKfzSkOwL z7gYy^-Zuaom!BK05;#$sZzdjp`E5XUGhmO&!%Vg{84blhfbSE&0B!2>Pzv}b zf#D;zqRd1z_i^A_l@C z0eWEZWk7db-HaxZu=bu31>_M_YHm-a3fZPulXd2FwRlfC15g5!i~|WKc+ygu5K^05 z^ZuXtyN6$N9)RrD8(Fa9KwOcs-#L%Uc~oVEa&Hrfo5Eyy6!=D5uR*9hi_N>|mZ}`@ z*Ym7{i-JXUyy#Nv+8#_Dxb0X59|$IdhNnNfNE7d?#DJS#*mUUe(Z9TiU;W5gT-dFU zt8QPzvZGp5vps>2Cjzu@B0w`192_XZ`v5_TNKyg#)3%5!m}&&7#vq7ks3AgPfg&aJ zGQ!GSftC3#)|a|Cw$j1zwLXp>T12)w2Q2o$g94N(t(H4VuMNT4)zg1D3j8Z6H_`zk znoJWxSQ$oC2{>s3cnqW)N~P5iqgB=5>a2i(*$u)Wn4Z)stpG+}mC`*`$?>EkrM-b@ z^;0PyQwFkQK<_4C_=KF|Ne`$}86(n2#6WCUM!XdSGl18P&zQ1lrTm}lh^gt;7bKa@ zy-W{)66hV4b>wm)Eym?%fvhXO2g6+%5po4|<~32My?D8+Y{V?`6A+VJLl(w5Bvl2& zdp8XV+@YhC7k3xn{H5(1JaZkG&Utw6;hY0AP>zT2(+Lt|W&hqZN;#e-=)Grn@8K(M zn^W#v_>24GXiuIY!EsQwi0-ITU4L%5_CyXq@XZp&?D)aU1M$S+Q-8gI-}%IOT-Ys< zC3<3G*63D8bKI^18m|7#L?F!R)u(`CRG-`Qhvs*qW1qPWep3zW;3oo7YtYM6%y$bM z8d$6^_HlU5;MmF>u3cZkv7;-=Yx8J~|EOuy z7T9QXm`T}A;jt<)_z0pPNg+%;Oo7QGvS-gw!;ng<3$GMiyR21(l`1Cds_N53ghqBg zD=5C52Z}WyDS^2oKryci`CgJmo&mWLsdAg?&WLN8Wv}OEJ}1`V={!(v1A9-3DzPgi zn2Ww7I5*MJU@%T8fMKpLWh#3Hu9PiB)|F)+_y9)NR!WesVA&$E#DKZZ`so`0;E(^& z%U_%dV0od3OPBYsJDU7`0K{H`*Ruc>%wXp#Do49ORkAHI3eLW)dk`K3vW&_xrVL!% zQ4YY>hWy-|c2^_>9l!^u$7r>VAEH@r?CGb#3pdU{q2efaD*WL+7xBS+FX80IL=<~x zCh&X!ap&MFfZDtO#6EtFs!y96K+!0X8}C16fJ+!Rgz-~3C0OLu5^K=SEe4$wD}x+| z=29G8wm7_+;mDB{tR3nhUF!kM9q@b($}L`*y18e%3KmAz>VdFhGVSe4VDEE4=Qg>0 zs(pU408Gb{G<-+w+VX(}xsZj!gBN;l@nZGQZmkLyJr2q z9mzOQ;k*qHQ3psd@f^y}pBjTagi|d_et`B_u4$bkdK#s;eD9C=_B1r(7 zfYGv@eNzS*Z6m_Q9}jiZW<=6!YJu^#j`?geY9v;wHc8;-DiAt(3`hV>tJq|Kb(Xp%`4({NL1CniSZ&C;X5+!Ap45nWA%P=M2p zBqK+Hv!n~EZhRcrvyu?J`XiJ^iZWwBX%{B5FlC9v8W`Z^*W7g7OMoxl|Ds_4-6H$$ zvUF*ZSos??Wh_riN4qvD7Y*ZQ3v1cOJP*u$URdkO#HGZ#^0Mz$2uIJto0;McF~Q~G&S z0pX{Sn=jX+z-H{ZpBo@lYU4&AUxD=XOqEzwX?0enpuz#HzoX-y8YcJQ)i@{Fe@qtQtsb2AY!>73npAnXBD zo-r*wCKHe8)Wdt;r&G;W@ur(?^$*4YniBi?aw6?Xyxc=!A0XZq(_Y*#E^klquRnMi zzxU~jQbAH9skvWmHv;ZjQUq7W0sQ0{v2G_?=v}?aj;vR!rsPXiEG-sI>;& z0E@OV&~aU^$z>^sGWBEh(H}Ju95FpX`K^`K#X6uUf$>OY>7F97R{eV?Uah-WumMUX z@RJ3_7_9dD78pG%rT=tWf|W8L?@KxFP2(F;MXu68O3o{JsN4_}k!nX;ll~2wV0yYf ztZqqcB+!Q=VDqH39mQ&s@SG$8A`8PFo24OnJ{7Fng>`#?T5=fz5<@6bgHCF&*vqh{!GG;)7uT+KacsGR{&E*) zsRtZd0E){XT$U54_OIsy(9bv_yb%9IUU~b}h5I75$?6pB`YHyxC6eBVR((lXb|zPv zZVF5@k?86eU^0>*^szaIp45qNz`i8cz5k2C;YT5yf1XOvCj$WslLg%Z)FmV1<$lB1 zxQeXeP4wQfM#w&+r$tXNThhLMBFV=T+NxNoYO=ok{`8`>Ao-wqu1+-#C;^cNQ3`7k zN-f|$zVml~{AGu}?-%a-#wLL8c+E?cYvTVFfFurl?*ZpMymLE+#aToQHRl-KF{;XA zS~8|itANU5Tse4w+7DdvYmjbwPCfwh!Oj8w!YFLO5%M3c2D9=965!;iG5*ybp27P+ zvk@)av>%TnwV}8=;RCe#4ypngRoEF>Zs>kNOSW49P_AIz2*!f*#w7dIa2;n-?{?qUJ6Q~+}YxYLvIRdr6lz4&!$iF(Eo-wt2HYS!~; z17b0eFb3QK>>YAiq5}3F6K(%0(+xY*^z`ARB@*ny^?*qa7^XnyC4jx$$bq$HyqW|I zH~50hm7_lf#uue}NEe0714Zarmx5x&^Z2!>_XoVHCHdz5lT`4E;iDo+Hg}ug6wD%2 z%2k_>m-Pfg*nJ%699Ft=E-T7JAd@Kj)q%*!ns8zd4f_55H@pS-UK^aGZLbH5; zS>S)4C!qdrSnlww?Lsqp3vCQ#!1+rP{NA5mz(?=j#&F`I;E!>LnT^AlDxk>|SE~Xd z&@T@5NF;_rJE8<1>qjtt0%CDCwuX>p2EEK;p_^c_pJH{8^@q(&sIK>u3VQ2;k4A>p+#nP3m55M^USpehBKO5SgY1#t;7 z39L;4xEsjQ@{0ljzWQa?ypb7&$Vn@9?irq$lEglhaP=7m{a{^K%g=-Yzyz-hCmC^i zIA?_INZhQzBCNbdOEYK-gtlkp&FHSt0f+)MRt6>plLy1ptF`4AxbNW|{D)6n#+RQS zp>&Z-PklEH$tUm+XvSx+b!|2B&$S^)Y!k;6lYXM=A!=`k0K*elKZHRACWci%gDfF* zGK0A+#X>j5Vn4<4)eep=7PxMyhvmfr$x&l}GGSeSl zl=i?xU5wY3&uE2{Ks*Eu1eFhb{%TKya3~gIrf3oXMHN#R1qS!%APG;=G|B608r+HZ z9s&lhlU8Kzr6OK>`7yy8sG}9Bl{RGW8K5{Kc4gCvj3G@ILtU<{J70I$X>doFCCZI^ZM zIaQ|saO~O(pmH8xdSr}0_|z7@^wbDt#cgjr1>)k7Ln!O{fGVKAy_WA`surlu`|SlA zFtDZEPk`YP*6+b^30AO=NJf#}%wl;i$MSrJgUJrKot+=VDoiMka((O7r=CdGw)1f z(i$17^%6@i;H)kfVJk-UyR z3jEj$((CI->Q%sA5(#@?_bbA6a60)YRvIzXU_)netwJEmLTMkETF`g`umKridKw~5 ztU;2>$@BX^@onGO1kmkdZy-Vzh5){1+j&%z$>7LB_9{8u3`y1P;n}0o^51!n$~ic& zjN2#*UOuSOYzXg6S6Bl$FzEN2R@U{sGI_BK~X1g3R;#L zSF$dPPVz{HpzaHz@nu6DB*8XV)Q}J=9PeQL5Q*QG;3vQuF;N+GQVfa|i@h9+{S=25 zb6mU9!F4NL+`2lz%1Re@u>cnd&`&|#1Sm}8Z|IfL#z2~?sK!)Vfj9w_GYMcfIs(6* zBybSGh^Wobo}R}*ezQnwWyd5*jh_VUg0RR!D-b6v*0ow91=xp8|Umeaa_Gtj+3?#EA?QH>8L8;jYikHDO8Z497f!6F>X?JFnR1?8@YoFqMY z?Xv}7aEp?VysQ9+C7ID_#RirH3@uCT{}Z9rgUK4kcwGLszw_U}?&#n7#lQT zksx8eY7e&^ayfd_)xEeSeD;Z5{I4H8gHJrXgK5AqY-|hY6`A^m_@?gfQ1lvDD9Se5s4$s|Aj)b#TpU z7jp{*>_P#a&p?YQP+0M&3*t5$Q=h{V8UgMRUH46N?B=4toC-jPZHSW(zK$d?E9O3l z=KqLrhM?;|1oGF(2^`k3{hsmzX7I`2%4A*hR_=FX95`Vy_>5m{&rO+b)UKV;_z4hn zK0gJ9&j6#df-OYAZKDVkw-+4g`bUpf>8QEVB;cIToXg81MQ(Bt2+igN6Cf{%30B&W zu`&zo9MHK=?!(A~5*&=pVUrAb%2l_p{0(gZt~y2i1=L}d46GOjM;!fFiks`C6x~5IeIpgfuoxrp!s$19@}~)*lUwAe!F)Hv z`a+Hq%N?u^avYi~aKn)v7FP-+YX!KUfr?aCSo5Gg9{?|IfT^(m0229a|BMiRC`fi! z8l#;(G5U$xbQ;qUGFnUZ@ zgxy#X|6bIBDOfhWAjvuD0QtOB0EPi0V4#5mS-VK7&%Uu30An4Xj9Gv^Sp}{q+GntH zW(S7f6l!MAUV~l&pLGmVOL+ti#mrlz9lzXwdRLeR@GQI@?dCg#In;XUs^ zhd=r94zdLG?Kw&+@uqOA3J3^4b92h`{*ph`GOl(GfTSnLx*tm! z9ZL3Kx6RS)JtSDu2j(46jP(SLL|_6R!0FSgNJK%CXoP1-7ou1-2&M;4m>SfU8c;AE znuH{P$Vs|Z0fq>kj-Hn1mJEcMX!Sb7KF0Wb^WMr9q&hKHH$y#)0hcAe(O3SOZ%6`| zA9Qrw$v@z|pKr))9LAtyX8f7Wd%2!&RJThSOdQ;3qq#FPus1a=9H4ay*Cl`S^N=bE2wQ^7#{EhV3m8*b8cz9NxydfHKEa(|u z9>;>7p}O&s2(&7)hL9Rr=vnB=m~VNI;_z~YYgRhAcD0A&%N-0BIx>kY_lxHzC3urvY4QkMXXG)~gq>#;EcA+D_?Z)+(w2Zn65#o~%9MMd23w;FNF-(?*`izzc_9XY zDYXuHS`#*2*aWb(Gpf1RdU_Ev*S)Lv>~@EfC#_9fENL^te``)pYCyTtQ&h>%EZ5FR z^GCz?E4Kj=HQ0IJ&9`;ol-~Q`=?VVtKfjDGKRXGV$<1C-eR4OnbLQB1m?I1Ch}R$C z6TwQm%?D_v0yW5o*;atyDS@L7m@*{RAkPTBLQek0eu||*f+I@>t~t`d@ue=-77Gj( z3Yg^r+|59}6zHgWjg4GFJlbL>F&WASv^ul`&jRj}@ZD=W@G`0bb~J#`19%$1Sq)@2 z6ZG+^AE>_D8u;6KKVvkG!Zvy=7cC`uQ6w_gsHB&QiB1h*D&^xx+g4Td*bJ>^a^3q^ zx92h}2C3Kp>OBkVQf~1%TiAAMbkMTY%TS;`&#Ed5vS$U2O#bo?N`J z@ddKUo8v=(nInJ3WANG2S1TZGX$ntW*d#%o8uSZ`<+&7x7c(4R>EPIM zf#WL$Ru>Bl77Lig4!D1S|&0P+C>vJnAU33Sxuc}kI!nWF9qNBd4u&uCa$5O{GIwq2PJ_-VAN87WN1 z6AEh3GQm`-p$*r>BHsYw)vkz#P+#;7Tyz>up4Fu-R;A=YBRoQYwHCvv`SxG>d#}j< z>tFiZ3!earJbk5SUWp^LQ33YuFTeEk{S5l{c%7v_L5ZU&zkaQXH3trh7*}WmsErFS zUlj}_0J~$4zj$bfU;o4wzVP%|oO)&+mzmpDKy>^cR0YrhRRBl8A90%(5J*4=bSiZ# zz)AzIkb)^kuajVHA;aN?9INvg))zCJSS_%=QlPhzfqI#o{6!-3Z)3Ed*94IGW=oBu zKS+E6)m-+l6qSh-7Vl~mU?bpes)=AP0tC+jct(@JDTpx5S^YZvJG2Yi8u*haNt999 zpG8$b)f^h(FKVw9Iqh^HBQdiq*Oa@a+NrU#sEr_M*p61+p^O@HOign#LrZRhhR5AST&$OTwMN3H3B(fOo4if|NGk+5UOozbUS)u)gmZc)KCLgJAh~8(A zJFBrK2WJ1eelPvHD8bLk1RRdbyXGsuoTU*+Mh2dpAC4yvyiJUZropqWu9D(&J^DB8 zD;Kd}&;uNMTF2{uZ3Ey?1;k5*nsgpKHN`_`rg->tDf{wKzL;IRtt~A>dlO%6?6ebx zl#KS?e#BnnhVs`?ej}gmrWI)Ds>EWFvRCHtlwfg?V0|IO`ci=-D+Sh;3gm+vG_XLG zf;x$m`~fj^5y{R*<^Vy4DbQ%^nKehCpbB5w1gM@Ag`1$YPp;9Zt7mXllfkZjo{P5p z;zgorW+oPxg<&5ciQ0fv?`wowTaQzv*7gCv2GAK{=W$nwLmNQWQNIVTyYoIO>A3c7 ztiisDfWk>7;3)pXYem5gD>5(#Z7v>wwkK#klgNDq3bEHa2}?qj8{^o7n@MLCi9T}F z?uO}Wby4>lMhX-Ldouvk;a{1T;9)$?Z!r#hGye>zh7P`v!#Wl$Ze-h4W3mBA^=aEFYCR0(@IWl$Gv8U zKQinLyZccdimL#Q?3?OQV07&q?GMD1U#95V)nG(~L*$nx6|gZ(k>?q%U+-dNF2~|R zhJ0R8{$2vM1Y(1haRQ<~HbLz!+oDR=iNHrxRjmj}%`15eux9~tRE0UJ2+5}Cqz-%h zp+d;eHVci%d}byI5L#Y=07NJxR0(4MT}?i^2$UR=wb|+{kSqgE*@E_hn05}62xtrW zM}t1o*CxD4M@C3IB{e~AVzQK8H(Py8A*Ht)$~9&Svf1ZKNt)sBkgH#$vk~a3Pt`$R zXEarqWx0mX78nccJucuQS)D!@Fel)06UdGV0EkpJ72O4pClFgvf2OaG3UI|1AjDQD zPb;GUVBi2Ke#DPFadv#o@ns->yT!l=%`!mcjoUl;w{e1+#KbtT6__Om#p6WeebGSx03ZNKL_t*6(P6mL z%{}1D&w6Z*2=jv!#X=66&w;{%Qv>R9GrOJ@CJb+M@>14@_QucRB)$oLAMgMte1P&9 zk;P*50gUw%>r;NJ!F*Z!{L5Mq?C43p6X62e`n_pHGK%*MLQ=@|=eznn-S0PXKlV%#9=fLG68}kpZ@?b{pL65R42^C@*44vKLTB#2{iJ7}eub zRSl{}z+_K$6s!?upHV
FX^HCPx`2457bV?bgVI|jU>qUQBAg)9SAV@ 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 literal 0 HcmV?d00001 diff --git a/scripts/makedeb.sh b/scripts/makedeb.sh new file mode 100755 index 0000000000..8ca272fcd8 --- /dev/null +++ b/scripts/makedeb.sh @@ -0,0 +1,127 @@ +#!/bin/sh -e + +# See blog.peterscholtens.net/?p=210 +# +# This scrips needs builds in: +# bin.linux-32-gcc-release (32 bit) +# and/or: +# bin.linux-64-gcc-release (64 bit) +# +# Create these builds with (-rpath and -bin are important): +# ./build.sh -release -rpath /usr/lib/klayout -bin bin.linux-64-gcc-release -build build.linux-64-gcc-release +# ./build.sh -release -rpath /usr/lib/klayout -bin bin.linux-32-gcc-release -build build.linux-32-gcc-release +# +# TODO: +# - The dependency list needs to be updated manually currently + +if ! [ -e version.sh ]; then + echo "*** ERROR: no version information found (no version.sh). Call this script from the root directory." + exit 1 +fi + +. ./version.sh + +version="$KLAYOUT_VERSION" +exe_name="klayout" + +# TODO: derive this list automatically? +depends="libqt4-designer (>= 4.8.1), libqt4-xml (>= 4.8.1), libqt4-sql (>= 4.8.1), libqt4-network (>= 4.8.1), libqtcore4 (>= 4.8.1), libqtgui4 (>= 4.8.1), zlib1g (>= 1.2.3.4), libruby2.3 (>= 2.3.1), libpython2.7 (>= 2.7.12), libstdc++6 (>= 4.6.3), libc6 (>= 2.15)" + +umask 0022 + +for bits in 32 64; do + + echo "Checking $bits installation" + echo "----------------------------------------" + + if [ "$bits" = "32" ]; then + arch="i386" + bindir="bin.linux-32-gcc-release" + else + arch="amd64" + bindir="bin.linux-64-gcc-release" + fi + + if [ -d $bindir ]; then + + rm -rf makedeb-tmp + mkdir makedeb-tmp + + pkgname=${exe_name}_${version}-1_$arch + + echo "INFO: package name is $pkgname" + + echo "Copying files .." + cd scripts/deb-data + tar --exclude=".svn" -cf data.tar * + mv data.tar ../.. + cd ../.. + cd makedeb-tmp + mv ../data.tar . + tar xf data.tar + rm data.tar + cd .. + cp -pd $bindir/strm* makedeb-tmp/usr/bin + cp -pd $bindir/klayout makedeb-tmp/usr/bin + cp -pd $bindir/lib* makedeb-tmp/usr/lib/klayout + + cd makedeb-tmp + + echo "Checking files .." + + grep -q $version usr/share/doc/klayout/copyright || ( + echo "*** ERROR: version $version not found in copyright file" + exit 1 + ) + + grep -q $version usr/share/doc/klayout/changelog || ( + echo "*** ERROR: version $version not found in changelog file" + exit 1 + ) + + grep -q $version usr/share/doc/klayout/changelog.Debian || ( + echo "*** ERROR: version $version not found in changelog.Debian file" + exit 1 + ) + + echo "Modifying control file .." + + strip usr/bin/* + + size=`du -ck usr | grep total | sed "s/ *total//"` + + mv control control.org + cat control.org | sed "s/%ARCH%/$arch/g" | sed "s/%VERSION%/$version/g" | sed "s/%SIZE%/$size/g" | sed "s/%DEPENDS%/$depends/g" >control + rm -f control.org + cat control + + echo "Building .deb package .." + + gzip -n --best usr/share/doc/klayout/changelog + gzip -n --best usr/share/doc/klayout/changelog.Debian + + # lintian complains about exec bits set + find ./usr -name "lib*.so.*" -exec chmod 644 "{}" ";" + + find ./usr -type f -exec md5sum "{}" ";" >md5sums + chmod 644 md5sums + + fakeroot tar -cvf data.tar ./usr + gzip data.tar + + fakeroot tar -cvf control.tar control md5sums postinst postrm + gzip control.tar + + fakeroot ar cr $pkgname.deb debian-binary control.tar.gz data.tar.gz + + echo "Finish making $pkgname.deb .." + mv $pkgname.deb .. + cd .. + rm -rf makedeb-tmp + + echo "Running lintian $pkgname.deb .." + lintian $pkgname.deb --suppress-tags binary-without-manpage --no-tag-display-limit + + fi + +done